PC Web 架构
PC Web 使用 Nuxt 4、Nuxt UI、TanStack Query 和 Pinia。首页是个人状态驾驶舱,模块首页按照人物、时间、关系、行动、健康、决策、AI和遗产等原型展示业务;概览、记录和流程共享同一 API 和路由。
LAN 同源代理
默认 Web 只监听回环地址。显式 LAN 前端模式使用 0.0.0.0 监听,但浏览器 API 基址改为同源 /api/v1,由 Nitro 仅转发 /api/v1/**、/api/v2/** 与 Swagger 文档路径到回环 API。/api/_nuxt_icon/** 留给 Nuxt Icon,禁止用 /api/** 整段代理覆盖图标接口;该模式不直接公开 API、Docs、数据库或本地 AI Provider。
路由与记录编号
记录详情、更新、归档、恢复、修订和功能路径在发起 HTTP 前统一校验规范大写 ULID;数组、对象、路径片段、小写或非法 Crockford 字符全部失败关闭。
错误与恢复状态
请求层把服务端错误解析为带 ApiErrorCode、HTTP status、requestId 和安全 details 的 WebApiRequestError。页面显式区分 AUTH_REQUIRED、FORBIDDEN、HTTP_404、REVISION_CONFLICT/HTTP_409、FEATURE_NOT_IMPLEMENTED、SYSTEM_MAINTENANCE/HTTP_503 和 NETWORK_ERROR;维护错误只表示写入口暂时冻结,不得显示成功提示或自动重试为新业务操作。未知本地异常统一使用 INTERNAL_ERROR,不得构造任意字符串错误码。
离线字体与图标
Web 使用系统字体栈并通过 ui.fonts=false 关闭 Nuxt UI 默认带入的 @nuxt/fonts,构建阶段不得初始化 Google、Google Icons 或其他远程字体 Provider。Nuxt UI 组件、颜色模式和 Icon 模块继续保留,Lucide 图标来自仓库已安装的 @iconify-json/lucide 本地集合,显式设置 icon.provider=server,服务器打包 Lucide 并关闭外部 Iconify API 回退(ssr=false 的默认 Provider 会直接访问外网)。发布后使用 node scripts/check-web-icon-runtime.mjs <站点基址> 扫描 Web 与模块目录源码中显式声明的 Lucide 名称,分批验证实际 SVG 内容(含历史别名解析)及业务 API 健康状态,不能仅凭首页 HTTP 200 判断图标正常。check-web-build-network-policy.mjs 检查源码配置和实际 build 日志;该门禁不代表页面交互或领域功能完成验收。
R08 功能目录与专用入口
PC 旧访谈、资源功能地址在创建通用查询前分别进入 /modules/interview/:id 与 /resource/:id 的既有专用详情;对象类型、状态、权限和合法动作由专用页面的 typed 回读确认。
当前 FeatureRegistry 登记均为 dedicated-command,通用功能目录不再提供重复的目的、说明、期望输出或 JSON 运行表单,也不发起试运行请求。保留 Catalog 状态与当前记录生命周期说明;记忆、身份、分类和个人原则提供已存在的专用工作台入口,通用记录编号不擅自转换为其他聚合编号。partial 不因此升级,专用操作也不因 partial 标签被统一禁用。
本轮范围为 PC 通用功能页;移动目录的入口整合、逐能力真实操作、权限、错误与持久化验收未运行。若 Registry 将来新增 record-action,需同步增加匹配该命令合同的专用输入与状态规则,不恢复无领域含义的 JSON 表单。
2026-10-02 逐图审计后的界面修复候选
字典、数据模型和自建实体页面以既有 anenreo 令牌替换未定义 app 令牌;反馈空态指向侧栏实际“反馈系统问题”入口。
通用新建组合只保留表单自身 PageHeader,main 由默认布局提供。PageHeader 默认 h1,工作台嵌入面板显式 h2,仅 h1 标记路由焦点。Capture、Identity、Resource、State、Health 的通用新建分流到现有专用入口;Taxonomy 通用分类与专用标签独立,不参与此次分流,历史列表与详情读取保留。
本节记录客户端源码修复;本批浏览器明暗主题、实际点击、读屏、原生设备与真实 API/数据库验收仍为 not_run。不会据样式、模板或状态测试提升领域完成度;既有权限、隐私、幂等、版本及回读合同保持独立。
第二批:99b9ff16 之后的源码修复
PC 列表按查询状态而非写入错误判断空态;加载、读取失败、确认空数据和筛选无匹配分开。Personal Model、State、Legacy 和 Publishing 清理嵌套主内容地标并保留顶层标题路由焦点。
自建实体清单区分可用实体集合与搜索结果,无匹配时提供清除搜索;Constitution 的创建与修订原因分开。AI 配置卡片元信息采用页面局部可缩放字号和密度间距,共享标题 span 规则收窄到元信息,避免覆盖徽标。
第二批进一步对 63 个已核实文件的 73 个内层 main 标签修正,其中 72 个改为 div,ConstitutionConflictWorkbench 的具名“冲突候选结果”改为 section 以保留具名区域,覆盖共享通用记录/自建表单、Review 首页/编辑/详情/修订历史、业务工作台及 Capture、自建、登录、承诺、宪法、人物、日常、状态、分类、资源、设置和旧日常页面。Taxonomy 仅额外替换两个原无类名列的选择器。默认布局保持唯一 main;登录与宪法公开页仍使用默认布局,显式 layout:false 的公开时间线保留自身 main。未修改标题、路由、属性、指令或鉴权。
第三批 PC 外观面板在十处普通选择按钮绑定 aria-pressed,覆盖基础/高级层级、模式、字号、主题及现有分段选择;保持原生 button、模型、处理函数和视觉选中逻辑,不新增未实现的 tablist 键盘协议。已执行真实组件定向回归,实际读屏及新浏览器复验仍为 not_run。
第四批:6d30b7bc 后的选中语义收尾
PC Modules 目录的分组/紧凑显示与业务域筛选均使用具名普通 role=group,按钮以 aria-pressed 同步实际当前值,移除不完整 tablist/tab 与 aria-selected 协议。保留原生按钮、现有 Tab/Enter/Space 操作模型、筛选计数、目录布局与全部处理函数,不编造 tabpanel 或方向键/roving tabindex 支持。该问题为与 f207 同源的既有源码语义遗漏,不是第三批新增像素缺陷。
第五批:37b47a7b 后的动态读取状态
Review 双端显式重新读取清理旧成功反馈;编辑读取失败隐藏旧表单,详情冲突后即使刷新成功也保留本次操作未完成的说明。PC Personal Model 的最新选择读取、新建初始化和卸载失效防止迟到响应改写当前草稿;State 双端将待应用筛选与签名游标上下文分开,保留同条件失败刷新前的快照,并区分两类历史的加载、空与错误状态。
上述细节分别见 Review、Personal Model 与 State。定向编译组件/SSR 合成回归及独立复核已执行;第五批真实浏览器、认证与数据库证据须以最终同提交运行另行记录,不用第四批 37b47a7b 的已通过结果抵扣。
表单输入精简(2026-10-02)
普通模块新建表单只对尚未触碰的字段应用一次已发布非空默认值,保留 false、0 和空字符串,并深拷贝对象;用户清空、手动输入和非法 JSON 原文均阻止后续默认覆盖。编辑快照及其中缺失字段不补新建默认值,配置刷新与条件显现遵循相同边界。原有 null 覆盖回退语义及管理员配置的字段分区折叠规则不变。普通模块与自建实体的可选摘要、时间和来源集中在“更多信息”,新建默认收起、编辑默认展开;折叠保留控件挂载及原始草稿。标题、隐私、领域必填字段和编辑原因继续可见,相关校验错误展开补充信息;不降低服务端必填或隐私规则,不自动推断领域事实。
本批为客户端源码候选;合成端口和编译组件回归不等于真实浏览器、设备、API、数据库或 Provider 验收。此类运行均 not_run,Catalog 仍为 24 项 implemented_local、168 项 partial。
Web route-block 插件解析(2026-10-03)
Nuxt 注入的裸名 vue-router/volar/sfc-route-blocks 无法由 Web 配置目录稳定解析;构建 shim 还可能误命中移动端的 router 4.x。Web 在 ready 中晚注册 prepare:types,从 Web 所用 Nuxt 的 package.json 依赖上下文解析并实际加载插件,仅替换目标条目为真实路径,覆盖 app 与 legacy 类型配置。缺插件、加载失败或缺目标条目均失败关闭;保留其他插件及选项、原顺序、strict/typeCheck 和移动端依赖,不升级依赖,不手改生成配置。
该修复只恢复 SFC <route> 自定义块的嵌入语言支持。route JSON/schema 映射存在不等于 CLI 已执行 JSON-schema 验证;vue-tsc 仍选择脚本类型服务,不能据此前警告认定过去整个 Web 类型检查无效。实际 prepare、类型检查、build 与负例结果见本日专项验证记录;业务和真实服务验收不因此晋级。
浏览器标题所有权(2026-10-11)
默认布局不再监听正文或把可见 H1 复制到浏览器标签。页面通过已有 useHead 明确决定标签文字,根组件只用 Nuxt / Unhead 的 titleTemplate 规范品牌后缀;没有标题、空白或品牌本身时只显示真实应用名 Anenreo。可见 H1、页面隐私分支与路由后焦点保持原合同,页面 head 的响应式更新和卸载释放由 Unhead 管理。
此修复避免壳层覆盖页面已选定的安全标题,不表示全部页面显式标题已完成隐私审计。生产仍为 ssr:false;专项回归已使用真实组件编译/挂载、Unhead DOM head、独立 SSR head、路由往返及迟到更新完成 8 项定向检查,相关 148 项回归和 Web 类型检查通过。相同最终定向测试在冻结基线为 7 失败、1 通过,包含实际捕获私密 H1 标签写入的反例。浏览器、读屏、认证、API、数据库及部署均未执行,业务模块状态不变。
2026-10-22 Web 旧回归夹具依赖兼容
只补两份既有测试宿主的三项缺依赖:宪法分区执行真实统一展示适配器并合成偏好存储;人脉资源提交夹具提供活跃、非忙碌、非加载状态,使原缺少资源上下文断言实际到达。原测试身份、62条expect表达式、路由/工作台检查、零请求与错误提示断言保留,生产组件、API和业务规则未改。
Action愿景与计划时间专项仍依原设计分别在纽约、纽约及上海独立进程运行,普通套件在UTC。本批只诊断并实际执行既有时区合同,不修改全量入口、不skip或降低原时区断言。完整结果见docs/验证/2026-10-22-Web回归夹具依赖兼容证据.md;真实浏览器、HTTP、数据库、设备与部署不计验收,领域状态不提升。
2026-10-22 显式完整 Web 时区矩阵入口
新增 pnpm --filter @anenreo/web test:matrix 一键沿用既有普通UTC、两专项纽约、Plan上海三阶段合同。原 test: vitest run 不变,仍承载原生定向与CLI参数;matrix只接受无参或独立--help,其他参数启动前明确拒绝,不透明转换coverage、reporter、watch或filter。
真实Vitest发现全集和三个阶段,精确校验固定专项、重复/外部路径及分区并集;JSON输出选项置尾,避免可选输出值吞掉并覆盖源文件。每阶段独立进程只覆TZ,固定单worker;任一失败或SIGINT/TERM停止后阶段并保留非零。Plan跨区重复不冒称新定义。设计、计划与证据见同日Web测试时区矩阵入口专项记录;浏览器、HTTP、数据库与部署不计验收,领域状态不提升。
开关保留轨道视觉并扩大真实命中范围
Web USwitch仅通过Nuxt公开slot,在原button增加透明命中伪元素,并由container预留对应布局。默认44px、桌面紧凑36px、粗指针或窄屏44px沿原统一token;轨道与滑块尺寸、主题、标签、ARIA、禁用、加载和原事件链保持,不改Capture授权绑定。
实际Nuxt/Reka及真实theme/tv专项同字节旧配置6失败、5健康,新源11项通过;原相关5套69项通过。标准类型、新测试严格类型及必要门禁通过;345份旧Web测试与其余3766个冻结输入保持,两源逆字节证明齐全。
根旧编译DOM已证明原36×19.2开关外侧不能命中;本源尚待新构建后的九点命中、邻帮助不重叠、轨道视觉及密度/主题/字号真实复测。组件或CSS检查不替代浏览器几何,本轮没有点击云授权、构建或操作服务。证据位于batch14-switch-target-d10-20261026。
七项状态完整纵向阅读
Capture七项流程按原顺序改为纵向标记与完整标签/说明,去掉旧窄屏两列覆盖,字号和间距沿既有token。模板、脚本、状态模型、回执判断、ARIA、事件和全部颜色/边框合同保持,没有步骤按钮或线性百分比,也没有隐藏信息。
整份SFC逆字节证明、37条非流程规则与旧helper/spec保持;实际Vue scoped样式编译前后0错误,两套原状态/权限回归36项通过,注释门通过。没有新镜像CSS测试、构建或运行操作。
这36项行为测试不是36项布局组合。新编译下1280/768/390、密度/字号/主题及内文不裁切仍待根真实浏览器复测,不以源码已改或页面隐藏overflow宣称几何通过。证据位于batch14-capture-flow-d11-20261026/implementation-r1。
D16 决策详情的专用权限接线候选
决策专用父页关闭未知和无写权限的编辑与生命周期入口,保留独立阅读和历史。通用模块历史详情仅为既有CON007引用侧栏增加显式能力接线,沿用原Record Kernel读取与来源验证,不改其他模块的记录、请求或生命周期协议。两个原则引用消费者均区分读取和写入能力,避免默认关闭导致旧引用历史或合法引用写入静默消失。
权限代次用于退休UI事件,不充当业务修订号或幂等键,也不作为整个理由/引用组件的重挂key。来源、原稿、回执和离开保护按各自原合同保留。正式代码测试、框架编译与实际运行界面分层验收,样例库继续只读。
D17 专用决策父表单控件后继
父决策表单原生选择器实际约40px,后继复用正式ModuleSelect和Nuxt单行输入,沿控制高度令牌给出默认44px。opaque选项键通过Object.is保留明确null,undefined或未知键不能冒充清空;disabled、items和模型变化按原组件合同退休弹层。父fields票据与乐观锁、原键、回执、严格GET对账和领域请求不变。
已读但无写权限显示阅读说明,不借通用403面板宣称正文没有展示;真正无读、认证失败和写错误仍独立。标题、下一步和编辑入口与当前实际可用状态一致。受控Nuxt/Reka事件不等于浏览器展开和尺寸通过,完整编译、主题、密度、窄屏、键盘与真实数据核验按阶段证据记录。