OAOPS1 记录自动巡检与资产复核

这个提交包含在:
2026-05-23 12:10:03 +08:00
父节点 390b736879
当前提交 39c8f6b5c4
共修改 2 个文件,包含 3 行新增和 3 行删除
@@ -1,7 +1,7 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
OAOPS1-0,建立小团队全员真实使用稳定化合同,"以公网 OA 作为准生产真实使用环境,固定 7 天稳定化窗口、真实业务数据边界、阻断即修策略和冻结项。","Issue CSV 通过校验;路线明确企微 HR/考勤冻结,OA 主办报销、采购、合同、项目、付款和审计。","受影响流程:管理员确认 7 天真实使用窗口、真实数据进入 OA、P2 冻结;验证步骤:执行 validate_issues_csv.py 本文件和 check-process-contract general 门禁。","manual",DONE,DONE,DONE,"issues/2026-05-22_20-09-22-oa-real-use-stabilization-v1.csv","[]","不写企业微信;不启用 ERP、真实支付直连、银行流水导入、图片 OCR 或复杂 BPM。"
OAOPS1-1,新增 OA 真实使用每日巡检脚本,"新增 QA-only 脚本聚合公网 /ready、live smoke、feature flag、报销/PDF OCR、审批、采购、合同/项目、付款批次、移动/企微入口和隐私扫描。","脚本输出 artifacts/qa-flow/oa-real-use-daily-<timestamp>/summary.json;默认只读,不创建真实业务数据。","受影响流程:每日巡检管理员先看报告再处理人工业务问题;验证步骤:执行 bash -n scripts/qa/run-oa-real-use-daily.sh;验证步骤:必要时以 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com 只读运行。","bash,node,playwright",DONE,DONE,DONE,"scripts/qa/run-oa-real-use-daily.sh","[""OAOPS1-0""]","脚本不得设置企业微信写入开关;不得自动上传真实票据、合同附件或银行回单。"
OAOPS1-2,公网正式状态与财务开关每日核验,"每日核验公网 ready、live smoke readiness、payment_batch_v1=force_on、erp_sync=force_off,防止正式付款闭环或冻结项漂移。","巡检报告能看到 ready、live-smoke-env、feature flags 和 drift finding;payment_batch_v1 预期 force_on,erp_sync 预期 force_off。","受影响流程:管理员每日检查正式开关;验证步骤:执行 run-oa-real-use-daily.sh 并确认 feature-flags 子报告。","node,curl",TODO,TODO,TODO,"scripts/qa/run-oa-real-use-daily.sh","[""OAOPS1-1""]","若 payment_batch_v1 意外关闭或 erp_sync 意外开启,记 blocking finding 并当天建修复合同。"
OAOPS1-2,公网正式状态与财务开关每日核验,"每日核验公网 ready、live smoke readiness、payment_batch_v1=force_on、erp_sync=force_off,防止正式付款闭环或冻结项漂移。","巡检报告能看到 ready、live-smoke-env、feature flags 和 drift finding;payment_batch_v1 预期 force_on,erp_sync 预期 force_off。","受影响流程:管理员每日检查正式开关;验证步骤:执行 run-oa-real-use-daily.sh 并确认 feature-flags 子报告。","node,curl",DONE,DONE,DONE,"scripts/qa/run-oa-real-use-daily.sh","[""OAOPS1-1""]","2026-05-23 巡检报告 artifacts/qa-flow/oa-real-use-daily-20260523-120538/summary.json 为 PASS_WITH_FINDINGS:public-ready/live-smoke-env 通过;远端只读核验 payment_batch_v1=force_on、erp_sync=force_off;finding 为本机缺 Playwright 浏览器导致移动/企微 E2E 未跑通、管理员/财务 live smoke 登录 403、attendance_v1 当前 force_on observation。未写业务数据。"
OAOPS1-3,报销 PDF OCR 与付款闭环真实使用门禁,"员工真实提交报销和 PDF 发票,审批后由出纳创建付款批次、上传银行回单并标记已付款;实际付款仍在线下银行渠道完成。","管理员手册和试运行报告写清真实数据保留、PDF-only OCR、银行回单附件、AP 导出和代账交接口径。","受影响流程:员工提交报销 -> 审批人处理 -> 出纳创建付款批次 -> 上传回单 -> 标记已付款 -> AP/报销/票据导出;验证步骤:每日巡检记录可解释状态。","manual,playwright",TODO,TODO,TODO,"docs/管理员手册.md;docs/trialrun/人工试运行报告.md","[""OAOPS1-2""]","真实票据和回单不进入仓库、聊天或自动截图报告;OCR 仍 PDF-only。"
OAOPS1-4,采购费用与项目关联真实使用门禁,"首批真实使用覆盖采购/费用申请、审批、项目关联和必要合同关联,继续使用 OA 主办审批和脱敏企微通知。","员工快速上手和管理员手册说明采购/费用在 OA 内提交审批,项目相关事项应尽量关联项目或合同。","受影响流程:员工提交采购/费用 -> 审批通过或退回 -> 查看项目摘要和合同关联;验证步骤:人工提交一条真实采购/费用或用巡检读取列表,确认审计记录可追溯。","manual,playwright",TODO,TODO,TODO,"docs/管理员手册.md;docs/员工快速上手.md","[""OAOPS1-2""]","不做预算占用、招采、供应商生命周期或 ERP 入账。"
OAOPS1-5,合同台账与合同归档真实使用门禁,"将合同台账、合同归档位置、合同与项目/采购/付款关联纳入 OAOPS1;涉密合同正文、敏感报价和成本细节不上传公网 OA。","事实源明确合同属于 OA 主办域;真实使用允许录入合同摘要、编号、负责人、项目、金额、线下归档位置和非涉密附件。","受影响流程:负责人建立合同台账 -> 关联项目/采购 -> 记录线下归档位置 -> 非涉密附件下载写审计;验证步骤:管理员抽查一条合同台账和权限边界。","manual",TODO,TODO,TODO,"docs/管理员手册.md;docs/员工快速上手.md","[""OAOPS1-4""]","合同正文是否上传按敏感级别判断;涉密不上传,只登记线下归档位置。"
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
2 OAOPS1-0 建立小团队全员真实使用稳定化合同 以公网 OA 作为准生产真实使用环境,固定 7 天稳定化窗口、真实业务数据边界、阻断即修策略和冻结项。 Issue CSV 通过校验;路线明确企微 HR/考勤冻结,OA 主办报销、采购、合同、项目、付款和审计。 受影响流程:管理员确认 7 天真实使用窗口、真实数据进入 OA、P2 冻结;验证步骤:执行 validate_issues_csv.py 本文件和 check-process-contract general 门禁。 manual DONE DONE DONE issues/2026-05-22_20-09-22-oa-real-use-stabilization-v1.csv [] 不写企业微信;不启用 ERP、真实支付直连、银行流水导入、图片 OCR 或复杂 BPM。
3 OAOPS1-1 新增 OA 真实使用每日巡检脚本 新增 QA-only 脚本聚合公网 /ready、live smoke、feature flag、报销/PDF OCR、审批、采购、合同/项目、付款批次、移动/企微入口和隐私扫描。 脚本输出 artifacts/qa-flow/oa-real-use-daily-<timestamp>/summary.json;默认只读,不创建真实业务数据。 受影响流程:每日巡检管理员先看报告再处理人工业务问题;验证步骤:执行 bash -n scripts/qa/run-oa-real-use-daily.sh;验证步骤:必要时以 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com 只读运行。 bash,node,playwright DONE DONE DONE scripts/qa/run-oa-real-use-daily.sh ["OAOPS1-0"] 脚本不得设置企业微信写入开关;不得自动上传真实票据、合同附件或银行回单。
4 OAOPS1-2 公网正式状态与财务开关每日核验 每日核验公网 ready、live smoke readiness、payment_batch_v1=force_on、erp_sync=force_off,防止正式付款闭环或冻结项漂移。 巡检报告能看到 ready、live-smoke-env、feature flags 和 drift finding;payment_batch_v1 预期 force_on,erp_sync 预期 force_off。 受影响流程:管理员每日检查正式开关;验证步骤:执行 run-oa-real-use-daily.sh 并确认 feature-flags 子报告。 node,curl TODO DONE TODO DONE TODO DONE scripts/qa/run-oa-real-use-daily.sh ["OAOPS1-1"] 若 payment_batch_v1 意外关闭或 erp_sync 意外开启,记 blocking finding 并当天建修复合同。 2026-05-23 巡检报告 artifacts/qa-flow/oa-real-use-daily-20260523-120538/summary.json 为 PASS_WITH_FINDINGS:public-ready/live-smoke-env 通过;远端只读核验 payment_batch_v1=force_on、erp_sync=force_off;finding 为本机缺 Playwright 浏览器导致移动/企微 E2E 未跑通、管理员/财务 live smoke 登录 403、attendance_v1 当前 force_on observation。未写业务数据。
5 OAOPS1-3 报销 PDF OCR 与付款闭环真实使用门禁 员工真实提交报销和 PDF 发票,审批后由出纳创建付款批次、上传银行回单并标记已付款;实际付款仍在线下银行渠道完成。 管理员手册和试运行报告写清真实数据保留、PDF-only OCR、银行回单附件、AP 导出和代账交接口径。 受影响流程:员工提交报销 -> 审批人处理 -> 出纳创建付款批次 -> 上传回单 -> 标记已付款 -> AP/报销/票据导出;验证步骤:每日巡检记录可解释状态。 manual,playwright TODO TODO TODO docs/管理员手册.md;docs/trialrun/人工试运行报告.md ["OAOPS1-2"] 真实票据和回单不进入仓库、聊天或自动截图报告;OCR 仍 PDF-only。
6 OAOPS1-4 采购费用与项目关联真实使用门禁 首批真实使用覆盖采购/费用申请、审批、项目关联和必要合同关联,继续使用 OA 主办审批和脱敏企微通知。 员工快速上手和管理员手册说明采购/费用在 OA 内提交审批,项目相关事项应尽量关联项目或合同。 受影响流程:员工提交采购/费用 -> 审批通过或退回 -> 查看项目摘要和合同关联;验证步骤:人工提交一条真实采购/费用或用巡检读取列表,确认审计记录可追溯。 manual,playwright TODO TODO TODO docs/管理员手册.md;docs/员工快速上手.md ["OAOPS1-2"] 不做预算占用、招采、供应商生命周期或 ERP 入账。
7 OAOPS1-5 合同台账与合同归档真实使用门禁 将合同台账、合同归档位置、合同与项目/采购/付款关联纳入 OAOPS1;涉密合同正文、敏感报价和成本细节不上传公网 OA。 事实源明确合同属于 OA 主办域;真实使用允许录入合同摘要、编号、负责人、项目、金额、线下归档位置和非涉密附件。 受影响流程:负责人建立合同台账 -> 关联项目/采购 -> 记录线下归档位置 -> 非涉密附件下载写审计;验证步骤:管理员抽查一条合同台账和权限边界。 manual TODO TODO TODO docs/管理员手册.md;docs/员工快速上手.md ["OAOPS1-4"] 合同正文是否上传按敏感级别判断;涉密不上传,只登记线下归档位置。
@@ -2,8 +2,8 @@ ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regr
ASSET1D-0,建立 ASSET1D 公网部署与试录合同,"承接 ASSET1 统一资产台账 V1,建立公网部署、迁移、试录、权限验收和历史索引二次确认合同。","Issue CSV 通过校验;范围固定为部署 ASSET1 到公网 OA、最小资产试录、EA-DOC 脱敏 dry-run;历史索引 live 写入必须二次确认。","受影响流程:执行合同 -> 部署准备 -> 资产台账试录;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-23_10-42-03-oa-asset-deploy-and-trial-v1.csv。","python3|manual",DONE,DONE,DONE,"issues/2026-05-23_10-42-03-oa-asset-deploy-and-trial-v1.csv","[]","不上传敏感原文、源码包、密码、token、Secret、完整配置或完整本地路径。"
ASSET1D-1,本地预检门禁,"部署前复核 ASSET1 合同、schema、资产路由、前端构建、文档门禁和最小回归。","本地门禁通过;若存在既有非阻断 warning,必须记录但不伪造成失败。","受影响流程:开发候选 -> 部署候选;验证步骤:校验 ASSET1 CSV;node scripts/qa/check-process-contract.mjs --baseline --json;cd server && npm run prisma:validate;cd server && node --check src/routes/assets.js;cd client && npm run typecheck && npm run build;node scripts/qa/audit-docs.mjs --check-registry;python3 /home/shunli/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hyb-oa-delivery;git diff --check;bash scripts/check-minimal.sh。","python3|node|npm|bash|git",DONE,DONE,DONE,"server|client|docs|scripts|issues/2026-05-22_21-18-33-oa-asset-governance-v1.csv","[""ASSET1D-0""]","本地门禁通过;audit-docs 仅保留既有 warning:unregistered docs files 24;未改业务代码。"
ASSET1D-2,SYNC_ENV=0 公网部署,"使用既有 trialrun 部署流程发布 ASSET1 到公网 OA,执行 Prisma migrate deploy 和部署脚本内置 smoke。","部署成功;不覆盖远端 .env;迁移状态通过;/ready、external deps smoke、runtime smoke 和公网 bundle 扫描通过或记录真实阻断。","受影响流程:本地 release candidate -> 公网 OA -> 数据库迁移 -> 运行时健康检查;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh。","bash|ssh|docker|node",DONE,DONE,DONE,"deploy/trialrun/deploy.sh|server/prisma/migrations|server/src/routes/assets.js|client/src/pages/AssetRegistryPage.tsx","[""ASSET1D-1""]","公网部署完成;SYNC_ENV=0 未同步本地 .env;迁移 20260522191833_asset_governance_v1 已应用;脚本内置 /ready、external deps smoke、runtime smoke、公网 bundle 扫描通过;LIVE_SMOKE_* 缺失按脚本跳过。"
ASSET1D-3,公网资产台账基础核验,"部署后验证公网资产页、编号族、筛选和固定资产扫码入口未回归。","/ready 正常;资产台账页面可访问;FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP 编号族配置已随 seed 生效;移动资产扫码入口不回归。","受影响流程:管理员进入资产台账 -> 查询筛选 -> 移动扫码入口;验证步骤:公网 /ready;必要时使用浏览器或现有 smoke 检查 /assets 和 /mobile/assets/scan;核对部署输出和页面加载。","curl|ssh|node|manual",DONE,DONE,DONE,"client/src/pages/AssetRegistryPage.tsx|client/src/pages/MobileAssetScanPage.tsx|server/src/scripts/seed-config.js","[""ASSET1D-2""]","公网 /ready 返回 ok;public bundle 扫描 scanned=57 focused=4 findings=0;远端只读核验资产编号族 FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP 均启用,number_length=6,reset_period=yearly;登录态 UI 试录仍在 ASSET1D-4。"
ASSET1D-3,公网资产台账基础核验,"部署后验证公网资产页、编号族、筛选和固定资产扫码入口未回归。","/ready 正常;资产台账页面可访问;FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP 编号族配置已随 seed 生效;移动资产扫码入口不回归。","受影响流程:管理员进入资产台账 -> 查询筛选 -> 移动扫码入口;验证步骤:公网 /ready;必要时使用浏览器或现有 smoke 检查 /assets 和 /mobile/assets/scan;核对部署输出和页面加载。","curl|ssh|node|manual",DONE,DONE,DONE,"client/src/pages/AssetRegistryPage.tsx|client/src/pages/MobileAssetScanPage.tsx|server/src/scripts/seed-config.js","[""ASSET1D-2""]","2026-05-23 复检:公网 /ready 返回 ok;public bundle 扫描 scanned=57 focused=4 findings=0;远端只读核验资产编号族 FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP 均启用,number_length=6,reset_period=yearly;当前资产卡 total=0,ASSET1D-4 UI 试录仍待人工完成。"
ASSET1D-4,最小资产 UI 试录,"管理员在公网 OA 通过 UI 手工创建 1 条 FA、1 条 EA-SYS、1 条 EA-REPO、1 条 EA-BKP,并检查查看、编辑、筛选。","四类资产均可创建和查看;EA-SYS/EA-REPO/EA-BKP 不保存 Secret、源码、完整配置或完整路径;FA 可进入既有领用、归还、盘点链路。","受影响流程:管理员新建资产 -> 填元数据 -> 保存 -> 列表筛选 -> 详情查看;验证步骤:管理员登录公网 OA 手工创建 FA/EA-SYS/EA-REPO/EA-BKP 各 1 条并记录编号前缀。","manual",TODO,TODO,TODO,"external|client/src/pages/AssetRegistryPage.tsx","[""ASSET1D-3""]","人工操作项;除非后续明确提供管理员凭据和字段值,否则不由脚本替代 UI 试录。"
ASSET1D-5,EA-DOC 历史索引脱敏 dry-run,"从本地公司保密索引读取最多 3 条脱敏元数据,生成 dry-run 报告,不写公网 OA。","dry-run 报告状态为 PASS_REDACTED_INDEX_DRY_RUN_READY;报告仅含 code、docType、hash、敏感级别和脱敏要求,不含原文、完整路径、Secret 或账号凭据。","受影响流程:历史资料索引 -> 脱敏预览 -> 人工判断是否允许写入;验证步骤:node scripts/qa/collect-asset-redacted-index.mjs --limit=3。","node",DONE,DONE,DONE,"scripts/qa/collect-asset-redacted-index.mjs|artifacts/qa-flow/asset-redacted-index-*","[""ASSET1D-1""]","dry-run 报告 artifacts/qa-flow/asset-redacted-index-20260523024935/summary.json;627 行中预览 3 行,均为 confidential;不含原文、完整路径、Secret 或账号凭据;未写 OA。"
ASSET1D-5,EA-DOC 历史索引脱敏 dry-run,"从本地公司保密索引读取最多 3 条脱敏元数据,生成 dry-run 报告,不写公网 OA。","dry-run 报告状态为 PASS_REDACTED_INDEX_DRY_RUN_READY;报告仅含 code、docType、hash、敏感级别和脱敏要求,不含原文、完整路径、Secret 或账号凭据。","受影响流程:历史资料索引 -> 脱敏预览 -> 人工判断是否允许写入;验证步骤:node scripts/qa/collect-asset-redacted-index.mjs --limit=3。","node",DONE,DONE,DONE,"scripts/qa/collect-asset-redacted-index.mjs|artifacts/qa-flow/asset-redacted-index-*","[""ASSET1D-1""]","最新 dry-run 报告 artifacts/qa-flow/asset-redacted-index-20260523040650/summary.json;627 行中预览 3 行,均为 confidential;不含原文、完整路径、Secret 或账号凭据;未写 OA。"
ASSET1D-6,EA-DOC 三条受控导入二次确认,"UI 试录和 dry-run 通过后,再向用户确认是否开启 ASSET_INDEX_IMPORT_WRITE=1 写入 3 条脱敏 EA-DOC。","未获得二次确认前不得写入;若用户批准,必须使用进程级 ASSET_INDEX_IMPORT_WRITE=1、管理员权限、必填主数据,并验证审计日志。","受影响流程:脱敏预览 -> 人工批准 -> 受控导入 -> 审计核验;验证步骤:未批准时记录 PAUSED_MANUAL_CONFIRMATION;批准后调用 POST /api/assets/import/redacted-doc-index 并核对 imported/skipped 和审计。","manual|node|curl",TODO,TODO,TODO,"server/src/routes/assets.js|external","[""ASSET1D-4"",""ASSET1D-5""]","当前计划不自动执行 live 导入;回滚路径为按导入批次删除未被业务引用的 EA-DOC 台账或改为 archived。"
ASSET1D-7,ASSET1D 收口与提交,"汇总本地门禁、部署结果、dry-run 报告、人工 UI 待办和二次确认状态,并用中文提交 Issue CSV 状态。","自动项完成并回填状态;人工项如未完成保持 TODO 或 PAUSED 说明;git commit 信息中文并引用 ASSET1D。","受影响流程:部署验收 -> 资产试录 -> 证据归档 -> 后续人工导入决策;验证步骤:git status;git diff --check;提交后 git status 干净。","git|manual",DONE,DONE,DONE,"issues/2026-05-23_10-42-03-oa-asset-deploy-and-trial-v1.csv","[""ASSET1D-2"",""ASSET1D-5""]","自动项已收口;ASSET1D-4 UI 试录和 ASSET1D-6 live 导入确认保持 TODO;本次提交只记录合同与事实状态,不伪造人工验收。"
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
2 ASSET1D-0 建立 ASSET1D 公网部署与试录合同 承接 ASSET1 统一资产台账 V1,建立公网部署、迁移、试录、权限验收和历史索引二次确认合同。 Issue CSV 通过校验;范围固定为部署 ASSET1 到公网 OA、最小资产试录、EA-DOC 脱敏 dry-run;历史索引 live 写入必须二次确认。 受影响流程:执行合同 -> 部署准备 -> 资产台账试录;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-23_10-42-03-oa-asset-deploy-and-trial-v1.csv。 python3|manual DONE DONE DONE issues/2026-05-23_10-42-03-oa-asset-deploy-and-trial-v1.csv [] 不上传敏感原文、源码包、密码、token、Secret、完整配置或完整本地路径。
3 ASSET1D-1 本地预检门禁 部署前复核 ASSET1 合同、schema、资产路由、前端构建、文档门禁和最小回归。 本地门禁通过;若存在既有非阻断 warning,必须记录但不伪造成失败。 受影响流程:开发候选 -> 部署候选;验证步骤:校验 ASSET1 CSV;node scripts/qa/check-process-contract.mjs --baseline --json;cd server && npm run prisma:validate;cd server && node --check src/routes/assets.js;cd client && npm run typecheck && npm run build;node scripts/qa/audit-docs.mjs --check-registry;python3 /home/shunli/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hyb-oa-delivery;git diff --check;bash scripts/check-minimal.sh。 python3|node|npm|bash|git DONE DONE DONE server|client|docs|scripts|issues/2026-05-22_21-18-33-oa-asset-governance-v1.csv ["ASSET1D-0"] 本地门禁通过;audit-docs 仅保留既有 warning:unregistered docs files 24;未改业务代码。
4 ASSET1D-2 SYNC_ENV=0 公网部署 使用既有 trialrun 部署流程发布 ASSET1 到公网 OA,执行 Prisma migrate deploy 和部署脚本内置 smoke。 部署成功;不覆盖远端 .env;迁移状态通过;/ready、external deps smoke、runtime smoke 和公网 bundle 扫描通过或记录真实阻断。 受影响流程:本地 release candidate -> 公网 OA -> 数据库迁移 -> 运行时健康检查;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh。 bash|ssh|docker|node DONE DONE DONE deploy/trialrun/deploy.sh|server/prisma/migrations|server/src/routes/assets.js|client/src/pages/AssetRegistryPage.tsx ["ASSET1D-1"] 公网部署完成;SYNC_ENV=0 未同步本地 .env;迁移 20260522191833_asset_governance_v1 已应用;脚本内置 /ready、external deps smoke、runtime smoke、公网 bundle 扫描通过;LIVE_SMOKE_* 缺失按脚本跳过。
5 ASSET1D-3 公网资产台账基础核验 部署后验证公网资产页、编号族、筛选和固定资产扫码入口未回归。 /ready 正常;资产台账页面可访问;FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP 编号族配置已随 seed 生效;移动资产扫码入口不回归。 受影响流程:管理员进入资产台账 -> 查询筛选 -> 移动扫码入口;验证步骤:公网 /ready;必要时使用浏览器或现有 smoke 检查 /assets 和 /mobile/assets/scan;核对部署输出和页面加载。 curl|ssh|node|manual DONE DONE DONE client/src/pages/AssetRegistryPage.tsx|client/src/pages/MobileAssetScanPage.tsx|server/src/scripts/seed-config.js ["ASSET1D-2"] 公网 /ready 返回 ok;public bundle 扫描 scanned=57 focused=4 findings=0;远端只读核验资产编号族 FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP 均启用,number_length=6,reset_period=yearly;登录态 UI 试录仍在 ASSET1D-4。 2026-05-23 复检:公网 /ready 返回 ok;public bundle 扫描 scanned=57 focused=4 findings=0;远端只读核验资产编号族 FA/EA-DOC/EA-SYS/EA-REPO/EA-BKP 均启用,number_length=6,reset_period=yearly;当前资产卡 total=0,ASSET1D-4 UI 试录仍待人工完成。
6 ASSET1D-4 最小资产 UI 试录 管理员在公网 OA 通过 UI 手工创建 1 条 FA、1 条 EA-SYS、1 条 EA-REPO、1 条 EA-BKP,并检查查看、编辑、筛选。 四类资产均可创建和查看;EA-SYS/EA-REPO/EA-BKP 不保存 Secret、源码、完整配置或完整路径;FA 可进入既有领用、归还、盘点链路。 受影响流程:管理员新建资产 -> 填元数据 -> 保存 -> 列表筛选 -> 详情查看;验证步骤:管理员登录公网 OA 手工创建 FA/EA-SYS/EA-REPO/EA-BKP 各 1 条并记录编号前缀。 manual TODO TODO TODO external|client/src/pages/AssetRegistryPage.tsx ["ASSET1D-3"] 人工操作项;除非后续明确提供管理员凭据和字段值,否则不由脚本替代 UI 试录。
7 ASSET1D-5 EA-DOC 历史索引脱敏 dry-run 从本地公司保密索引读取最多 3 条脱敏元数据,生成 dry-run 报告,不写公网 OA。 dry-run 报告状态为 PASS_REDACTED_INDEX_DRY_RUN_READY;报告仅含 code、docType、hash、敏感级别和脱敏要求,不含原文、完整路径、Secret 或账号凭据。 受影响流程:历史资料索引 -> 脱敏预览 -> 人工判断是否允许写入;验证步骤:node scripts/qa/collect-asset-redacted-index.mjs --limit=3。 node DONE DONE DONE scripts/qa/collect-asset-redacted-index.mjs|artifacts/qa-flow/asset-redacted-index-* ["ASSET1D-1"] dry-run 报告 artifacts/qa-flow/asset-redacted-index-20260523024935/summary.json;627 行中预览 3 行,均为 confidential;不含原文、完整路径、Secret 或账号凭据;未写 OA。 最新 dry-run 报告 artifacts/qa-flow/asset-redacted-index-20260523040650/summary.json;627 行中预览 3 行,均为 confidential;不含原文、完整路径、Secret 或账号凭据;未写 OA。
8 ASSET1D-6 EA-DOC 三条受控导入二次确认 UI 试录和 dry-run 通过后,再向用户确认是否开启 ASSET_INDEX_IMPORT_WRITE=1 写入 3 条脱敏 EA-DOC。 未获得二次确认前不得写入;若用户批准,必须使用进程级 ASSET_INDEX_IMPORT_WRITE=1、管理员权限、必填主数据,并验证审计日志。 受影响流程:脱敏预览 -> 人工批准 -> 受控导入 -> 审计核验;验证步骤:未批准时记录 PAUSED_MANUAL_CONFIRMATION;批准后调用 POST /api/assets/import/redacted-doc-index 并核对 imported/skipped 和审计。 manual|node|curl TODO TODO TODO server/src/routes/assets.js|external ["ASSET1D-4","ASSET1D-5"] 当前计划不自动执行 live 导入;回滚路径为按导入批次删除未被业务引用的 EA-DOC 台账或改为 archived。
9 ASSET1D-7 ASSET1D 收口与提交 汇总本地门禁、部署结果、dry-run 报告、人工 UI 待办和二次确认状态,并用中文提交 Issue CSV 状态。 自动项完成并回填状态;人工项如未完成保持 TODO 或 PAUSED 说明;git commit 信息中文并引用 ASSET1D。 受影响流程:部署验收 -> 资产试录 -> 证据归档 -> 后续人工导入决策;验证步骤:git status;git diff --check;提交后 git status 干净。 git|manual DONE DONE DONE issues/2026-05-23_10-42-03-oa-asset-deploy-and-trial-v1.csv ["ASSET1D-2","ASSET1D-5"] 自动项已收口;ASSET1D-4 UI 试录和 ASSET1D-6 live 导入确认保持 TODO;本次提交只记录合同与事实状态,不伪造人工验收。