个人状态与恢复机制
自我与身份 技术代码 state
根据正常、低能量、生病、出行和危机状态调整系统行为。
模块职责
- 根据正常、低能量、生病、出行和危机状态调整系统行为。
- 维护“个人状态与恢复机制”内部对象的生命周期与隐私边界。
- 通过稳定公共接口与其他模块协作,禁止跨模块直接修改数据表。
明确不负责
- 不直接处理其他模块的领域规则。
- 不把用户原文静默替换为AI生成内容。
- 不在浏览器或移动端复制服务端权限判断。
结构化字段
| 字段 | 中文名 | 编辑类型 | 必填 | 敏感性 | 业务说明 |
|---|---|---|---|---|---|
stateType | 状态类型 | select | 是 | 普通 | 用于记录“状态类型”的业务值。 |
intensity | 状态强度 | number | 是 | 普通 | 用于记录“状态强度”的业务值。 |
startedAt | 开始时间 | datetime | 是 | 普通 | 用于记录“开始时间”的业务值。 |
endedAt | 结束时间 | datetime | 否 | 普通 | 用于记录“结束时间”的业务值。 |
reason | 触发原因 | textarea | 否 | 普通 | 用于记录“触发原因”的业务值。 |
restrictions | 当前限制 | textarea | 否 | 普通 | 用于记录“当前限制”的业务值。 |
recoveryPlan | 恢复计划 | textarea | 否 | 普通 | 用于记录“恢复计划”的业务值。 |
activePolicy | 生效策略 | textarea | 否 | 普通 | 用于记录“生效策略”的业务值。 |
八项可执行功能
| 编号 | 功能 | 规划版本 | 完成状态 | 独立外部边界 | 执行策略 |
|---|---|---|---|---|---|
STA-001 | 状态切换 | V1.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
STA-002 | 低能量模式 | V1.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | analyze |
STA-003 | 生病模式 | V1.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | analyze |
STA-004 | 出行模式 | V1.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | analyze |
STA-005 | 危机状态保护 | V2.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
STA-006 | 中断恢复向导 | V2.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | snapshot |
STA-007 | 状态历史 | V2.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | snapshot |
STA-008 | 状态驱动策略 | V3.0 | 部分实现:领域闭环尚未完成,功能入口失败关闭 | 无独立外部边界注记 | record |
本模块状态:partial 8。状态由专用规则、聚合持久化、PC/移动行为和自动测试共同决定;外部 blocker 与历史 Provider 记录只作独立注记,不提升完成度。
HTTP 与数据生命周期
该模块使用 Record Kernel /api/v2/records/state 统一提供创建、列表、详情、修改、归档、恢复、修订历史、执行历史和功能入口;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/state.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 行为和当前自动测试共同证明。
R08 状态策略与恢复输入
STA-001 审查项:经 contracts/state.ts 确认 workloadScaleBp 是工作负荷缩放基点,10000 对应 100%。双端以 0 至 100%、最多两位小数编辑,提交仍为整数基点,空值不自动补零。百分比只说明个人工作负荷偏好,不宣称已重排既有任务。有效策略继续展示服务端快照的百分比、当前适用状态、来源与安全下限覆盖说明。
安静时段按指定 IANA 时区的本地钟面 HH:mm 编辑,转换为 0 至 1439 的分钟。起止须同时填写或清空,有时段必须有时区;结束早于开始时标明次日,同刻不解释为全天或无时段。当前代码仅证实策略保存与投影,未证实提醒调度消费安静时段,不宣称保存即停止提醒。当前状态与正在编辑的偏好状态分开说明,保存偏好不解除生病或危机的服务端安全下限。
补接双端策略编辑器的 save 事件;策略 root、历史与 effective 全部读取成功才开放编辑,读取失败不按无策略提交 revision=0。待回读期间不能切换状态类型;原幂等和严格回读保留,移动表单采用原生 form-type 提交。
STA-002 审查项:恢复首先呈现下一小步和当前隐私,标题必填并可由用户明确采用本机首句建议;中断、已完成和阻碍按需展开。合同允许未填项为 null,不自动填入完成或复制敏感状态正文。创建仍为 DRAFT,已准备后才能完成,终态仍需确认。列表读取错误与独立创建错误分离,失败不显示零条空态。
本轮为客户端编码及静态编译,比例边界、跨时区、策略合并、真实创建与状态推进、持久化和截图验收待统一执行,模块仍为 partial。
2026-10-02 逐图审计后的界面修复候选
PC 首页和历史页修正主色按钮配对;PC 通用 /modules/state/new 进入 /modules/state/switch,历史读取保留。移动恢复向导可选回顾使用主题按钮和 aria-expanded;缺失或非法编号不请求数据,提供确定的恢复列表返回入口;读取失败可重试,待确认写入仍阻止离开。
本节记录客户端源码修复;本批浏览器明暗主题、实际点击、读屏、原生设备与真实 API/数据库验收仍为 not_run。不会据样式、模板或状态测试提升领域完成度;既有权限、隐私、幂等、版本及回读合同保持独立。
第二批:99b9ff16 之后的源码修复
PC 状态片段与切换历史并发读取但分别保存加载、成功和错误状态;追加页失败保留已读记录,读取错误不冒充写入错误。历史页顶层标题可获路由焦点,根节点避免嵌套 main。
首批图像复核后的第二批补充
PC 当前状态卡片默认中文眉题,技术模式追加 STATE / CURRENT PROJECTION,不改状态投影内容。
第五批:2026-10-02 历史筛选、游标与读取失败
PC/Mobile 将待应用筛选与已应用筛选分开,追加页始终携带与原签名游标对应的已应用条件;仅显式应用筛选才从新条件第一页读取。同条件刷新失败保留已确认页、快照时刻与原游标;条件改变时先清除旧上下文,避免新筛选失败后展示旧条件数据。
移动状态记录与状态切换记录分别维护读取、成功和错误状态,一类失败不遮蔽另一类结果,也不显示未确认的零条空态。追加失败保留数据和游标,成功重试清除相应错误;忙碌时禁用 picker 并拒绝迟到的选择事件。PC 继续独立保存两类读取状态,追加入口遵守页面忙碌守卫。
与 PMD 同批的 18 项真实编译 setup/SSR 合成回归由冻结基线 6 通过/12 失败转为全部通过,且独立复核通过;18 项是合并范围,不能在各模块重复累加。此批不修改服务端筛选、签名游标、隐私、状态转换或持久化合同;浏览器、真实数据库和设备验收不能以 SSR 代替。
2026-10-03 State→Commitment 两个消费方源码候选
两个消费方源码与后端/客户端独立复核已冻结;本节仅概述接入边界,精确测试数量、hash 与验证层级见 docs/验证/2026-10-03-State承诺消费方集成证据.md;设计见 docs/设计与计划/设计规格/2026-10-03-State消费方与承诺借还保护设计.md。仅接入 COMMITMENT_EXCHANGE_AMOUNT_REVEAL 与 COMMITMENT_EXCHANGE_FINALIZE(SETTLED/WAIVED 应用内记录命令)。不代表所有 State 策略或全部模块均已受保护,不执行支付、现实债务豁免、健康推断或外部联系;Catalog 完成度不变。
金额沿用一次明确密码提交,Auth 在两个 proof 域独立验证;REQUIRE_STEP_UP 使用不同的 Commitment 与 State proof,后者由 x-anenreo-state-step-up-proof 单独传输。receipt 增加实际 rootRevision 和 stateAuthorization,客户端核对版本、用途与 consumer;NORMAL 保留原 Commitment proof 要求和旧客户端兼容。无 Commitment proof 的遮罩 GET 不调用 State,State header 单独不能揭示金额;受保护揭示消费 proof,因此维护期可返回 503。
终态原确认流程在 NORMAL 下保持;STATE_HIGH_RISK_STEP_UP_REQUIRED(428)后才显示一次密码挑战。新增 POST /api/v2/commitment/items/:commitmentId/exchange/status/step-up 只签发授权,不执行终态命令。签发与重试精确保留冻结 body 和原 idempotency-key;取消无命令。已提交成功同键重放最小回执,不再次消费 proof;未提交 inFlight 结果不得共享为成功。回执后读取失败仅 GET 恢复,不重发已成功命令。
公开 typed port 自身拥有或加入 maintenance 真实事务,实际隔离必须 READ COMMITTED。锁顺序为 maintenance→终态预占(如有)→State owner→app_user SHARE→auth_session SHARE→root→exchange→Commitment proof→State proof→fresh clock_timestamp→验证与效果→提交。重新核对 ACTIVE 用户、authzVersion、session owner/transport/revokedAt/expiry、真实权限与绑定;两个 proof 锁完再检查过期。Reliability 保留原 Repeatable Read,没有新增 DDL。
State proof 五分钟、一次性、hash-only 持久化,绑定 owner/session、当前 episode ID/revision 与服务端精确目标摘要;客户端不提交 operation。无 current 是 null/0,保留 NORMAL 默认及 ACTIVE owner NORMAL 策略,不伪造 episode。当前 BLOCK(403)优先于已有 proof;不可用、stale、非法来源或隔离(503)均失败关闭;缺少 state:read 仍是权限失败。通用 State step-up 不签发 HIGH_RISK_CONSUMER 通配凭据。
双端必须保留路由/会话/卸载/版本变化的迟到响应拒绝、取消清凭据与金额重新遮罩;密码和 proof 不进入日志、错误、审计、幂等正文、URL 或离线存储。纯规则、mock 与编译 SFC setup/SSR 只证明对应源码编排;本轮真实 PostgreSQL 双连接并发、HTTP、浏览器焦点/读屏、原生设备和外部 Provider 为 not_run,不用静态或合成测试提升业务完成度。旧历史报告保持原样。
2026-10-05 双端出行必需字段输入
本片正文记录至本批根predoc实际终态,作者、独审和根原件分别记账。STA-004正常切换表单补齐Web安静起止及Mobile计划结束和安静起止,全部仅TRAVEL显示且由用户填写。无默认或旧策略复制,不放松服务端必需校验,不移植STA-008允许quiet同时空的语义;raw非法/部分输入保留并安全失败关闭。00:00、23:59、跨午夜和同刻保持原分钟合同,计划结束仍为既有instant。
安装Uni H5完整parser/compiler及Input/Form/Button链证实同文件需form-type提交和不带DOM .prevent的submit监听;这是内存宿主中的安装组件事件,不是native设备tap。Mobile新三输入只在disabled边界重建,编辑中element identity保持;真实focus/keyboard未验收。Web合成click显式调用原compiled form submit handler,不冒称浏览器native传播。vendor UniPicker未改。
作者同字节最终H0为Web1/Mobile3通过;旧生产RED为Web21失败加1通过、Mobile23失败;候选Web22/Mobile23各在UTC、Manila、New_York全过,45个独立case不按三TZ重复累加。旧回归96/124、API纯规则7、date/interaction31、双类型与原security/comments/integrity有实际原件;独审另跑14个命令:同一45个new case三TZ全过、旧回归168/180、API纯规则7、Node15、Web边界20加1原HTTP skip,双类型和security通过;根当前全量和构建另见下段。30文件初始审计只是静态核验、零测试,原失败诊断保留。
根当前10个predoc门:Web154文件3630通过加1原HTTP skip、425suites;Mobile190文件4719通过、622suites。新fullName/status与作者、独审一致,878旧test/support无修改;Mobile只保留原唯一动态日期标题规则及两条vendor characterization。Node仍 exit1:领域5通过,一般802通过/18原pwsh_ENOENT失败/3原skip;根逐项审阅后继续,不能称全绿。双类型、H5、predoc Nuxt、同次日志9项网络门、原14链和完整性exit0,警告保留;Nuxt此时含基线文档。
独立正文GO、全新物理stage两轮generator和精确五文档采用须另有显式许可。正式文档后的final Nuxt/网络/postdoc/对账、发布和CI只留外部续证,不回填本正文。
四父入口实际客户端API/幂等controller/transport wrapper接合成最低传输,保留原输入原key、proof/privacy、disabled/pending与receipt后只GET严格回读。纯normalizer、模板事件、内存renderer与合成transport分层记账;真实浏览器、HTTP、认证授权、PostgreSQL、原生设备与Provider缺证据者仍not_run。State八项继续 partial。详见 docs/验证/2026-10-05-State出行必需字段表单证据.md。
2026-10-08 State 本地日期时间校验检查点
双端状态草稿 mapper 复用共享本地日历/DST 校验,拒绝非法日历、部分输入和不存在的墙上时间;错误沿用原安全类型并保留输入。明确 ISO Z/offset 保留独立 instant 路径,按 UTC 钟面校验日历与换算年份,不误用设备 DST 拒绝合法瞬时点。设备本地时间不按目的地时区重解释;空值、TRAVEL 必需守卫、正文、隐私、确认、proof、版本、幂等及严格回读保持。
截至 2026-10-08 05:51:20 UTC,双端基线最小 RED 均按预期业务失败;50 个不同新增客户端用例(每端 25)在 UTC、Asia/Shanghai、America/New_York 各全过;旧 State/旅行及 Commitment-State 守卫 Web 114、Mobile 108 在 UTC、Asia/Manila、America/New_York 各全过且无跳过。校正后的六路径分期:Web 全量164文件、4356通过及1条原HTTP名称排除;Mobile全量204文件、5737通过且无跳过;双类型、Nuxt/H5构建、同次日志九项网络检查、原14项离线门、完整性与文档保留45/45均exit 0。Node领域5通过、一般820通过/3条原Constitution报告缺失skip,runner exit 0。
RED 各20 collected、1 failed、19按名称过滤,实际因非法日期未抛错而失败。focused 测试早期树差集为七路径,额外一份候选HTML随后恢复基线;代码及四份新spec字节未变,后续全量/类型/构建/离线/Node为六路径分期。新旧测试次数不跨TZ重复累加。
注释门首次因CONTROLLED_TYPESCRIPT_ENTRY_REQUIRED exit 1,使用既有受控工具入口重试后exit 0;原失败保留且代码/spec未变。文档保留45/45发生在正式新文档采用前。Web原HTTP名称排除与Node三条原Constitution报告缺失skip不计为通过。
mapper与原模板编译/安装Uni控件内存宿主、合成传输证据不能代替真实浏览器或native tap;真实HTTP/授权、数据库和设备验收仍not_run。正式文档后续门、发布与CI未完成,不声称项目全绿;既有状态与历史说明保留,State八项继续partial。精确命令及原件摘要见 docs/验证/2026-10-08-State本地日期时间校验证据.md。
2026-10-13 状态切换表单说明分层受控检查点
Web 状态切换表单普通模式改用业务语言说明保存确认;预期修订、幂等与严格回读细节沿既有技术信息偏好显示。敏感正文遮罩、当前密码、二次确认、策略阻断、错误和处理中提示保持。生产仅首段说明变化,script/style 及其它模板不变;输入、校验、权限、API、请求身份及父页未知结果/待回读恢复不改,State 仍为 partial。
2026-10-13 11:31 UTC 正文冻结:基于 main 0a3d297 的最终同字节新 spec,H0 1 通过与业务 RED 1 预期失败分别带 14 名称过滤;候选新 15 和原八份 145 用例均通过且零跳过,实际 Nuxt 类型及六静态门通过。原始别名导入失败和 Document 宿主失败保留,各自最小适配均经独审与根批准后重跑;未更改断言或屏蔽错误。
实际 Pinia、展示、mapper、完整 SFC 与原生指令在合成元素宿主运行,不代表浏览器、真实 HTTP/认证授权、数据库、原生设备、外部服务或 CI 验收。最终文档、包和发布结果由后续独立原件续记。详见 docs/验证/2026-10-13-State切换表单说明分层验证.md。
2026-10-23 真实PC/H5状态与恢复局部审计
STA001至008均有本轮真实专用API及双端局部证据,目录partial不变。合成状态七段依次为NORMAL、LOW_ENERGY、SICK、TRAVEL、CRISIS、LOW_ENERGY、NORMAL,前六段已结束,最终显式NORMAL为进行中;最初current为空,不能称恢复到原空记录。SICK的PRIVATE返回403后改为SECRET保存,SICK与CRISIS普通响应正文遮罩。出行计划结束、时区和跨午夜1320/420保留。
五项严重问题局部修复:数据库时间仅出站规范化;新危机无目标签发revision统一null且精确消费不改;双端仅七个正文响应字段允许LF/CR/TAB;H5策略和恢复两表单去掉不适用的原生.prevent。每项保留业务RED及真实界面回归。API9文件90项、Web6文件101项、Mobile7文件100项通过,双前端以America/New_York执行;三端类型及构建通过,六静态另封存。
个人LOW策略2500至3000基点两修订,安静1290/390和Asia/Manila保留;编辑LOW不降低当前CRISIS的REQUIRE_STEP_UP,最终NORMAL仍使用默认10000。单条人工恢复DRAFT1至4、READY5、COMPLETED6,多行和原字段保留,无来源episode自动复制。PC在两次GET受控失败耗尽后原回执只GET恢复;首次多行修复发生HMR,原pending按钮未重试,另有明确边界记录。
历史七段和七事件,LOW筛选2/2、SICK1/1;transition按目标状态筛选。片段读取故障注入时旧片段与独立切换记录保留。UIA051失败与假空态混淆、UIA052有效枚举展示缺口继续P2。候选UIA055经新实测未复现:24:00保留并在提交前显示范围错误、零写请求,因此不登记缺陷。未验收真实设备、完整权限并发、全部SECRET语义、审计和幂等表零副作用、实际提醒或任务消费。详见docs/验证/2026-10-23-状态切换策略与恢复阶段证据.md。