-- 声音账(voice baseline):技能 1「定基线」的库内载体。 -- 一部作品一行一版本:新版本 append 一行并把旧行 superseded,历史版本保留审计。 -- 声音账只读已确认正文与作者样张产出(专题-09 §5.1);脚本层强制账内每个 -- 口癖/保护片段必须能在来源正文中找到(grounding 门),数据库层只锁结构与状态。 -- ledger 同时兼容 deai.gates.protected_checks 的 voice_thin 形状 -- (untouchable_verbal_tics / protected_spans),修订门禁直接消费。 CREATE TABLE IF NOT EXISTS example_voice_baseline ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, work_ref VARCHAR(256) NOT NULL, -- 作品逻辑引用(与案例卡 work_ref 同域) version INTEGER NOT NULL, -- 作品内单调版本号(1 起) ledger JSONB NOT NULL, -- 声音账全文(结构由 establish-voice-baseline 脚本校验) ledger_sha256 VARCHAR(64) NOT NULL, -- ledger 规范化 JSON 的 sha256 source_text_sha256 VARCHAR(64) NOT NULL, -- 定基线所依据的已确认正文 sha256(可多文拼接) reviewer VARCHAR(64) NOT NULL DEFAULT '', -- 人工确认人(基线必须人确认,专题-09 §5.1) note TEXT NOT NULL DEFAULT '', superseded BOOLEAN NOT NULL DEFAULT FALSE, -- 被更新版本取代;保留审计不删除 creator VARCHAR(64) NOT NULL DEFAULT '1', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updater VARCHAR(64) NOT NULL DEFAULT '1', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted BOOLEAN NOT NULL DEFAULT FALSE, tenant_id BIGINT NOT NULL DEFAULT 1, CONSTRAINT uk_example_voice_baseline UNIQUE (tenant_id, work_ref, version), CONSTRAINT chk_example_voice_baseline_version CHECK (version >= 1), CONSTRAINT chk_example_voice_baseline_ledger_sha CHECK (ledger_sha256 ~ '^[0-9a-f]{64}$'), CONSTRAINT chk_example_voice_baseline_source_sha CHECK (source_text_sha256 ~ '^[0-9a-f]{64}$'), -- 未确认的基线不得冒充当前有效:只有带确认人的最新版本可被消费(脚本层取 latest 时同样强制) CONSTRAINT chk_example_voice_baseline_reviewer CHECK (superseded OR reviewer <> '') ); CREATE INDEX IF NOT EXISTS idx_example_voice_baseline_work ON example_voice_baseline(tenant_id, work_ref, version DESC) WHERE deleted = FALSE; CREATE OR REPLACE TRIGGER trg_example_voice_baseline_updated_at BEFORE UPDATE ON example_voice_baseline FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();