add metadata-driven game catalog vector schema
This commit is contained in:
58
sql/adb/79_sg_game_catalog_vector.sql
Normal file
58
sql/adb/79_sg_game_catalog_vector.sql
Normal 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.';
|
||||||
|
/
|
||||||
Reference in New Issue
Block a user