add metadata-driven game catalog vector schema

This commit is contained in:
devmrko
2026-07-27 13:47:30 +09:00
parent 455e2aa222
commit 7ddb8ef0fc

View File

@@ -0,0 +1,58 @@
-- Metadata-driven game catalog for deterministic scope resolution.
-- No customer game names or prefixes are embedded in this script.
BEGIN
EXECUTE IMMEDIATE q'[
CREATE TABLE sg_game_catalog (
game_key VARCHAR2(128) PRIMARY KEY,
game_id VARCHAR2(128) NOT NULL,
game_prefix VARCHAR2(128),
game_nm VARCHAR2(512),
game_alias_nm VARCHAR2(512),
search_text CLOB NOT NULL,
embedding VECTOR(1536, FLOAT32),
active_yn CHAR(1) DEFAULT 'Y' NOT NULL,
priority NUMBER DEFAULT 100 NOT NULL,
updated_at TIMESTAMP(6) DEFAULT SYSTIMESTAMP NOT NULL
)]';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -955 THEN RAISE; END IF;
END;
/
MERGE INTO sg_game_catalog c
USING (
SELECT
game_id AS game_key,
game_id,
MAX(game_prefix) AS game_prefix,
MAX(game_nm) AS game_nm,
LISTAGG(game_alias_nm, ' ') WITHIN GROUP (ORDER BY game_alias_nm) AS game_alias_nm,
game_id || ' ' || MAX(NVL(game_nm, '')) || ' '
|| LISTAGG(NVL(game_alias_nm, ''), ' ') WITHIN GROUP (ORDER BY game_alias_nm)
|| ' ' || MAX(NVL(game_prefix, '')) AS search_text
FROM comn_game_alias_bas
WHERE use_yn = 'Y'
GROUP BY game_id
) s
ON (c.game_key = s.game_key)
WHEN MATCHED THEN UPDATE SET
c.game_id = s.game_id,
c.game_prefix = s.game_prefix,
c.game_nm = s.game_nm,
c.game_alias_nm = s.game_alias_nm,
c.search_text = s.search_text,
c.active_yn = 'Y',
c.updated_at = SYSTIMESTAMP
WHEN NOT MATCHED THEN INSERT
(game_key, game_id, game_prefix, game_nm, game_alias_nm, search_text)
VALUES
(s.game_key, s.game_id, s.game_prefix, s.game_nm, s.game_alias_nm, s.search_text);
/
COMMENT ON TABLE sg_game_catalog IS
'Customer-owned game catalog used to resolve query scope before NL2SQL.';
COMMENT ON COLUMN sg_game_catalog.embedding IS
'Vector representation of game names and aliases; populated by the configured embedding job.';
/