58 KiB
后端-04:统一数据库 Schema(结构定义)-v1
- 版本:v8
- 更新日期:2026-05-23
- 目标读者:后端 / 架构 / 前端 / 数据库维护者 / 测试
- 阅读时间:35-55 分钟
- 边界说明:本文件定义 Muse 在
YunaiV/yudao-cloudfork 上新增或二开的业务 Schema 目标。Yudao 原生system、infra、member、pay、bpm、report、mp表结构由对应 Yudao 模块负责,本文不重复定义。接口契约见后端-05-统一API契约-v1.md,状态机见架构-04-状态机与约束清单.md,工程模块见后端-02-工程结构与模块职责.md。
1. 目标
阶段 7 的数据库设计不再以旧 muse-* 自研单体和 PostgreSQL jsonb 快照为基线,而是收束到 Yudao Cloud fork 的模块化落地方式。
本文件只固化以下事情:
- 哪些数据事实复用 Yudao 原生模块,哪些由 Muse 新业务模块持有。
- Muse 新增表按
content、knowledge、ai、market、account等领域 owner 拆分。 /admin-api/**和/app-api/**只是入口差异,不能拆出两套数据库事实。- Shadow -> Canonical、用户主权、知识草稿确认、来源 lineage、授权快照和市场 handoff 必须能在表结构上闭合。
- 用户替换智能体只作用于开放槽位中的子智能体,输入输出合规、拆分切块、入 RAG、语义安全围栏、静态检查、质量门控等保护节点必须有不可替换的系统级配置和运行证据。
- 市场购买、安装、绑定和授权不自动写入作品正文、Local KB 或规划正式事实。
2. 数据库基线
2.1 复用 Yudao 原生 Schema
以下能力直接复用 Yudao 原生模块,不在 Muse 业务 Schema 中重建:
| 能力 | Owner 模块 | Muse 使用方式 |
|---|---|---|
| 用户、部门、岗位、角色、菜单、权限、登录日志、操作日志 | yudao-module-system |
Muse 保存 user_id / creator / updater 等引用;权限点和菜单按 Yudao 后台模型配置 |
| 字典、配置、文件、定时任务、API 日志、监控 | yudao-module-infra |
Muse 复用文件、配置、Job、日志、缓存和消息能力 |
| 会员/账户基础资料 | yudao-module-member |
若后续选择改造 member,Muse account 表只保存创作权益和资产聚合,不复制登录身份 |
| 支付、充值、退款、订单 | yudao-module-pay |
市场交易启用时引用支付订单,不把支付清结算事实写进 market asset 表 |
| 审核流、申诉流、合规流 | yudao-module-bpm |
简单审核先由 market 状态机承载;复杂流程再引用 BPM 流程实例 |
| 报表、公众号 | yudao-module-report / yudao-module-mp |
默认隐藏保留,需要时读取 Muse 读模型或事件投影 |
禁止事项:
- 不新增
muse_users、muse_roles、muse_permissions来替代 Yudaosystem。 - 不把 Yudao
infra做成 Muse 业务事实万能表。 - 不复制 New-API 的模型路由、成本账本和调用日志 authority。
2.2 Muse 表命名
Muse 新业务表建议使用统一前缀:
| 模块 | 表前缀 | 示例 |
|---|---|---|
| 内容 | muse_content_ |
muse_content_work |
| 知识 | muse_knowledge_ |
muse_knowledge_draft |
| AI / Agent | muse_ai_ |
muse_ai_candidate |
| 市场 | muse_market_ |
muse_market_asset |
| 账户 | muse_account_ |
muse_account_usage_record |
| 来源与授权 | muse_source_ / muse_authorization_ |
muse_source_status_event / muse_authorization_snapshot |
| 审计 | muse_audit_ |
muse_audit_event |
| Outbox | muse_outbox_ |
muse_outbox_event |
| Integration | muse_integration_ |
muse_integration_call_log |
物理落地时可以按 Yudao 代码生成和团队习惯微调表名,但必须保留模块前缀、owner 边界和唯一事实归属。
Owner 约定:
content拥有作品、章节、Block、正文版本、Block Source Attribution、MetaSchema、导入、导出和下载凭证。knowledge拥有 User KB、Local KB、Knowledge Draft 和知识来源绑定。ai拥有 Prompt、Agent、Protected Node Registry、Override Slot、Tool Grant、Runtime Permission Envelope、AI Task、Candidate、Quality Result 和 Candidate Decision Archive。market拥有 Market Asset、License、Authorization、Install、Bind Precheck、Handoff、Publish、Review、Governance 和 Appeal。account拥有 Muse 创作权益、Usage、Entitlement、个人中心读模型、安全事件和账户导出。source/authorization是横切来源与授权快照 owner:由来源 owner 生成或引用,负责不可变来源快照、授权快照、来源状态事件和传播目标。audit/outbox/integration是横切 owner:由触发动作的业务模块写入业务审计、领域事件和外部调用摘要,不接管 Content / Knowledge / AI / Market / Account 的 Canonical 事实。
2.3 通用列约定
Muse 表默认遵循 Yudao BaseDO 风格:
| 列 | 要求 |
|---|---|
id |
物理主键,默认按 Yudao Long / 雪花 ID 风格处理 |
creator / updater |
操作者引用,接 Yudao 当前用户上下文 |
create_time / update_time |
创建和更新时间 |
deleted |
逻辑删除标记,公开查询默认过滤 |
tenant_id |
若启用 Yudao 多租户插件,则作为平台租户隔离字段;不能替代作品 owner 或资产 owner |
API 层 ID 规则:
- 前端 TypeScript 统一把业务 ID 当
string使用。 - 后端物理主键可以是
Long,但不得在 API 文档中承诺自增语义。 - 如果某对象需要跨系统稳定暴露,补
public_id/biz_no,而不是把数据库主键当产品合同。
2.4 JSON 与状态字段
阶段 7 不再写 PostgreSQL 专属 jsonb 作为唯一实现前提。
| 类型 | 设计口径 |
|---|---|
| 结构化内容 | 使用数据库 JSON 能力或 Yudao TypeHandler 映射;物理库不支持 JSON 时可用 text 保存结构化 JSON 字符串 |
| 状态字段 | 使用 varchar / tinyint + 代码枚举 + 状态机校验;是否用数据库 CHECK 由具体数据库和 Yudao 迁移策略决定 |
| 复杂快照 | 保存不可变快照摘要、hash、版本和必要字段;敏感正文、完整 Prompt、外部响应全文默认不进快照 |
2.5 外键约束
本文中的外键是领域约束和建模约束。是否使用数据库物理 FK,由后端落地时按 Yudao 项目实践和线上迁移策略决定。
无论是否创建物理 FK,服务端必须保证:
work_id、owner_user_id、source_object_id等 owner 关系不能只靠前端传参。- 跨模块写入必须通过 owner module 的 application service、facade 或领域事件。
- 高危命令必须有幂等键、审计事件和状态机前置条件。
3. 表分区总览
| 分区 | Owner 模块 | 核心表 |
|---|---|---|
| Content | yudao-module-content |
Work、Chapter、Block、Block Revision、Block Source Attribution、Planning、MetaSchema、Import、Parse、Export |
| Knowledge | yudao-module-knowledge |
Knowledge Base、Document、Chunk、Processing Job、Local KB、Knowledge Draft、Knowledge Source Binding |
| AI / Agent | yudao-module-ai 二开 |
Prompt、Agent、System Function Chain、Protected Node、Override Slot、Tool Grant、Runtime Envelope、AI Task、Candidate、Quality Policy、Evaluation |
| Marketplace | yudao-module-market |
Asset、Listing、License、Purchase/Authorization、Install、Collection、Publish、Review、Governance、Appeal、Handoff |
| Account | yudao-module-account 或 member 二开 |
Profile Extension、Preference、Entitlement Snapshot、Entitlement Ledger、Quota Adjustment、Usage Record、Asset Summary、Security Event、Account Export |
| Source / Authorization | 来源对象 owner + outbox 协作 | Source Snapshot、Authorization Snapshot、Source Status Event、Source Propagation |
| Audit / Outbox / Integration | Muse 业务模块 + Yudao infra | High-risk Audit、Outbox、Projection、Integration Call Log |
3.1 表级 Owner 矩阵
本矩阵只说明 Schema owner 和写入边界,不替代接口鉴权。建表 owner 负责 migration、字段演进和唯一约束;写入 owner 负责创建、更新、失效和状态机推进;只读协作者只能通过应用服务、facade、事件投影或查询模型读取。
| 表 | 建表 owner | 写入 owner | 只读协作者 | 事件传播 |
|---|---|---|---|---|
muse_content_work |
content | content | knowledge / ai / market / account | work 创建、归档和 owner 变化写 outbox |
muse_content_chapter |
content | content | knowledge / ai | chapter 解析状态变化写 outbox |
muse_content_block |
content | content | knowledge / ai | block revision 变化触发解析、候选和来源状态重验 |
muse_content_block_revision |
content | content | knowledge / ai / source | revision 创建写 outbox,供来源归因和知识重提取消费 |
muse_content_block_source_attribution |
content | content + source propagation | source / authorization / market / account | Source Status Event 必须传播到此表,更新来源状态但不回滚正文 |
muse_content_planning_item |
content | content | ai / knowledge | planning 变化写 outbox,供 AI 上下文投影消费 |
muse_content_narrative_state |
content | content | ai / knowledge | narrative state 变化写 outbox |
muse_content_meta_schema |
content | admin content service | ai / knowledge / market / account | 激活、停用、回滚写 outbox,供投影和运行时缓存刷新 |
muse_content_meta_field |
content | admin content service | ai / knowledge | 随 MetaSchema 版本发布传播 |
muse_content_meta_visibility_policy |
content | admin content service | ai / knowledge / account | 随 MetaSchema 版本发布传播 |
muse_content_meta_schema_version |
content | admin content service | ai / knowledge / market / account | 发布、激活、回滚和影响预览写 outbox |
muse_content_import_task |
content | content | knowledge / ai | 导入完成触发 parse task 或正文初始化事件 |
muse_content_parse_task |
content | content | knowledge / ai | /parse-tasks 创建、重试、取消和完成写 outbox |
muse_content_parse_result |
content | content | knowledge / ai | 章节解析结果通过事件生成或刷新 Knowledge Draft |
muse_content_export_task |
content | content | source / authorization / account | 导出创建、完成、失败和过期写 outbox |
muse_content_download_credential |
content | content | source / authorization / account | 下载凭证签发和失效写审计与 outbox |
muse_knowledge_base |
knowledge | knowledge | content / ai / market / account | KB 状态变化写 outbox,市场安装引用不反写 |
muse_knowledge_document |
knowledge | knowledge | ai / market | document 变化触发处理任务 |
muse_knowledge_document_version |
knowledge | knowledge | ai / source | version hash 变化触发 chunk / RAG 重建 |
muse_knowledge_chunk |
knowledge | knowledge protected node | ai | chunk 创建只进入检索投影,不反写 Canonical |
muse_knowledge_processing_job |
knowledge | knowledge protected node | ai / account | 处理状态变化写 outbox 和 usage 摘要 |
muse_knowledge_entity |
knowledge | knowledge | content / ai / source | Local KB Canonical 状态受 Source Propagation 阻断新使用 |
muse_knowledge_relation |
knowledge | knowledge | content / ai / source | 同 Local KB Canonical |
muse_knowledge_event |
knowledge | knowledge | content / ai / source | 同 Local KB Canonical |
muse_knowledge_attribute_change |
knowledge | knowledge | content / ai / audit | append-only 变更日志写审计 |
muse_knowledge_draft |
knowledge | knowledge | content / ai / source | draft stale、invalidated、needs_reextract 写 outbox |
muse_knowledge_source_binding |
knowledge | knowledge | content / ai / market / source | 绑定状态受来源事件传播,阻断新检索或生成 |
muse_source_snapshot |
source/authorization | 来源 owner 或 source facade | content / knowledge / ai / market / account | 创建后不可变,通过引用传播 |
muse_authorization_snapshot |
source/authorization | authorization facade | content / knowledge / ai / market / account | 创建后不可变,过期或撤权触发重验 |
muse_source_status_event |
source/authorization | 来源 owner + market governance | content / knowledge / ai / market / account | event_key 幂等进入 outbox 并展开传播目标 |
muse_source_propagation_target |
source/authorization | source propagation worker | content / knowledge / ai / market / account | 逐目标记录 pending / applied / blocked / failed / skipped |
muse_ai_prompt |
ai | ai | content / market | prompt 发布状态写 outbox |
muse_ai_prompt_version |
ai | ai | content / market | 版本激活、下架写 outbox |
muse_ai_agent |
ai | ai | content / market / account | agent 状态变化影响 slot binding 和市场资产 |
muse_ai_agent_version |
ai | ai | content / market / account | 版本下架触发绑定重验 |
muse_ai_system_function_chain |
ai | ai admin service | content / knowledge | 链路激活、停用写 outbox |
muse_ai_system_function_chain_version |
ai | ai admin service | content / knowledge | function chain 版本激活写 outbox |
muse_ai_chain_node |
ai | ai admin service | content / knowledge | 节点配置随 chain version 发布 |
muse_ai_protected_node_registry |
ai | ai admin service | content / knowledge / audit | 保护节点变更写审计和 outbox |
muse_ai_override_slot |
ai | ai admin service | content / market | 槽位变更触发 slot binding 重验 |
muse_ai_agent_slot_binding |
ai | content + ai binding service | market / account / source | 仅 active 绑定唯一;授权撤销或版本下架触发失效 |
muse_ai_tool_grant |
ai | ai | content / account / audit | 工具授权变更写审计 |
muse_ai_runtime_permission_envelope |
ai | ai runtime | content / knowledge / audit | 每次运行固化权限包并写审计引用 |
muse_ai_task |
ai | ai runtime | content / knowledge / account | 任务状态变化写 outbox 和 usage 摘要 |
muse_ai_context_snapshot |
ai | ai runtime | source / authorization / content / knowledge | 上下文组装引用来源和授权快照 |
muse_ai_candidate |
ai | ai runtime | content / knowledge / source | Shadow Candidate 状态变化写 outbox |
muse_ai_candidate_quality_result |
ai | ai quality service | content / audit | 质量门控结果写审计引用 |
muse_ai_candidate_decision_archive |
ai | content decision service + ai | knowledge / audit | 用户决策归档写 outbox,不确认 Knowledge Draft |
muse_ai_quality_policy |
ai | ai admin service | content / market | 策略发布写 outbox |
muse_ai_quality_policy_version |
ai | ai admin service | content / market | 版本激活、回滚写 outbox |
muse_ai_evaluation_dataset |
ai | ai quality service | market / account | 数据集发布写 outbox |
muse_ai_evaluation_run |
ai | ai quality service | market / account | 评测运行状态写 outbox |
muse_ai_evaluation_result |
ai | ai quality service | market / account | 评测结果只读给治理和市场审核 |
muse_market_asset |
market | market | content / ai / knowledge / account | 资产状态变化写 Source Status Event |
muse_market_asset_version |
market | market | content / ai / knowledge / source | 版本发布、召回写 Source Status Event |
muse_market_listing |
market | market | account | 展示状态写 outbox |
muse_market_license |
market | market | authorization / account | license 变化触发授权快照重验 |
muse_market_authorization |
market | market | authorization / account / content / ai / knowledge | 授权创建、撤销写 Source Status Event 或授权事件 |
muse_market_purchase_ref |
market | market | account / pay | 支付引用状态只做摘要传播 |
muse_market_install |
market | market | account / ai / knowledge | 安装状态变化触发绑定预检重验 |
muse_market_bind_precheck |
market | market + target owner precheck | content / ai / knowledge / source | 预检结果短期有效,过期不传播 Canonical |
muse_market_handoff_session |
market | market | content / ai / knowledge / account | handoff 原子消费写审计 |
muse_market_collection |
market | market | account | 收藏只写个人市场行为,不写作品或安装事实 |
muse_market_publish_draft |
market | market | source / authorization | 发布草稿不传播,提交时生成检查快照 |
muse_market_publish_check_snapshot |
market | market | source / authorization / audit | 检查快照消费后写审核事件 |
muse_market_review_submission |
market | market | audit / bpm | 审核状态写 outbox |
muse_market_governance_action |
market | market governance | source / authorization / audit | 下架、召回、blocked 必须写 Source Status Event |
muse_market_appeal |
market | market | audit / bpm | 申诉状态写 outbox |
muse_account_profile_ext |
account | account | market / content | 个人资料变化写账户读模型事件 |
muse_account_preference |
account | account | content / ai | 偏好变化刷新运行时默认值 |
muse_account_entitlement_snapshot |
account | account entitlement service | ai / market | 权益快照变化写 outbox |
muse_account_entitlement_ledger |
account | account entitlement service | ai / market / audit | append-only 权益流水写审计 |
muse_account_quota_adjustment |
account | admin account service | ai / audit | 管理员调额 append-only,按幂等键去重 |
muse_account_usage_record |
account | account usage service | ai / content / knowledge / market | usage 摘要写个人中心读模型 |
muse_account_asset_summary |
account | account projection worker | market / ai / knowledge | 只做读模型投影 |
muse_account_security_event |
account | account / audit | content / market | 安全事件 append-only |
muse_account_export_task |
account | account | content / market / source / authorization | API 应承接导出任务创建、轮询和下载审计 |
muse_audit_event |
audit | 动作 owner | 全模块 | append-only,不反写业务事实 |
muse_outbox_event |
outbox | 事实 owner | 全模块 | event_key 幂等消费 |
muse_projection_task |
integration/outbox | 投影 owner | 全模块 | 投影失败可重试,不反写 Canonical |
muse_integration_call_log |
integration | 调用 owner | audit / account | 外部调用摘要写审计引用 |
4. Content Schema
4.1 muse_content_work
作品主表。普通用户的创作项目,也是市场作品资产的源对象之一。
| 字段语义 | 要求 |
|---|---|
id |
作品 ID |
owner_user_id |
所属用户,引用 Yudao 用户 |
title / genre / summary |
作品基础信息 |
status |
writing / completed / archived |
work_schema_id |
可选,关联 MetaSchema |
import_status / parse_status |
导入和全书解析摘要状态 |
word_count / chapter_count |
读模型字段,可回算校验 |
不变式:
- 管理员可以治理异常摘要,但不能直接替用户修改正文事实。
- 市场作品资产发布快照不替代源作品 owner。
4.2 muse_content_chapter
章节表。
| 字段语义 | 要求 |
|---|---|
work_id |
所属作品 |
title / order_no |
章节标题和排序 |
status |
draft / writing / completed / archived |
goal_snapshot / outline_snapshot |
已确认规划摘要或引用 |
parse_review_status |
全书解析章节审阅状态摘要 |
约束:
- 同一作品内
order_no唯一。 - 章节解析确认只产生或更新 Knowledge Draft,不写 Local KB Canonical。
4.3 muse_content_block
正文最小编辑单元。
| 字段语义 | 要求 |
|---|---|
work_id / chapter_id |
所属作品和章节 |
order_no |
章节内排序 |
content_doc |
富文本结构化内容 |
revision |
乐观锁版本,保存正文必须带 expectedRevision |
word_count |
当前字数 |
不变式:
- 正文保存只写正文 Canonical,不自动确认知识草稿。
- AI 候选接受只写目标 Block 和候选 Archive,不自动写 Local KB。
4.4 muse_content_block_revision
Block revision 历史。
| 字段语义 | 要求 |
|---|---|
block_id / revision |
Block 与版本 |
content_snapshot |
当前 revision 的正文快照 |
change_source |
manual_save / ai_accept / import_init / merge_after_edit |
actor_user_id |
操作者 |
decision_id |
若来自候选接受,引用 Candidate Decision Archive |
约束:
(block_id, revision)唯一。- 当前正文来源不能只依赖历史候选表,必须可从 revision 追溯。
4.5 muse_content_block_source_attribution
正文来源归因表,绑定到 Block revision。
| 字段语义 | 要求 |
|---|---|
work_id / block_id / revision |
归因目标 |
source_type |
ai_candidate / user_text / market_asset / user_kb / global_kb / import |
source_object_id / source_version |
来源对象和版本 |
lineage_payload |
派生链路摘要 |
authorization_snapshot_id |
授权快照 |
source_status |
active / stale / revoked / recalled / blocked / owner_missing / needs_recheck |
license_restriction_snapshot |
导出、二次分发、AI 上下文等限制 |
约束:
- 来自市场、外部知识、授权知识或 AI 派生内容的正文必须有来源归因。
- 来源状态变为 revoked / recalled / blocked / owner_missing 后,不自动回滚正文,但阻断新生成、新确认、受限导出和新绑定。
4.6 muse_content_planning_item 与 muse_content_narrative_state
作品规划台的正式事实载体。
| 表 | 职责 |
|---|---|
muse_content_planning_item |
作品方向、章节大纲、情节节拍、章节目标等已确认规划项 |
muse_content_narrative_state |
work / chapter / entity 维度的叙事运行态 |
不变式:
- 规划候选未确认前不得进入正式生成上下文。
- Narrative State 需要真实持久化载体,不能只靠 MetaSchema 表达。
4.7 MetaSchema 表
MetaSchema 是管理员治理的元结构定义,由管理后台配置和发布,但它不是管理员私有数据,也不是某个页面表单的临时状态。阶段 7 默认由 yudao-module-content 承载基础表,按 domain / scope / target_type 服务作品、规划、知识和 AI 上下文。
| 表 | 职责 |
|---|---|
muse_content_meta_schema |
元结构根对象,包含 schema_key、domain、scope、target_type、当前激活版本和适用范围 |
muse_content_meta_field |
字段定义、类型、必填、枚举、引用、排序和校验规则 |
muse_content_meta_visibility_policy |
uiVisible、aiContext、userEditable、userSearchable、exportable 等可见性策略 |
muse_content_meta_schema_version |
发布版本、激活状态、灰度、回滚和影响预览摘要 |
muse_content_meta_schema 字段合同:
| 字段语义 | 要求 |
|---|---|
schema_key |
稳定业务键,同一 domain / scope / target_type 下唯一 |
domain |
content / world / narrative / knowledge / ai_context |
scope |
work / chapter / block / entity / relation / event / agent |
target_type |
目标对象类型,例如 novel_work、character_entity、generation_context |
active_version_id |
当前激活版本,可为空但不能指向 disabled / archived 版本 |
effective_scope |
适用范围摘要,至少能表达全局、租户、用户、作品、类型灰度 |
projection_version |
当前读模型或运行时缓存使用的投影版本 |
muse_content_meta_schema_version 字段合同:
| 字段语义 | 要求 |
|---|---|
schema_id |
关联 muse_content_meta_schema |
schema_key |
冗余稳定键,便于审计和跨版本查询 |
version_no |
单调递增版本号,同一 schema_key 下唯一 |
status |
draft / reviewing / published / active / disabled / archived / rolled_back |
active_flag |
当前是否激活;同一 schema_key + effective_scope 只能有一个 active |
effective_scope |
本版本实际生效范围,发布后不可变 |
field_contract_snapshot |
字段、可见性和校验规则快照 |
impact_preview_snapshot |
发布前影响预览,包含受影响作品数、字段差异、潜在不可逆项 |
rollback_from_version_id / rollback_to_version_id |
回滚链路引用 |
projection_from_version / projection_to_version |
投影升级或降级的版本边界 |
published_by / published_at |
发布人和发布时间 |
activated_by / activated_at |
激活人和激活时间 |
约束:
- 管理员配置 MetaSchema 不等于修改用户作品内容、Local KB 或用户知识库资料。
- MetaSchema 不能把系统保护节点重新分类为开放槽位。
uiVisible=false不等于不能进 AI 上下文;aiContext=true不等于用户可见;exportable=true仍必须受 owner、授权、来源状态和导出许可约束。- 后端必须在可见投影、保存、检索、AI 上下文组装和导出预检中重复校验 MetaSchema 策略,不能只靠前端隐藏字段。
- 唯一键:
muse_content_meta_schema(domain, scope, target_type, schema_key);版本唯一键:muse_content_meta_schema_version(schema_key, version_no)。 - 激活唯一约束:同一
schema_key + effective_scope仅允许一条active_flag = true的版本;物理库不支持部分唯一索引时,由状态机事务和唯一辅助列共同保证。 - 发布前必须写
impact_preview_snapshot;回滚必须保留 from / to 版本,不能覆盖原版本记录。
4.8 导入与导出
| 表 | 职责 |
|---|---|
muse_content_import_task |
上传旧稿、解析章节、导入正文初始化任务 |
muse_content_parse_task |
/parse-tasks 的 Schema 落点,记录全书或章节解析任务、状态、幂等键和重试信息 |
muse_content_parse_result |
全书解析章节结果,属于 Shadow 对象 |
muse_content_export_task |
作品正文、设定、规划和作品知识导出任务 |
muse_content_download_credential |
短期下载凭证 |
muse_content_parse_task 字段合同:
| 字段语义 | 要求 |
|---|---|
work_id / chapter_id |
解析目标;全书解析时 chapter_id 可为空,章节解析必须有值 |
trigger_type |
import / manual_parse / reparse_after_edit / scheduled_rebuild |
idempotency_key |
/parse-tasks 创建任务的幂等键,同一 owner 和目标范围内唯一 |
source_revision / source_hash |
解析输入的正文 revision 或导入文件 hash |
status |
queued / parsing / retrying / reviewing / parsed / failed / canceled |
retry_count / next_retry_at |
失败重试控制 |
parse_result_id |
最近一次主结果引用,便于轮询 |
index_status / index_version |
解析结果进入检索或读模型索引的状态和版本 |
error_code / error_message |
失败摘要,不保存敏感全文 |
muse_content_parse_result 字段合同:
| 字段语义 | 要求 |
|---|---|
parse_task_id |
关联 muse_content_parse_task |
work_id / chapter_id |
冗余目标,便于章节级查询和权限校验 |
result_type |
entity_draft / relation_draft / event_draft / narrative_state_draft / chapter_summary |
result_payload |
Shadow 结果内容,只能生成或刷新 Knowledge Draft |
target_draft_id |
已生成或刷新的 Knowledge Draft 引用 |
review_status |
pending / reviewed / ignored / stale / needs_reextract |
source_snapshot_id / authorization_snapshot_id |
解析输入和授权快照 |
约束:
/parse-tasksAPI 只能创建、查询、取消或重试muse_content_parse_task,不能直接写 Local KB Canonical。- 导入正文可以初始化正文 Canonical;解析出的知识仍必须进入 Knowledge Draft。
- 导出创建、完成前和下载时都要重验权限、来源状态和授权快照。
5. Knowledge Schema
5.1 muse_knowledge_base
知识库根表,统一承载全局知识库、用户知识库和已安装知识库引用。
| 字段语义 | 要求 |
|---|---|
kb_type |
global / user / installed_ref |
owner_user_id |
用户知识库 owner;全局知识库为空或系统 owner |
source_market_asset_id |
若来自市场安装,引用市场资产 |
status |
draft / active / processing / disabled / deleted |
visibility_policy |
可见范围摘要 |
license_snapshot_id |
授权或安装来源快照 |
不变式:
- 全局知识库由管理员治理,授权后才能成为普通用户可见、可检索或可生成来源。
- User KB 由
kb_type = user表达,owner 是普通用户;用户知识库可维护、绑定和上架市场。 - Local KB 不是独立知识库资产,而是作品内正式知识事实集合,见
muse_knowledge_entity/relation/event。 - 安装知识库不等于绑定作品,也不等于写入 Local KB。
5.2 资料、版本、切块和处理任务
| 表 | 职责 |
|---|---|
muse_knowledge_document |
知识库资料条目 |
muse_knowledge_document_version |
资料版本、hash、来源和处理状态 |
muse_knowledge_chunk |
系统拆分切块结果 |
muse_knowledge_processing_job |
解析、切块、索引、入 RAG、重建投影任务 |
约束:
- 拆分切块和入 RAG 是系统保护节点,不允许用户智能体替换。
- 处理失败的资料不得进入正式检索和生成上下文。
- Chunk 只服务检索和解释,不是正式作品事实。
5.3 Local KB 表
| 表 | 职责 |
|---|---|
muse_knowledge_entity |
当前作品正式实体 |
muse_knowledge_relation |
当前作品正式关系 |
muse_knowledge_event |
当前作品正式事件 |
muse_knowledge_attribute_change |
正式知识属性变更日志 |
约束:
- Local KB 不需要单独容器表,由
work_id归属表达。 - 用户确认 Knowledge Draft 或手动知识修正才写 Local KB。
- 正式知识修改必须保留来源、操作者、旧值、新值和风险处理结果。
5.4 muse_knowledge_draft
知识草稿表,替代旧文档中的 Proposal 产品语义。
| 字段语义 | 要求 |
|---|---|
work_id |
目标作品 |
draft_type |
entity / relation / event / attribute / narrative_state |
target_object_id |
若修改已有正式知识则记录目标 |
draft_payload |
待确认变更 |
current_canonical_snapshot |
生成草稿时的正式事实摘要 |
source_snapshot_id |
来源快照 |
authorization_snapshot_id |
授权快照 |
risk_marker_snapshot |
风险标记摘要 |
status |
pending / confirmed / ignored / stale / invalidated / needs_reextract |
不变式:
- Accept Suggestion 不自动确认 Knowledge Draft。
- 修改后合并正文时,旧 Knowledge Draft 必须失效或进入需重提取状态。
- 确认草稿前必须重验来源状态、授权快照、source hash、目标版本和风险标记。
5.5 muse_knowledge_source_binding
作品绑定的全局、用户或市场知识来源。Source Snapshot、Authorization Snapshot 和来源事件传播由独立 Source / Authorization Schema 承接,本节只保留 Knowledge 侧绑定事实。
| 字段语义 | 要求 |
|---|---|
work_id |
目标作品 |
kb_id |
绑定的 Knowledge Base |
source_snapshot_id |
绑定时的来源快照 |
authorization_snapshot_id |
绑定时的授权快照 |
binding_scope |
read / generation_context / parse_context / export |
binding_status |
active / stale / revoked / blocked / disabled |
target_version |
绑定目标版本,供来源事件传播和幂等重验 |
约束:
- Knowledge Source Binding 只表达作品与知识来源的绑定,不把来源资料写入 Local KB。
- 绑定创建、启用和导出前必须读取 Source / Authorization Snapshot;来源状态变化由 Source Propagation 更新
binding_status。 - 绑定失效不自动删除 Local KB Canonical,但阻断新检索、新生成和受限导出。
6. Source / Authorization Schema
Source / Authorization 是独立一级 Schema,不属于 Knowledge 子章节。它承接跨 Content、Knowledge、AI、Market、Account 的来源快照、授权快照、来源状态事件和传播目标,避免每个业务模块各自保存一份“当前授权通过”的临时布尔值。
6.1 muse_source_snapshot
不可变来源快照。任何会进入正文、Knowledge Draft、Local KB Canonical、AI 上下文、市场资产或导出的来源,都必须能追溯到本表。
| 字段语义 | 要求 |
|---|---|
source_owner_module |
来源 owner 模块:content / knowledge / ai / market / account / external |
source_type |
content_block / block_revision / parse_result / knowledge_draft / local_kb_entity / local_kb_relation / local_kb_event / user_kb_document / global_kb_document / market_asset_version / ai_candidate / import_file |
source_object_id |
来源对象 ID |
source_version |
来源版本,例如 Block revision、资料版本、资产版本或候选版本 |
source_hash |
来源内容 hash,用于 stale 检测 |
source_status |
active / stale / revoked / recalled / blocked / owner_missing / needs_recheck |
owner_user_id / tenant_id |
来源 owner 上下文;系统或全局来源可以为空但必须有系统 owner 标记 |
lineage_payload |
派生链路摘要,不保存敏感全文 |
evidence_payload |
权利声明、导入材料、检查摘要或外部引用摘要 |
created_by / created_at |
快照创建人和时间 |
约束:
- Source Snapshot 创建后不可变;来源内容变化必须创建新快照。
source_owner_module + source_type + source_object_id + source_version + source_hash建议唯一。source_hash是确认 Knowledge Draft、接受 AI Candidate、导出和绑定前的 stale guard,不能只存在于接口临时参数。
6.2 muse_authorization_snapshot
不可变授权快照。它记录某次读取、生成、绑定、确认、导出或下载动作在当时为什么被允许或拒绝。
| 字段语义 | 要求 |
|---|---|
source_snapshot_id |
授权所针对的来源快照 |
actor_user_id |
发起用户或系统服务身份 |
authorization_purpose |
read / generate / bind / confirm_draft / accept_candidate / export / download / publish / evaluate |
authorization_scope |
可用范围摘要,至少表达 work / chapter / kb / asset / account 范围 |
authorization_status |
allowed / denied / expired / revoked / needs_recheck |
expires_at |
授权过期时间;长期授权也必须明确策略来源 |
license_restriction_snapshot |
导出、二次分发、AI 上下文、市场发布等限制 |
policy_version |
授权策略版本 |
decision_reason |
允许或拒绝原因摘要 |
idempotency_key |
同一动作重复校验的幂等键 |
约束:
- Authorization Snapshot 创建后不可变;授权撤销或策略变化必须产生新快照或 Source Status Event。
- 所有高危写入只允许引用
authorization_status = allowed且未过期的快照。 - 导出创建、完成和下载都要重验授权,不能复用创建任务时的过期快照。
6.3 muse_source_status_event
来源状态事件,由来源 owner、市场治理或授权服务发起,经 outbox 幂等传播。
| 字段语义 | 要求 |
|---|---|
event_key |
全局幂等键,建议来自 source_snapshot_id + event_type + event_version |
source_snapshot_id |
受影响来源快照 |
event_type |
source_updated / source_revoked / asset_recalled / asset_blocked / owner_missing / license_changed / authorization_expired / authorization_revoked |
event_version |
同一来源事件版本,单调递增 |
event_status |
pending / propagating / completed / partially_failed / failed |
reason_code / reason_message |
状态变化原因摘要 |
source_owner_module |
冗余 owner,便于路由传播 worker |
occurred_at / created_at |
事件发生和记录时间 |
约束:
event_key唯一,outbox 消费必须幂等。- 事件创建不直接改业务 Canonical;必须展开为 propagation target,由目标 owner 或 source propagation worker 按目标合同处理。
6.4 muse_source_propagation_target
来源事件传播目标表,记录每个目标对象是否已应用、阻断、跳过或失败。
| 字段语义 | 要求 |
|---|---|
event_id / event_key |
来源状态事件引用和幂等键 |
target_owner |
content / knowledge / ai / market / account / export |
target_type |
content_block_source_attribution / content_export_task / content_download_credential / content_parse_result / knowledge_draft / local_kb_entity / local_kb_relation / local_kb_event / knowledge_source_binding / ai_candidate / ai_context_snapshot / ai_agent_slot_binding / ai_task / market_install / market_authorization / account_asset_summary |
target_id |
目标对象 ID |
target_version |
目标对象版本,例如 Block revision、draft version、entity version 或 task version |
propagation_status |
pending / applied / blocked / skipped / failed / retrying |
retry_count / next_retry_at |
重试次数和下次重试时间 |
last_error_code / last_error_message |
失败摘要 |
applied_at |
成功应用时间 |
传播目标必须覆盖:
- Content Block Source Attribution:更新
muse_content_block_source_attribution.source_status,不自动回滚正文。 - Local KB Canonical:覆盖
muse_knowledge_entity/relation/event,阻断新检索、新生成、新确认和受限导出,不自动删除正式事实。 - Knowledge Draft、Parse Result、Knowledge Source Binding、AI Candidate、AI Context Snapshot、Agent Slot Binding、Market Install / Authorization、Export Task、Download Credential 和 Account Asset Summary。
约束:
event_key + target_owner + target_type + target_id + target_version建议唯一。- 传播失败时默认阻断新使用,再暴露治理重试入口。
- 已确认 Canonical 不因来源事件自动回滚,但后续新生成、新确认、新绑定、受限导出和下载凭证必须按传播结果阻断或重验。
7. AI / Agent Schema
7.1 Prompt 和 Agent
| 表 | 职责 |
|---|---|
muse_ai_prompt |
Prompt 根对象 |
muse_ai_prompt_version |
Prompt 版本、变量结构、灰度和激活状态 |
muse_ai_agent |
智能体根对象,区分 system / user / market_installed |
muse_ai_agent_version |
Prompt、模型绑定引用、参数、输出合同、工具授权摘要 |
约束:
- 系统 Agent 由管理员发布。
- 用户 Agent 可创建、购买、安装和按作品绑定开放槽位。
- Agent 表不保存 New-API token 明文、完整供应商响应或成本账本 authority。
7.2 系统功能链路和槽位
| 表 | 职责 |
|---|---|
muse_ai_system_function_chain |
生成、分析、检测、导入解析、知识处理等系统预编排链路 |
muse_ai_system_function_chain_version |
功能链路版本,记录 chain definition、激活状态、回滚来源和兼容范围 |
muse_ai_chain_node |
链路节点,标记 protected / open_slot / internal |
muse_ai_protected_node_registry |
不可替换保护节点注册表 |
muse_ai_override_slot |
可替换子智能体槽位定义 |
muse_ai_agent_slot_binding |
作品级槽位绑定,记录用户选择的 Agent Version |
muse_ai_system_function_chain_version 字段合同:
| 字段语义 | 要求 |
|---|---|
chain_id |
关联功能链路根对象 |
version_no |
同一 chain 下单调递增,唯一 |
status |
draft / published / active / disabled / rolled_back |
active_flag |
当前激活版本标记,同一 chain + effective_scope 仅一条 active |
effective_scope |
全局、租户、用户组、作品类型或灰度范围 |
chain_definition_snapshot |
节点顺序、输入输出合同、保护节点和开放槽位快照 |
rollback_from_version_id / rollback_to_version_id |
回滚链路 |
muse_ai_protected_node_registry 字段合同:
| 字段语义 | 要求 |
|---|---|
node_key |
稳定节点键 |
node_type |
见下方保护节点枚举 |
replacement_policy |
固定为 system_only 或 admin_only,不能为 user replaceable |
input_contract / output_contract |
输入输出结构、敏感字段和失败输出合同 |
permission_requirement |
需要的权限过滤、owner 校验和授权快照 |
audit_requirement |
是否必须写 muse_audit_event、保留哪些摘要 |
quality_policy_version_id |
需要质量门控时关联质量策略版本 |
status |
active / disabled / deprecated |
保护节点枚举至少包括:
node_type |
含义 |
|---|---|
input_compliance |
输入合规 |
permission_filter |
权限过滤 |
audit |
审计写入 |
split_chunk |
拆分切块 |
rag_ingest |
入 RAG |
semantic_guardrail |
语义围栏 |
static_check |
静态检查 |
quality_gate |
质量门控 |
source_status_check |
来源状态校验 |
shadow_to_canonical |
Shadow -> Canonical 规则 |
output_compliance |
输出合规 |
约束:
- 用户不能把保护节点重分类为开放槽位。
- 槽位绑定必须保存 agentVersion、authorizationSnapshot、toolGrantSet、回退策略和绑定来源。
- 授权撤销、版本下架或输出不合约时,按状态机回退默认或阻断。
muse_ai_agent_slot_binding唯一性是“同一work_id + slot_key仅允许一条 active 记录”;inactive 历史允许多条,不能用work_id + slot_key全量唯一键。
7.3 Tool Grant 与运行权限包
| 表 | 职责 |
|---|---|
muse_ai_tool_grant |
工具、动作、目的、输入来源、输出位置、副作用、外发目标和预算授权 |
muse_ai_runtime_permission_envelope |
某次试用、生成、解析、检测或质量评测的服务端权限包 |
运行权限包必须固化:
- actor。
- work / chapter / block。
- slot。
- agentVersion。
- toolGrantSet。
- allowedContextScopes。
- egressPolicy。
- budget。
- authorizationSnapshot。
- sourceSnapshot。
- auditRequirement。
前端、Prompt、模型输出和智能体自述权限无效。
7.4 任务、候选和质量结果
| 表 | 职责 |
|---|---|
muse_ai_task |
生成、续写、扩写、润色、解析、检测、质量评估等异步任务 |
muse_ai_context_snapshot |
上下文组装摘要、来源、授权和省略原因 |
muse_ai_candidate |
可展示或待决策的 AI 候选 / Shadow Candidate |
muse_ai_candidate_quality_result |
质量门控评分、关键维度、非关键维度、重写结果和风险 |
muse_ai_candidate_decision_archive |
接受、修改后合并、丢弃、过期或失效的决策归档 |
muse_ai_quality_policy |
质量策略根对象,定义适用任务、门控维度和治理目标 |
muse_ai_quality_policy_version |
质量策略版本,记录阈值、权重、重写策略、激活状态和回滚链路 |
muse_ai_evaluation_dataset |
评测数据集,绑定来源、授权、样本版本和适用范围 |
muse_ai_evaluation_run |
评测运行记录,绑定 agent / chain / policy / dataset 版本 |
muse_ai_evaluation_result |
单样本或聚合评测结果,记录评分、失败维度和治理建议 |
质量策略与评测字段合同:
| 表 | 必要字段 |
|---|---|
muse_ai_quality_policy_version |
policy_id、version_no、status、active_flag、effective_scope、metric_contract_snapshot、threshold_snapshot、rewrite_policy_snapshot、rollback_from_version_id、rollback_to_version_id |
muse_ai_evaluation_dataset |
dataset_key、dataset_version、source_snapshot_id、authorization_snapshot_id、sample_count、status、effective_scope |
muse_ai_evaluation_run |
run_key、dataset_id、dataset_version、agent_version_id、chain_version_id、quality_policy_version_id、status、started_at、finished_at、idempotency_key |
muse_ai_evaluation_result |
run_id、sample_id、result_status、score_payload、failed_dimension、quality_gate_status、risk_marker_snapshot、source_status |
约束:
- AI Task 成功不能直接写 Canonical。
- Candidate 进入可接受状态前必须通过静态检查、来源状态校验、质量门控和输出合规。
- Candidate Decision Archive 只证明用户对候选的处理,不证明知识草稿已确认。
- 质量门控可以在 Shadow 内有限重写候选,但不能替用户确认正文或知识。
8. Marketplace Schema
8.1 市场资产
| 表 | 职责 |
|---|---|
muse_market_asset |
市场对象统一根,类型为 work / agent / knowledge_base |
muse_market_asset_version |
上架资产版本快照,引用源作品、源智能体或源知识库版本 |
muse_market_listing |
展示状态、审核状态、价格/授权摘要、分类和推荐摘要 |
muse_market_license |
可见、可用、可复制、可商用、可导出、可绑定、可再发布等规则 |
不变式:
- 市场资产记录不替代源对象 owner。
- 上架不转移所有权。
- 作品资产当前 feature gate 关闭:只允许阅读、收藏和授权记录,不允许模板化、参考写入或进入 AI 上下文。
8.2 购买、授权、安装和绑定
| 表 | 职责 |
|---|---|
muse_market_authorization |
用户获得许可的记录,可来自购买、免费获取或管理员授权 |
muse_market_purchase_ref |
支付订单或外部交易引用,不保存支付清结算事实 |
muse_market_install |
智能体或知识库安装到账户可用资产 |
muse_market_bind_precheck |
绑定或使用前的目标 owner 预检结果 |
muse_market_handoff_session |
市场到作品、智能体或知识库工作台的一次性 handoff 会话 |
muse_market_collection |
用户收藏市场资产,支持作品资产 feature gate 关闭时的阅读和收藏链路 |
muse_market_collection 字段合同:
| 字段语义 | 要求 |
|---|---|
user_id |
收藏用户 |
asset_id / asset_version_id |
收藏的市场资产和当时版本 |
collection_source |
listing / detail / handoff / recommendation |
status |
active / canceled |
idempotency_key |
重复收藏或取消收藏的幂等键 |
约束:
- 购买不等于安装。
- 安装不等于关联作品。
- 收藏不等于购买、授权或安装;收藏不写作品正文、规划正式项、Local KB 或 Agent Slot Binding。
- 安装、绑定和 handoff 只授予账户可用性、目标空间预检结果或短期跳转上下文,不写作品正文、规划正式项或 Local KB。
- 绑定预检必须由目标 owner 校验权限、状态、版本、许可、来源和目标对象。
- handoff token 只能短期有效、原子消费一次,不能绕过目标空间确认。
8.3 发布、审核和治理
| 表 | 职责 |
|---|---|
muse_market_publish_draft |
发布者准备中的发布草稿 |
muse_market_publish_check_snapshot |
发布检查快照,绑定资产版本、材料 hash、权利声明和安全检查 |
muse_market_review_submission |
发布审核提交记录 |
muse_market_governance_action |
下架、召回、恢复、部分恢复、终裁等治理动作 |
muse_market_appeal |
申诉记录 |
约束:
- 发布提交必须消费未过期且匹配当前草稿的检查快照。
- 下架、召回、blocked 必须产生 Source Status Event。
- 管理员拥有系统级治理能力,但不替用户修改已购买或私有资产内容。
9. Account Schema
是否新增 yudao-module-account,还是改造 member,后端落地前需要单独决策。无论物理模块如何选择,账户相关 Schema 只保存 Muse 创作系统所需的权益、用量和聚合视图。
| 表 | 职责 |
|---|---|
muse_account_profile_ext |
Muse 展示名、创作偏好入口等扩展资料 |
muse_account_preference |
用户偏好、通知偏好、创作辅助偏好 |
muse_account_entitlement_snapshot |
套餐、配额、余额或外部网关权益的本地快照 |
muse_account_entitlement_ledger |
权益变更 append-only 流水,承接购买、赠送、到期、撤销和管理员调额结果 |
muse_account_quota_adjustment |
管理员调额请求记录,支持幂等、原因、前后值和审计 |
muse_account_usage_record |
生成、检索、评估、导出等任务级用量归属摘要 |
muse_account_asset_summary |
个人中心资产摘要读模型 |
muse_account_security_event |
登录、敏感导出、凭证失效、异常访问等安全事件摘要 |
muse_account_export_task |
个人资料、安全事件或账户记录导出任务 |
muse_account_quota_adjustment 字段合同:
| 字段语义 | 要求 |
|---|---|
account_user_id |
被调整账户 |
adjustment_type |
quota_increase / quota_decrease / entitlement_grant / entitlement_revoke / balance_correct |
idempotency_key |
管理员调额幂等键,同一管理员动作唯一 |
reason_code / reason_message |
调整原因,必须可审计 |
before_value_snapshot / after_value_snapshot |
调整前后权益或配额摘要 |
ledger_entry_id |
调整落账后的权益流水引用 |
status |
pending / applied / rejected / canceled |
approved_by / applied_by |
审批人和执行人 |
audit_event_id |
高危动作审计引用 |
muse_account_entitlement_ledger 字段合同:
| 字段语义 | 要求 |
|---|---|
account_user_id |
账户 owner |
ledger_type |
purchase / admin_adjustment / usage_debit / refund / expiration / revoke / sync_correction |
source_owner / source_id |
来源 owner 和来源记录,例如支付订单、调额记录或外部同步记录 |
idempotency_key |
落账幂等键 |
before_value_snapshot / delta_value_snapshot / after_value_snapshot |
前值、变更值和后值 |
reason_code / reason_message |
业务原因 |
audit_event_id |
审计事件引用 |
约束:
muse_account_usage_record不是 New-API 成本账本 authority。muse_account_entitlement_ledger和muse_account_quota_adjustment均为 append-only;错误调整必须用反向流水或撤销记录补偿,不能覆盖原记录。- 管理员调额必须写幂等键、原因、前后值、操作者和审计事件。
- 个人中心是 read model 和跳转入口,不反写作品、知识、市场资产或 AI 任务事实。
- 账户导出只能导出个人中心 owner 范围内的数据,并记录下载审计;
muse_account_export_task是 API 必须承接的 Schema 落点,接口层应提供创建、轮询、取消和下载凭证领取。
10. Audit、Outbox 与 Integration
| 表 | 职责 |
|---|---|
muse_audit_event |
高危业务动作 append-only 审计 |
muse_outbox_event |
跨模块领域事件、来源传播事件和投影事件 |
muse_projection_task |
RAG / 检索 / 报表 / 读模型投影任务 |
muse_integration_call_log |
Muse 调用 New-API、文件、检索、通知等外部接口的轻量日志 |
Owner 约束:
- 业务审计由动作 owner 写入。例如 Accept 由
content/ai协作写审计,知识确认由knowledge写审计,市场治理由market写审计。 - Outbox 由产生事实变化的 owner 写入,消费端只能投影、通知或传播状态,不能反向写 Canonical。
- Integration Call Log 由调用外部服务的模块写入;Yudao infra API 日志仍保留为技术日志,不替代业务审计。
约束:
- 普通接口调用日志优先复用 Yudao infra;高危业务动作必须进入 Muse append-only 审计。
- Integration Call Log 记录 correlationId、idempotencyKey、重试组、外部对象引用和摘要,不保存敏感全文。
- Outbox 事件必须幂等消费,失败可重试,不能让外部投影反向写 Canonical。
11. 关键约束矩阵
| 约束 | 数据结构落点 |
|---|---|
| 用户接受候选不自动确认知识草稿 | muse_ai_candidate_decision_archive 与 muse_knowledge_draft 分表、分状态 |
| 修改后合并导致旧知识草稿失效 | Candidate Decision Archive 记录 merge_after_edit,Knowledge Draft 进入 invalidated 或 needs_reextract |
/parse-tasks 不直接写 Local KB |
muse_content_parse_task 记录任务,muse_content_parse_result 记录 Shadow 结果,只产生或更新 muse_knowledge_draft |
| 章节解析确认不写 Local KB | Parse Result 进入已审阅状态,只产生或更新 muse_knowledge_draft |
| 来源撤权不自动回滚正式正文 | muse_content_block_source_attribution 保留状态,Source Propagation 阻断新使用 |
| 来源撤权必须覆盖 Local KB Canonical | muse_source_propagation_target 覆盖 muse_knowledge_entity / relation / event,阻断新检索、新生成、新确认和受限导出 |
| 市场购买、授权、安装和绑定不写作品事实 | muse_market_authorization / install / bind_precheck / handoff 与 Content / Knowledge Canonical 分离 |
| 市场收藏不代表授权或安装 | muse_market_collection 只保存用户市场行为 |
| 用户只替换开放槽位 | muse_ai_override_slot / muse_ai_agent_slot_binding,保护节点在 muse_ai_protected_node_registry |
| 入 RAG 不反写事实 | muse_knowledge_processing_job / muse_projection_task 只产投影和索引 |
| 导出必须重验来源许可 | Export Task + Download Credential + Authorization Snapshot |
| 管理员不替用户确认私有事实 | Admin 接口只写配置、治理和审计;Content/Knowledge 决策命令必须校验 owner 用户 |
| 管理员调额必须可追溯 | muse_account_quota_adjustment + muse_account_entitlement_ledger append-only,保留幂等键、原因、前后值和审计 |
12. 索引策略
12.1 热路径索引
必须优先覆盖:
- 我的作品:
owner_user_id + update_time。 - 章节列表:
work_id + order_no。 - Block 列表:
chapter_id + order_no。 - 解析任务:
work_id + status + update_time、idempotency_key。 - 解析结果:
parse_task_id + chapter_id + review_status。 - 当前候选:
work_id + status + create_time。 - 知识草稿:
work_id + status + update_time。 - Local KB 检索:
work_id + entity_type + name。 - 用户知识库:
owner_user_id + status + update_time。 - 来源传播:
event_key、target_owner + target_type + target_id + propagation_status。 - 市场资产:
asset_type + listing_status + category + update_time。 - 市场收藏:
user_id + status + update_time、user_id + asset_id。 - 授权/安装:
user_id + asset_type + status。 - 任务轮询:
actor_user_id + task_type + status + update_time。 - 账户权益流水:
account_user_id + create_time、idempotency_key。
12.2 唯一性
建议唯一键:
muse_content_chapter(work_id, order_no)。muse_content_block(chapter_id, order_no)。muse_content_block_revision(block_id, revision)。muse_content_parse_task(idempotency_key)。muse_content_meta_schema(domain, scope, target_type, schema_key)。muse_content_meta_schema_version(schema_key, version_no)。muse_knowledge_entity(work_id, entity_type, normalized_name)。muse_source_snapshot(source_owner_module, source_type, source_object_id, source_version, source_hash)。muse_source_status_event(event_key)。muse_source_propagation_target(event_key, target_owner, target_type, target_id, target_version)。muse_ai_system_function_chain_version(chain_id, version_no)。muse_ai_quality_policy_version(policy_id, version_no)。muse_ai_agent_slot_binding(work_id, slot_key)仅约束active_flag = true的 active 记录;inactive 历史允许多条。muse_market_install(user_id, asset_id, asset_version_id)。muse_market_collection(user_id, asset_id)仅约束status = active的收藏记录。muse_market_bind_precheck(precheck_id)。muse_account_quota_adjustment(idempotency_key)。muse_account_entitlement_ledger(idempotency_key)。muse_outbox_event(event_key)。
激活唯一约束:
- MetaSchema:同一
schema_key + effective_scope仅一条active_flag = true的muse_content_meta_schema_version。 - Function Chain:同一
chain_id + effective_scope仅一条active_flag = true的muse_ai_system_function_chain_version。 - Quality Policy:同一
policy_id + effective_scope仅一条active_flag = true的muse_ai_quality_policy_version。
12.3 JSON 查询
结构化 JSON 字段默认不作为复杂查询主路径。凡是进入筛选、排序、权限、状态机或审计的字段,必须提取成显式列或读模型字段。
13. 迁移与 SQL 文件口径
13.1 迁移策略
阶段 7 的迁移策略:
- 先确认本文件的模块 owner 和表清单。
- 再按 Yudao 模块生成对应 migration / SQL。
- 每个模块只创建自己 owner 的表。
- 不把旧
services/muse-engineFlyway V1-V18 直接搬进yudao-cloud。 - 不把旧 PostgreSQL
jsonb、UUID/BIGSERIAL、S0-ID 字符串主键作为当前工程基线。
13.2 后端-04a 的处理
后端-04a-完整建表SQL.sql 当前不再是目标建表 SQL。它只能作为旧实现快照和迁移对照,不允许直接执行到 yudao-cloud 目标库。
目标 SQL 必须等以下事项确认后重新生成:
account是新增模块还是改造member。- 目标数据库类型和 Yudao migration 方式。
- 是否启用 Yudao 多租户字段。
- 物理外键策略。
- JSON 字段的物理类型和 TypeHandler。
14. 非目标
- 不重写 Yudao
system、infra、pay、bpm、member、report、mp的原生 Schema。 - 不在 Muse 本地复制 New-API 模型路由、成本账本和调用日志 authority。
- 不把市场资产获取、安装或绑定设计成自动写入作品事实。
- 不把知识库绑定设计成自动写入 Local KB。
- 不把智能体配置设计成可替换保护节点。
- 不把旧
Proposal语义恢复为产品主词;产品和接口层统一使用 Knowledge Draft。 - 不在本阶段伪造一份未经目标数据库和 Yudao migration 策略确认的完整可执行 SQL。
15. 关联阅读
- 工程结构与模块职责:
后端-02-工程结构与模块职责.md - 领域模型与聚合设计:
后端-01-领域模型与聚合设计.md - 关键流程实现与接口契约:
后端-03-关键流程实现与接口契约.md - API 契约:
后端-05-统一API契约-v1.md - 核心数据结构与双轨模型:
架构-02-核心数据结构与双轨模型.md - 状态机与约束清单:
架构-04-状态机与约束清单.md