3.6 KiB
3.6 KiB
本地审查基线
Snapshot
- 审查对象:本地
main,bbb5c89825b0fbee60d5f093d7b30368cb7a5104。 - commit 时间:2026-07-16 20:52:42 +08:00。
- task 创建前工作树:clean;审查期间仅当前 task 目录为未跟踪内容,未修改业务代码、schema、迁移、部署配置或真实数据。
- 环境:Linux、Node.js
v22.22.2、npm10.9.7、Prisma /@prisma/client7.8.0、Fastify5.10.0、Playwright1.58.2。 - 结论边界:所有结果仅证明该本地 commit;最后有证据的公网部署来源仍是
df26922,不得据此声称公网已同步或可供用户测试。
基础门禁结果
| 检查 | 结果 | 证据摘要 |
|---|---|---|
./scripts/check-minimal.sh |
PASS | 首次因当前 PRD 缺 ## Scope 被治理门禁正确阻断;补齐任务合同后重跑通过。 |
| Process contract | PASS | baseline 模式无阻断。 |
| Trellis governance | PASS | 当前 task 和治理合同有效。 |
| 敏感内容检查 | PASS | 扫描 30 个文件,0 finding。 |
cd server && npm run prisma:validate |
PASS | Prisma schema 有效。 |
| Server static checks | PASS | 脚本语法/静态门禁通过。 |
cd server && npm test |
PASS | 153/153 文件、786/786 用例通过。 |
cd client && npm run typecheck |
PASS | TypeScript 无错误。 |
cd client && npm run build |
PASS | Vite 处理 2381 modules;PWA 生成 102 个 precache entries。 |
| Feature matrix | PASS | 无阻断。 |
| 部署环境合同 | PASS | 无阻断。 |
| UI 静态设计规则 | PASS | 扫描 137 个文件,0 finding。 |
cd client && npx playwright test --list |
PASS | 枚举 144 tests / 56 files;只代表清单可解析,尚不代表行为通过。 |
| 文档审计 | PASS with warnings | 0 error;22 个未登记文件、19 条既有启发式 warning,后续单独归类。 |
基础门禁观察到两个非阻断工具链提示:Node punycode 弃用提示、Browserslist 数据陈旧提示。二者不等同于产品故障,进入工程维护观察项。
已确认的门禁缺口
移动路由静态合同
node scripts/qa/check-mobile-route-contract.mjs 返回 1 个 finding:
client/src/router/index.tsx:336的/mobile/wecom-approval-archive直接挂载 PC 页面组件WecomApprovalArchivePage。- 脚本规则明确禁止
/mobile路由直挂非Mobile*Page组件。 - 当前状态:
LIKELY。静态合同失败已经确认,但最终严重级别和用户影响需结合 375px 浏览器复核后裁定。
真实角色权限矩阵
node scripts/qa/check-oa-permission-matrix.mjs 未执行:
- 脚本默认访问公网地址,并要求多个真实角色凭据;同时会写入时间戳报告目录。
- 这超出当前“无公网、无凭据、无真实数据”的批准边界。
- 当前状态:
EXTERNAL_GATED,不能记为 PASS 或 FAIL;准入条件是另行批准公网只读检查并提供脱敏测试角色。
生成物所有权与清理
client/dist/由本轮前端 build 于 2026-07-16 21:33 生成,已被.gitignore忽略;任务结束前可安全删除。client/playwright-report/于 2026-07-16 21:34 生成,已被.gitignore忽略;聚焦 E2E 完成后与本轮test-results/、专用截图目录一并清理。artifacts/下已有历史审查证据不属于本轮生成物,不删除、不改写。
安全边界复核记录
- 未发现
dangerouslySetInnerHTML、直接innerHTML、eval、字符串代码执行或不安全postMessage等明显前端执行 sink。 - 安全结论仍需结合认证/授权、cookie/CSRF、代理信任、signed URL 和附件下载链路;“未命中关键词”不能替代这些跨层检查。