文件
hyb-oa/.trellis/tasks/08-11-internal-oa-usage-census-and-simplification/implement.md
T

5.3 KiB
原始文件 Blame 文件历史

内部 OA 使用度普查与减法路线图:执行计划

0. 启动门禁

  • 用户已审查并明确批准本版 prd.md、design.md 和 implement.md。
  • 批准后运行 task.py start;在此之前未查询生产。
  • 重新确认工作区只有当前 task 规划改动,不夹带产品、部署或历史任务变更。
  • 读取 project-governance.md、当前 backend spec、生产运维事实源和 07-30 组合盘点。

1. 建立模块 allowlist

  • research/module-catalog.md 逐项列出表、时间字段、actor/审计信号、导航、feature flag 和历史建议。
  • 仅纳入用户可见业务、低频必要后台和明确退役候选;session/challenge、迁移、投递 item 等并入所属模块或系统活动。
  • 对照 schema.prisma 验证每个表/字段真实存在,对照 workspace/flag registry 验证模块键和开关键。
  • 固定 smoke-like 规则和 system action allowlist;未知来源进入 unknown。

2. 实现 task-scoped 只读查询合同

  • 在当前 task 下新增审阅用查询器和 runner,未修改 client/src、server/src、部署配置或 migration。
  • 查询显式 BEGIN TRANSACTION READ ONLY,设置 statement/lock timeout 并断言 transaction_read_only=on。
  • 所有表和列来自静态 allowlist;无动态 schema 扫描、DML/DDL、锁行、临时表和存储过程。
  • 只返回模块级聚合字段;敏感原始字段均不出事务。
  • 输出包含 queryStatus,合同错误统一 QUERY_FAILED,不会补成 0。

3. 本地验证

  • 合同测试静态拒绝写 SQL/锁行,并验证固定 module/字段白名单。
  • 本地真实 schema 的 read-only 执行验证 20 个模块、30 个输出字段、空表与时间聚合。
  • synthetic fixture 覆盖 smoke、真人、system 和 unknown 四分桶。
  • 模块数/字段合同错误 fail-closed;不存在“缺失当零”的结果路径。
  • 敏感字段白名单与 check-sensitive-content 通过。

4. 生产只读执行(需启动批准)

  • PRE 复用 identity bootstrap,确认唯一 trialrun;运行 SHA 精确等于 origin/main、产品差异 0、migration pending=none、rollback window OPEN/0。
  • workspace setting 与有效 feature flag 由生产运行代码在同一 read-only 事务内计算。
  • 查询器通过 stdin 送入现有 server 容器;未复制/落盘、未重建镜像、未部署。
  • 唯一有效执行严格一次、零 retry。一次 stdin 入口拦截发生在 run() 前,证明普查事务执行数为 0 后才修正;最终 effectiveQueryExecutions=1。
  • 脱敏快照保存为 research/production-usage-snapshot.json;不保存个人/业务明细。
  • POST 证据由同一事务的 transactionReadOnly=true、source build match 和全模块 queryStatus=PASS 构成;本任务无并发归因。

5. 分析与路线图

  • research/portfolio-decision-matrix.md 合并生产快照与 07-30 历史建议。
  • 先区分真人/smoke/system/unknown,再判断真实人工活跃度;未按总行数或审计总量排序。
  • 输出四类矩阵,并逐项说明理由和触发条件。
  • 结论收敛为“整体采用度极低”;A/B 采用模式明确前冻结产品功能开发,财务闭环不再被预设为下一项开发。
  • 对仓库外业务事实只列负责人确认项,不替业务方回答。
  • 显隐、退役或产品优化均为独立后续 task 候选,本任务未实施。

6. 只读 review

  • Codex inline 模式由主会话执行只读 reviewer;review 阶段未修改产品代码或生产状态,结论记录在 research/read-only-review.md。
  • reviewer 复核生产身份、只读事务、严格一次、输出白名单和失败处理。
  • reviewer 抽查真人、smoke、system 和 unknown 各一项归因。
  • reviewer 复核零行/flag off/自动审计没有被机械用于隐藏或退役。
  • reviewer 复核原 30 天路线图没有扩建零使用模块;用户复核后进一步收紧为 A/B 定位决策门。

7. 验证与收口

  • python3 ./.trellis/scripts/task.py validate 08-11-internal-oa-usage-census-and-simplification
  • node scripts/qa/check-process-contract.mjs --baseline --json
  • node scripts/qa/audit-docs.mjs --check-registry(0 error;仓库既有 22 个未登记 docs warning)
  • node scripts/qa/check-trellis-governance.mjs
  • 项目敏感内容扫描 findingCount=0,git diff --check 与 task 文件尾随空白检查通过。
  • 用户已接受分类矩阵;已将“整体采用度极低”、A/B 采用模式决策门和共同导航减法方向更新到现有事实源与治理 spec,未另建平行路线图文档或导航 task。
  • 使用中文 commit message 并引用 08-11-internal-oa-usage-census-and-simplification,归档 task;不自动推送。

风险点与停止条件

  • 生产身份或运行 SHA 不清楚:停止。
  • 查询不是只读、SQL 合同超出 allowlist:停止并回滚事务。
  • 输出包含敏感明细:销毁现场输出,修正合同并重新审查;不得降低扫描器。
  • 第一次执行状态不确定:不连续重跑。
  • 发现真实认证、权限、财务或数据缺陷:只记录并停下,另建相应任务。
  • 分类需要业务负责人确认:标记 保持冻结/待确认,不代替决定。