anenreo个人数字操作系统文档

← 返回首页

人物、关系与个人评价

人物与现实关系 技术代码 relationship

记录人物档案、互动、联系频率、评价、证据和关系变化。

模块职责

明确不负责

REL-001/REL-002 B1 与 REL-003/REL-004/REL-007 B2 后端纵向切片(PC、Mobile 与 IAB 尚未完成)

REL-001 typed 人物主档与 REL-002 状态命令后端已接入:人物主档、不可变 revision、ACTIVE/PAUSED/ARCHIVED/SEALED 状态事件、owner-scoped 权限、expectedRevision、幂等和 Record Kernel 兼容投影由同一事务编排。新增 0047_relationship_typed_root.sql 建立四张 B1 表及 PostgreSQL 16 deferred guard,0048_relationship_b1_integrity_hardening.sql 追加 canonical ULID(首字符 0-7)、当前 root revision、append-only、SEALED root update guard、授权 code/role 矩阵 fail-closed 和 B1 预留字段守护;Record Kernel 映射固定为 title=personNamesummary=relationshipTypepayload={}sourceType=USER_INPUT,并严格校验 revision、createdAt/updatedAt/recordedAt、时间空值和 archivedAt。0047 固定授权 ID 在 Runner 进入其 DDL 前只读预检,冲突返回稳定错误且不自动改写存量权限;PG16 证明数据库事务锁并发,service/HTTP E2E 证明应用层 201/409 与失败零副作用;真实 HTTP+PG 同链路并发仍需纳入 _work runtime runner 验收。

typed v2 使用 /api/v2/relationship/people/:personId/status/archive/restore/revisions/status/history;旧 v1 写入返回 410,generic v2 Relationship 写入返回 501,失败均不产生 typed/core/revision/status/audit/idempotency 副作用。SEALED PATCH 在幂等预占前返回 RELATIONSHIP_STATUS_CONFLICT/409,SECRET 降级在没有共享 step-up adapter 时失败关闭。B1 的 last_contact_atcurrent_evaluation_revision 分别在 root/revision 上由四条独立 null 约束保护;B2 只解除两条 last-contact 约束,B3 只解除两条 current-evaluation 约束。

B2 已实现 REL-003 共同经历、REL-004 联系与终态控制、REL-007 typed 时间轴后端:事实/控制/时间轴均为 append-only typed ledger,contact projection、effective privacy、expectedRevision、幂等、owner 权限、签名 cursor 与 source 精确回读由专用 v2 路由编排;0049 迁移提供复合 FK、canonical ULID、未来时间、内容 hash、source 与投影 deferred guard,并确保 self-supersedes 拒绝、新增 revision 必须按当前 root revision 顺序追加,以及当前 root revision 的 lastContact 快照一致;历史快照只能通过先前合法追加保留。PC、Mobile 与 IAB 真实交互/验收尚未完成,B2 不改变 ROU-007 public port 六字段和 generic source。

B1/B2 后端纵向切片已实现 REL-001/REL-002/REL-003/REL-004/REL-007 的 typed 领域规则、持久化、权限、revision、幂等、审计和 PostgreSQL 16 守护;PC、Mobile 与 IAB 真实交互/验收尚未完成,Relationship Catalog 八项仍保持 partial。ROU-007 继续只读取既有六字段 public port,B2 不切换 generic source。

REL-005/REL-006 B3 后端纵向切片(Catalog 仍为 partial;PC、Mobile 与 IAB 尚未完成)

REL-005 以 0050_relationship_evaluations_evidence.sql 建立 typed evaluation revision 链、REQUESTED proposal 当前投影与 append-only event。POST proposal 只在事务一写入 REQUESTED 并返回 202;受显式 RELATIONSHIP_EVALUATION_WORKER_ENABLED 控制的本地 worker 以有限批次、单轮串行和 lease/heartbeat 恢复 provider 候选,只有用户通过当前密码签发的会话绑定一次性 step-up proof、expected revision 和幂等确认后,才在同一事务追加 USER_CONFIRMED evaluation、current/root revision、timeline 与审计。READY 只能转 CONFIRMED/REJECTED/EXPIRED,EXPIRED 保留候选;source digest 在 worker 与 confirm 前按实际 typed 字段、证据控制、有效隐私和 revision/hash 重新计算,漂移稳定转 STALE。

REL-006 的 evidence/control 只追加,控制种类固定为 SUPERSEDEDRETRACTEDPRIVACY_RECLASSIFIED;替换证据必须同 owner/person 且不可自指,隐私只允许上收,SECRET 无明确 consent 不进入 provider source、snapshot 或 digest。PostgreSQL 16 deferred guard 覆盖 owner/composite FK、canonical ULID、proposal/event 一致性、evaluation/current projection、timeline source、候选隐私、proof 一次性消费、append-only 与禁止 DELETE/TRUNCATE。B3 后端 unit/PG16 合同测试已加入;真实本地 Ollama 和完整上线验收仍未执行,不能据此提升 Catalog 状态。

结构化字段

字段中文名编辑类型必填敏感性业务说明
personName人物名称text敏感用于记录“人物名称”的业务值。
relationshipType关系类型select普通用于记录“关系类型”的业务值。
importance重要程度number普通用于记录“重要程度”的业务值。
lastContactAt最近联系时间datetime普通用于记录“最近联系时间”的业务值。
desiredContactIntervalDays期望联系周期(天)number普通用于记录“期望联系周期(天)”的业务值。
opinion当前评价textarea敏感用于记录“当前评价”的业务值。
evidence评价证据textarea敏感用于记录“评价证据”的业务值。
counterEvidence评价反证textarea敏感用于记录“评价反证”的业务值。

八项可执行功能

编号功能规划版本完成状态独立外部边界执行策略
REL-001人物档案V1.0部分实现:领域闭环尚未完成,功能入口失败关闭无独立外部边界注记record
REL-002关系状态V1.0部分实现:领域闭环尚未完成,功能入口失败关闭无独立外部边界注记record
REL-003共同经历V1.0部分实现:领域闭环尚未完成,功能入口失败关闭无独立外部边界注记record
REL-004上次联系V1.0部分实现:领域闭环尚未完成,功能入口失败关闭无独立外部边界注记record
REL-005个人评价V2.0部分实现:领域闭环尚未完成,功能入口失败关闭无独立外部边界注记record
REL-006评价证据V2.0部分实现:领域闭环尚未完成,功能入口失败关闭无独立外部边界注记record
REL-007关系时间轴V2.0部分实现:领域闭环尚未完成,功能入口失败关闭无独立外部边界注记record
REL-008关系维护雷达V3.0部分实现:领域闭环尚未完成,功能入口失败关闭无独立外部边界注记analyze

本模块状态:partial 8。状态由专用规则、聚合持久化、PC/移动行为和自动测试共同决定;外部 blocker 与历史 Provider 记录只作独立注记,不提升完成度。

HTTP 与数据生命周期

该模块使用 Record Kernel /api/v2/records/relationship 统一提供创建、列表、详情、修改、归档、恢复、修订历史、执行历史和功能入口;POST/GET /api/v2/records/:moduleCode、GET/PATCH /api/v2/records/:moduleCode/:recordId、POST /archive、POST /restore、GET /revisions、GET /executions、POST /features/:featureId;共 9 条获批路由,无 DELETE。Identity typed 快照的通用写入失败关闭,typed 读取也必须使用 v2 专用接口;非 typed legacy core 仅保留只读兼容。 v2 不提供永久销毁,旧 v1 兼容链不从新页面调用。创建和更新先经 SystemRecordPolicyPort,由内核外的 SystemRecordPolicyRegistry 依次执行专用规范化、跨字段规则和 Catalog 字段规则;带键 cache miss 先取得事务内幂等预占,再执行无副作用策略;策略失败会让预占与数据库、审计副作用共同回滚,成功 cache hit 则直接精确恢复首次 revision。功能地址会先校验目录归属;partial 功能统一返回 HTTP 501 FEATURE_NOT_IMPLEMENTED,且不新增修订、执行、审计或幂等记录。迁移维护 active 时普通写返回 HTTP 503 SYSTEM_MAINTENANCE,读接口继续可用。MEM-001 至 MEM-008 的通用功能地址均返回对应专用地址错误,必须改用各自的 /api/v2/memory/... 专用入口。

参数化代码入口

apps/api/src/kernel/recordsapps/api/src/record-policiesapps/api/src/feature-registryapps/web/app/pages/modules/[moduleCode]apps/web/app/composables/useRecordKernel.tsapps/mobile/src/pages/module/index.vueapps/mobile/src/pages/recorddocs-site/modules/relationship.html

Mobile 使用 /pages/module/index?module=... 与 /pages/record/* query 容器;MEM-001 使用 /pages/memory/text/create,MEM-002 至 MEM-008 使用 /pages/memory/text/detail 专用治理详情,TAX-001 至 TAX-008 共用 /pages/taxonomy/tags/index 的标签、分类、合并、编号、标题、AI 候选和审计专用交互。 旧 24×5 包装页和 descriptor 副本不属于当前架构。

设计原因

模块目录提供稳定业务语义和白名单;RecordAggregate 只负责公共记录生命周期,不解释 payload。SystemRecordPolicyRegistry 在内核外精确覆盖 Catalog 24 个模块,保留 Routine、Decision、Memory、Interview 的专用规范化,并拒绝未登记模块。Batch 003 固定规范大写 ULID、标题 200/摘要 1000 字符合同、payload 顶层覆盖与 payloadRemove 删除语义、受控 JSON 资源上限、递归敏感字段治理、幂等最小引用和精确 revision/execution 回放。0009 只追加 summary CHECK 与 owner/module[/status] + id DESC 匹配索引。 该等价层与公共加固仅保持普通记录合同,不代表领域功能完成;领域完成仍必须由专用规则、类型化持久化、PC/Mobile 行为和当前自动测试共同证明。