69 lines
5.0 KiB
Markdown
69 lines
5.0 KiB
Markdown
# 代码 Review
|
||
|
||
- 审查范围:`c04184a6111da0cfad90d1a265dc3cd3a6d90a9c..95b8611bd9bbc282193591e472e2e19c617e5035`
|
||
- 审查方式:独立只读复审
|
||
- 日期:2026-08-13
|
||
|
||
## 发现与处置
|
||
|
||
第一轮发现三进程生命周期依赖本地 env、未跟踪生成契约可绕过漂移检查、Vue 外部脚本可绕过边界、生产镜像允许可变 tag,以及 Docker 未验证镜像内 Scheduler/Worker 生命周期。上述问题已在 `cb550e3` 完成整改并通过针对性测试。
|
||
|
||
最终复审进一步发现早期外部脚本正则不能识别合法的无引号 `src` 属性。GitNexus 单符号影响分析为 LOW,只有 `verifyProjectBoundaries` 一个直接调用者和一条边界检查流程。`95b8611` 改用固定版本 `@vue/compiler-sfc@3.5.41`,直接拒绝普通脚本或 setup 脚本的外部 `src`,测试覆盖双引号、单引号、无引号和属性换序,边界用例 8/8 通过。
|
||
|
||
## 最终证据
|
||
|
||
- `pnpm verify` 完整通过:静态检查、类型、全部测试、Web/Server 构建和 Playwright 4/4。
|
||
- 契约漂移 3/3、工程边界 8/8、镜像引用 5/5、Web 8/8、Server 30/30。
|
||
- Scheduler/Worker 的源码子进程生命周期使用公开 production fixture,可在干净 checkout 复现。
|
||
- HTTP 契约保持 Server DTO → OpenAPI → Web 单向发布;RocketMQ 消息契约只在 Server 内部。
|
||
- 未发现新的配置泄漏、安全、生命周期、错误处理或生产风险。
|
||
- Docker 是已验证过的历史可选交付能力;按用户决定不再作为后续日常门禁,最终开发完成后再决定是否保留。
|
||
|
||
Critical、Important、Minor 均无未关闭问题。
|
||
|
||
最终结论:passed
|
||
|
||
## 仅源码部署调整复审
|
||
|
||
- 审查范围:`cfcd7f13d9a6a35173d01bd8ca1458911190e70f..47d0e0d248eb9b21cbd12f1625d3bd0e9c266dc9` 及其后 Review 修复
|
||
- 审查重点:发布门禁绕过、子进程与信号、Redis 失败语义、systemd/Nginx 真实命令、历史证据和测试缺口
|
||
|
||
### 发现与处置
|
||
|
||
1. **Important:systemd 模板目标名不可执行。** 初版源码手册把 `*.service.example` 原样安装并以该名称重启,真实 systemd 单元名不正确。新增环境契约测试先 RED,随后改为分别安装成 `a-share-api.service`、`a-share-scheduler.service`、`a-share-worker.service`,并统一 verify/restart/status/journalctl 命令;环境 10/10 GREEN。
|
||
2. **Important:Docker 禁止清单可被新路径绕过。** 初版只阻断已删除的固定旧路径,`ops/Dockerfile` 或新 Compose YAML 会被放行。新增未列举路径测试先 RED,随后用递归活动资产扫描阻断任意 Dockerfile、`.dockerignore`、`docker-compose*.yml` 和 `compose/` YAML;部署测试 6/6 GREEN。
|
||
|
||
### 最终证据
|
||
|
||
- `pnpm verify:release` 完整通过,包含静态检查、类型、全部测试、四类构建、Playwright 4/4 和源码发布校验。
|
||
- Redis 不可达时只返回脱敏的固定本机服务提示;无安装、启动、停止或删除基础设施的分支。
|
||
- API 子进程只接收公开禁用态测试夹具,SIGINT/SIGTERM 只转发给该子进程。
|
||
- 源码门禁要求 Web 与三个 Server 入口、三份最小权限 systemd 单元和 Nginx Web/API 配置完整。
|
||
- 当前跟踪文件没有 Dockerfile、Compose、`.dockerignore` 或 Docker 专用脚本;历史文档事实仍可追溯。
|
||
|
||
Critical、Important、Minor 均无未关闭问题。
|
||
|
||
最终结论:passed
|
||
|
||
## v0.0.8 发布封存复核
|
||
|
||
- 复核日期:2026-08-17
|
||
- 本次变化只更新用户确认记录、功能状态、版本、发布说明与开发总结,没有修改运行时代码、数据库结构、消息契约或部署入口。
|
||
- `architecture-review.md` 记录的确认范围与实际实现一致;仅源码部署决策继续取代早期 Docker 方案,没有删除或伪造历史验证证据。
|
||
- 发布状态变化不会扩大生产权限,不读取生产配置或数据;回退继续采用新提交和更高补丁版本,禁止移动已推送标签。
|
||
- 完整验证与源码发布门禁在最终发布树上重新执行,结果写入本次发布记录。
|
||
|
||
## 安全与残余风险
|
||
|
||
配置、Schema、Redis/MySQL 健康检查、OpenAPI 边界和源码部署均保持最小权限与脱敏策略;本次封存不访问生产数据库、不写入外部基础设施。残余风险集中在尚未实现的 RocketMQ Node 客户端、TDX 采集和市场业务,必须在对应功能中重新 Review,不能沿用脚手架结论直接放行。
|
||
|
||
## 性能与资源影响
|
||
|
||
本次封存只有文档和版本元数据变化,没有增加线上进程、请求、数据库查询、缓存写入或消息负载。既有 Web 与三进程构建、生命周期和 Playwright 证据覆盖脚手架边界;行情刷新与分析吞吐不属于 GOV-009,后续需建立业务性能指标。
|
||
|
||
## GitNexus 与同步修改
|
||
|
||
发布封存不修改运行时符号。HTTP/OpenAPI、Web API、消息、数据库、Redis、API、Scheduler、Worker 和源码部署边界均无需代码同步;版本、manifest、CHANGELOG、开发总结、Review、发布说明和回退记录已同步更新。
|
||
|
||
最终结论:passed
|