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 硬引用
软引用