人生事件与时间轴
经历与档案 技术代码 timeline
用精确或模糊时间组织人生事件、地点、章节和历史空白。
模块职责
- 用精确或模糊时间组织人生事件、地点、章节和历史空白。
- 维护“人生事件与时间轴”内部对象的生命周期与隐私边界。
- 通过稳定公共接口与其他模块协作,禁止跨模块直接修改数据表。
明确不负责
- 不直接处理其他模块的领域规则。
- 不把用户原文静默替换为AI生成内容。
- 不在浏览器或移动端复制服务端权限判断。
Mobile 微信小程序选择器兼容边界
Identity、Action、Routine、Decision、Timeline 与 Review 的 39 个原生 select v-model 已改为 uni-app picker。当前模块只把合法 detail.value 索引显式映射回固定领域 code 或动态稳定 key/id;缺失、非整数和越界索引保持原值并失败关闭。H5、App 与微信小程序构建已通过,但微信开发者工具和手机真机验收仍须独立执行。
结构化字段
| 字段 | 中文名 | 编辑类型 | 必填 | 敏感性 | 业务说明 |
|---|---|---|---|---|---|
eventType | 事件类型 | select | 是 | 普通 | 用于记录“事件类型”的业务值。 |
eventTitle | 事件标题 | text | 是 | 普通 | 用于记录“事件标题”的业务值。 |
eventDescription | 事件描述 | textarea | 是 | 敏感 | 用于记录“事件描述”的业务值。 |
startAt | 开始时间 | datetime | 否 | 普通 | 用于记录“开始时间”的业务值。 |
endAt | 结束时间 | datetime | 否 | 普通 | 用于记录“结束时间”的业务值。 |
timePrecision | 时间精度 | select | 是 | 普通 | 用于记录“时间精度”的业务值。 |
timeText | 时间原文 | text | 否 | 普通 | 用于记录“时间原文”的业务值。 |
location | 地点或区域 | text | 否 | 普通 | 用于记录“地点或区域”的业务值。 |
八项可执行功能
| 编号 | 功能 | 规划版本 | 完成状态 | 独立外部边界 | 执行策略 |
|---|---|---|---|---|---|
TIM-001 | 人生事件记录 | V1.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
TIM-002 | 模糊时间表达 | V1.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
TIM-003 | 事件先后关系 | V1.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
TIM-004 | 地点关联 | V1.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
TIM-005 | 人生时间轴视图 | V2.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
TIM-006 | 人生空白补全 | V2.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
TIM-007 | 争议事件处理 | V2.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
TIM-008 | 公开时间轴 | V3.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | publish |
本模块状态:partial 8。状态由专用规则、聚合持久化、PC/移动行为和自动测试共同决定;外部 blocker 与历史 Provider 记录只作独立注记,不提升完成度。
HTTP 与数据生命周期
当前双端专用工作台调用 /api/v2/timeline 下的 events、view、places、gaps、publications 及事件关系、地点关联、争议子资源。新建事件使用 POST;编辑原事件使用 PATCH 并携带原 revision 和修改原因。所有写入沿用专用幂等控制器;只有 current/revision 回读确认后才提示保存成功。公开发布与撤销仍需要用途和资源绑定的 step-up。匿名页面只读取 public 接口提供的白名单快照。权限、隐私、排序和成环校验由服务端负责;本轮前端修改不代表这些业务已完成验收。
历史通用登记层(非当前专用页面入口)
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/timeline.htmlMobile 使用 /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 行为和当前自动测试共同证明。
R32 分类编码进度
R32 AUD-053~055、058、061~062 已编码待统一测试:严格日历校验、公开快照精度版本 2、独立面板加载、辅助资源分页、关联自身主键回读、按精度输入和设备时区转换。历史快照不回填猜测精度;未执行本批测试或运行验收。
R08:时间轴阅读与编辑分流
双端默认阅读服务端排序时间轴,提供类型筛选和继续加载;不会自动选中第一条事件。详情读取选定事件正文;新建和编辑显式进入,编辑提交原事件的 PATCH、revision 和修改原因。未修改的时间范围从补丁中省略,保留原毫秒和模糊时间语义;年月日按原精度回填。移动编辑入口在页面参数到达后挂载,无 id 为新建,有 id 为编辑,非法 id 不降级新建。
关系、地点、争议只针对明确选择的事件展开。目标事件支持标题查询和分页选择;地点保存和关联为两步明确操作,精确地点必须主动填写经纬度。时间空白使用独立起止输入。公开摘要单独编辑,保留私有正文;公开候选单独选择。公开草稿展示服务端已保存的白名单内容,确认绑定当前草稿,切换时清除确认和密码。未知写入冻结输入,使用原编号和原请求重试;已有回执仅重试 GET 对账。
本轮为编码进度:不表示关联/争议完整管理、权限、匿名访问、撤销与缓存已通过业务验收。本轮后续补齐事件关系、地点关联和争议的当前状态管理;完整历史、截图和真实数据库操作待统一验收。
R08:公开时间轴独立阅读(TML-002)
PC 公开页面不挂载私有工作区布局;路由守卫仅放行单 token 的公开路径,事件管理仍要求登录。双端显示中文类型、服务端批准的摘要、公开时间与粗粒度地点。历史快照缺少时间精度时不推断补填。“进入我的空间”是独立入口。PC 切换链接、刷新和浏览器缓存恢复会移除旧快照并重新读取,迟到响应不能覆盖当前链接;Mobile 返回页面重新读取公开状态。服务端白名单、撤销和缓存权限边界未在本批改动,匿名真实访问与撤销场景尚未验收。
必要检查:双端类型检查及两份公开页模板、样式编译通过。未运行截图、匿名网络访问、真实发布撤销或部署。
R08 L07 / TML:既有记录管理闭环
双端针对明确选定事件读取既有关系、地点关联及争议;三类读取独立报错,失败不显示为空。显示当前状态、可读取的关联事件或地点名称、争议依据与解决结论,不自动选择第一项。关系和地点关联可在选择后填写原因、确认撤销;撤销不删除事件或地点原对象。
争议 OPEN/REOPENED 可填写结论并通过 DISPUTE_RESOLVE 资源绑定再次认证解决;RESOLVED 可填写原因重新打开。命令固定对象与修订,未知写入沿用原请求,回执后只重试 GET 对账。地点编辑接现有 PATCH,保留未展开的国家与行政区字段;取消无写请求。
公开版本列表显示状态、修订和事件数,选择后重新读取 owner 当前快照;仅已发布且有 token 的版本提供既有公开页面入口。发布与撤销仍需显式确认/原因和用途绑定认证,匿名页不读取私有原文。
边界:Timeline 关系合同是事件关系,不是人物档案关系;地点删除与关系恢复没有本批客户端可用动作,撤销后需明确重新建立关联。完整子资源修订历史与权限、冲突、匿名撤销场景仍待统一验收。本批仅作局部编译及合同静态核对,未真实发布或修改生产数据。
R08 七类对象的历史查看
双端事件、事件关系、地点、地点关联、时间空白、争议和公开版本均提供按需历史入口。每次读取 20 条,可加载更早版本;历史字段按白名单转为中文,不展示 owner、公开令牌或内部摘要。事件保留原时间精度,公开版本只展示当时保存的公开条目。收起、切对象、换账号和移动页面隐藏清除历史,迟到响应不会重新显示。
补充 GET /api/v2/timeline/event-places/:linkId/revisions,沿用 timeline:relation、owner 和模块限制,读取现有不可变历史表,无数据迁移。所有修订查询拒绝无效或溢出游标;前端校验对象、类型、降序版本和下一页边界。权限拒绝、网络失败与空历史分别显示,可重试;不提供自动回滚或历史覆盖。真实数据库、HTTP、分页和截图仍待统一验收。
2026-09-30 统一验证修复:反馈与技术信息
公开草稿列表及已对账保存反馈仅在技术模式追加修订号。回执仍先核对 current 与历史;公开发布、撤销及争议解决的权限、用途绑定再认证、掩码密码和原请求重试保持原合同。
未知服务端异常和网络库异常不再透传 message;权限错误经共享安全展示,本地输入校验及已知版本冲突、再次认证提示保留。负向测试已复现并阻止含合成秘密、内部主机和路径的异常正文进入反馈。原时间精度、日期范围和 typed 回读未修改;浏览器和真实业务持久化验收不由此推导。
2026-09-30 后续统一门禁修复
双端修订历史保留业务字段、原时间精度和可读时间,仅在技术模式展示内部修订值。未知异常经安全展示转换;本地校验与已知冲突、再次认证说明保持受控语义。历史分页、会话隔离和失败重试不因展示修改而放宽。
本批提供状态、真实模板渲染及客户端边界自动测试;不据此宣称浏览器、真实数据库、设备或外部服务验收。结果对应本地集成工作树,最终提交与运行编号由统一报告绑定。
2026-10-01 日期边界复核
事件和查询的 ISO 时间须通过真实日历校验;偏移规范化后的 UTC 年份限制为 0001 至 9999。年 0000 或偏移跨入年 0000/10000 在进入 PostgreSQL 前以时间校验错误拒绝,合法边界与毫秒 UTC 规范化保持不变。
共享本地时间编辑拒绝不存在日期和夏令时跳空;未改输入继续保留原始时间精度。本批定向行为测试与隔离 PG16 证据不代替浏览器或设备验收。
2026-10-02 逐图审计后的界面修复候选
移动首页网格按内容向起点布局并设置明确标题样式,避免内容被空白高度拉散;不更改时间轴写入和历史合同。
本节记录客户端源码修复;本批浏览器明暗主题、实际点击、读屏、原生设备与真实 API/数据库验收仍为 not_run。不会据样式、模板或状态测试提升领域完成度;既有权限、隐私、幂等、版本及回读合同保持独立。
第二批主内容地标复核:PC 人生时间线首页在默认布局的 main 内,将多余内层 main 改为普通 div;保留既有属性、指令、标题、路由与鉴权,不把容器语义修正视为领域能力实现。显式 layout:false 的公开时间线保留自身唯一 main。
2026-10-13 Web Timeline 会话与组件寿命隔离
本批仅补 R01 返回连续性之前的私有会话隔离:已确认身份或 session 变化时清空工作台的旧投影、草稿、选择、筛选游标、密码和待确认上下文;A→B→A 不复活旧请求。主列表、详情、候选及辅助资源的迟到成功、失败和加载收尾不再改写新会话状态。
Timeline 写入仍使用原输入、expectedRevision 和幂等键;派发与回包同时核对原尝试和登录代次。回执后的 GET 对账捕获具体尝试,逐段检查会话及页面寿命,不释放后来建立的尝试。step-up 回包及 proof 到领域写入之间核对原会话/页面,密码不持久化。已经发出的服务器请求不承诺取消或回滚。
此片不提供跨路由返回、位置恢复、刷新保稿或离开保护,同会话卸载后的未知请求恢复仍待后续设计;R01 继续开放,八项领域 partial 状态不变。本地验证已完成:原生产 H0 三例通过、七例预期业务断言失败;同字节候选新套件 39 例、既有 Web 23 例和 Node 路由/结构 22 例通过,原 Nuxt 类型及六项静态检查通过。首次 Node 运行因缺受控 TypeScript 入口在发现前失败,保留记录并在绑定现有锁定编译器后重跑。上述均为内存/合成传输或结构验证;真实浏览器、认证 HTTP、数据库、Mobile、设备、完整应用构建和部署未验收。
本片以既有会话通知为前提;后台 /auth/me 401 或静默过期未发出 scope 清理通知时,不保证立即清除页面。共享认证不在本批修改范围内。
2026-10-13 Web Timeline 一次返回与未保存保护
保留行点击的内联详情与原内联返回。时间轴和 view 列表经既有导航离开后,只有实际相邻 Back 成功才消费当前会话的一次查询、成功加载深度与原选中锚点。输入条件与已应用查询分别恢复,从当前首页及此次游标链复建;不保存旧 DTO、cursor、正文、密码或 proof,不写浏览器持久存储。
新建/编辑事件按全部原始表单字段比较未保存修改,取消与路由离开/更新须确认;后续导航取消保留原稿。POST、unknown、receipt 尚待严格核实时拒绝普通离开,只有原 current/revision 核实通过才解除。beforeunload 仅请求浏览器警告;强制卸载后的同会话尝试不 abandon/reset,相同事件意图重入失败关闭,不冒称恢复完成。
筛选/刷新可中止旧恢复,401/403撤下列表投影。侧栏新入、深链、Forward、replace、其他事件、中间导航、公开/登录、重定向与会话变化不继承旧查询。定位仅以当前列表锚点或有限滚动回退,不自动打开旧详情。
有界证据:原生产 H0 三例、八例预期业务失败;同字节候选59、旧生命周期39、其他Web23通过。首轮Node19/3是原生产同样复现的Taxonomy精确注册缺口,保留失败;独立注册修复发布fed4d3c后,本片在逐文件等价输入上再次通过59/39/23、原Node22、注册6、原Nuxt类型与六静态门。首次H0曾因新测试URL参数顺序错误失败,已独立审查纠正并同字节重跑,不计产品RED。
跨路由事件正文恢复、其他子表单未提交稿、硬刷新保稿与Mobile不在本片范围。真实浏览器/像素滚动、认证HTTP、PostgreSQL、设备、完整应用构建与部署未验收;会话清理仍依赖既有scope通知,静默401不通知的限制仍在。R01继续开放,八项领域partial与历史正文不变。最终文档生成和包校验在本段冻结后独立续证。
2026-10-28 E 线争议信息局部候选
PC 与 H5 的争议表单增加可选证据摘要,空白不生成证据。列表选择争议后通过独立详情接口读取当前说明、摘要、状态、解决结论及创建和更新时间;详情读取中、失败或中止时隐藏该争议的旧原文、证据和历史入口;取消后仍保持隐藏,独立详情成功回读后恢复,并使用当前版本进入解决或重新打开操作。
详情只接受原事件、原争议及有效会话和页面代次的返回,取消、换事件、会话变化或卸载使旧请求失效。既有解决、重新打开、再次认证、幂等和严格回执回读保持独立;处理争议不会代替事件修订。
本包保持 TIM-007 partial。本线前端候选端口为 15535 与 15545,按资源协调启停;隔离库认证失败,尚未核对数据库实际身份,未启动 7815 API、迁移或写入业务。新增断言和运行日志见本工作树 _work/uiux-local-line-e/RESULT.md;独立浏览器登录页截图仅证明认证阻塞,不能当作争议页面或持久化验收。