-- 实验私货表(口径③:主仓表原样不改列,实验扩展全进 example_* 前缀) -- 公共列/触发器沿用主仓惯例(creator/create_time/updater/update_time/deleted/tenant_id + updated_at 触发器); -- tenant_id/creator 按拍板默认系统主账号=1(写入层给值,列默认仍照主仓惯例)。 -- 软引用无外键(同主仓约定:引用完整性由应用/skill 层保证)。 -- ══ example_reference_work:参考书档案(23 型之 reference_work 的库内实例载体)══ -- 一本参考书 = muse_content_work 一行(原文私有库) + 本表一行(档案与拆书进度)。 CREATE TABLE example_reference_work ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, work_id BIGINT NOT NULL, -- → muse_content_work.id(软引用) author VARCHAR(100), -- 作者 source_file VARCHAR(500), -- 原始 txt 文件名 declared_chapter_count INT, -- 原文件头部声明章数(无则 NULL) imported_chapter_count INT NOT NULL DEFAULT 0, -- 实际导入章数 char_count BIGINT NOT NULL DEFAULT 0, -- 全文字符数 parse_scope JSONB, -- 首轮拆书范围,如 {"from":1,"to":50} parse_status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending/parsing/parsed notes TEXT, -- 清洗记录/章题格式特点等备注 creator VARCHAR(64) NOT NULL DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updater VARCHAR(64) NOT NULL DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted BOOLEAN NOT NULL DEFAULT FALSE, tenant_id BIGINT NOT NULL DEFAULT 0, CONSTRAINT uk_example_reference_work UNIQUE (tenant_id, work_id) ); CREATE TRIGGER trg_example_reference_work_updated_at BEFORE UPDATE ON example_reference_work FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- ══ example_parse_task:拆书任务状态机(workflow 断点续跑与幂等,状态全在库)══ -- 一章一行;两阶段各自状态:scaffold=细纲逆推+实体脚手架,pattern=范式拆解。 CREATE TABLE example_parse_task ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, work_id BIGINT NOT NULL, -- → muse_content_work.id chapter_id BIGINT NOT NULL, -- → muse_content_chapter.id scaffold_status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending/running/done/failed pattern_status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending/running/done/failed attempt_count INT NOT NULL DEFAULT 0, -- 累计尝试次数(含重试) agent_model VARCHAR(50), -- 执行模型标记(审计用) error_message TEXT, -- 最近一次失败原因 creator VARCHAR(64) NOT NULL DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updater VARCHAR(64) NOT NULL DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted BOOLEAN NOT NULL DEFAULT FALSE, tenant_id BIGINT NOT NULL DEFAULT 0, CONSTRAINT uk_example_parse_task UNIQUE (tenant_id, work_id, chapter_id), CONSTRAINT chk_example_parse_task_scaffold CHECK (scaffold_status IN ('pending','running','done','failed')), CONSTRAINT chk_example_parse_task_pattern CHECK (pattern_status IN ('pending','running','done','failed')) ); CREATE INDEX idx_example_parse_task_work ON example_parse_task(tenant_id, work_id, scaffold_status, pattern_status); CREATE TRIGGER trg_example_parse_task_updated_at BEFORE UPDATE ON example_parse_task FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- ══ example_parse_scaffold:逐章脚手架(parse-book 2b 第一步产物)══ -- 细纲字数比例按 outline schema 拍板值(章细纲=原文 3–5%);实体清单供判重与二轮双层型决策。 CREATE TABLE example_parse_scaffold ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, work_id BIGINT NOT NULL, -- → muse_content_work.id chapter_id BIGINT NOT NULL, -- → muse_content_chapter.id outline_text TEXT, -- 逆推细纲(对原文 3–5% 字数) entities JSONB, -- 实体清单 [{type,name,brief}] -- B4-S3(2026-07-13):出卡权上移窗级——章级只产「范式候选线索」,窗级聚类归并出卡 pattern_hints JSONB NOT NULL DEFAULT '[]', -- 候选线索 [{type,name,clue,evidence}] creator VARCHAR(64) NOT NULL DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updater VARCHAR(64) NOT NULL DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted BOOLEAN NOT NULL DEFAULT FALSE, tenant_id BIGINT NOT NULL DEFAULT 0, CONSTRAINT uk_example_parse_scaffold UNIQUE (tenant_id, chapter_id) ); CREATE INDEX idx_example_parse_scaffold_work ON example_parse_scaffold(tenant_id, work_id); CREATE TRIGGER trg_example_parse_scaffold_updated_at BEFORE UPDATE ON example_parse_scaffold FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- ══ example_knowledge_embedding:知识行嵌入边表(vector(1024),Qwen3-Embedding-8B)══ -- 挂 draft(草稿期)或 entity(确认后),至少其一非空;content_hash 幂等判重(同文同模型不重嵌)。 CREATE TABLE example_knowledge_embedding ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, draft_id BIGINT, -- → muse_knowledge_draft.id(软引用) entity_id BIGINT, -- → muse_knowledge_entity.id(软引用) content_hash CHAR(64) NOT NULL, -- 嵌入文本 sha256(幂等键) embed_text TEXT NOT NULL, -- 被嵌入文本(名称+摘要+正文拼接) model VARCHAR(100) NOT NULL DEFAULT 'Qwen/Qwen3-Embedding-8B', dimensions INT NOT NULL DEFAULT 1024, embedding vector(1024) NOT NULL, creator VARCHAR(64) NOT NULL DEFAULT '', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updater VARCHAR(64) NOT NULL DEFAULT '', update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, deleted BOOLEAN NOT NULL DEFAULT FALSE, tenant_id BIGINT NOT NULL DEFAULT 0, CONSTRAINT uk_example_knowledge_embedding UNIQUE (tenant_id, content_hash, model), CONSTRAINT chk_example_knowledge_embedding_ref CHECK (draft_id IS NOT NULL OR entity_id IS NOT NULL) ); CREATE INDEX idx_example_knowledge_embedding_draft ON example_knowledge_embedding(tenant_id, draft_id) WHERE draft_id IS NOT NULL; CREATE INDEX idx_example_knowledge_embedding_entity ON example_knowledge_embedding(tenant_id, entity_id) WHERE entity_id IS NOT NULL; -- 余弦相似度检索索引(B3 search skill 用 <=> 召回;数据量小,HNSW 默认参数即可) CREATE INDEX idx_example_knowledge_embedding_hnsw ON example_knowledge_embedding USING hnsw (embedding vector_cosine_ops); CREATE TRIGGER trg_example_knowledge_embedding_updated_at BEFORE UPDATE ON example_knowledge_embedding FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();