88 lines
5.6 KiB
SQL
88 lines
5.6 KiB
SQL
-- example 私货:参考书作品面升格工作表(创始人 2026-07-14 认可方案后开工,5 张)
|
||
-- 支撑「全实体统一生长」抽取管线的幂等/撤销/判重审计/跨窗出场记忆。
|
||
-- 命名与公共列遵循主仓 yudao 惯例(无外键、软删、tenant_id)。
|
||
-- 设计出处:docs/2026-07-14-参考书作品面数据入库方案.md §五B(v6)
|
||
|
||
-- ① 别名表:判重审计——谁被认定为谁的别名(错认可按行拆回,对应卡从该窗重滚)
|
||
CREATE TABLE IF NOT EXISTS example_upgrade_alias (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
work_id BIGINT NOT NULL, -- 参考书 work
|
||
canonical_name VARCHAR(200) NOT NULL, -- 正名(卡的归一名)
|
||
alias VARCHAR(200) NOT NULL, -- 别名
|
||
evidence_window INT, -- 依据窗(判定发生在哪个窗)
|
||
verdict_by VARCHAR(20) NOT NULL DEFAULT 'mechanical', -- 判定方: mechanical/ai
|
||
creator VARCHAR(64) DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT now(),
|
||
updater VARCHAR(64) DEFAULT '',
|
||
update_time TIMESTAMP NOT NULL DEFAULT now(),
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||
CONSTRAINT uk_example_upgrade_alias UNIQUE (tenant_id, work_id, alias)
|
||
);
|
||
COMMENT ON TABLE example_upgrade_alias IS 'example 私货:作品面升格-别名判重审计(正名↔别名对照,错认按行拆回)';
|
||
|
||
-- ② 出场留档表:未立卡实体的跨窗出场记忆(第四轮评审 G4——窗内视角判不准「跨章戏份」
|
||
-- 立卡门槛,判重前先查此表,两窗合计跨章即用留档补立卡;撤销=按窗删行)
|
||
CREATE TABLE IF NOT EXISTS example_upgrade_presence (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
work_id BIGINT NOT NULL,
|
||
window_no INT NOT NULL, -- 观察发生的窗
|
||
chapter_no INT NOT NULL, -- 出场章 order_no
|
||
entity_type VARCHAR(50) NOT NULL, -- 六类之一(character/location/…)
|
||
name VARCHAR(200) NOT NULL, -- 观察到的名字
|
||
observation TEXT, -- 一句话观察(补立卡时作初卡材料)
|
||
creator VARCHAR(64) DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT now(),
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_example_upgrade_presence_name
|
||
ON example_upgrade_presence (tenant_id, work_id, name);
|
||
COMMENT ON TABLE example_upgrade_presence IS 'example 私货:作品面升格-出场留档(单章龙套不立卡先留档,跨窗合计跨章补立卡)';
|
||
|
||
-- ③ 窗状态表:一书一窗一行处理状态(断点续跑=跳过 done、从 failed 续)
|
||
-- 幂等键沿用 B4-S3 fable 审查 E2 教训:from_chapter 内容锚定,window_no 只作展示序号
|
||
CREATE TABLE IF NOT EXISTS example_upgrade_window (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
work_id BIGINT NOT NULL,
|
||
window_no INT NOT NULL, -- 展示序号(1 起)
|
||
from_chapter INT NOT NULL, -- 窗起始章 order_no(幂等锚)
|
||
to_chapter INT NOT NULL, -- 窗结束章 order_no
|
||
status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending/done/failed
|
||
error_message TEXT, -- 失败原因(敏感硬停等)
|
||
creator VARCHAR(64) DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT now(),
|
||
updater VARCHAR(64) DEFAULT '',
|
||
update_time TIMESTAMP NOT NULL DEFAULT now(),
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||
CONSTRAINT uk_example_upgrade_window UNIQUE (tenant_id, work_id, from_chapter)
|
||
);
|
||
COMMENT ON TABLE example_upgrade_window IS 'example 私货:作品面升格-窗处理状态(幂等键=from_chapter 内容锚定)';
|
||
|
||
-- ④ 卡水位表:每张候选卡滚到第几窗(重跑判断起点;错认别名拆回时水位归零重滚)
|
||
CREATE TABLE IF NOT EXISTS example_upgrade_card_state (
|
||
draft_id BIGINT PRIMARY KEY, -- muse_knowledge_draft.id(一卡一行)
|
||
work_id BIGINT NOT NULL,
|
||
watermark_window INT NOT NULL DEFAULT 0, -- 已滚至窗号(0=仅初卡未滚动)
|
||
update_time TIMESTAMP NOT NULL DEFAULT now(),
|
||
tenant_id BIGINT NOT NULL DEFAULT 0
|
||
);
|
||
COMMENT ON TABLE example_upgrade_card_state IS 'example 私货:作品面升格-卡滚动水位(断点续跑起点)';
|
||
|
||
-- ⑤ 覆写审计表:覆写类字段旧值流水(同窗重跑=按 draft_id+window_no 还原再重写;
|
||
-- 初卡首窗全部字段以旧值=NULL 入审计,保证错认拆回可还原初卡原始态——第四轮评审 G7)
|
||
CREATE TABLE IF NOT EXISTS example_upgrade_audit (
|
||
id BIGSERIAL PRIMARY KEY,
|
||
draft_id BIGINT NOT NULL, -- 哪张卡
|
||
window_no INT NOT NULL, -- 哪个窗写的
|
||
field_name VARCHAR(100) NOT NULL, -- 字段名
|
||
old_value TEXT, -- 旧值(初卡=NULL)
|
||
new_value TEXT, -- 新值
|
||
create_time TIMESTAMP NOT NULL DEFAULT now(),
|
||
tenant_id BIGINT NOT NULL DEFAULT 0
|
||
);
|
||
CREATE INDEX IF NOT EXISTS idx_example_upgrade_audit_card
|
||
ON example_upgrade_audit (tenant_id, draft_id, window_no);
|
||
COMMENT ON TABLE example_upgrade_audit IS 'example 私货:作品面升格-覆写字段旧值审计(撤销依据)';
|