MOSS Data Model

Phase 1a → v2 数据模型关系图

通用内容模型。内部 ID 与源 ID 分离,新增内容使用 UUID;信号采用 append-and-publish,业务事件与审计事件原子提交。

重构 内容层 — 通用内容模型
C

content_items

原 bookmarks 重构
idTEXTPK · INTERNAL
sourceTEXTx_bookmark | rss | pocket | …
source_idTEXTNOT NULL
domainTEXTknowledge | action | context | …
titleTEXT
bodyTEXT原 text
urlTEXT
tagsTEXTJSON array
metadataTEXTJSON object · 源专属字段
created_atTEXTISO 8601 · 原始创建时间
imported_atTEXTISO 8601
source + source_idTEXTUNIQUE
-- X 书签 metadata 示例: { "author_name": "Tom Huang", "author_handle": "tuturetom", "category": "01-ai-agents-and-coding", "category_label": "AI、Agent 与编程", "ordinal": 1 }
F

feedback_events

FK 更新
idINTEGERPK AUTO
content_idTEXTFK → content_items
valueTEXT
created_atTEXT
I

import_runs

不变
idINTEGERPK AUTO
kindTEXT
item_countINTEGER
created_atTEXT
新增 信号层 — 规则引擎输出
R

signal_runs

新增
idINTEGERPK AUTO
generation_keyTEXTUNIQUE
base_keyTEXTdate + input + rules
input_versionTEXTimport id + feedback id
rule_versionTEXT
statusTEXTactive | superseded
rule_countINTEGER
signal_countINTEGER
created_atTEXT
activated_atTEXT
S

signals

新增
idINTEGERPK AUTO
run_idINTEGERFK → signal_runs
rule_idTEXT
domainTEXT
titleTEXT
bodyTEXT
urgencyTEXTnormal | warn | danger
tagsTEXTJSON array
metadataTEXTJSON object
created_atTEXT
新增 审计层 — 系统操作日志
A

audit_events

新增
idINTEGERPK AUTO
kindTEXTfeedback | import | signal_run | decision | system
titleTEXT
bodyTEXT
ref_typeTEXT可选 · content | signal | import_run
ref_idTEXT可选 · 软引用
created_atTEXT

表间关系

feedback_events.content_id content_items.id FK · CASCADE 删除 · 每条内容 0..N 个反馈事件
signals.run_id signal_runs.id FK · CASCADE 删除 · 每个批次 0..N 条信号
signal_runs.status active run 部分唯一索引 · 任一时刻最多一个 active 批次
audit_events.ref_type + ref_id content_items | signal_runs | … 软引用 · 无 FK 约束 · 可选

数据流

*.md x-bookmarks.ts + x-date.ts content_items + import_runs + audit_events 单事务 · (source, source_id) upsert
用户点击反馈 POST /api/feedback feedback_events + audit_events 单事务 · 共同提交或回滚
SSR / 输入版本变化 规则引擎 (5 rules) 新 active run + signals + audit_events append-and-publish · 失败保留旧批次
signals Today 视图 FocusStack + SignalCards + CoverageMeter
content_items + feedback Knowledge 视图 Content Flow 统计 + 分类分布 + 校准进度
audit_events Governance 视图 审计事件列表 + 策略卡片

字段迁移映射

重构 bookmarks → content_items 字段对照
bookmarks (旧)
content_items (新)
id TEXT PK
id TEXT PK(迁移保留旧值;新增使用 UUID)
+
source TEXT('x_bookmark')
+
source_id TEXT NOT NULL(迁移时 = 旧 id)
+
domain TEXT('knowledge')
title TEXT
title TEXT
text TEXT
body TEXT
url TEXT
url TEXT
+
tags TEXT('[]')
ordinal INTEGER
metadata.ordinal
author_name TEXT
metadata.author_name
author_handle TEXT
metadata.author_handle
posted_at TEXT(X 格式)
created_at TEXT(ISO 8601)
category TEXT
metadata.category
category_label TEXT
metadata.category_label
imported_at TEXT
imported_at TEXT
+
UNIQUE(source, source_id)
FK feedback_events 字段变更
bookmark_id TEXT FK → bookmarks
content_id TEXT FK → content_items

域 × 数据表映射

K

Knowledge

内容、订阅、学习、输出、研究

content_items feedback_events signals
A

Action

计划、维护、问题、应急、复盘

placeholder
C

Context

机会、车辆、身份、文化、影响力

placeholder
S

Self

医疗、日记、偏好、审美与人生事件

placeholder
A

Asset

理财、家庭资产、账号与软件成本

placeholder
G

Governance

权限、审计、备份、安全与自动化

audit_events signals import_runs

规则引擎 → 信号

uncalibrated-categories Knowledge · normal/warn json_extract(metadata, '$.category') 聚合,反馈 <10%
stale-import Knowledge · warn/danger 最近导入超过 7/30 天
feedback-coverage Governance · normal/warn 整体反馈覆盖率 content_items vs feedback_events
author-review Knowledge · normal json_extract(metadata, '$.author_handle') 聚合,≥5 无正向
category-skew Governance · normal json_extract(metadata, '$.category') 占比 >30%
核心重构
新增表
不变
FK 硬引用
软引用