2026年10月12日
内容截止日: 2026年10月18日 本周进行中,以下记录本周已经推进的工作。
本周工作计划与执行完成进度
中心服务平台 - 功能完善
- 进度: 🔘 未开始 -> 🟡 进行中 -> ⚠️ 部分完成 -> ✅ 已完成 -> 📌 已自测
以往已完成的工作不再重复,详情请查看上周及上月报告- 〔工作量〕es-center-server-services 62 次(设计 16 · 代码 46)· 代码 +36.8k/-13.9k | es-center-server-web-app 135 次(设计 41 · 代码 94)· 代码 +7.9k/-3.8k | es-center-server-install-app 3 次 | es-bodycam-web-ui-1 1 次 | es-center-server-agent 1 次 | es-center-server-build 1 次 | es-ext-doc-website 1 次 | es-qt-tools-map 1 次 | es-server-deploy 1 次
- 〔方法论〕僵尸退休防复活 | 评审整改转票 | 复核纠偏回写 | 当日连发收口 | 底座一次交付 | 稳定身份单源 | 架构深化裁决成图 | 证据打包不入史
- 10-12: 已删除租户与首屏菜单
- ✅ 缓存不再复活已删租户,七项整改先完成整改票 01 〔es-center-server-web-app〕
实施服务端已删除的当前租户不再经缓存跨会话恢复。这类仍被旧缓存保存的租户即「僵尸租户」。finishTenants 将持久化与当前访问内的合并分开:只保存服务端返回的原数组,不再保存 state.tenants 合并后的数组。内存合并继续保持已知类型,缺记录不能否定已知分类。换用户、登出后的隔离规则保持。测试新增空间 store(共享状态容器)纯逻辑验证入口三例:回写数组与服务端逐项一致、下一次访问恢复后退休已删租户、当前访问分类保持。- 定向 6 文件 263 用例通过,含 tenant-cache-cold-document、tenant-navigation-lifecycle 回归。
- typecheck、lint(0 错误)、
git diff --check一并完成。
设计双周评审的七项整改范围随 01 首票记录:来自 116 个提交(2026-09-28 至 2026-10-12)的 Standards/Spec 双轴评审,分别核对规范与规格实现。- spec「双周评审发现整改」覆盖僵尸租户退休、首屏菜单缓存直出、地图标记过滤与访问有效性对齐、身份键共享 builder(身份键生成函数)提炼与三处迁移、禁用态 Tooltip(提示气泡)共享组件提炼与迁移、combobox(可搜索候选的选择框)复合缓存键重命名、评审杂项清理。
实施整改票 01 先关闭:4 项验收逐项勾选,状态 done。此时其余六票仍待实施,票 02 随 01 完成解除阻塞。同日后续实施见下列 02~07 活动。
- ✅ 缓存不再复活已删租户,七项整改先完成整改票 01 〔es-center-server-web-app〕
- 10-12: 后端审查复核与整改
- ✅ 06/07 的事实误判已纠正,真实问题形成修复提案 〔es-center-server-services〕
审查06/07 报告有两项事实误判,复核后纠正为完整 MD5 身份及已有 OpenAPI 验证证据。- 逐项核对 10-11 报告的点名主张:Standards 轴 10 项、Spec 轴 5 项。
- 补标 Mapper(数据库读写接口)参数顺序违规、类型查询类新增 split package(同一类查询职责分散在两个包)、管理 SQL 空目标判断分叉均属实。
- 三份 Service/Controller(业务服务层/请求入口类)外形重复的建议按既有合同收窄采纳范围。
排障输出截断与路径定位复发另存 20 条:Spec 核验 SV-F01–F06、Standards 核对 SMELL 系、主 Agent RV-ROOT 系三层,附原始读取结果 JSON。这些是读取过程错误,与业务测试失败分开计量,不据此计算错误率。设计复核形成改进规格与两票提案:16 条用户故事、8 条实现决策,分别处理类型管理规范与目标查询边界、稳定预设身份与型号局部整理。此阶段粒度待维护者确认,业务修复尚未实施。实施回访结果追加到 06 复盘与 06/07 票进展,原入口已经实际承接,主 Agent 与两个事实调查子代理仍复发预算和路径问题。- 效果记为「复发需调整」。
- 下次调用前核对子层与外围预算,不推断错误率下降。
- 06 票记录参数顺序、查询 split package、管理 SQL 空目标的局部修正。
- OpenAPI「无任何验证证据」断言已纠正。
- 07 票核实原 3014 项归档 XML(测试报告)计数,纠正 MD5 截断与「缺 OpenAPI JSON 即缺验收」两处推断,型号共同初始化已由后续提交收敛。
- 只追加指针与结论,历史验收结论、票面状态与阻塞边零改动。
- ✅ 06/07 的事实误判已纠正,真实问题形成修复提案 〔es-center-server-services〕
- 10-12: 类型查询与稳定身份
- ✅ 类型管理目标范围按整改 01 修复 〔es-center-server-services〕
设计按维护者认可发布 2 张待实施整改工单(阻塞边均为 None),完整交接类型/模板与型号局部整理范围:工单合并 06/07 补查确认的 Controller 和生成模板规范问题,保留静态结论与历史验证的边界。两轴证据、失败恢复与串行入口启动事实同批留存,不以进程履历或旧测试计数当作实施完成实施设备类型管理只用 null 表达省略目标,修正真实空目标的查询范围(01 号票)。- HTTP 空白拒绝与旧列表合同保持。
- 补标声明和实际初始化调用一起把 tenantId 放末尾。
- 五个管理 Controller(请求入口处理类)保持绑定并调整参数。
- 查询迁入既有 device.query,消除新增 split package。
- 配套生成器提交
487c43c5,不扩改其它资源手写入口。 - 本阶段未启动 02、不推送。
测试真实空目标用例先返回 3,最小条件修正后返回 0。01 号票当前有效 XML 共 90 条:类型/树 50、Janus(媒体节点服务)1、生成器 39,failures/errors/skipped 全 0。SQL 21 在唯一审查问题修正后再次通过。测试实际验证类限定为 AdministratorDeviceTypeSqlIntegrationTest、DeviceTypeTreeContractTest、DeviceTypeTreeSqlIntegrationTest 和 JanusServerAdminSecretRealDataSqlIntegrationTest。- 工单发布阶段另检查 13 份 Markdown、0 错误,属于文档/暂存验证,不是当轮 XML 用例数。
- 隔离 SQL、2 组 Janus 只读与 167 个生成覆盖指纹随证据保留。
审查Standards/Spec 均 0 项。
- ✅ 预设身份按整改 02 统一,两票交付分别核验 〔es-center-server-services〕
重构类型和采集型号共用设备域稳定身份(整改 02):短身份、32 位完整 MD5、UTF-16 字符编码阈值、null 根保持一致,消除两套算法漂移。- 删除非采集更新的无效合并,两个真实最终状态校验点复用 JDK 回退能力。
- 请求意图、旧引用、预设与父子事务保持。
- 三专用 Service(服务层)的 import/身份注释局部整理,说明七族物理冲突检查。
- 静态 SQL、01 参数/包/SQL、既有资料组件和生成器保持。
- 15 文件独立交付。
测试本轮 XML 共 187 条:类型 22、型号 164、Janus 1,failures/errors/skipped 全 0。Janus 实际只读比对 2 组。- compileTestJava 与 10 文件限定 Spotless 检查另行完成,格式范围和业务用例范围分开。
实施类型与型号整改 01/02 两票回写 done,三笔实现提交记录在案。两票各自当轮 XML 与独立复核证据分别固定,历史 3014、当轮 90 与 187 不叠加为独立用例数。启动、读取、夹具失败及 TDD 红灯的恢复链保留。迁移后仍指向旧查询类的活跃入链得到纠正。
- ✅ 类型管理目标范围按整改 01 修复 〔es-center-server-services〕
- 10-12: 首屏菜单缓存
- ✅ 菜单首帧恢复缓存,后续仍接受真实导航纠正(票 02) 〔es-center-server-web-app〕
实施菜单首帧直接恢复本身份缓存(票 02),不再串行等待登录续期、租户列表、导航三条链。- beginVisit 只在首次缓存恢复时按「用户名、目录」播种,同会话后续访问与访问内纠正不播种。
- 菜单缓存经 zod 递归 schema(数据结构规则)校验,损坏、异形、空数据不产出。
- 换用户或登出后旧身份缓存不被接纳。
- finishNavigation 只保存服务端原数组,保存后退休无归属旧 session 菜单。
- 空数组和失败不保存,续期遮蔽与 renewingFallback 守卫保持。
测试定向 6 文件 231 项全部通过:lifecycle 215、cached-menu-first-paint 13、zombie 3。2 项新消费者用例先红验证。干净全量 3170/3209,39 个失败属于存量或与改面无交互的负载敏感用例,原基线复跑证据保留。- agent 工具与状态治理的 5 个文件在干净 HEAD 原样复现失败,不归本票改面。
- ✅ 菜单首帧恢复缓存,后续仍接受真实导航纠正(票 02) 〔es-center-server-web-app〕
- 10-12: 地图访问与标记过滤
- ✅ 地图按有效访问过滤异空间标记(票 03) 〔es-center-server-web-app〕
实施GPS 标记按当前访问是否有效过滤(票 03),异空间设备不再因巡览访问对象存在而误呈现。复用 store 既有 isCurrentVisit/canReceive 判定。有效访问严格按当前空间过滤,无有效访问排除明确异空间记录,缺 tenantId 的记录继续呈现。访问对象缺席、激活被拒、身份或范围不匹配都属于无有效访问。追踪守卫的存在性判断保持。测试新用例先红后绿,受影响验证入口两文件 103 例全过:single-live-initial-device-tour 76、single-live-map-markers 27。全量 3142/3210,68 失败系负载敏感存量。它们分布于 11 个与改面无依赖的文件,抽样隔离运行通过,全量仍保留这些失败。- 同类存量失败随负载从 39→55→68 漂移,各次观测单列,不把最终数覆盖先前失败。
- ✅ 地图按有效访问过滤异空间标记(票 03) 〔es-center-server-web-app〕
- 10-12: 身份键与共享提示
- ✅ 三个身份键共用生成规则(票 04) 〔es-center-server-web-app〕
重构三处身份键共用 buildAuthIdentityKey 纯函数(票 04),统一字段序并保持键字节逐位一致。- token 续期、权限等价重排不失效。
- 身份、会话、租户、真实权限变化才失效。
- 字段序为授权布尔、用户名、用户标识、会话标识、可选租户标识、去重排序权限集。
- getAuthScopeKey 委托。
- 初始巡览键不含租户,由 visit.spaceId 独立比对。
- 对讲在线键包含租户。
- 三键仅进程内比较,无持久化或协议字节合同。
测试新身份键入口 21 例。定向 20 文件 733 例全部通过,覆盖巡览、对讲在线、角色与报表候选、remote-combobox。全量 152 文件中 6 个 harness 脚本测试文件失败 44 例。干净基线同口径对照 3 文件 31 例,含本票复跑逐数一致,属于先存环境性失败。
- ✅ 全部禁用态提示改用共享组件(票 05,13 文件 16 处) 〔es-center-server-web-app〕
重构禁用态提示改用共享 DisabledTooltip1(票 05),13 文件 16 处站点统一迁移,11 处此前静默失效的 Tooltip 恢复可见。- span 包装层负责触发提示,真正的 disabled/aria-disabled 仍由子元素负责,不克隆注入,保留 asChild 链。
- 迁移包括对讲默认下发、群组卡片 unavailable 进入与 refreshing 管理、TalkgroupIconButton1(覆盖分页、侧栏、暂存列表等 11 消费点)、回放缩放 2 处、验证码发送、RemoteCombobox 按钮、6 处报表 Search。
- 两处手写 span 包装清零。
测试选定 26 文件 852 例全过。新增呈现入口 2 例先红(缺 ResizeObserver stub)后绿,格式重排后源码敏感 3 文件 50 例通过。playback-controls 无既有渲染测试,此处只由类型和结构核对支撑,没有额外的渲染验证。
- ✅ 三个身份键共用生成规则(票 04) 〔es-center-server-web-app〕
- 10-12: 缓存命名与呈现清理
- ✅ 复合键命名与杂项整改完成,02~07 六票后续关闭 〔es-center-server-web-app〕
重构复合缓存键更名 revisionedScope(票 06),从名称即可看出「业务范围 + 生命周期版本」。- 原返回 scope 实为 JSON.stringify([scope, scopeRevision])。
- 唯一生产消费方 RemoteComboboxCached1 从撞名静默覆盖改为显式逐项传参,行为保持。
- 持久化 envelope(缓存记录外壳)的 scope 是 localStorage/sessionStorage 字节兼容合同,不在更名范围。
测试定向 3 文件 81 例全部通过,覆盖 remote-combobox-1、remote-combobox-items、remote-combobox-tree-candidates。实施评审杂项分三类修正(票 07):退休 APP_NAV_OPEN_STORAGE_KEY、APP_GPS_LIST_STORAGE_KEY、APP_BOX_SIZE_STORAGE_KEY 三个无消费方常量,活体代码与文档零残留。- 生成声明经 typegen 再生,不手改。
- 禁用按钮删除重复 title,旁侧可见的 Coming soon 只保留一次。
- 角色复选框加载、空结果、失败重试补「为什么」注释,说明评审裁决的有意新增,失败不伪装为空结果,行为保持。
测试定向 2 例全部通过。其它两项无消费方或无行为变化,不新增测试。审查注释按不可达与去重的依据纠偏,不宣称所有浏览器都不显示 title。历史盘点快照和原 spec/issues 保留。审查六票双轴评审均无阻断发现,全量的存量失败经干净基线复跑确认与改面无关。实施02~07 六票同日后续逐票关闭:状态 done,验收逐项勾选,Comments 分别关联实现与验证。它们继承前面「01 先完成、其余六票待实施」的阶段记录,不把初始待办或后续完成删掉。
- ✅ 复合键命名与杂项整改完成,02~07 六票后续关闭 〔es-center-server-web-app〕
- 10-12: 向导脚本与批次流程
- ✅ Wizard 再修三处缺陷,/implement 就地实现规则记录 〔es-center-server-web-app〕
实施Wizard 写盘后立即设置同名 shell 变量,后续阶段可取得刚写入的值。裸双引号 dotenv 值增加解码。含转义、$ 或内嵌引号则拒绝解码,重新询问。脚本整体预解析,运行中改模板不再破坏已开始的会话。清屏失败回退 ANSI 转义,无消费点颜色变量退役。测试语法检查无报错,典型值写读往返经真实执行核对:单引号值往返与 shell 变量同步、裸双引号解码、含 $/内嵌引号拒绝、缺失 key 失败。设计工单批次实现只用 /implement 的裁决与理由落进 AGENTS.md 分支事实节:/implement-spec 按集成分支 PR 流收尾、本仓无 PR 配套且无回流步骤,此前曾致 6 级集成分支链漂移、交付分支落后 97 提交实施run-item.sh 批次执行清单接线两次切换:先接评审整改票目录(原共享状态治理批次行注释退役),评审整改 7 票当日收尾后再接 RemoteCombobox 禁选票目录,两批均按就地实现裁决驱动
- ✅ Wizard 再修三处缺陷,/implement 就地实现规则记录 〔es-center-server-web-app〕
- 10-12: 远程候选按项禁选
- ✅ RemoteCombobox 四票定稿,底座禁选能力先完成(票 01) 〔es-center-server-web-app〕
设计固定系统租户的可选性矩阵与四张禁选工单定稿。- GLOSSARY 新增 default/scm/pcm 三实例词条:查询禁 default/scm,pcm 可查。
- 新增、修改界面三者全禁,实例身份与 tenant_type 类型维度区分。
- 底座按值禁选,渲染与选中通道双保险。
- 查询/写两组命名常量提供预设,消费点引用常量。
- 租户下拉 7 处,tenant_type 字典 5 处只动 2 处。
- 补充项能力、后端 listCache criteria 变更、编辑/详情纯回显页明确排除。
- 四票依次覆盖底座、树形、字典及消费点。
实施RemoteCombobox1 底座按项禁选(票 01),命中项保持可见但不可选中。17 个封装组件沿既有属性转发获得 disabledItemValues。默认点击/键盘与自定义渲染的选中通道都有守卫。空串清空哨兵不参与禁选,旧已选值恰为禁项仍可回显。禁选不进入缓存键,fetch、搜索、回填保持。测试新增「按项禁选」4 用例,含注入泄漏回归断言,79 用例全部通过。审查纠偏修复一处属性注入泄漏:禁选值经 control 转发到原生 button,改由 shell 层解构消费并同步收窄类型。实施票 01 关闭,7 项验收逐项勾选;01 号底座成为后续树形与消费点的共同基础。
- ✅ RemoteCombobox 四票定稿,底座禁选能力先完成(票 01) 〔es-center-server-web-app〕
- 10-12: Janus 管理与员工账号
- ✅ Janus 跨租户管理及提交后通知完成(08 号票关闭) 〔es-center-server-services〕
实施Janus 媒体节点管理提供 8 项跨租户管理员动作(08 号票)。复用主体准入,以完整父子、租户及窄字段限定读写,新旧入口保留兼容。后端身份、纯新增、父子事务统一。SQL 保护预设和类型,重复删除通知停止。完整配置消息与不含凭据的日志都在提交后发送。API 文档、发布交接同步,20 个手写文件再生成保持。管理员票关闭。测试testAll 3173 项、0 失败/错误/跳过,生成器 40 项全过。
- ✅ 员工、账号和成员维护共用同步事务(工单 09 完成) 〔es-center-server-services〕
实施员工管理、开户和成员关联改用同一事务(09 号票完成)。提供员工八项管理动作、三项窄账号/完整角色接口,遵守共同准入、真实目标租户、后端主键合同。员工、开户/复用、转绑、成员补缺、显式授权同步完成,内部无账号消费者及历史修复保留。双端及跨目标开户并发以数据库互斥收敛,退场关系同步。员工合同、切换手册、生成器 53 文件保持与双轴复核证据同步。审查纠偏修复空动态 WHERE(SQL 更新范围未限定)泄漏和短用户名开户两问题。共享测试夹具用 TestConfiguration,避免误入 Web 切片和上下文污染。测试testAll 覆盖 300 类 3207 项,failures/errors/skipped 均 0。生成器 61 项覆盖与 53 手写文件最终保持。
- ✅ Janus 跨租户管理及提交后通知完成(08 号票关闭) 〔es-center-server-services〕
- 10-13: 树形候选与系统租户
- ✅ TenantSelect1 树形禁选与系统租户预设完成(票 02) 〔es-center-server-web-app〕
实施TenantSelect1 树形候选继承禁选能力(票 02),各层递归按同一清单判断自身值,命中项禁用且弹层保持,不把父项禁用误读为所有子项自动禁用。- 未传能力的 OrgSelect1/DeviceTypeSelect1 保持。
- 底座和树项渲染器双路接收 disabledItemValues,useCreation 依赖跟随清单,避免闭包过期。
- 固定系统租户标识集中到 FIXED_SYSTEM_TENANT_IDS。
- 查询预设禁 default、scm,写预设为三者全禁。
测试受影响单测 6 文件 337 例全部通过。全量通过 3207 项,另有 31 例 agent-tools 脚本测试存量失败,stash 基线复现,与改面无关。审查评审后两处收敛:租户导航目录类型改用固定系统租户单源联合 FixedSystemTenantId | “p” | “t”。用例名消除「父禁传染子禁」误读。实施票 02 关闭,6 项验收逐项勾选。
- ✅ TenantSelect1 树形禁选与系统租户预设完成(票 02) 〔es-center-server-web-app〕
- 10-13: 字典类型与消费点接线
- ✅ 创建和筛选禁选 system,纯回显页保持(票 03) 〔es-center-server-web-app〕
实施创建与筛选的 tenant_type 下拉禁选 system(票 03),保留系统类型可见。能力经 DataDictionarySelect1 既有属性转发,组件零改动。编辑 disabled 和详情 readOnly 纯回显保持。创建默认 team、筛选清除即查全部的行为保持。测试定向 42/42 全过。全量另有 40-44 个 agent 工具链与状态治理脚本存量失败,干净 HEAD 基线复跑同样失败,与改面无关。审查修正一处测试命名歧义,命中项/可选项改为 blockedOption/selectableOption。实施票 03 关闭,5 项验收逐项勾选。
- ✅ 查询/写入禁选预设接入七处页面(票 04) 〔es-center-server-web-app〕
实施7 处 TenantSelect1 消费点接入查询/写禁选预设(票 04),各加一行引用,组件零改动。- 查询禁 default/scm、pcm 仍可查询:org 跨租户查询、battery-level/gps/mqtt-connection/user-log 四个报表日志共享组件的 admin 上下文、mqtt-connection-statistics 的 admin 筛选。
- org 新增禁 default/scm/pcm,后续新增/修改沿用写预设。
- 四报表受 isAllTenantScope 限定,to-b-1 自有上下文不渲染租户字段。
- 旧链接已选值恰为禁项,仍由底座「已选项强制保留」回显。
- placeholder、默认值与空值查全部保持。
测试受影响页面级 5 文件 89/89 全过:org-v1-admin-add、org-v1-admin-delete、org-v1-admin-ownership、org-v1-list-language、report-tenant-candidates。实施票 04 关闭,6 项验收逐项勾选。此次只接线、不新增行为、未加测试。既有 mock 值 a/b/tenant-a/tenant-b 均不命中禁选集,无连锁修改。底座与树形的回显和守卫已由此前票验证。
- ✅ 创建和筛选禁选 system,纯回显页保持(票 03) 〔es-center-server-web-app〕
- 10-13: 员工关系与设备生命周期
- ✅ 员工-用户关系的跨租户管理完成 〔es-center-server-services〕
实施员工-用户关系提供 8 项跨租户管理动作,新旧共同写链打通。真实关系身份、失效资料维护及成员事务边界保持。按关系粒度查询,拒绝重复身份。API 与前端交接同步。审查修复同值确认缺少成员补缺、零行更新提前清理冲突两问题,2 项 Spec 发现均完成修正。测试真实 HTTP/SQL、并发、回滚、登录消费者及生成保持证据补齐。最终 304 类 3236 项,无失败/错误/跳过。生成器 fresh(干净重新编译)与 15 文件保持核对在案。- Markdown/tracker 另检查 82 文件、0 错误,不混入 Java 测试类或用例数量。
- ✅ 采集服务器与设备绑定统一父子事务(工单 11/12 完成) 〔es-center-server-services〕
实施采集服务器 8 项管理动作与父子共同命令完成(工单 11)。- 完整父子主体统一筛选、17 项排序、租户资料、状态和分页富化,当前绑定先在完整关系集合判序。
- 保存编排折入公开 Service。
- 新旧身份、纯新增、字段意图和引用守卫统一,补缺、父子退场、两类关系清理共同提交或回滚。
- 旧硬件、BMC、缓存及 PCM 通知用途保持。
- 字段兼容、前端接线及消息排空条件已记录。
测试全量 305 类 3350 项零失败/错误/跳过。唯一测试夹具失败修复后,204 项定向复验及 Janus 只读 1 项核销。生成器 1 项,60 文件 SHA 保持。
- ✅ 服务器-设备绑定与 BMC 生命周期统一(12 号工单完成) 〔es-center-server-services〕
实施服务器-设备绑定与 BMC 生命周期统一(12 号工单完成,解锁设备表单接入)。八项管理员关系动作接入原地址,共用事务设置命令,实际关系身份及独立权限边界保持。保持、换绑、移动、精确删除由数据库协调、端点子行锁和真实生命周期后置条件保障,递归适配继承分区索引,历史与预设保护保持。管理读取与消费者交接补齐。测试真实 SQL/HTTP、并发及回滚证据补齐。全量 305 类 3473 项 0 失败/错误/跳过。最终规范修复后 main 253 项、device 23 项定向复验。生成器 fresh(干净重新编译)、五个手写文件保持及六份产物与最终源码身份核对在案。
- ✅ 员工-用户关系的跨租户管理完成 〔es-center-server-services〕
- 10-13: 架构深化规划
- ✅ 最底层架构深化候选与阻塞关系成文,等待后续实施 〔es-center-server-web-app〕
设计Wayfinder(按依赖组织架构裁决的地图)记录 10 个最底层候选及 10 张裁决票,后续采纳项再进入规格与实施。- 两项评审先验保持:r3-01 连接生命周期不动,r3-09 loadIceServers 不动。
- 提取纪律为 ADR 0044 原子件优先、0050 三处复用门槛、0019 机会主义重构,6 项范围外清单逐项保持:
- 实现与 spec 撰写另走 to-spec → to-tickets → implement,不在本图实施。
- API 生成族 any 面不做全仓类型化,存量技术债按 ADR 0019 随业务触碰翻新;orgV1Api.ts 保留为类型化样板。
- use-mobile.ts 的 768 断点与 useResponsive 的 1024 不一致,属于 shadcn 生成物豁免范围内的既知差异。
- 在线状态三源统一由 ADR 0013 挂起,等待 data-acquisition 模块翻新触发。
- 登录频控锁定块×3(
_auth.login三页)只属族内 helper,不达决策票门槛,直接走管线或随_auth族触碰收编。 - CRUD 巨型路由拆分、arch-health-loop、first-paint-perf 沿 r1+r3 评审的既有范围外裁决。
- 正文内嵌 file:line 证据。
- videoroom 信令核被 MQTT 连接 owner(连接归属)与 request 批迁两票阻塞,其余可并行认领。
- 纯规划新增 11 文件 296 行,10 个候选尚未进入代码实施。
- ✅ 最底层架构深化候选与阻塞关系成文,等待后续实施 〔es-center-server-web-app〕
- 10-13: 技能锁同步
- ✅ wizard 锁哈希与当前技能正文同步 〔es-center-server-services〕
实施wizard 技能本地正文更新后刷新 skills-lock.json 对应条目哈希(3642db20→49298bed),锁指纹与技能正文的漂移消除:锁不刷新会让后续技能同步误判漂移,与本仓此前两次锁同步同口径。- 范围仅锁文件单条目 +1/-1 行,不涉 Java 代码与 SQL/配置,按文件级检查豁免单测。
- 抽查 42 个本地条目,锁哈希口径与存量一致
- ✅ wizard 锁哈希与当前技能正文同步 〔es-center-server-services〕
- 10-13: 九仓证据打包物忽略规则
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-center-server-web-app〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史,git check-ignore 命中新规则
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-center-server-services〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史,git check-ignore 命中新规则
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-center-server-install-app〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-ext-doc-website〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-bodycam-web-ui-1〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史,git check-ignore 命中新规则
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-qt-tools-map〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史,git check-ignore 命中新规则
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-center-server-build〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史,git check-ignore 命中新规则
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-center-server-agent〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史,git check-ignore 命中新规则
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-server-deploy〕
实施.gitignore 新增*.tar.gz规则:周报批次证据打包物不再进入 git 历史。已跟踪的历史证据 tar.gz 保留跟踪,不 untrack、不重写历史,git check-ignore 命中新规则
- ✅ 新证据包不进入 Git,历史已跟踪证据保持 〔es-center-server-web-app〕
- 10-13: 最底层架构深化裁决定案与作用域失效集中装配
- ✅ 最底层架构深化多票裁决定案,MQTT 连接 owner 与认证回包原子件两案落锤 〔es-center-server-web-app〕
设计最底层架构深化 01/02 两票裁决落档定案并同步决策地图:01(MQTT 连接 owner)以 39 文件触 client 本体的实测推翻「单消费面」先验,定案新建 mqtt-connection module 并钉死接口形状与多节点扩展预留;02(认证回包应用原子件)采纳 applyAuthResult/clearAuthResult 双导出,6 写 3 清全收,附 01 简洁性复审记录。设计最底层架构深化 03/11 两票裁决落档定案并同步决策地图:03(作用域失效订阅原子件)经两轮 grilling 落锤四条裁决(原子件收敛 3 家候选 store、sessionId 退出失效面与缓存键、规则同驻 scope-key.ts、HMR dispose 各 store 自留);11(失效订阅机制覆盖 space 与 post-login)因维护者提出 Spring 装配式时序编排要求改判——候选侧自接线作废,接线改由装配模块集中编排(2 条订阅取代 7 条),原子件不落,03 第 3、4 条继续有效,地图标注 11 对 03 的改判关系。设计MQTT 连接 owner spec 发布并链接 01 票:新建 mqtt-connection module 承接全局唯一连接(当前内联二级父路由约 90 行、39 个消费文件穿透 client 内部),消费面收为发送/可用性/clientId 三个入口,wire 行为逐字不变,连接注册表为多节点预留扩展点,13 条用户故事覆盖切换账号、重连排队、脏帧容错等场景。设计立 Username 用户名身份主线词条:username 是用户身份的主线标识(界面显示与服务端 token 解密同取此值),登录输入(用户名/邮箱/手机号)只是认证输入,登录成功后一律以后端返回的 username 为准,Avoid 列登录名、以邮箱/手机号作身份标识。设计立 Web session id(Web 会话标识)词条:页面加载时本地生成、此后不变,用作 MQTT clientId 与 reply topic 尾段,与登录会话无关、不参与身份失效比较、不进缓存键;「缓存与候选以业务关键字寻址」原则随 03 裁决定档,为票 01 提供术语依据。设计修 ADR-0044 正文 3 处指向不存在文件 0013-avoid-god-configuration-objects.md 的死链(该链接自落档起即无效):万能配置对象之忌改为行内表述并指向本文「决策」2,决策语义不变,全仓 grep 零残留。设计核心规则增补后端框架类比沟通与落地纪律:设计沟通与取舍评审优先借用成熟后端框架概念作类比(如 Spring Boot 的配置装配、依赖注入、生命周期),类比只是理解入口,须回到本仓具体机制、不照搬框架实现——背景是 11 票裁决中维护者以 Spring config bean 装配直觉驱动「集中装配」方案落锤,该沟通模式固化为长期规则。
- ✅ 作用域失效集中装配批次开批,票 01 当日落地关闭 〔es-center-server-web-app〕
设计新增已接受 ADR-0051:作用域失效接线由各 store 自持改为单一装配模块在应用入口集中编排,7 条订阅收敛为 2 条,级联顺序显式写死,「清什么是 store 的事、何时清以何顺序是装配模块的事」职责切分落档;适用边界显式化(报表租户 store 分层例外、路由级行为订阅与 MQTT/WebRTC 实时副作用不在管辖内),四种替代方案逐条记录否决理由。设计作用域失效集中装配 spec 入库并拆两票:承接 03/11 两票裁决,把五处手写失效接线收口为入口装配模块 + 两条订阅,13 条用户故事覆盖认证/租户/空间/刷新四类失效场景;票 01 失效规则同驻与 sessionId 退出失效面,票 02 失效接线集中装配。实施run-item.sh 批次执行行由 remote-combobox-disabled-items(已收尾)切至 scoped-invalidation-assembly,适配默认参数进入 implement 批次;旧行注释保留作历史取材,另留 mqtt-connection 与空白模板各一行注释作后续切换备忘。实施票 01 落地:默认、space 与字典三条比较规则同驻 scope-key.ts,sessionId 退出失效含义;远程候选改用稳定业务键寻址,保留旧 session 四元组兼容恢复与退休,防止 A→B→A 放行旧缓存;登出与换用户清除旧权限残留,补充冷启动、权限拒绝与新旧后端故障回归。受影响单测 36 文件 1108 项通过。实施票 01 关闭:Status done,Comments 记录完成于 2026-10-13 并关联实现提交 59f9682a。
- ✅ 最底层架构深化多票裁决定案,MQTT 连接 owner 与认证回包原子件两案落锤 〔es-center-server-web-app〕
- 10-13: 采集设备与采集箱管理交付收尾
- ✅ 采集设备管理与个人设备退场生命周期统一交付 〔es-center-server-services〕
实施贯通采集设备管理八动作、新旧普通写与完整父子事务,按实际租户和投影用途维护表单绑定及只读资料;统一有限补缺与精确非个人退场,折叠保存编排 Function 并以同步事件保持附属事务。固定 307 类 3611 项最终证据,双轴评审已闭合。实施统一个人设备解绑与分享退场生命周期——管理删除按真实拥有与接收关系复用既有解绑/解除分享通道,绑定转移、解绑、取消/解除分享和注销设备段共用父子事务,以同步事件处理分享及原路由范围,清退旧混合退场能力。全量原 18 项夹具失败经修复补验闭合,有效覆盖 307 类 3690 项。设计细化执行前核对与测试补验回访规则:前置失败处理和大清单首次输出步骤减少误启动与恢复会话截断,新增依赖的夹具核对与多轮补验覆盖粒度明确,原票入口记录安全复验及下一次真实任务的观察条件。
- ✅ 采集箱管理与自动建箱事务交付收尾 〔es-center-server-services〕
实施新增八项跨租户管理动作及五字段窄输入,将两个保存编排 Function 折入公开 Service,贯通父子补缺协调、精确指纹/配置同步退场及上报 UUID 快照接线。归档 309 类 3765 项全量与补验,完整类/单用例替换后有效 3771 项零失败/错误/跳过。实施15 号采集箱工单交付收尾——工单进展与执行记录补记功能提交 a9e050fe 已落当前分支,并闭环 V15-012 提交复验:真实 index 文档检查 10 份、265 个删除入链候选、0 错误,正常提交钩子 Spotless 通过后提交成功。
- ✅ 采集设备管理与个人设备退场生命周期统一交付 〔es-center-server-services〕
- 10-14: MQTT 连接 module 封装与对讲族消费迁移
- ✅ 作用域失效接线集中装配收尾(票 02),四个共享 store 订阅收口到应用入口 〔es-center-server-web-app〕
重构四个共享 store 的失效订阅收口到应用入口装配模块集中编排,保留各 store 清空语义与同步旧响应隔离,报表沿用路由内接线;按维护者裁决以 ADR 0052 记录「代码简单直接优先」,允许重复清理、取消级联去重要求。受影响 13 文件 466 项通过,新增测试复验 13 项通过;全量 3242 项通过、31 项既有工具入口失败已最小复现,工单待裁决。
- ✅ MQTT 连接收口进共享 module,39 个消费文件零改动(票 01) 〔es-center-server-web-app〕
实施L2 连接装配迁入共享 mqtt-connection module,39 个消费文件零改动,旧 store 镜像与发布补丁保留作兼容入口;按身份 epoch(身份代际)管理就绪队列、clientId 与连接可用性,无条件关闭退休连接并隔离身份往返,僵尸连接修复随建(本批唯一 wire 差异点);mqtt 包边界新增 18 条外部行为测试。全量 154 文件 3256 例通过。实施票 01 关闭:票面写明新建 module 并挂载 L2 父路由、旧路径完全保留与三入口消费 interface,Comments 记录完成于 2026-10-14 见提交 09e84d45。重构私有函数及 3 处调用点统一更名 ensureDefaultNode,使资源创建、身份监听和旧节点退休的副作用语义从命名可读;源码逐字比较确认仅改名,MQTT 连接模块 18 例通过。
- ✅ 订阅清理与连接可用性语义补进规范(票 02) 〔es-center-server-web-app〕
设计STANDARDS §7 区分连接级通配订阅的 clean 会话清理与业务动态订阅的显式 unsubscribe 义务;GLOSSARY 新增 MQTT availability 词条(按 socket connected 判定),与 store presence 及 SFU 服务器在线状态切割。设计按票 02 简洁性评审收尾:业务动态订阅及直接 client.subscribe 调用的清理义务合并表述,保留原约束语义。实施票 02 归档收口:交付记录含验证表与双轴评审基点 429aba03,纯 Markdown 不启动单测。
- ✅ 共享 hooks 与对讲族消费迁入连接 module(票 03/04) 〔es-center-server-web-app〕
重构票 03(迁移批 A):请求与 ICE 下发改经 mqtt-connection module,移除 UI store 的 client 订阅和重复就绪轮询;用局部批次版本隔离身份往返和卸载后的 ICE 续体,评审初审 P1(分次调用 getMqttClientId 与 publish 跨 epoch 组合)经单次 builder 与单调版本守卫闭合,五套既有契约 70 条原断言逐字保留。受影响 7 文件 61 例通过;全量 155 文件 3262 例执行后修复 8 例播种失败,另外 3 例超时/后继失败所在两套件 88 例原范围复验通过。协作票 03 完成材料归档:交付记录写明五套消费测试统一改经 mqtt 包边界播种真实 owner、初审 P1 与复评 A→B→A 身份往返风险的单调版本守卫修复、全量 11 例失败的保留与分类处置,附双轴评审原始记录。重构票 04(迁移批 B):6 个对讲消费文件统一 availability、在线查询订阅及 join/kick/Janus 发送,迁至连接 module 入口,保留既有 wire 合同;按用户裁决将 Janus identity 改为异步并使用当前模块连接,封闭身份往返、调度与 SUBACK(MQTT 订阅确认)等待期间的取消和释放;新增 7 个身份与错误契约用例。受影响 44 文件 951 例按有效范围汇总通过,最终 Janus/房间 208 例复验通过。实施票 04 关闭,Comments 记录完成于 2026-10-14 见提交 8bf66d7d。
- ✅ 媒体消费方迁入连接 owner(票 05) 〔es-center-server-web-app〕
重构10 个媒体源码文件的 30 处发送与 6 处数据通道握手迁入连接 owner(连接归属管理方),统一等待与发送点身份来源并保持协议载荷;保留五处本地状态就绪后写入与直播原断线分支,逐次订阅可用性防止同批重连复用旧身份;新增 8 例媒体契约回归。受影响 7 文件 201 例通过。
- ✅ Talkgroup 清理与命令错误批次两票交付 〔es-center-server-web-app〕
实施票 01:MQTT 模块新增兼容 TypeError 的专用身份错误,避免把普通技术异常误判为参数无效;join/kick 在发布前校验本地参数并固定业务 params,发送回调仅构造当前身份信封,移除跨回调哨兵与重复身份校验。13 个受影响测试文件共 355 用例通过,状态增量 0 项。实施票 01 关闭:Talkgroup 清理与命令错误批次 spec(95 行)落票,Comments 记录见提交 0267d2ca,附 13 文件 355 用例的定向验证清单。重构票 02:正常清理、3 秒共享预算、leave 超时补偿与身份/取消资源收进 Janus client,房间只表达清理意图并保持媒体释放顺序;移除 captured publisher、leave/destroy 低层公开接口及房间清理阶段账本,评审发现的超时续体竞态(期限触发后旧 session destroy 可能被补发)以撤销优先修复。受影响 8 文件 423 项通过,审查修复后 Janus/房间 226 项复验通过。协作票 02 关闭归档:票面与两份评审记录(Spec 复评 0 项未解决、初审 1 项 P2 超时续体竞态经撤销优先修复;Standards 复评硬违规 0)一并归档。
- ✅ 跨仓执行器迁移后的旧接线测试清理 〔es-center-server-web-app〕
测试按维护者确认的统一跨仓 run.py 职责,退休 31 项旧 workflow 入口合同与专用夹具,保留 42 项有效 CLI、预检及清单测试;修正根动作指针和手册中的旧自动装载、进度与取消包装承诺,闭合 02 工单,不恢复第二套执行器。定向 2 文件 42 项通过。
- ✅ 作用域失效接线集中装配收尾(票 02),四个共享 store 订阅收口到应用入口 〔es-center-server-web-app〕
- 10-14: 普通固件管理交付与导入行事务简化
- ✅ 普通固件管理交付,单轮回收接线与评审核销完成 〔es-center-server-services〕
实施交付普通固件管理与受控文件提交——提供 8 项管理动作和 2 个绑定操作者/目标的 Tus 入口(文件上传通道),新旧普通写链统一执行完整文件校验、不可变保存与事务后释放;持久化跨租户引用、活动和占用事实并修复同路径首次登记;安装仓 3 份下载配置见 7a6aabf。全量 3809 项原 1 失败,修正后完整 2 类 56 项补验通过,有效覆盖 3809 项零失败/错误/跳过;nginx 12 项通过。重构删除未部署的生命周期表、触发器及两个 Service,固件表仅保留引用索引;用纯 Java 修改时间和全租户有效引用判断文件年龄,复用 Tus 信息与现有 24 小时任务,保留手动/启动单轮触发合同由 17 号继续接线。testAll 3813/0/0/0,Janus 只读 2 组。重构上传消费标记合并为仅持久化 consumed,消费前禁止重用、明确回滚才恢复,删除提交及释放时重复状态写入并兼容读取旧 savePending;用旧实现真实 info 覆盖 4 种兼容状态,关闭 01 号修正票。实施普通文件维护 HTTP 与启动后五分钟发布接入同一文本通道和一轮文件消费者,通过默认关闭的七项配置及真实库、文件根和存储绑定复核限制发布与竞争消费;保持有效引用及对象锁保护,限定复制残留的二十四小时范围。定向三类 72 项、最终制品初始化/重启及启动失败三项、nginx 十二项通过。实施17 号工单完成——在规范化前拒绝实际及确认目录的相对路径,避免准入范围依赖进程工作目录;区分预期关闭与技术故障,各保留一次完整错误堆栈。原全量 311 类 3840 项全绿,修正后 3 类 76 项补验,有效覆盖 3843 项零失败/错误/跳过;十项验收全部核销。
- ✅ 固件取包按投影修正并完成工单验收 〔es-center-server-services〕
实施修正固件取包选择——先选 PCM 库存或最近投影,缺型号、未知维护来源或无包后结束,避免隐式切换型号;个人新旧身份复用统一分类缓存并读取 PCM 包,保留普通服务器、原 MQTT 信封和缓存窗口。device-service 定向 3 类 37 项全通过,Janus 只读 2 组通过。测试完成固件取包评审修正与工单验收——提取测试样例常量,关闭 Standards 唯一发现;归档 device 全模块与 main 关联回归的 97 类 865 项有效覆盖、原始 XML 指纹和逐次失败恢复记录;按维护者裁决复用既有上线实机事实,完成前端交接、工单 18 与依赖图回写。device testAll 731 项、main 定向 134 项全通过,GetFirmwareSqlIntegrationTest 22 项全通过。
- ✅ 员工导入行事务与批次编排归并 〔es-center-server-services〕
实施贯通员工普通和管理导入入口,以有序具名载荷固定目标及原操作者并返回前置行提示;每行复用组织和员工共同命令及账号同步事务,保持字段三态、业务拒绝继续和技术故障停止;复用数据库目标锁闭合并发按号身份。受影响 175 项通过(0 失败/错误/跳过)。重构员工导入批次准入、顺序、失败分类与摘要集中到既有导入服务,缩小消息入口职责和公开接口;两个筛选时点复用精确工号三态判定,保持首条占位、前置计数、原身份作用域与独立行事务。具名导入回归 54 项通过。实施员工导入模块简化工单收尾——状态由 ready-for-agent 翻转为 done,验收表补记实现提交 97ff4a73 与双轴评审 0 发现。
- ✅ 采集服务器导入行事务与筛选共用 〔es-center-server-services〕
实施统一采集服务器普通与管理导入,固定真实目标和操作者,以具名有序消息保留首条编号及字段保持/清空意图;复用父子命令和既有数据库协调,隔离业务拒绝与技术中止,组织和服务器按行共同提交,关闭 20 号工单。定向测试 763 项零失败/错误/跳过。设计发布采集服务器导入的两项局部简化规格,保留已确认的行为和测试接缝;保存 19、20 号工单续接说明与设计评估,合并前固定近期文档,避免仅存在于工作区而未随分支历史交付。实施批次入口 run-item.sh 纳入维护者最新选择,指向采集服务器导入局部简化工单目录;保留原批次注释记录,本次仅保存入口且未执行批次。重构采集服务器导入的空行、空号和首条同号判定在批次类内复用,保持 HTTP 与消费阶段的独立集合、顺序和计数;将 findExistingId 收为包可见,保留公开行事务入口、锁内身份重查和原消息合同;补齐未经预筛选的序列化 JMS(Java 消息服务)、新旧 HTTP 精确编号及空集合行为。具名导入回归 25 项通过。
- ✅ 采集设备逐行导入与绑定交付 〔es-center-server-services〕
实施采集设备新旧导入固定可信目标与原操作者,按号确定主体并保留字段保持、清空及赋值意图;组织、父子补缺和服务器绑定在独立行事务中提交,共同协调保护并发新增;合并两类采集导入的共同编排,同步合同、OpenAPI、切换交接。23 类 767 项有效验证通过。实施21 号工单补录证据——F17 记录提交进行中状态清单输出截断(2774 tokens 超 2200 预算)及从 /tmp/t21-stage.paths 具名恢复 16 个 main-regression 路径,回访统计主执行截断次数由 5 次更正为 6 次;仅作证据补录,不改实现与测试输入。
- ✅ nginx 封住固件目录列举与符号链接下载 〔es-center-server-install-app〕
实施同步标准、模板和升级载荷的 3 份 nginx 配置,封住普通固件目录列举与符号链接下载的地址边界;保留既有下载直链、Range 响应、镜像标签及 CRLF 载荷格式。nginx 检查 12 项通过,三文件差异检查通过。
- ✅ 普通固件管理交付,单轮回收接线与评审核销完成 〔es-center-server-services〕
- 10-15: MQTT 显式节点迁移收口与认证回包原子件落地
- ✅ MQTT 显式节点批次八票连发收口(票 06–13) 〔es-center-server-web-app〕
实施票 09(owner 扩展):按规范化 host/端口复用节点资源,各节点隔离 client、epoch 队列与 availability,拒绝非法地址且不回落;保留默认节点旧签名、UI 镜像与 publishAsync 补丁(全部迁移完成后由 07 票删除);评审双轴发现的同步重入问题(退休通知中新 epoch 被覆盖/清空)补红灯回归后修复。25 个受影响文件 724 例单测通过。实施票 09 归档:交付记录含 TDD 红灯清单、两轮 typecheck 修复、25 文件 724 例最终通过(初轮 4 失败保留证据)与双轴评审闭环。实施票 10:owner 按节点持续发布连接快照,隔离旧 SUBACK、身份失效和同步重入,单次等待超时不终止持续观察;Player1 直接消费节点快照,四处发送显式指向同一 host,移除取消清值重读组合并在呈现点翻译状态,保留原播放重试与 Janus fallback。受影响 25 文件 736 例通过。协作票 10 关闭:9 项验收逐项勾选,Comments 记录完成于 2026-10-15 见提交 b8ded037,真实 EMQX/UI 验收仍由 08 票收口。重构票 11:共享请求在发送点明确提供浏览器 host,ICE 批次复用同一 host 获取身份和逐设备发送,使设备前缀组合与下游页面同步脱离 owner 的无节点兼容签名;保留信封、QoS、去重及生命周期失效检查。受影响 6 文件 43 例通过。协作票 11 关闭:7 项验收逐项勾选,useMqttRequest 发送点显式传 window.location.host、useIceServerDeliver 批次内捕获同一 host,沿自动导入追踪全部应用消费者。重构票 12:在线适配器、transport、房间编排及 Janus/设备命令的 16 处 owner 调用显式绑定浏览器 host,保证观察、身份与发送使用同一节点;保留 socket availability、SFU 在线与房间出席边界及既有 wire 合同,调整设备绑定测试交互同步点消除异步聚焦竞争。23 文件 817 用例通过。实施票 12 关闭,Comments 记录完成于 2026-10-15 见提交 e7d34271。重构票 13:9 个媒体消费文件的 26 处发送和 7 处身份读取统一使用浏览器 host;保留既有消息工厂、Janus 裸转发和发送就绪时点,避免排队提前改变解密、列表及会话状态。定向 4 文件 71 例通过,评审修复后媒体 14 例再验通过。实施票 13 关闭,Comments 记录完成于 2026-10-15 见提交 225230c5。重构票 06(迁移批 D):19 个页面的 31 处发送交给 MQTT owner,移除 raw client 读取及连接轮询,使请求沿浏览器 host 使用同一节点队列;普通 Web 信封在实际发送时获取 clientId,保留类别上报、固件升级和备份上传的设备身份、topic(消息主题)、参数及回复通道;地图、巡览和设备列表测试播种(预置数据)迁至 mqtt 包边界,补充 14 项页面 wire 与 SUBACK 回归。受影响 11 文件 276 项通过,补充备份后 14 项(合计 277 项)。实施票 06 关闭:维护者确认拆票后 Blocked by 调整为 10, 11, 12, 13,完成于 2026-10-15 见提交 099c82e0。重构票 07(contract 收口):删除 AppStore raw client 字段、双写镜像与 publishAsync 猴补丁(运行时补丁),连接与状态只归 owner 管理;移除五类消费接口的无节点签名和默认地址回落,保留发送时身份、统一日志、QoS、队列及生命周期合同。36 文件 1209 项受影响单测通过。实施票 07 关闭:Blocked by 调整为 06, 10, 11, 12, 13,完成于 2026-10-15 见提交 d6738709。设计票 08(最终 wire 与真实 UI 验收):以真实 UI、在线设备和 mosquitto(MQTT 服务器命令行工具)交叉核对默认节点、身份切换、队列及坏帧容错,保存可追溯的脱敏证据;补齐 Player1 原有 15 秒重试到 1280×720 恢复与等待超时后的发送行为,明确长 SUBACK、StrictMode 和精确时序的 mock 边界;保留失败尝试和环境限制记录,不改变应用代码或真实设备云节点接线。实施票 08 关闭:验收状态 verification.json 由 acceptance-passed 收敛为 complete、remaining 清空,补齐 commitStaticGates 机械结果。设计spec.md 重写为 2026-10-15 增量规格:承接已完成的迁移票 01–05,Interface 修订为调用方显式提供节点地址、owner 按节点复用连接并隔离队列与状态、新增持续状态快照(含可直接交 t() 的英文 messageKey),操作员/开发者/维护者故事整体替换(22 条);ticket-drafts-2026-10-15/ 收录增量规格拆票草稿(06–13 工单草案、plan.json 与 README)。
- ✅ MQTT 批次过程证据归档与批次接线 〔es-center-server-web-app〕
实施MQTT 连接收口批次(工单 03–13)全量执行过程证据归档进 .scratch/,共 1653 个文件、+3991648 行纯新增(约 399 万行,0 删除,纯归档不改代码);--no-verify的 body 事由逐字:「原始 .log/.diff 证据含尾随空格与缩进特征,git diff —check 与 lint-staged oxfmt —write 会拒绝或改写证据原文;本提交为纯过程材料,不含任何代码,typecheck/lint 结果与提交内容无关」。实施Talkgroup 清理与命令错误批次过程证据材料归档(162 个文件):受影响测试的 argv 请求/结果 JSON、stdout/stderr 运行日志、提交消息文本等 .scratch 过程产物批量入库留存。审查scoped-invalidation-assembly 双轴代码评审原始发现归档到 .my/raw/code-review/0001/:Standards(S1–S5)、Spec(P1–P5)、Design(D1–D4)三轴发现索引与逐条证据(含精确 file:line、复核命令、ADR 压制规则与第一轮复核记录),供后续复核者按条目独立证伪。实施run-item.sh 批次执行清单激活 .scratch/mqtt-connection/issues/;talkgroup-cleanup-and-command-errors 入口先行注释保留,scoped-invalidation-assembly 入口退为注释。
- ✅ 认证回包原子件批次开批,9 处调用点收敛单一来源(票 01–03) 〔es-center-server-web-app〕
实施(AI 辅助) 票 01:新建 app/.common/auth/apply-auth-result.ts 双导出 applyAuthResult/clearAuthResult,为 6 写入 + 3 清理调用点的「5 Cookie + setState + setAuthorization」舞步提供单一来源(ADR 0044 原子件优先、ADR 0050 复用门槛按 9 处达标);写入前校验畸形回包、username 单次归一化、tenantId/authorities 缺省回落;本票无调用点接入,全仓行为不变。新增 20 + 权限合同 45 共 65 项测试通过。实施票 01 收口:落认证回包批次 spec(80 行,经 2026-10-15 设计审查与维护者确认),写明无调用点接入、全仓行为不变的实施边界。重构(AI 辅助) 票 02:logind 续期、switch-tenant 头部组件、租户管理页与登录三页共 6 处写入点删除就地写入舞步改调原子件,成功判定守卫与各分支逐字保留原位;逐点载明三项已确认行为差异(缺失凭据载荷改拒绝应用、authorities 缺失写占位围栏、username 缺失统一空串)与其余逐点保留。按验证指引串行选 10 文件共 496 通过。重构(AI 辅助) 评审处置:apply-auth-result.ts 租户回落值提取模块内常量 DEFAULT_TENANT_ID(不导出);测试占位围栏形态断言收口 PLACEHOLDER_PATTERN 常量、seedExistingAuth 的 Cookie 值改由 EXISTING_AUTH_STATE 派生消除成对字面量重复;均为等价重构无行为变化。原子件函数测试 20 通过。实施票 02 关闭:6 处调用点改调 applyAuthResult、守卫/频控/跳转原位保留的实施边界写明。审查归档工单 01+02 的 Standards/Spec 双轴评审报告:Standards 轴裸字面量硬违规(轻)采纳并记录修复提交 1dbaa6b6、ADR 0050 计数口径记录不改写;Spec 轴类型导出偏离记录为合同解释,三项疑点核对均符合。重构(AI 辅助) 票 03:header 登出确认、账号停用成功后、停用页登出 3 处清理调用点删除就地清理舞步改调原子件 clearAuthResult(),清理集合(4 store 字段 + 5 Cookie)收口单一来源;登出 API 调用、3 处跳转与 500ms 延迟跳转逐字保留,行为等价。按验证指引串行选 8 文件共 460 通过。实施(AI 辅助) 票 03 关闭:3 处清理调用点改调 clearAuthResult、登出 API 与跳转原位保留、与票 02 源码文件不相交可并行认领。
- ✅ 远程下拉候选退休按用户名具名比较(票 01) 〔es-center-server-web-app〕
重构(AI 辅助) shouldRetireCandidate 在身份解析成功后具名解构 username 再比较,消除身份键数组魔法下标,解析失败仍按原语义退休;原登出/换用户名参数化用例扩展为「历史字节/真实构建器 × 登出/换用户名」4 场景(净增 2),并保证用例实际经过按用户名退休路径。定向三套件共 137 通过(候选套件 90 = 原 88 净增 2)。实施(AI 辅助) 落远程下拉候选退休批次 spec(82 行)并关闭票 01:明确候选退休用户名语义并验证固定历史字节与真实构建器两类样本的组合退休。
- ✅ MQTT 显式节点批次八票连发收口(票 06–13) 〔es-center-server-web-app〕
- 10-15: 跨租户管理清退与历史清理交付
- ✅ 三类导入组织解析统一复用 〔es-center-server-services〕
重构将组织字段意图、目标内解析和缺席创建集中到 main 内部组件,员工、采集服务器、采集设备三个行事务共用原组织保存通道;保留独立行事务、可信目标与操作者及提交后副作用,移除三份重复分支和两个单调用点校验包装,完成工单及原规范改进回访。main 11 类 684 项通过,Standards/Spec 各 0 发现。
- ✅ system 与个人空间业务权限、可证明预设存量清退 〔es-center-server-services〕
实施通过既有增量单个 DO(数据对象)原子清退七表的 system 与个人空间业务权限存量,覆盖可信 system、个人前缀和软删类型,保留同租户 administrator 身份、实体与成员;修复从端增量 DELETE 仅按记录 ID 导致的跨租户误删,要求原行 tenant_id。cleanTest 后实际 86 项通过;未执行生产迁移。实施以具名单事务增量逻辑退场个人空间的厂家、类型及七类型号可证明业务预设,保留软删历史、普通数据和设备固件原引用;补齐增量 INSERT/UPDATE 的来源租户定位,避免同 ID 公共源被命中或阻断个人清退同步。main 有效覆盖 520 项无错/无跳过。设计撤回个人预设清退的过渡包方案——回到完整程序包与既有文件名排序,删除过渡 JAR 制作和恢复步骤,保留原停旧与消费者切换要求;过渡制品标记为已撤回历史证据,23 号已完成并按现有 tracker 接续 24 号,不新增发布机制。
- ✅ 型号补缺与三类设备历史集合清理交付 〔es-center-server-services〕
实施沿稳定预设身份补齐型号物理缺侧,通过共同事务锁协调初始化、普通及异族写者与清理,保持软删和原设备/固件引用;接入默认关闭的型号维护 HTTP、启动一次发布与 JMS 单轮消费,固定每批 200 组并核验权威数据库;交付 24 号九项验收与切换恢复手册。testAll 原 4049/1/0/0,唯一日志观察断言修正后有效覆盖 4049/0/0/0。实施在真实批事务中按固定身份收敛三类父子与七类关系的历史集合清理,保留预设、来源、历史及其它投影,每批最多 200 组且高扇出完整处理;接入默认关闭的 HTTP/启动 JMS 单轮,复核权威库与消费资格,交付 25 号验收、消费者冻结与恢复手册,未执行现场部署。testAll 318 类 4127 项、0 失败/错误/跳过。重构(AI 辅助) 设备与型号两个具名 JMS 入口收敛到固定用途 DatabaseHistoryCleanupListener,轮级规则(准入复核、连续批次、竞争/完成/无进展终止、已提交计数、失败处理)只维护一份,目的地址、容器 ID、准入与 Batch 在入口静态配对;修正型号批间技术性失格分叉——与设备一致在发现失格的本轮复核资格并停止自身容器,先以真实提交回调回归在原实现上暴露「容器未停」再修正。三类完整重跑 device 87/model 195/firmware 66、宿主探针 1、Janus 只读 1 均 tests>0 且 failures/errors/skipped=0。实施(AI 辅助) 设备与型号清理轮统一工单(01)收尾——执行记录补记交付提交 0ea1a6f2(33 文件,排除并行改动)及 agent_checks.py check —staged 退出 0(13 份 Markdown、0 错误)。
- ✅ 三类导入组织解析统一复用 〔es-center-server-services〕
- 10-16: MQTT 连接精化与 API 错误呈现批次开票落地
- ✅ MQTT 连接精化批次四票落地(票 02/03/04/08) 〔es-center-server-web-app〕
重构(AI 辅助) 票 02:删除零生产消费方的快照订阅出口 subscribeMqttConnection,公开 Interface 收敛到实际用途;退休 publish 的 invalidArguments 旧签名兼容检查与自证用例(全仓 67 处生产调用点核对均为现行签名);就绪等待超时消息改引用 MQTT_READY_TIMEOUT_MS 单一来源;useMqttConnectionSnapshot 未注册节点回退由 STOPPED 改 CONNECTING(首帧不得误报主动停止)。受影响 7 文件共 191 项通过。重构(AI 辅助) 票 03:连接模块新增 DEFAULT_MQTT_NODE_ADDRESS 导出(模块加载时固化 window.location.host,SPA 生命周期内 origin 不变故与运行时读取等值),生产 38 文件 47 处默认节点表达式迁移为常量引用;六个公开入口仍必选显式 nodeAddress,未新增可选参数或无节点签名。被改文件直接消费者全集 36 文件共 1078 项通过。重构(AI 辅助) 票 04:use-audiobridge-room 删除 TalkgroupRoomAvailability 的 mqttAvailable 字段,hook 内既有 useMqttAvailability 订阅更名 mqttAvailable 成为房间全部门控的唯一输入通道,prop×订阅重复联判删除;页面级同源字段删除,会话 UI 门控改用直订唯一来源;评审命中的嵌套三元硬违规改对象映射。影响面 5 文件共 339 项通过。实施(AI 辅助) 票 08:mqtt-connection 新增导出 MqttUnavailableError,仅替换 owner 自产的三处普通 Error,消费方自此可按类型判别 owner 失效;device-file-backup 的 sendUploadCommand 发布点补 try/catch,技术失败保留原始错误进日志并复用既有词条 toast 提示,阻断成功提示与对话框关闭。8 文件共 187 项通过,评审修复后复跑 mqtt-page-consumers 15 项通过。
- ✅ 精化批次收尾:关票、评审归档与状态检查报告 〔es-center-server-web-app〕
实施(AI 辅助) 票 02 关闭并归档批次材料:spec(100 行)与 01–08 八张工单落票(01 标记 wontfix——测试基建归一与 clientId 薄封装按维护者要求收缩范围取消),另归档 final-review、mqtt-review-20261015 测试日志等批次过程材料(含 1740 行 stdout 日志)。审查(AI 辅助) 票 02 双轴评审报告归档到 .ai/review/code/2026/1016/0050/:Standards 0 硬违规、合规确认 8 项与 5 条判断性意见(均接受不行动),死接口用例删除与 CONNECTING 回退的裁决核验通过。实施(AI 辅助) 票 03 关闭,Comments 记录完成于 2026-10-16 见提交 0716b489。审查(AI 辅助) 票 03 双轴评审报告归档到 .ai/review/code/2026/1016/0841/:Standards 无硬违规、3 条判断性意见(Middle Man 别名绑定、存量重复形状、求值时机提示)。实施票 04 关闭(完成于 2026-10-16 见提交 d112d49c),并归档 state-review-04.compact.json 状态检查报告(187 行)。审查票 04 双轴评审报告归档到 .ai/review/code/2026/1016/1047/:Standards 1 项硬违规(嵌套三元)已修复复验、2 条判断性意见处置,Spec 5 项验收逐条判定通过。实施(AI 辅助) 票 08 关闭,Comments 记录完成于 2026-10-16 见提交 dc80e0f3。审查(AI 辅助) 票 08 双轴评审报告归档到 .ai/review/code/2026/1016/1247/:Standards 0 硬性违规,3 条判断性意见处置,Spec 轴错误边界与备份提示验收核对。
- ✅ 前批评审收尾:两份复审改写与工单修正、批次接线 〔es-center-server-web-app〕
审查归档远程下拉候选退休可读性工单 01 的双轴评审报告:三点式 diff 固定 9dbd4720 与 7ff35942 两提交,Standards 0 硬违规(2 条 judgement call 均判可接受),Spec AC1–AC9 逐项通过(AC7/AC8 独立复跑验证)。审查scoped-invalidation-assembly 原始评审改写为 2026-10-15 第二轮复审:保留 S/P/D 编号,逐条给出本轮结论与后续处理(S1 部分成立纳入建议、S2/P2/S5/P3/P4/P5/D4 等推翻或关闭),修正原报告「被评审文件零漂移」的不成立断言并固定三轮证据版本;原初评及第一轮复核原文可经 git show 9aeb0f05 查阅。设计认证回包应用原子件票面按 2026-10-15 设计审查修正:细节收口至 apply-auth-result spec、票面保留来源与裁决摘要;补写空 loginUser 的 username 归一化、重复应用刷新语义、登录旧权限清除差异及调用点回归范围,证据行勘误 4→3 字段 setState;map.md 同步裁决摘要并标注已进管线。性质为过程材料修正,实现与验收尚未执行。实施run-item.sh 激活 .scratch/mqtt-connection-refinement/issues/ 批次清单,mqtt-connection 旧入口退为注释保留;补注释保留 apply-auth-result、remote-combobox-retirement-readability 两条历史入口命令行并同步模板示例。
- ✅ API 错误呈现批次开批:ADR-0053 发布并落地票 01/02 〔es-center-server-web-app〕
设计(AI 辅助) 新增 ADR-0053「API 错误呈现与软失败控制流分离」:呈现文案按 extraData.message 模板→可展示 error→前端摘要选择、呈现点翻译,保留标准 resolve/reject、认证处置与补偿静默;STANDARDS §5/§6 增加具名指针;落档 error-i18n-grill-20261016 调查讨论与用户裁决、前后端响应合同核对、父规格与六票工单及拆票方案(2026-10-16 用户确认六票粒度)。实施run-item.sh 批次执行行由 mqtt-connection-refinement(注释保留)切至 .scratch/error-i18n-grill-20261016/issues/,另补 5 行空白模板注释作后续切换备忘。实施(AI 辅助) 票 01:errors.ts 新增呈现文案选择原子 getApiDisplayMessage/getApiDisplayText(有效 extraData.message 模板优先、缺模板用可展示 error 原文、无可用消息交呈现点自选摘要),与软失败控制流分离不扩 hasSoftFail(ADR 0053);ClientInit 全局通知与组织 v1 新增/编辑/删除页、列表失败单元格改按统一选择呈现 API 原因,删除页补齐认证常量本地早退。定向单测 30 文件 1021 用例全部通过;未跑全量——影响面经事件通道消费者与 fixture 检索收敛。审查(AI 辅助) 票 01 双轴并行子代理评审报告归档:Standards 0 硬违规 3 判断性意见;Spec 无范围蔓延,1 缺项(覆盖台账,关票补齐)与 1 低风险判断记录保留。协作(AI 辅助) 票 01 关闭:Comments 关联前置归档 f08415bc、实现 3731dd8a、评审归档 98477c8d,并按关票补齐要求写入覆盖台账(消息来源 · 反馈归属 · 调整/保留 · 验证四列,逐消费族列处理与验证)。实施(AI 辅助) 票 02:errors.ts 新增 HttpResponseError 技术响应失败身份(httpStatus 与 body.status 分字段),fetch-timeouts Response 阶段 json() 解析失败且 HTTP 非成功才转换,非成功 HTTP 携带标准 API JSON 仍走原 body 通道;默认请求 emit resultError 一次并继续 reject,诊断不进事件通道与翻译候选;default-request-error 不再二次通知、字典补偿点排除同一身份。定向单测 17 文件 626 用例全部通过;未跑全量——影响面经 json() 解析失败替身与 resultError 消费者全仓检索收敛。测试(AI 辅助) 处置票 02 评审的 Spec 轴唯一覆盖缺口:global-error-feedback 新增 HTTP 401+body.status 1000 与 HTTP 403+body.status 1001 的真实 Response 配对用例,锁定认证 JSON 在非成功 HTTP 下仍走原 API 结果通道、完成清凭证与跳登录。26 用例通过。审查(AI 辅助) 票 02 双轴并行子代理评审报告归档:Standards 0 硬违规 3 判断性意见(均保留,三处 instanceof 守卫有 ADR 0053 决策 4 背书);Spec 10 通过要点、0 缺失、0 蔓延,1 覆盖缺口已由 010caeaa 补测。协作(AI 辅助) 票 02 关闭:Comments 关联实现 d3d83aa9、评审处置补测 010caeaa、评审归档 700f0524,写明实现形态与覆盖台账(默认请求、标准 500/429/400/认证 JSON、局部接管、静默通道四消费族的归属与验证)。
- ✅ MQTT 连接精化批次四票落地(票 02/03/04/08) 〔es-center-server-web-app〕
- 10-16: 跨租户管理批次收尾与写链折叠
- ✅ 票 26/29/30 收口,全仓保存编排 Function 清零 〔es-center-server-services〕
测试(AI 辅助) 26 号票收口——三层生成验证与全仓最终回归通过后,归档执行证据、验收记录与交接制品(100 故事映射、前端统一交接索引 17 资源+13 勘误、旧消费者切换清单),验收项 9 触发条件命中并立后续决策票 30-gt-common-event-central-contract-module;另把 janus 合同两处已撤回的「新增不声明主键」措辞修复为 ADR-0119/READ_ONLY 实际形态。文档检查交付态实施目录 149 文件 0 错误,双轴评审全部修正落实。重构(AI 辅助) 用户写链折叠——淘汰 UserSaveFunction/UserUpdateByIdFunction,预设校验、前缀配对、UserTenant 附属写折入公开 User Service 的接口级事务入口,UserController 直调 Service;跨模块角色/用户组附属改发 UserAuthorityRequested 不可变事件,由 main-service 宿主监听器与主体同事务落库,user-center 不反向依赖 authority;评审驱动改序:普通更新主体未命中即返回且不执行附属写入(ADR-0120 决策 6)。新 UserWriteChainSqlIntegrationTest 9/0/0/0,main-service 受影响回归 12 类 162/0/0/0。实施(AI 辅助) 29 号票收口——归档用户写链折叠与同步事件接入的命令、JUnit 汇总、评审与源合同证据,票面与决策图状态回写 done(决策图 done 29、待领 1)。重构(AI 辅助) 八家族(TalkServer/FileStorageServer/FingerprintScanner/NfcCard 及各自 Model)写链折叠——淘汰 16 个 Save/UpdateByIdFunction,父子同主体编排逐字折入 8 个公开 Service 的接口级事务入口,旧 Controller 直调重接,wire 合同(UUID 生成、回退、childTableName、复制与结果语义)逐项保持;至此全仓 *SaveFunction/*UpdateByIdFunction 清零,仅剩排除项 MqttAccountSaveFunction。main-service 受影响 3 类 242/0/0/0,双轴评审硬违规零、代码修正项零。实施(AI 辅助) 30 号票收口——归档剩余设备家族折叠与全仓清零的命令、JUnit 汇总、评审与源合同(排除项指纹)证据,决策图 30 票全部 done、待领清零。
- ✅ 回访回写与批次驱动接线 〔es-center-server-services〕
实施工单回访回写——20 号证据补 2026-10-14 回访(下游拆票承接出现 2 次异常截断,留证恢复,无可比调用分母不宣称改善),21 号证据补 2026-10-15 回访;21 号工单补状态:后续检查确认员工/采集服务器/采集设备组织解析仍有重复(上轮规范评审遗漏),维护者要求提炼复用规格、状态 ready-for-agent 待拆票,本票功能验收与交付状态不变。实施run-item.sh 批次驱动活动行由导入简化批次切回 administrator-cross-tenant-management-implementation 批次,继续消化 21 号后续票;新增 —agent claude —cmd “/goal /implement” 调用形态并保留为模板行,既往批次行全部注释留档。
- ✅ 父表退役历史增量补齐 CASCADE 〔es-center-server-services〕
排障(AI 辅助) 修复父表退役脚本与真实数据库行为不一致——运维执行既有父表结构退役脚本时实际继承后代随根表退出,1.0.64/1.0.65/1.0.71 三份历史增量 4 处父表 DROP 补 CASCADE(保留 IF EXISTS 与原脚本身份,不新增迁移脚本),并在 coding-principles 固化「父表结构退役」长期规范唯一正本;新增 ParentTableDropSqlIntegrationTest 以 3 脚本 × 子表基数 0/1/18 共 9 用例真实执行历史脚本,覆盖嵌套后代、依赖视图与重放边界。
- ✅ 审查证据归档与整改批次开批 〔es-center-server-services〕
审查(AI 辅助) 2026-10-16 跨租户实现审查证据目录 77 文件全量归档入库(含 parent-table-cascade 前轮原始 JUnit XML 与制品哈希;11 份证据 .log 沿仓内既有先例强制入库,日志扫描无凭证值),使整改批次 spec、索引设计与票 01–08 正文引用可在仓内解析。设计(AI 辅助) 审查整改批次开批发布——归档父表 CASCADE 退役票 01 的执行证据与验证 JSON,并入库整改批次 spec、索引设计、票面计划与 01–08 共 8 张工单(与上一笔审查证据归档提交互链,两笔合计过钩子校验)。实施(AI 辅助) run-item.sh 批次驱动活动行由实现批次切换至 administrator-cross-tenant-management-review-remediation 批次(本批次 8 票由该驱动启动),既往批次行注释留档,并补齐文件末尾 POSIX 换行符。
- ✅ 票 26/29/30 收口,全仓保存编排 Function 清零 〔es-center-server-services〕
- 10-17: API 错误呈现推广至群组编辑与设备群组关系
- ✅ 群组编辑拒绝在原反馈位呈现具体原因并保留草稿(票 03) 〔es-center-server-web-app〕
实施(AI 辅助) talkgroup-group-editor-1 新增模块局部 getTakeoverApiResult 从 Error.cause 恢复 API 信封(只认带数字 status 的信封、认证常量排除,按 ADR 0050 门槛保持就近不入 errors.ts);详情读取与保存后回读的 TalkgroupManageLoadError.businessResult 改为 apiResult,error-only 拒绝在 EmptyErrorState/Alert 原位呈现具体原因、阶段事实 key 不被覆盖;reportSaveFailure 的 toast 优先呈现 cause 信封 API 原因,无信封保留草稿摘要,resolve/reject、确认框开合与草稿/重试入口零改动;评审处置将共享原子降级为编辑器局部实现。定向单测 6 文件 179 用例全部通过;未跑全量——影响面经编辑器组件消费方全仓检索收敛。审查(AI 辅助) 票 03 双轴评审报告归档到 .ai/review/code/2026/1017/1842/:Standards 2 项硬违规处置(共享原子未达三处门槛降级为编辑器局部实现、GLOSSARY 缺词条记为系列收尾建议)、5 条判断性意见处置(2 修 3 保留)。协作(AI 辅助) 票 03 关闭:Comments 记录完成于 2026-10-17(关联实现 03223d44、评审归档 fa7d8004),写明模块局部 helper 的门槛论证与提升预留触发点,覆盖台账逐消费族(详情读取、保存后回读、新建提交、编辑提交)列归属与验证。
- ✅ 设备群组关系拒绝原位呈现具体原因并保留选择(票 04) 〔es-center-server-web-app〕
实施(AI 辅助) 设备面板构成 getTakeoverApiResult 第三个同形真实消费方,达 ADR 0050/§3 三处门槛,经维护者裁决「提升并全收敛」——原子入 errors.ts 单点维护,编辑器局部实现删除、org 列表实现收敛(语义收紧为数字 status 校验),org 详情双谓词不收敛沿就近裁决;DeviceTalkgroupError.businessResult 改为 apiResult 原位呈现具体原因,保存拒绝保留设备、关系选择与未保存状态;主消费测试转真实 Response 边界。定向单测 14 文件 327 用例全部通过。审查(AI 辅助) 票 04 双轴评审报告归档到 .ai/review/code/2026/1017/2231/:前置裁决记录 getTakeoverApiResult 提升并全收敛(维护者本会话裁决);Standards 0 硬违规、3 条判断性意见处置。协作(AI 辅助) 票 04 关闭:Comments 记录完成于 2026-10-17(关联实现 2d68c84c、评审归档 4b596560),写明共享提升裁决(三处消费方达门槛、编辑器局部删除、org 收敛、详情双谓词不收敛)与覆盖台账。
- ✅ 群组编辑拒绝在原反馈位呈现具体原因并保留草稿(票 03) 〔es-center-server-web-app〕
- 10-17: 审查整改批次推进
- ✅ 用户 Plus 成员维护改同步事件交所属领域 〔es-center-server-services〕
重构(AI 辅助) 按整改规格 §9 与 ADR-0120 决策 2 收回 29 号票同模块直接编排例外——UserTenant 成员维护改为同步事件交所属领域监听器维护,与主体共同提交/回滚,调用者返回值与日志合同不变;事件由 UserAuthorityRequested 最小更名 UserMembershipsRequested(载荷不变),共享模块新增 UserTenantMembershipListener,成员监听器下沉使未来宿主自动获得,授权监听器保持 main-service 宿主合同不下沉。main-service 13 类 164/0/0/0、device-service 3 类 7/0/0/0。实施(AI 辅助) 02 号票收口——归档用户租户同步事件的 main-service/device-service 回归 JUnit、监听器装配测试与验证 JSON 证据,票面状态回写 done。
- ✅ 配置值集合与设备附属关系的历史退场修复 〔es-center-server-services〕
排障(AI 辅助) 修复配置值集合三项已确认缺陷——saveBatch 首次写入不去重自造历史重复、单条 save/update 按不完整身份预查误拒同槽多值、旧删除时间 unique 使同事务历史重复行软删碰撞 23505(数据库唯一约束冲突)回滚;写链合并为同一去重差量流程、判重下沉完整身份,旧 unique 换普通索引并以具名增量 03-version-2.0.1-20261017-value-set-table-retirement-index.sql 对真实继承族在线替换,未来子表沿 LIKE INCLUDING ALL 复制普通索引。main-service 受影响 5 类 206/0/0/0。排障(AI 辅助) 修复服务器—存储与箱—扫描器两类设备附属关系的历史退场缺陷——旧删除时间 unique 使同一事务退场历史重复行碰撞 23505,导致采集服务器/箱删除与维护历史清理回滚;两表旧 unique 换普通索引并新增具名增量 03-version-2.0.1-20261017-device-relationship-retirement-index.sql 按 pg_inherits 递归真实继承族在线替换,生产 Java 零改动、配对判重与预查保留。main-service 受影响 5 类 467/0/0/0。
- ✅ 用户 Plus 成员维护改同步事件交所属领域 〔es-center-server-services〕
- 10-18: error-i18n 收尾与架构评审处置落地
- ✅ error-i18n 票 05/06 收尾,批次六票全部完成 〔es-center-server-web-app〕
实施(AI 辅助) 票 05:共享分页服务静默通道非成功信封独立按 status 收敛为业务拒绝(isPagedQueryRejection+SUCCESS_STATUS 具名谓词),修复「非成功+无 message+data:[]」冒充成功空态;分页描述入口与房间详情失败呈现改经 getApiDisplayText/getTakeoverApiResult 按模板→error 原文→摘要选择,认证常量按通道归属处理;新增 10 用例并更新真实 HTTP/body 配对。定向 13 测试文件 464 用例通过。审查(AI 辅助) 票 05 双轴评审报告归档到 .ai/review/code/2026/1018/0000/:Standards 2 项硬违规均已修复(魔法协议码 200 提取 SUCCESS_STATUS、复合条件提取 isPagedQueryRejection 具名谓词)、4 条判断性意见处置。协作(AI 辅助) 票 05 关闭:Comments 记录完成于 2026-10-18(关联实现 3efc163b、评审归档 d2a7d8bd),写明零新增共享抽象的实现形态与覆盖台账(共享分页服务、工作台分页、房间详情等消费族的调整与验证)。实施(AI 辅助) 票 06:下发 hook 失败原因选择 getSoftFailText→getApiDisplayText,error-only 手动拒绝不再退成「请求未确认」摘要;失败判定改为 hasSoftFail+既有成功条件的等价表达(消息选择与控制流分离,成功信封携带 error 文案不翻转为失败);呈现时语言经 useLatest(t) 取最新翻译函数;自动补偿(room ensureRoom/pushPttConfig fire-and-forget)零改动、不经本 hook。定向 4 测试文件 254 用例通过。测试(AI 辅助) 处置票 06 评审的 Standards HARD 意见:「The request was not confirmed.」在 forward 测试新增 6 处触发字面量提取模块级 UNCONFIRMED_REASON 并全量替换;reverse 测试同文件存量 2 处顺手对齐(ADR 0019 时机)。forward+reverse 65 用例通过。审查(AI 辅助) 票 06 双轴评审报告归档到 .ai/review/code/2026/1018/0958/:Standards 1 项硬违规已修复(测试字面量提取 UNCONFIRMED_REASON,落地 6c226055)、2 条判断性意见保留,ADR 0053/0026/§10 合规确认。协作(AI 辅助) 票 06 关闭:Comments 记录完成于 2026-10-18(关联实现 9ac46524、评审处置 6c226055、评审归档 f8f1e136),写明 API 层 softFail 豁免与补偿调用点零改动、生产改动仅共享下发 hook 一个文件的边界,及手动下发/自动补偿两消费族覆盖台账。
- ✅ 架构评审处置批次发布并落地两票 〔es-center-server-web-app〕
设计(AI 辅助) 2026-10-18 全库架构评审及 grilling 共识的处置落档:.scratch/arch-review-disposition 处置 spec 与两票(01 路由变体改名 admin-1/to-b-1/to-c-1 → admin/to-b/to-c;02 MQTT 消费链迁 .client 与字典实体类型归 .common),两票无互相阻塞;GLOSSARY 新增「路由变体(Route variant)」词条,STANDARDS §3 新增「共享层运行环境」条目与 API 目录分组事实。实施(AI 辅助) run-item.sh 批次行切换:error-i18n-grill-20261016 六票全部完成归档、批次行注释停用;激活 arch-review-disposition 批次行(工单 01 路由变体改名 → 02 MQTT 消费链与字典类型归属,无阻塞边)。重构票 01:25 个管理员、企业类和个人类变体目录去掉无业务含义的序号(admin-1/to-b-1/to-c-1 → admin/to-b/to-c),46 个文件内容保持原样;同步 13 个父路由与 16 个测试文件的 import、mock 及审计白名单,保持分流、加载方式和状态生命周期;清理远控父路由失效分流注释。19 个受影响测试文件共 529 个用例通过。协作票 01 关闭(完成于 2026-10-18 见提交 51bd52a5);写明提交钩子与状态提示判定——pre-commit 全过、状态机械 passed 0 项、工具原始语义 pending 1090 项经 545 对 added/removed 逐项配对核对后判定本票范围 not-triggered,并归档 commands.json、state-pairing.json(2753 行)等验收证据。重构票 02:MQTT 连接装配与三个消费 hook 原样移至 .client,使浏览器求值边界与实际依赖闭包一致,保持 wire 和生命周期行为;两种字典实体类型集中到 .common/types 并更新七个消费方,API 查询与响应类型保留原位;同步六个 hook 类型引用和四处 mock 定位,经现有入口刷新 AutoImport。43 文件 1365 用例通过,两轴评审 0 项问题。实施票 02 关闭,Comments 记录完成于 2026-10-18 见提交 fd7e41c8。
- ✅ 两票验收证据归档与月度分支名更新 〔es-center-server-web-app〕
实施路由变体重命名工单验收证据材料归档(68 个文件):基线目录对照 JSON、build/close/commit 等命令的 stdout/stderr 日志、变更引用清单等 .scratch/route-rename-evidence/ 过程产物批量入库留存(含 25 组目录 before/after 对照)。实施「调整 MQTT 与字典实体类型归属」工单全量过程证据 92 件归档(约 97 万行):前置 preflight 与 10 份资料读取报告、符号清单与引用扫描、依赖图前后对比、STANDARDS 差异与状态归属处置、typecheck/lint/format/build 前后结果、单测原始日志,原始工具输出按原字节保留。实施GIT-MANAGE-yaoht.md 中建链/推送/合并/清理示例命令的分支名 20260916 全部替换为 20261016,与当前交付线分支 2.0.1-cn-1-yaoht-20261016 对齐。
- ✅ error-i18n 票 05/06 收尾,批次六票全部完成 〔es-center-server-web-app〕
- 10-18: 整改批次历史退役与组合升级验证
- ✅ 跨种类型号共同退场修复 〔es-center-server-services〕
排障(AI 辅助) 修复共享型号父表旧删除时间 unique 不区分固定种类导致的共同退场缺陷——活动 NULL 可共存而同一事务跨种类退场写相同删除时刻碰撞 23505,通用父批删或型号历史清理回滚;uq_device_device_model_1 换普通索引并以具名增量 03-version-2.0.1-20261017-device-model-retirement-index.sql 在线替换,生产 Java 零改动,通用父批删三族分派与预设保护保留。main-service 受影响 4 类 233/0/0/0;两次中间失败均为测试环境制品陈旧/缺失,按 runbook 重建后补验,非生产缺陷。
- ✅ 旧 TalkServer 整族与员工—TalkGroup 关系退役 〔es-center-server-services〕
重构(AI 辅助) 旧对讲服务器(TalkServer)整族退役(审查整改票 06,决策固化 ADR-0127)——旧族业务产物、专用入口、预设初始化、专用消息与数据库对象整体退出,消除旧关系表经同步事件向正常设备删除传播的 23505 依赖;删除 60 个家族文件、01-init 删三张根表,新增具名增量 03-version-2.0.1-20261018-talk-server-retirement.sql(父行按持久 child_table_name 逐行软删、DROP 失败关闭),两份后继增量按 to_regclass 收缩支持旧表缺席,并新增退役切换手册。main-service 13 类 1156/0/0/0 零 skipped;两次中间失败均为测试 fixture 缺陷修复后补验;未执行现场 DROP。重构(AI 辅助) 无业务用途的员工—对讲群组关系退役(ADR-0128)——员工、对讲群组、设备—群组成员与 Janus 路由全部保留,仅退出该管理关系:家族 14 文件删除、01-init 删建表块,新增具名增量 03-version-2.0.1-20261018-employee-talk-group-retirement.sql(删表前 NOTICE 行数证据、零业务 DML),前端 wrapper(10 导出零挂载)与历史设计文档具名交接。TDD 红绿;最终轮 main-service 4 类 62/0/0/0 零 skipped。
- ✅ 组合升级序列验证与切换交接(整改批次收口票 08) 〔es-center-server-services〕
测试(AI 辅助) 为前七票组合补可核验的新装、升级和回退边界:ParentTableDropSqlIntegrationTest 新增组合升级序列用例按字典序真实执行五份本批增量(20261017×3→20261018×2),断言四族索引目标态、不受影响族行级真值逐字节相等与退役族全部退出;新增 docs/runbooks/cross-tenant-review-remediation-cutover.md(组合停写窗口、增量顺序与跨增量交互、失败回退)。main-service 9 类 343/0/0/0;一次证据处置失败 F1(首轮 8 份 XML 归档前被补跑 cleanTest 删除,计数当场提取,完整最终轮重跑补救并留回访安排)。
- ✅ 月度建分支仪式机械更新 〔es-center-server-services〕
实施.tmp/GIT-MANAGE-yaoht.md 模板中月度分支名由 2.0.1-cn-1-yaoht-20260916 逐处替换为 2.0.1-cn-1-yaoht-20261016(checkout/commit/push/merge/删本地分支/删远端分支共 6 行)。
- ✅ 跨种类型号共同退场修复 〔es-center-server-services〕
- 10-18: 项目级 skills 同步
- ✅ 技能只维护 .agents/skills 项目级一份,.claude 重复副本退役 〔es-center-server-install-app〕
实施.agents/skills 24 个文件更新到上游最新版本(含 SKILL.md 与 agents/openai.yaml)并随新内容重算 skills-lock.json computedHash,删除 .claude/skills 下 76 个重复副本(domain-modeling/CONTEXT-FORMAT.md 随上游版本一同移除),技能此后只维护项目级一份;git status 复核 102 处改动全部落在 .claude/skills、.agents/skills 与 skills-lock.json 三个路径,业务代码与构建配置零变化。
- ✅ 技能只维护 .agents/skills 项目级一份,.claude 重复副本退役 〔es-center-server-install-app〕
其它工作
- 目标: 记录日常杂项工作、协作沟通等事务
- 进度: 🔘 未开始 -> 🟡 进行中 -> ⚠️ 部分完成 -> ✅ 已完成 -> 📌 已自测
- 📌 以往已自测工作不再重复,详情请查看上周及上月报告
- 12 日
- ✅
协作git → svn 源代码同步
- ✅
Last updated on