文件
hyb-oa/issues/2026-03-11_17-50-39-p21-pwa-1-l5-asset-scan-refresh.csv
T

8 行
4.4 KiB
CSV

ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
P21PWA1-0,P21PWA1执行合同刷新与P20基线冻结,新建 superseding CSV,冻结 P20 周期正式收口 gate、脏工作区归类规则与 P21+PWA-1 浏览器 PWA 资产扫码范围。,refresh CSV 校验通过,并明确 P20 从 TRAVEL-3 事实源收口、P21 从 clean main 基线起步。,python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-11_17-50-39-p21-pwa-1-l5-asset-scan-refresh.csv,manual,DONE,DONE,DONE,issues/2026-03-11_17-50-39-p21-pwa-1-l5-asset-scan-refresh.csv | docs/feature-matrix.md | docs/integration-boundaries.md,[],supersedes issues/2026-03-09_11-15-00-p21-pwa-1-l5-asset-scan.csv and absorbs P20 formal closeout rules
P21PWA1-1,移动资产扫码页与扫描适配器,新增 MobileAssetScanPage 与 BarcodeScannerPanel,提供 BarcodeDetector 优先、ZXing 回退和手工输入兜底的移动资产扫码入口。,移动端可通过 /mobile/assets/scan 打开扫码页,支持相机扫码或手工输入并展示单资产命中结果与多命中候选。,cd client && npm run typecheck && npm run build,manual,DONE,DONE,DONE,client/src/pages/MobileAssetScanPage.tsx | client/src/components/mobile/BarcodeScannerPanel.tsx | client/src/router/index.tsx | client/src/components/navigation/NavLinks.tsx | client/package.json,"[""P21PWA1-0""]","PWA-1 stays browser-only and does not introduce native shell, NFC, Bluetooth or platform private SDKs"
P21PWA1-2,资产扫码查找最小后端扩展,对现有 GET /api/assets 增加 q 查询参数并在前端 API 暴露,按 assetNo、serialNo 精确匹配并以名称模糊匹配兜底。,现有资产读权限与 mine 语义不变,扫码或手工输入可直接复用 /api/assets?q 查询结果,不新增 lookup 路由。,cd server && npm run test,manual,DONE,DONE,DONE,server/src/routes/assets.js | server/tests/unit/routes/assets.search.test.js | client/src/api/assets.ts,"[""P21PWA1-0""]",keeps existing response shape and permission boundaries intact
P21PWA1-3,盘点录入模式与离线队列联动,在 inventoryCheckId 模式下复用现有盘点 API,实现 draft 启动、counting 录入、completed 只读,以及已解析盘点结果的 IndexedDB 队列重放。,有 asset.inventory 权限的用户可在移动扫码页进行盘点录入、离线入队与联网重放;无该权限用户仅可查找资产。,cd client && npm run typecheck && npm run build && cd ../server && npm run test,manual,DONE,DONE,DONE,client/src/mobile/inventoryScanQueue.ts | client/src/pages/MobileAssetScanPage.tsx | client/src/pages/InventoryChecksPage.tsx | client/src/pages/AssetRegistryPage.tsx,"[""P21PWA1-1"",""P21PWA1-2""]",offline queue only stores already-resolved inventory items with inventoryCheckId + assetId last-write-wins dedupe
P21PWA1-4,PWA一期文档边界与矩阵同步,同步 integration-boundaries、mobile pwa regression checklist、feature matrix 与校验器,明确 PWA-1 只做浏览器扫码与离线队列。,文档明确不做原生壳、深链、完整离线同步,矩阵标题推进到 +PWA-1 且总数更新为 260。,python3 scripts/validate-feature-matrix.py,manual,DONE,DONE,DONE,docs/integration-boundaries.md | docs/mobile/pwa-regression-checklist.md | docs/feature-matrix.md | scripts/validate-feature-matrix.py,"[""P21PWA1-3""]",do not update docs/domain-events.md for PWA-1
P21PWA1-5,P21PWA1回归与验收收口,执行前后端回归、PWA checklist 与 P20 工作区洁净度核对,形成 P21+PWA-1 可验收状态。,移动扫码、盘点录入、离线重放、权限拒绝、矩阵校验全部通过,且 pre-existing dirty changes are fully classified in the final outcome.,cd server && npm run test && ./scripts/regression-workflow-actions.sh && ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build && python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-11_17-50-39-p21-pwa-1-l5-asset-scan-refresh.csv && python3 scripts/validate-feature-matrix.py && git diff --check,manual,DONE,DONE,DONE,issues/2026-03-11_17-50-39-p21-pwa-1-l5-asset-scan-refresh.csv | docs/mobile/pwa-regression-checklist.md | client/src/pages/MobileAssetScanPage.tsx | server/src/routes/assets.js,"[""P21PWA1-4""]",git status stays dirty until user commits; local cleanliness check is treated as release gate rather than uncommitted-work elimination within this turn