60 行
3.6 KiB
Markdown
60 行
3.6 KiB
Markdown
# 本地审查基线
|
||
|
||
## Snapshot
|
||
|
||
- 审查对象:本地 `main`,`bbb5c89825b0fbee60d5f093d7b30368cb7a5104`。
|
||
- commit 时间:2026-07-16 20:52:42 +08:00。
|
||
- task 创建前工作树:clean;审查期间仅当前 task 目录为未跟踪内容,未修改业务代码、schema、迁移、部署配置或真实数据。
|
||
- 环境:Linux、Node.js `v22.22.2`、npm `10.9.7`、Prisma / `@prisma/client` `7.8.0`、Fastify `5.10.0`、Playwright `1.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 和附件下载链路;“未命中关键词”不能替代这些跨层检查。
|