Skip to Content

2026年09月21日

内容截止日: 2026年09月27日

本周工作计划与执行完成进度

中心服务平台 - 功能完善

  • 进度: 🔘 未开始 -> 🟡 进行中 -> ⚠️ 部分完成 -> ✅ 已完成 -> 📌 已自测
    • 以往已完成的工作不再重复,详情请查看上周及上月报告
    • 〔工作量〕es-center-server-services 86 次(设计 34 · 代码 52)· 代码 +13.7k/-5.1k | es-center-server-web-app 94 次(设计 31 · 代码 63)· 代码 +10.4k/-5.0k | es-center-server-install-app 6 次(设计 2 · 代码 4)· 代码 +0.1k/-0.1k
    • 〔方法论〕合同统一 | 归属治理 | 先复现失败再修复 | 事实勘误 | ADR 明确先行 | 决策图统一 | 有界快照 | 代次隔离 | 读取准入统一 | 弹层保全 | 分页四键统一 | 规格先行
    • 9-21: 缓存租户形态与命名
      • ✅ 剩余缓存改为明确的租户双态形态,命名遗漏补正 〔es-center-server-services〕
        • 设计 仪表盘在线分页规格回写为 needs-triage(待分诊),报表暂停裁决与三轮复盘清单记录在案。
        • 设计 缓存租户合同的路由入口与事实勘误沉淀:动作索引补必读入口,「全租户查询」领域词补上缓存读取的跨租户形态,旧缓存 ADR 的失效注解事实勘误已退役清零。
        • 实施 批次 runner 入口切到 service-cache-tenant-contract。
        • 重构 basedata 与用户线的缓存双态对齐、特例迁移统一:5 个缓存统一成显式条件双态——租户参数空就是跨租户全查、非空就是指定租户;映射层租户特例注解全部退役,租户控制统一由服务层受控作用域承载。
        • 测试 新建三层接缝测试,1574 项测试全过。
        • 实施 批二 05 票回写 done:双态对齐与形态确认清单记录在案。
        • 设计 05 票补记命名统一的补正清单。
        • 重构 4 个租户作用域缓存方法补上显式租户后缀收尾:维护者质询触发,首版交付遗漏的命名维度补正,「名字不声明作用域」的灰色形态消除;旧前缀缓存条目靠短过期时间(TTL)自然失效。
        • 测试 生成器模板对齐收尾:兄弟仓完成服务缓存模板改造,本仓零代码改动、存量 136 个缓存方法零触碰;真实数据库元数据生成 1914 个文件,100 个服务产物「生成形态检查零例外」的验证证据留存。
    • 9-21: 租户作用域归属
      • ✅ 依 ADR-0084 将租户作用域放回缓存层或业务入口,普通服务方法可复用 〔es-center-server-services〕
        • 设计 ADR-0084 立 Service(业务服务层)方法租户 scope(作用域)的归属层次:执行器合法位置二分——只在缓存契约层与上游业务入口,普通方法默认禁止内嵌;全仓普查 186 处、逐处分类记录依据。
        • 评审 grilling 逐轮裁定作用域归属,现存业务特例按名登记。
        • 重构 采集设备线缓存委托链的租户作用域归属修复:三个设备线服务的缓存方法回归全仓主流形态——方法体自带受控作用域、调干净的委托方法,被委托的普通方法交还租户插件管控。
        • 测试 缓存键零变化,1579 项测试零跳过。
        • 实施 归属票 01 回写 done,验证证据清单记录在案。
        • 重构 双态租户复合执行器与员工缓存调用点统一:可空租户的复合执行器把空与非空租户的判断与委托目标收进一个有明确名字的机制载体;员工缓存的手写分支换成单次调用。
        • 测试 合同测试先复现失败、修复后通过。
        • 实施 双态执行器票 01 回写 done,验证证据清单记录在案。
        • 重构 跨租户成员查重的作用域上移到 Controller(接口控制层)入口,service 接缝退役:查重从服务内改为入口自带执行器,与同入口的保存形态对齐;通用计数回归「谁调我,租户由谁负责」的可复用形态。业务特例 13 处现存 12 处。
        • 设计 ADR-0084 事实勘误成员查重特例消亡,事实来源回填。
        • 实施 批次入口切到 tenant-dual-state-executor。
        • 实施 归属票 02 回写 done,二次统一的验证证据清单记录在案。
        • 重构 分享限额查重的作用域上移到 v1 retail 入口,分享服务接缝退役:限额跨全租户累计、不经缓存、必须看到最新写入——与 7 月前基线行为逐字等价。
        • 测试 新增契约测试锚定查重三要素。
        • 重构 BMC 绑定生命周期的只读作用域上移到入口控制器:实现里内嵌的受控作用域移除,方法回归干净、由租户插件管控、可安全复用;查询与租户边界零改动。
        • 设计 ADR-0084 事实勘误分享与 BMC 只读特例消亡、回填事实来源:当日 4 处特例经复核相继消亡,现存 9 处。
    • 9-21: 组织深化候选与选择器反馈
      • ✅ 组织模块提出深化候选,7 张 grilling 票仍为 open 〔es-center-server-web-app〕
        • 评审 org 模块架构深化候选评审产出发布:寻路地图与 7 张 grilling(逐条追问的设计评审)候选票归档;候选票全部 open、零实现零冲突,可并行领票。地图写定执行纪律与排序建议,4 项挂起候选及触发条件记录在案。
      • ✅ 选择器请求反馈保持单行,触发器高度不再跳变 〔es-center-server-web-app〕
        • 实施 请求反馈收进单行,触发器高度跳变消除:加载、刷新、失败反馈内联在箭头位并按需截断——布局稳定优先于文案完整。
        • 测试 浏览器实测三态下触发器恒定 36px 单行,相邻布局零位移。20 余个适配器从共享层生效,窄触发器按需截断。
    • 9-21: 直播导航重复点击
      • ✅ 重复点击当前导航可恢复直播设备列表 〔es-center-server-web-app〕
        • 重构 设备列表显隐状态更名 deviceListVisible:现名与语义相反;这是重复点击特性的前置调整——全部读写点与挂载重置覆盖,状态契约测试同步,纯重命名、零行为变化。
        • 实施 导航重复点击可恢复直播设备列表:命中当前栏目的导航发出中性事件,单/多直播容器订阅后幂等恢复(重复触发结果不变)设备列表;菜单抽屉受控关闭并给出反馈。「直播」节术语进 CONTEXT.md。
        • 测试 新增 7 例测试,覆盖同 URL、子路由与幂等恢复。
        • 评审 两轮 grill-with-docs 明确「恢复」用设为可见而非反转状态;修饰键、非主键与跨栏目点击不触发,移动菜单抽屉命中后受控关闭。
        • 设计 nav-reclick-device-list-restore 批次 spec 与两票回写保存:共识出自 grill-with-docs 两轮拷问会话。
    • 9-22: 后端架构深化候选
      • ✅ 后端 15 个架构候选形成 17 张决策票,已裁决项与待实施项分开 〔es-center-server-services〕
        • 设计 架构深化决策图与 17 张深化决策票发布:9 月 21 日架构评审的 15 个深化候选落成寻路工单包;连接状态簿记形状、前缀列全仓配对盘点与双 SecurityConfig 差异成因三票已裁决,采纳项实现走 to-spec → to-tickets(规格 → 拆票)管线。
        • 设计 前缀列词条收紧成分区键语义,客户端连接状态簿记词条新增:前缀列只作过滤条件收窄扫描范围,不是业务属性、客户端不可写;连接状态簿记成为设备连接状态的写入侧真源。
    • 9-22: 20260921 发布制品
      • ✅ 20260921 制品引用同步完成,旧版本引用清零 〔es-center-server-install-app〕
        • 审查 发布推进票面回写、部署机验收证据随制品推进:包版本引用从 20260913 推进到 202609211708,13 份文件 86 处字面替换逐字节核对;MAIN/DEVICE/WEB 共 6 处镜像标签与容器 image 字段同步,新装与升级环境的核对结论不变。
        • 实施 发布环境镜像标签与包版本引用推进到 20260921:部署脚本、构建脚本、构建说明与安装文档共 86 处字面替换;11 份脚本过 bash -n 静态检查,旧版本引用清零。
        • 实施 构建第七步的上传范围暂时收窄:zxs-hs 与 zxs 的构建后自动上传暂挂,本轮发布只保留 zxs-ca、zxs-cs 两台;要恢复全量上传,取消注释即可。
        • 实施 promgt 构建日志示例推进到 202609211530,与本轮实际构建批次一致。
    • 9-22: 无限滚动与直播保全
      • ✅ useInfiniteList 集中无限滚动编排,管理员组织页成为首个消费方 〔es-center-server-web-app〕
        • 评审 候选 04 的 grilling(逐条追问的设计评审)裁决回写 resolved:沉淀中性 hook(可复用的前端逻辑函数)的注入面与返回能力确定,竞态守卫用五条时序单测锁定;admin-1 同批迁移自己先用。
        • 设计 infinite-list-hook 批次 spec 与两张实施票发布:定下绕开库内建三机制的自持续载纪律,上下文刷新的 1s 节流统一管理。
        • 实施 实施批次切到 infinite-list-hook。
        • 实施 useInfiniteList(可复用无限滚动逻辑函数)集中首载与刷新编排:节流合并 + cancel + reload。refresh 会取消旧请求,区别于库原生 reload;不使用库内建监听、自续载和依赖重载三个已证竞态来源。
        • 测试 六条时序单测核对公开行为;规格原先要求五条,本票先交 hook,不含消费方。
        • 重构 管理员组织页 admin-1 成为首个消费方,删除约 80 行滚动编排,改注入 hook;写后刷新沿同一入口。
        • 测试 真实浏览器回归筛选变更、16 次快速连切租户的合并与补页;29 个请求无风暴,连切间隔未全程满足 ≤300ms,竞态时序仍由 hook 单测验证。
        • 实施 两票回写 done;回归证据里有 29 个请求无风暴与连切间隔偏差说明。
        • 实施 批次行注销、收尾。
      • ✅ 重复点击子路由导航保留单/多直播播放器 〔es-center-server-web-app〕
        • 实施 认领机制与单直播子路由播放保全:事件载荷升级为可认领(仿 preventDefault 惯用法),被认领就拦截导航——设备子路由重复点击不再弹回栏目根,播放器子树不卸载。
        • 测试 新增认领契约测试。
        • 测试 新增认领契约为 3 例,子路由播放保全另有组件断言。
        • 设计 spec 修订、多直播保全票发布:子路由重复点击断流缺陷的根因与可认领载荷方案写进票面。
        • 实施 多直播设备组子路由认领导航事件,保留网格播放;与单直播同构,就近实现。
        • 测试 TDD(测试驱动开发)先复现失败再修复通过,断言 URL 不变、历史不 PUSH、播放器未卸载。
        • 实施 两票回写 done,批次收尾。
    • 9-23: 后端深化裁决
      • ✅ 后端架构深化 17 票裁决完成,ADR-0085~0087 记录取舍 〔es-center-server-services〕
        • 评审 ADR-0085 立「前缀列配对不变量」的 Java 权威与 trigger(数据库触发器)路由裁决:归一化算法以 Java 实现为唯一冻结正本;17 个 INSERT trigger 对齐且不可退役——trigger 兼承担分区路由,写入侧一律覆写重算。
        • 测试 rehearsal(演练)库实测 839 行零失配,不做存量重算。
        • 评审 ADR-0086 立设备连接状态按身份全家族快照读取:读侧与写侧成对——方法恒读全家族、视图按需取字段,用有界读放大换家族组合知识的单点;手拼物理键的读点全部统一管理。
        • 评审 ADR-0087 立 main 与 device 安全配置保持独立装配:公共基座抽取被否决——面向用户登录与设备终端的认证合同不同,减少双写的收益抵不过跨服务认证耦合与回归风险。
        • 设计 共享模块可选技术栈依赖规范新增:第三方类型暴露与运行时供给的判据,依据是 Gradle 字节码核验与 Java 21 类加载最小实验。
        • 设计 接口暴露第三方类型用 compileOnlyApi,内部使用用 compileOnly;启用模块显式提供运行时,收窄依赖前检查借用方。PageMetadata.from(IPage) 的分页适配据此放共享数据层。
        • 测试 Gradle 8.14.5 字节码与 Java 21 最小类加载实验支持该依赖判断,ADR-0013 仅补事实勘误。
        • 评审 四张深化票的裁决回填领域词条、事实勘误 ADR-0036;六张无独立产物票的裁决归档——设备号排重、管理员全租户读取、个人空间租户解析等收敛去向记录。
        • 评审 决策图 17 票全部解决、收尾:17 张决策票的 map 标 resolved,Decisions 的摘要与收敛去向全部回填。
    • 9-23: 连接状态与实施边界
      • ✅ 连接状态读写分开,并用有界身份快照装配列表 〔es-center-server-services〕
        • 实施 core 层把客户端在线标志与活跃时间分开:簿记操作集中到一个专门命名的 module,按物理键并集写入完整身份;接入生命周期、活跃、IoT 与 EMQX 对账四类写方,裸键时间戳断言迁到公开入口。
        • 设计 客户端簿记(记录连接状态的写入规则)按物理键并集保存完整身份;在线与活跃分 2 批写入,失败只作最佳努力记录,不承诺整体原子成功。
        • 测试 覆盖事件插入两次回复之间、断开仍保留活跃时间及两批失败。
        • 实施 采集设备列表改用有界家族快照装配,每批最多 1000 键,列表一次收集账号并按行填独占数据对象;两个列表静态合同、旧查询入口和完整 clientid 能力保留。
        • 测试 全量 2303 项首轮 2302 项通过,旧 bootJar 前置制品补齐后唯一失败项复验通过,0 跳过;Janus 真实数据 1 组比对通过。复验范围保持为该失败项,不写成另一次独立全量重跑。
        • 设计 有界快照是在固定上限内一次读齐同一身份的状态:设备四家族、服务器五家族,每批最多 1000 键;D 个设备、S 个服务器的预算为 ceil((4D+5S)/1000)。
        • 实施 用户 MQTT 在线家族快照扩展、并入账号家族消费者:ADR-0093 记录对双身份决策的扩展;main、retail、dashboard、群组、房间、设备同步与指纹读取改走共享快照。
        • 设计 用户 Web、App 与独立账号级声明纳入三身份读取,U 个用户加入后预算为 ceil((4D+5S+3U)/1000);ADR-0093 部分取代 ADR-0089,完整 clientid 单身份读取继续独立。
        • 实施 全员离线时跳过 DMS 状态消息序列化,TalkGroup 六参数泛型入口改为两个具体私有路径。
      • ✅ 后端深化裁决形成实施规格,24 张实施票发布 〔es-center-server-services〕
        • 设计 SQL 前缀一致性研究区分 Java UTF-16、Locale(语言区域规则)与 PostgreSQL 可表示字符边界;部署 Locale 与存量切换留待后续决定。
        • 测试 25 份探针记录 488 个 Java 向量、480 个 SQL 输入与 468 个可比较结果;真实库零失配只限已测可表示样本,不证明生产 trigger 已切换。
        • 评审 架构深化决策统一、实施规格定稿:新增 ADR-0088~0092 五份 successor(后继)决策,定下十项采纳方向与五项保留现状边界。
        • 评审 后续两轮复盘与补充决定使完整决策材料达到 20 张;ADR-0088~0092 的五份 successor(后继决定)分别标明局部取代范围,研究、规格完成与部署切换证据保持区分。
        • 设计 24 张实施票发布——按完整行为闭环拆分,首票同步闭合。
        • 测试 首票同时保留 main-service 外部失败与部署未覆盖的边界;后续补齐旧制品后的全量结果不替代该时点缺失的验证。
    • 9-23: 组织深化裁决
      • ✅ 组织模块 14 张决策票闭合,十四票实施规格承接 〔es-center-server-web-app〕
        • 评审 七候选裁决落票、两轮全量复查与补充裁决保存:候选 01–07 全部 resolved;新增归属信息归一与表头去重两张新票;复查暴露的三项缺口由补充裁决闭合。
        • 评审 表格语言滞后票扩题、两轮四问裁决:逐页核实 26 处列定义缺翻译依赖的语言候选;52 个有状态弹层(点击后浮出的菜单或确认框)入口确定采用显式命名的 renderer(单元格渲染函数),后续实施须保证弹层原位换语言;根因定位保存。
        • 评审 归属信息归一裁决修订跨租户组织 spec:四张已交付票追加承接指针,交付证据保留为历史。
        • 设计 既有 spec 接上后续裁决指针:infinite-list-hook 修复以候选票 11 为依据;跨租户组织开放业务租户列表的最小语言修复作例外。
        • 设计 组织模块深化实施规格与十四票发布:全部 14 张已决决策票合成实施合同,每票交付一个完整、可独立验证的行为;四份既有规格追加实施交接指针,实施批次 runner 接入票目录。
    • 9-23: 组织读写上下文隔离
      • ✅ 新增与编辑共用组织写拒绝反馈 〔es-center-server-web-app〕
        • 实施 共享拒绝映射收窄入参,新增与编辑表单共用一个入口。
        • 测试 五种拒绝与两种空消息补公开目标测试,浏览器验证四类拒绝出口。
        • 实施 01 号票回写 done。
      • ✅ 组织列表查询与删除目标绑定各自上下文 〔es-center-server-web-app〕
        • 实施 行、计数、父筛选与选中绑定当前 URL 查询;单删批删在请求前保存目标,旧完成不刷新新上下文。
        • 审查 纠偏列表隔离的评审缺口:筛选提交固定原查询和租户,直接复核 URL 过渡窗口,拒绝过期视图;合并单批删确认与结果反馈,纯语言变化不换业务目标。
        • 实施 筛选提交记录原 URL 租户代次,确认前及旧结果收尾直接读地址栏;A→B→A 不再接纳旧父条件,过期可见行不能取得新删除资格。单删批删共用确认与结果通道。
        • 测试 A→B→A 回归红灯证据保留——证明测试能抓住旧父条件复活。
        • 审查 02 号票十五项验收统一 done;竞态探针证据格式规范化。
      • ✅ 详情旧请求不再回填新页面,编辑提交固定原目标 〔es-center-server-web-app〕
        • 实施 六态详情由共用读取逻辑判读,加载标识变化即撤销旧请求;编辑固定租户、组织与字段快照,校验后复核当前地址。
        • 测试 详情公开 hook 与路由探针最初 26 例,评审补齐后为 28 例;历史失败资产与修复后输出分别保留。
        • 审查 纠偏详情隔离的评审缺口:422 原文保留,认证只交统一会话通道一次,过期读取不回填;租户删除时间即时派生,不再写进表单。
        • 实施 详情读取接回保留 422 原文的 API 通道,当前技术失败只通知一次;认证交统一会话通道,删除时间移出表单改为按当前详情和语言派生。
        • 测试 03 号票回写 done(探针 28 例,含服务端 502 恢复后的真实 UI 验收)。
      • ✅ 管理员新增固定提交快照,旧校验不影响新租户草稿 〔es-center-server-web-app〕
        • 实施 异步校验前先冻结选定租户与表单值:租户一变就重挂表单,迟到的校验清不掉下一租户的草稿错误;导航指向其它页面即推进提交代次。
        • 实施 Reset 与离页使旧新增意图失效,活跃提交期间锁 Reset;导航 pending(正在加载下一路由)后即使取消回到新增页,旧提交代次也不复活。同页语言与 query 导航保持目标。
        • 设计 STANDARDS.md 规定 localhost 可达性用浏览器 MCP 核实——报告缺浏览器工具之前,先检查已配置的连接。
        • 测试 04 号票回写 done(真实 UI 含慢网络重复提交与原目标通知探针)。
    • 9-24: 身份前缀与设备号冲突
      • ✅ 租户编号、邮箱、手机号、第三方账号、用户名五类身份统一前缀配对 〔es-center-server-services〕
        • 实施 五类身份的长度与业务值/前缀配对落进共享核心层,租户 trigger 只消费服务端前缀、保留继承路由;独立 Java 诊断和切换手册交付。
        • 测试 隔离 PostgreSQL 核对 HTTP、Service、批量与直接 Mapper 四条路径。
        • 实施 实体 upsert(存在即更新、不存在即插入)的 INSERT/UPDATE 返回语义修正。
        • 测试 真实 PostgreSQL 测试覆盖。
        • 设计 五类身份明确为租户编号、邮箱、手机号、第三方账号、用户名;服务端统一归一化与前缀,客户端传来的前缀覆盖重算。切换手册指出 ddl_history 不自动重放旧文件,旧制品阻断与恢复需现场核实。
        • 设计 openspec 目录与本地 AI 过程残留退役:ADR-0094 裁决三目录退役与引用策略,历史提及不追改。
        • 实施 租户编号前缀的实施票回写 done。
      • ✅ 邮箱写入、登录与注销保持同一身份 〔es-center-server-services〕
        • 实施 邮箱的普通、实体及批量写入与查重、列表、登录定位统一到同一配对;HTTP 查重与多邮箱注销范围修正。SQL 层保留可表示的 Unicode 字符、拒绝登录会改写的邮箱值;查重用数据库条件直接排除当前绑定。
        • 审查 纠偏邮箱注册与注销的评审缺口:注册查重和绑定必须使用登录可定位的同一值,冲突判断归 Service。
        • 实施 注册查重、用户记录和邮箱绑定改用同一登录可定位值;HTTP 绑定前按合同清首尾空白,保存冲突改由 Service 拒绝。
        • 实施 注销改为单条 SQL,消除读后新增的遗漏窗口;HTTP 值先替换不可表示字符,再拒绝登录 trim 会改写的输入。
        • 测试 真实 PostgreSQL 用 U+2003 反例证明可表示 Unicode 保留;NUL 只作下划线窄替换。
        • 实施 邮箱前缀生命周期的实施票回写 done。
      • ✅ 手机号写入、登录与查询保持同一身份 〔es-center-server-services〕
        • 实施 手机号的写入、查重、查询与合法更新统一业务值与三位前缀,trigger 只消费 Java 前缀;登录先修复不可表示字符、再执行既有 trim 保持定位,冲突拒绝归入 Service。
        • 实施 手机号前缀生命周期的实施票回写 done。
      • ✅ 第三方账号写入与登录限流统一存储身份 〔es-center-server-services〕
        • 实施 第三方账号的普通与内部写入、精确查询、绑定与登录统一账号值与前缀配对:继承分区 INSERT 由 Java 前缀路由、拒绝 NULL 前缀;孤儿建表块与幽灵 trigger 尾注退役。登录限流在访问缓存前先归一化账号,同一存储身份共用限流桶。
      • ✅ 用户名前缀贯穿全部活动投影与授权字段 〔es-center-server-services〕
        • 实施 用户名统一协议覆盖 13 张活动分区投影及读取、绑定、批量和授权字段;13 个路由 trigger 消费 Java 前缀。
        • 审查 纠偏用户名评审缺口:超长租户名仍保持分区名唯一,登录限流与分享守卫先归一化别名。
        • 实施 修正超长租户分区命名,登录限流与两个分享入口先归一化 username;分享投影写入存储用户名。
        • 测试 独立 Java 诊断、切换手册与 3 个定向测试类保留,代码完成与目标环境切换分开。
        • 实施 用户名前缀族的实施票回写 done。
      • ✅ 三条设备线共用设备号全局唯一守卫 〔es-center-server-services〕
        • 实施 device-common 新增带显式租户与库存策略输入的守卫:设备、服务器与盒子控制器接入新鲜跨租户列表核对;逐项导入流程与 JMS 合同保留。
    • 9-24: 组织组件与归属信息
      • ✅ 组织、租户、设备类型树选择器共用行为 〔es-center-server-web-app〕
        • 实施 组织、租户、设备类型三类选择器共享先序查找、投影过滤与递归行渲染,树行为一致;触控行按管理路径解析图标。
        • 重构 设备类型选择器遗留的 adapter 注释标记清除,文件回归单一职责。
        • 实施 05 号票回写 done。
      • ✅ 四个映射页 Excel 采用业务表头 〔es-center-server-web-app〕
        • 实施 模板与导出接受可选列名 key 换算、默认派生保持:接入管理员组织与三种采集型号页面。
        • 测试 新增真实 workbook 合同测试,四页浏览器导出证据记录在案。
        • 测试 Excel 导出测试复用真实工作簿的解析入口。
        • 实施 06 号票回写 done。
      • ✅ 租户归属信息的页面与导出值对齐 〔es-center-server-web-app〕
        • 实施 编辑、查看页的租户资料与从属用户收进只读路由组件、放在组织操作区之后;列表两种模式统一七列顺序与导出值,成员数量改用单条翻译文案。
        • 测试 07 号票先记录环境无真实多成员的缺口,再用受控响应检查稀有输入;每份样本标明替换范围。获授权真实绑定六名用户后,七项归属与真实 workbook(工作簿)逐项一致。422 与精确 count 为 0 仍是独立后端现象,不绕过。
        • 实施 07 号票回写 done。
      • ✅ 管理员新增与编辑共用字段组 〔es-center-server-web-app〕
        • 重构 父组织、编号、名称控件抽成路由族共享组件:新增与编辑的顺序、限制与翻译字段错误一致。
        • 实施 08 号票回写 done。
      • ✅ 组织列表切语言保留原菜单与确认节点 〔es-center-server-web-app〕
        • 实施 两种组织列表的列与操作提取成稳定命名的 renderer,打开中的菜单保持同一节点;六个排序表头复用同一套命名壳件;业务租户列表的勾选标签在呈现点翻译。
        • 测试 09 号票验收:先复现路由诊断修复前的新用例失败、修复后全过;验收记录保存。
        • 测试 组织语言的路由诊断修复后为 13/13,原失败探针与真实浏览器观察分开保存。
    • 9-24(晚间): 管理读取与列表语言
      • ✅ 设备号冲突合同明确发布条件,管理读取 12–15 票按范围推进 〔es-center-server-services〕
        • 设计 设备号冲突合同覆盖三类 HTTP 资源族、共享错误字段与 Web/App 即时措辞,生产清理及前端推行是发布前置。
        • 测试 2,577 项测试、1 组 Janus 记录比对的实际命令保存。
        • 审查 09 号票按这些证据与发布边界记录完成,不把未验证前端回退视为可发布。
        • 设计 AGENTS.md 给三条设备线及其共享冲突响应加一跳直达触发;未验证的前端回退会阻止发布。
        • 设计 12–15 票分别覆盖检索、详情/直读树、缓存树与 Janus 转发,最后一项留到次日实施。
        • 实施 当前服务器绑定改为批量解析:按关系创建时间、修改时间和 ID 选最后有效绑定;管理分页、个人空间与 retail 复用每批 200 个原值设备号的稳定缓存查询——逐行绑定读取消除,普通 list 兼容行为保留。
        • 实施 按资源 ID 保留当前服务器绑定:设备端按设备号读当前有效绑定,历史详情按资源 ID 保住自身身份——同租户旧投影与同号新投影并存时,旧资源借不到新资源的服务器。
        • 重构 管理员组织检索读取统一到 BusinessManagementAccess(管理员准入共用组件):count/list/page 的原认证资格、配置准入、请求组装与作用域集中集中;新增四个模块用例覆盖拒绝、分派与恢复。
        • 实施 12 号票面回写、统一。
        • 实施 组织详情与直读树改走管理读取准入:单目标详情资格与租户作用域集中到共享目标准入,重复资格断言上移到模块接缝;成功与失败的作用域恢复都有覆盖。
        • 测试 详情读取资格的证据缺口关闭:单目标读取接缝覆盖无原租户的已认证管理员;八项票面验收勾选,定向、全量与 Janus 结果记录在案。
        • 重构 缓存树读取改走管理访问准入:原认证资格、目标配置准入和请求范围组装集中。
        • 测试 真实 HTTP、PostgreSQL、JetCache 回归扩充,覆盖空结果到期、键隔离、失败重载与源投影不变。
        • 实施 14 号票面回写、统一。
      • ✅ 基础、字典、翻译和值集列表切语言保留弹层 〔es-center-server-web-app〕
        • 实施 五个基础列表切语言保住弹层:列定义绑定当前翻译函数,Columns 与行 Actions 给稳定 renderer;已打开控件保留节点与目标。portraitUrl 映射成 Avatar 呈现,同时保留 Excel Portrait url 表头与原始 URL 单元格。
        • 审查 10 号票面与验收证据回写、统一。
        • 测试 员工语言的真实浏览器验证记录在案:测试环境落了授权员工/用户/关联 fixture(固定测试数据),供后续复用稳定 ID;票史记录此前空列表验证限制已解除。
        • 实施 字典与翻译五页切语言弹层连续:Columns 与 Actions 改用页内稳定 renderer,语言更新时已打开弹层与确认目标保持挂载。
        • 测试 新增 33 条真实路由集成测试。
        • 测试 URL 不变时,五页 Columns(表格列控件)、Actions(行操作控件)和单删确认作原位语言测试。
        • 重构 五页稳定 renderer 为删除资格命名,保持原权限与租户条件的短路规则。
        • 审查 纠偏双轴审查指出的语言事件与常量命名问题。
        • 测试 字典与翻译列表的验收结论与仍待补的真实行级测试清单记录在案。
        • 测试 五页资格失效与真实行级验收补齐:租户资格失效、离页与 AlertDialog 背景事件覆盖;真实确认均以 Esc 退出、未发送删除请求。
        • 设计 字典与翻译语言票统一、回写。
        • 实施 值集四页语言同步、弹层保留:列定义订阅当前翻译函数,就近稳定 Columns 与 Actions 渲染入口;勾选框无障碍名称放在呈现点翻译。
        • 测试 新增四页参数化路由测试。
        • 测试 四页 Excel 期望表头写进独立样例,固定逐页导出列头。
        • 审查 按审查意见移除嵌套三元写法,保持各页期望独立。
        • 测试 值集四页语言同步工单统一:13 项验收与交付状态闭合;真实登录浏览器、四页导出与全量验证证据记录在案。
        • 重构 已交付列表的语言写法与读屏测试收敛:09–12 票 16 页逐页核对——11 页统一语言依赖顺序,10 页命名原删除资格,管理员与租户特例保留。
        • 审查 已交付列表写法收敛工单统一:01 票关闭,16 页前后对照、工作区维护者改动边界与双轴审查结论记录在案。
    • 9-25(凌晨): Janus 转发与目录语言
      • ✅ Janus 四入口共用转发规则,个人空间分享共用目标选择 〔es-center-server-services〕
        • 重构 四个 Janus 转发入口的规则合并:IoT 与 WebRTC 的 Normal/Admin 转发体、共同依赖与 Admin 凭证集中到现有基类。
        • 测试 一份规则加接线测试替换四份镜像测试,ADR-0036 同步勘误。
        • 实施 15 号票面回写、统一。
        • 实施 个人空间分享目标可解析:main 与 retail 两个分享入口共用目标选择规则——规范用户名 admin 在缓存访问前显式拒绝,按 Tenant 创建时间选有效个人空间。
        • 测试 新增 3 个测试类 12 个用例。
        • 测试 个人空间分享复审缺口关闭:两个分享入口保留验证用户不存在的原有错误;用真实 SQL fixture(固定测试数据)证明 admin 无成员时仍可读取三个系统租户。
        • 测试 分享 fixture 里 admin 的别名改为常量命名:常量承载 admin 邮箱、手机号与规范用户名,同一入口用例里的重复字面量不再漂移。
        • 测试 个人空间查询接进认证壳测试:手工 Spring 测试上下文的 Controller 依赖更新,不再被该 Controller 注入的租户服务 mock 移除。
        • 实施 16 号票面回写、统一。
      • ✅ 设备目录五页切语言保留弹层,并固定同型写法 〔es-center-server-web-app〕
        • 审查 设备语言票的同型写法验收固定:13、14 票挂上已交付 09–12 页的写法参照——语言依赖顺序、同型删除资格与当前语言读屏名称断言写明,实施按票核对、不需要口头提醒。
        • 重构 设备与固件 12 页勾选框读屏名称接入当前语言:表格行选择 Checkbox 原来固定的英文 aria-label 换成 t() 当前语言调用,与已交付列表写法收敛票里维护者的改法同型。
        • 实施 设备目录五页切语言保住弹层:Columns 与行 Actions renderer 稳定,已打开菜单与删除确认原位更新;URL 日期、链接、删除规则与型号 Excel 业务表头保留;新增 43 条路由语言用例。
        • 测试 目录语言测试对齐仓库约定:TooltipProvider 经 AutoImport 消费;真实浏览器 Esc 检查与 RTL 取消检查的证据口径分开。
        • 测试 设备目录语言票统一:五页 16 项验收经实施与双轴复审后回写 done;实现链接与最终浏览器、工作簿、自动化测试证据齐备。
    • 9-25(上午): 运行列表与设备详情
      • ✅ 设备运行五页保留语言切换中的菜单与确认,验收区分真实和受控数据 〔es-center-server-web-app〕
        • 实施 设备运行五页切语言保住菜单与确认:列定义依赖当前翻译函数,Columns 与行级 Actions 用稳定 renderer;租户前缀删除保护、群组服务器权限规则、设备升级入口与页面状态保留。
        • 测试 语言切换后的升级目标核对:采集设备与采集服务器列表分别触发行固件入口与批量升级确认,发布 topic 与载荷仍指向原设备编号。
        • 测试 该升级验证用无网络 MQTT 客户端观察公开 publish 调用,未验证真实 broker 报文;真实升级入口的资格限制单独保留。
        • 测试 设备运行列表的真实浏览器验收记录:逐页记录实际行、弹层原节点、目标与分页请求计数;采集箱空列表 Columns 验收与自动审批拒绝的边界也记录在案。
        • 测试 采集箱可用空间核查记录在案:确认没有现成可操作的采集箱行;测试记录提交被自动审批拒绝、等用户明确批准的边界保留——空列表验收不扩写成行级通过。
        • 测试 采集箱受控响应的浏览器证据补上:真实页面只替换该页分页响应,验证 Actions、单删和批删确认随语言保持原节点;受控响应与真实后端空列表明确区分。
        • 测试 获批采集箱测试行的真实验收记录:用户明确批准后经现有 Add UI 保存唯一测试行,用列表与独立新标签的真实分页响应核对持久记录 ID。
        • 测试 14 号票 17 项验收与 done 终态对应到已提交代码、测试、浏览器证据与全批索引;采集箱行级验证边界与真实升级资格限制写明。
      • ✅ 采集设备详情改为单条 JOIN,静态缓存恢复 〔es-center-server-services〕
        • 重构 采集设备直查详情改成单条 JOIN(数据库表关联查询)装配:两个直查详情入口的双查询拼装消除;父表缺席与七个同名字段的 null 覆盖按父表行是否存在选择,绑定继续按资源 ID 定位。
        • 实施 采集设备详情静态缓存恢复、旧读取 Function 退役:资源与租户双键、10 秒静态投影缓存加作用域保护;唯一的旧 Function 删除,新增 5 个真实代理与 HTTP 接线用例。
        • 实施 18 号票面回写统一,外部集成缺口记录在案。
      • ✅ 分页四键元数据集中维护,19–20 票接入复杂与基础入口 〔es-center-server-services〕
        • 实施 复杂分页入口接上共享元数据工具:gt-common-data 新增独立的四键 PageMetadata,接入 FileIndex、TalkGroup 与 Dashboard 分页入口;后续 106 处构造点盘点后按 20–23 票分配迁移范围。
        • 设计 四键 PageMetadata(页码、页大小、总条数、总页数)直接消费 IPage 的 long 元数据并返回不可变结果;extraData(响应附加数据)与 records(本页记录)保持原装配。
        • 实施 19 号票面回写、统一。
        • 重构 设备与基础资料的分页元数据迁移:37 个旧构造点统一、39 个分页入口覆盖、两个私有转发壳删除;各入口的 records 富化、响应形状和请求作用域保留。
        • 测试 空页、状态与 Long 类型回归保留;后续 69 处迁移清单与最初 106 处构造点对照。
        • 实施 20 号票面回写、统一。
    • 9-25(午后): 分页元数据与对讲右栏
      • ✅ 21–24 票完成分页元数据迁移,全仓手写四键归零 〔es-center-server-services〕
        • 重构 用户中心与权限的分页元数据迁移:普通用户中心、权限和 v1 管理员组织的 25 个 IPage 响应接上共享四键装配——本批手写四键归零。
        • 实施 21 号票面回写、统一。
        • 重构 消息与配置的分页元数据迁移:14 个消息、9 个配置 Controller 接线,四键与 long 类型合同集中维护。
        • 测试 新增 2 条 HTTP 行为回归。
        • 实施 22 号票面回写、统一。
        • 重构 订单、历史和快照分页读取原 IPage 四键,21 个 Controller 接线由订单 3 处、历史 10 处、快照 8 处构成;原记录、请求编排和分页总数保持,本批无旧 helper 待删。
        • 测试 新增三个 HTTP 契约用例;定向契约 3 项与公共分页 5 项通过。
        • 实施 23 号票面回写、统一。
        • 设计 分页红线示例改用 PageMetadata.from:分页规范示例与工具全仓接线后的现行形态一致——新代码不会再按旧示例手写四键装配。
        • 设计 24 号票回写与全仓核对记录:24 票的最终验收核对全仓 112 处/106 文件 PageMetadata.from 核对,生成器回归先失败后通过的证据与业务仓全量证据齐备。
      • ✅ 对讲房间与工作台桌面右栏同宽,模拟验证与设备联调分开 〔es-center-server-web-app〕
        • 设计 Talkgroup 双页右栏宽度的设计共识记录:常规桌面下设备身份与两个操作同排、卡片不因双操作增高;两页同宽只适用桌面双栏 384–416px 目标带;测试环境用可回滚的临时模拟布局验证替代真实设备联调。
        • 测试 右栏加宽的浏览器模拟布局核查:已登录真实页面用 DevTools 测 1280px 档——右栏 416px 时身份信息与两操作同排,各档无横向溢出;模拟样式在脚本 finally 里移除恢复。
        • 测试 模拟 416px 使行高从 122.4px 降为 82.4px;原规则、384/400px 仍换行,1280px 为同排上限验证档。临时样式清除,不伪造 MQTT/Janus 消息或发送设备命令。
        • 设计 talkgroup-side-rail-width 右栏同宽规格与实施票发布:桌面双栏右栏 384–416px、1280px 达上限,不改 HTTP/MQTT/Janus/WebRTC 合同;模拟布局与真实设备联调的证据分开记录。
        • 实施 run-item.sh 接进 talkgroup-side-rail-width 票目录。
        • 实施 房间与工作台右栏宽度统一:Talkgroup 父路由集中定义 384–416px 响应宽度,供房间、加载骨架与设备侧栏使用;主区不足 52rem 时拆分筛选栏,加宽后不遮挡、不裁字。
        • 测试 房间右栏断言常量复用:两处相同的房间网格类名断言集中成一个命名常量。
        • 设计 Talkgroup 右栏宽度工单收尾、回写。

其它工作

  • 目标: 记录日常杂项工作、协作沟通等事务
  • 进度: 🔘 未开始 -> 🟡 进行中 -> ⚠️ 部分完成 -> ✅ 已完成 -> 📌 已自测
    • 21 日
      • ✅ 协作 git → svn 源代码同步
      • ✅ 实施 将最新版本部署到 192.168.1.53/zxs-cs/zxs-ca 服务器: 编译最新程序 → 制作 Docker 镜像 → 制作升级程序 → 上传服务器 → 升级部署 〔es-center-server-build, es-center-server-install-app〕
    • 22 日
      • ✅ 实施 将最新版本部署到 192.168.1.53/zxs-cs/zxs-ca 服务器: 编译最新程序 → 制作 Docker 镜像 → 制作升级程序 → 上传服务器 → 升级部署 〔es-center-server-build, es-center-server-install-app〕
    • 23 日
      • ✅ 实施 将最新版本部署到 192.168.1.53/zxs-cs/zxs-ca/zxs-test 服务器: 编译最新程序 → 制作 Docker 镜像 → 制作升级程序 → 上传服务器 → 升级部署 〔es-center-server-build, es-center-server-install-app〕
Last updated on