Compare commits

...
1 Commits
Author SHA1 Message Date
FoXiMao 9e85809096 docs(GOV-009): 封存 GOV-009 与 GOV-010 架构基线 2026-08-17 16:27:37 +08:00
23 changed files with 220 additions and 23 deletions
+1 -1
View File
@@ -29,7 +29,7 @@
<!-- gitnexus:start --> <!-- gitnexus:start -->
# GitNexus — Code Intelligence # GitNexus — Code Intelligence
This project is indexed by GitNexus as **a-share-analysis** (1929 symbols, 2606 relationships, 50 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. This project is indexed by GitNexus as **a-share-analysis** (1957 symbols, 2634 relationships, 50 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.
+4
View File
@@ -4,11 +4,15 @@
## Unreleased ## Unreleased
## 0.0.8 - 2026-08-17
- 新增安全、性能、GitNexus 跨模块影响和独立开发总结的可执行治理门禁。 - 新增安全、性能、GitNexus 跨模块影响和独立开发总结的可执行治理门禁。
- 约定后端业务模块内按需分层,以及前端 Axios 统一封装、API 分域和 OpenAPI 类型契约。 - 约定后端业务模块内按需分层,以及前端 Axios 统一封装、API 分域和 OpenAPI 类型契约。
- 项目生产交付统一为 Ubuntu 源码部署,移除 Dockerfile、Compose、镜像校验和容器测试入口。 - 项目生产交付统一为 Ubuntu 源码部署,移除 Dockerfile、Compose、镜像校验和容器测试入口。
- 本地 Redis、MySQL 5.7.42 与 RocketMQ 5.x 均作为外部服务,项目不再提供自动启动或容器兜底。 - 本地 Redis、MySQL 5.7.42 与 RocketMQ 5.x 均作为外部服务,项目不再提供自动启动或容器兜底。
- 新增源码发布门禁,校验 Web/Server 构建产物与 systemd、Nginx 配置一致性。 - 新增源码发布门禁,校验 Web/Server 构建产物与 systemd、Nginx 配置一致性。
- 完成 Vue 3 Web、NestJS API/Scheduler/Worker、OpenAPI 单向契约和最小权限配置的工程基线确认。
- 补充 Tailscale 访问 Windows TDX 的开发操作文档和采集 PoC 前置档案;本版本不实现常驻采集程序。
## 0.0.7 - 2026-08-13 ## 0.0.7 - 2026-08-13
+1 -1
View File
@@ -1 +1 @@
0.0.7 0.0.8
@@ -1,7 +1,7 @@
# 前后端项目架构复核与论证 # 前后端项目架构复核与论证
- 复核基线:`95b8611bd9bbc282193591e472e2e19c617e5035` - 复核基线:`95b8611bd9bbc282193591e472e2e19c617e5035`
- 状态:实现已验证,等待用户确认 - 状态:实现已验证,用户于 2026-08-17 确认当前架构
## 实际落地结构 ## 实际落地结构
@@ -54,4 +54,8 @@ repository
现有架构适合“先做市场概览、个人使用为主、未来可扩展订阅”的阶段:边界清晰、运行方式简单、契约可自动校验,也保留 API/Scheduler/Worker 独立扩容路径。它不是不可变终局;完成市场概览真实业务后,仍应根据模块依赖和运行数据再次复核,而不是凭脚手架预判过度拆分。 现有架构适合“先做市场概览、个人使用为主、未来可扩展订阅”的阶段:边界清晰、运行方式简单、契约可自动校验,也保留 API/Scheduler/Worker 独立扩容路径。它不是不可变终局;完成市场概览真实业务后,仍应根据模块依赖和运行数据再次复核,而不是凭脚手架预判过度拆分。
用户确认本论证前,GOV-009 保持 `reviewing/unreleased`,不得创建 `v0.0.8` 标签。 ## 架构确认记录
用户已于 2026-08-17 完成最终确认,同意以本文描述的实际结构作为当前业务开发基线:Vue 3 与 NestJS 工程分离维护,Server 保持 API、Scheduler、Worker 三进程,HTTP 契约沿 Server DTO → OpenAPI → Web 类型单向发布,生产交付仅支持 Ubuntu 源码部署。该确认满足 GOV-009 的最终完成门禁,GOV-009 与 GOV-010 一并归入 `v0.0.8`。
确认不代表架构永久冻结。市场概览全部业务完成后,仍需依据实际模块依赖、运行负载和维护成本再次论证;在此之前不得仅凭预期拆分微服务或共享契约包。
@@ -91,6 +91,19 @@ Server 数据访问使用 Nest 官方 `@nestjs/typeorm` 集成、TypeORM 和 `my
- Web 与三个 Server 入口执行真实构建验证;源码发布门禁同时核对 systemd 和 Nginx 模板。 - Web 与三个 Server 入口执行真实构建验证;源码发布门禁同时核对 systemd 和 Nginx 模板。
- E2E 在启动 API 前只读检查现有本机 Redis;不可达时明确失败,不启动替代基础设施。 - E2E 在启动 API 前只读检查现有本机 Redis;不可达时明确失败,不启动替代基础设施。
## 安全策略与评估
- 配置按 API、Scheduler、Worker 最小权限拆分,生产只由 systemd `EnvironmentFile` 注入;Web 只允许公开的 `VITE_` 变量进入构建产物。
- Schema 工具硬编码开发环境、固定库名和主机白名单,密码只通过子进程环境传递;本功能禁止连接、探测或读取生产数据库。
- Redis/MySQL 健康检查和启动错误只返回脱敏状态;RocketMQ 未验证时明确禁用,不以进程内队列伪降级。
- OpenAPI 契约、Web/Server 源码边界和消息契约隔离由自动门禁验证。残余风险是 RocketMQ Node 客户端和真实行情数据源尚未接入,必须在各自功能中重新做依赖与安全评估。
## 性能目标与评估
- 脚手架目标是保持 Web 和三个 Server 进程可独立构建、启动和扩容;根 workspace 只编排质量命令,不进入生产运行时。
- 健康检查只执行有限的 Redis/MySQL 只读操作,禁止自动重试风暴;Scheduler 与 Worker 采用独立进程,避免任务执行阻塞 HTTP API。
- OpenAPI 和边界扫描只在开发、测试和发布阶段运行,不增加线上请求路径开销。当前尚无行情吞吐、数据库查询或消息积压业务,因此不伪造业务性能指标;后续功能必须按刷新周期、数据量和延迟重新设定基线。
## 回退原则 ## 回退原则
GOV-009 不迁移业务数据。回退时恢复上一 Git 标签即可移除脚手架;本地 `*.env.local` 和基础设施数据不随 Git 回退。若 Schema 工具变化失败,恢复旧工具后仍保留已发布基线,禁止改写历史目录。 GOV-009 不迁移业务数据。回退时恢复上一 Git 标签即可移除脚手架;本地 `*.env.local` 和基础设施数据不随 Git 回退。若 Schema 工具变化失败,恢复旧工具后仍保留已发布基线,禁止改写历史目录。
@@ -0,0 +1,56 @@
# GOV-009 应用工程脚手架基线开发总结
- 功能编号:GOV-009
- 发布版本:`v0.0.8`
- 架构确认日期:2026-08-17
## 原始开发需求
用户要求先搭建可支持 A 股市场概览业务的前后端基础:前端采用 Vue 3 与 Dart Sass,后端以独立 NestJS 工程维护,MySQL 固定 5.7、`utf8mb4_general_ci` 与东八区,Redis 作为缓存,RocketMQ 负责异步任务,API、Scheduler、Worker 分进程运行。工程需要开发/生产配置隔离、源码部署、OpenAPI 契约、完整治理留痕,并在全部实施后基于真实结构再次向用户论证。
## 需求与范围变化
- 消息队列从早期 RabbitMQ 方案调整为 RocketMQ 5.x,业务只依赖 `MessageBusAdapter`,未验证 Node 客户端前保持明确禁用。
- 部署从“Docker Compose 与源码并存”逐步收敛为“只支持 Ubuntu 源码部署”,Dockerfile、Compose、镜像门禁和容器兜底全部移除;历史验证事实不改写。
- 前后端不建立根共享 TypeScript 契约包。Server DTO 生成 OpenAPI,Web 生成自己的类型;RocketMQ 消息契约只属于 Server。
- 用户体系、会员订阅、市场概览 UI、行情采集和 AI Provider 均不属于本功能范围,后续以独立功能档案实施。
## 实际完成需求
| 范围 | 状态 | 实际结果 |
|---|---|---|
| Web 工程 | 已完成 | 建立 Vue 3、Vite、Pinia、Vue Router、Element Plus、Dart Sass、Vitest 与 Playwright 基线。 |
| Server 工程 | 已完成 | 建立 NestJS API、Scheduler、Worker 三入口及独立配置、生命周期和构建产物。 |
| 契约边界 | 已完成 | Server DTO → OpenAPI → Web 类型单向生成;Web/Server 源码越界和契约漂移由自动门禁阻断。 |
| 基础设施边界 | 已完成 | 固定 MySQL 5.7.42、Redis 只读健康检查、RocketMQ Adapter/消息信封和禁用语义,不自动管理外部服务。 |
| 环境与部署 | 已完成 | 开发/生产模板按进程最小权限拆分,生产仅支持 Ubuntu、systemd、Nginx 的源码部署。 |
| 质量治理 | 已完成 | 建立运行时、Schema、契约、边界、部署、测试、构建、视觉与 GitNexus 验证链路。 |
| 架构复核 | 已完成 | 依据真实目录和运行入口完成论证,用户于 2026-08-17 确认当前架构基线。 |
## 修复缺陷
实施与 Review 阶段修复了配置注入和三进程生命周期、未跟踪生成契约绕过、Vue 外部脚本越界、Vite 运行时模板警告、源码门禁 Docker 路径绕过、systemd 单元安装名称错误以及 Redis 测试兜底改变外部服务所有权等问题。所有处置均保留在实施计划、QA 和两份 Review 中;当前无未关闭的 Critical 或 Important 问题。
## 未完成与延期项
- 市场概览、短线/中长线模式、行情图表、规则/AI/混合/对照分析尚未实现,归入业务功能开发。
- TDX 常驻采集代理与 RocketMQ Node 客户端尚未落地;当前仅保留接口边界、禁用 Adapter、Tailscale 操作文档和 PoC 前置档案。
- 用户、邀请制、权限、会员和订阅按用户决定后置,不预埋业务实现。
- 完成市场概览真实业务后,需要依据模块依赖、负载与维护成本再次进行架构复核;当前确认不等于永久冻结。
## 关键提交
| 阶段 | 代表提交 | 说明 |
|---|---|---|
| 工程与契约基线 | `b3d8e29` 至 `95b8611` | Schema、workspace、Web、Server 三进程、OpenAPI、边界与 Review 整改。 |
| 仅源码部署 | `cfcd7f1` 至 `c756654` | 确认设计、移除 Docker、修复发布门禁并完成复审。 |
| GitNexus 封存 | `bbda26f` | 更新 GOV-009 最终索引统计。 |
上述提交均使用包含 GOV-009 的中文 Conventional Commit 并已推送项目专用 Gitea。发布封存提交和 `v0.0.8` 标签在本次收尾中分别推送并核对。
## 验证证据
- `qa/test-results.md` 保存运行时、治理、MySQL 5.7、环境、Schema、契约、边界、部署、Web、Server、构建、Playwright、安全扫描和格式证据。
- `qa/visual-qa.md` 与 `screenshots/iterations/` 保存桌面和移动应用外壳证据;GOV-009 不评价尚未实现的市场概览视觉质量。
- `gitnexus/before.md`、`impact-plan.md`、`detected-changes.md`、`after.md` 和 `comparison.md` 保存开发前后影响与实际执行流对比。
- 两份 Review 最终结论均为 `passed`;当前版本没有业务迁移,不访问生产数据库,不创建 RocketMQ Topic,也不写入 Redis 或 MySQL 业务数据。
@@ -24,3 +24,11 @@ Review 整改前对具体符号分别执行上游影响分析:三进程 bootst
开发前对 `assertImmutableImageReferences`、旧 Docker 辅助函数和 `forwardSignal` 的上游影响均为 LOW,0 条业务执行流受影响。最终 compare 的 MEDIUM 来自部署门禁整体替换:旧 Docker 验证删除,源码发布与 Redis 预检新增,并非应用业务依赖扩散。 开发前对 `assertImmutableImageReferences`、旧 Docker 辅助函数和 `forwardSignal` 的上游影响均为 LOW,0 条业务执行流受影响。最终 compare 的 MEDIUM 来自部署门禁整体替换:旧 Docker 验证删除,源码发布与 Redis 预检新增,并非应用业务依赖扩散。
Review 中 `verifySourceDeployment` 和 `assertDockerArtifactsAbsent` 的影响分析均为 LOW;后者只影响 1 条源码部署校验流程。递归活动资产扫描与 systemd 正式目标名测试完成后,部署 6/6、环境 10/10 和完整 `verify:release` 通过。 Review 中 `verifySourceDeployment` 和 `assertDockerArtifactsAbsent` 的影响分析均为 LOW;后者只影响 1 条源码部署校验流程。递归活动资产扫描与 systemd 正式目标名测试完成后,部署 6/6、环境 10/10 和完整 `verify:release` 通过。
## v0.0.8 发布封存检测
- 检测日期:2026-08-17
- 检测命令:`npx gitnexus detect-changes --repo a-share-analysis`
- 结果:22 个已索引文档/版本文件、55 个文档符号、0 条受影响执行流,风险 LOW。
本次变化只封存用户确认、版本状态、独立开发总结、安全/性能证据和 Review,不修改运行时代码。逐项核对确认 HTTP/OpenAPI、Web API、消息、数据库、Redis、API、Scheduler、Worker 与源码部署无需代码同步;CHANGELOG、manifest、发布说明和回退说明已同步。
@@ -34,6 +34,21 @@
GitNexus 查询未找到 Vue、NestJS、API、Scheduler 或 Worker 的既有运行符号,证明当前只有文档和治理工具。新增工程不会破坏已有应用调用方,但会建立新的构建、配置、HTTP 和进程启动流程,开发后必须重新索引并逐项核对。 GitNexus 查询未找到 Vue、NestJS、API、Scheduler 或 Worker 的既有运行符号,证明当前只有文档和治理工具。新增工程不会破坏已有应用调用方,但会建立新的构建、配置、HTTP 和进程启动流程,开发后必须重新索引并逐项核对。
## 直接与间接影响
- `assertSafeDevelopmentConfiguration` 为 CRITICAL:4 个直接调用方、9 个间接符号和 5 组流程,影响 Schema 生成、已发布基线校验与 `governance:start`。
- `resolveFixedDevelopmentEnv` 为 HIGH:2 个直接调用方、7 个间接符号和 3 组流程,影响开发配置解析和当前发布基线验证。
- 新增 Web、API、Scheduler、Worker 在开发前没有既有调用方,但会新增构建、启动、OpenAPI、生命周期和部署流程;开发后必须用 detect-changes 与 compare 核对实际边界。
## 跨模块同步修改
- HTTP/OpenAPI:新增 Server DTO、OpenAPI 输出、Web 生成类型和漂移门禁;Web 不直接依赖 Server 源码。
- Web API:建立生成契约与 adapter 边界;后续 GOV-010 再统一为 Axios request 与业务域 API。
- 消息:建立 RocketMQ 信封和禁用 Adapter,不创建 Topic 或启用真实收发。
- 数据库与 Redis:同步 MySQL 5.7.42、字符规则、开发 Schema 安全边界和只读健康检查,不实施业务迁移或缓存写入。
- API/Scheduler/Worker:同步三进程入口、最小配置、持续运行和优雅退出验证。
- 部署、测试与文档:同步环境模板、systemd/Nginx、源码发布门禁、Playwright、Review、回退和架构复核;早期 Docker 方案后来由仅源码部署设计取代。
## 风险控制 ## 风险控制
1. Schema 变更先写失败测试,覆盖固定远程白名单、未知远程拒绝、`api.env.local` 优先级、历史 N/A 基线验证和空库 captured 状态。 1. Schema 变更先写失败测试,覆盖固定远程白名单、未知远程拒绝、`api.env.local` 优先级、历史 N/A 基线验证和空库 captured 状态。
@@ -634,10 +634,10 @@ Run `npx gitnexus status`; stale 时运行 analyze。最终要求工作区干净
- Task 1–7:已实现、验证、提交并推送;原始步骤复选框保留为开发前计划,不反向改写预期命令和 RED 描述。 - Task 1–7:已实现、验证、提交并推送;原始步骤复选框保留为开发前计划,不反向改写预期命令和 RED 描述。
- Task 8 Step 1–3、5:已完成全量验证、视觉证据、GitNexus 检测与发布/回退材料。 - Task 8 Step 1–3、5:已完成全量验证、视觉证据、GitNexus 检测与发布/回退材料。
- Task 8 Step 4:代码 Review 追加发现无引号外部脚本绕过,已用 Vue 官方 SFC 解析器整改;代码 Review 与规范 Review 最终结论均为 `passed`。 - Task 8 Step 4:代码 Review 追加发现无引号外部脚本绕过,已用 Vue 官方 SFC 解析器整改;代码 Review 与规范 Review 最终结论均为 `passed`。
- Task 8 Step 6:架构复核文档已生成,正在向用户论证并等待确认。 - Task 8 Step 6:架构复核文档已生成并完成论证;用户于 2026-08-17 确认以仅源码部署后的实际架构作为业务开发基线。
- Task 8 Step 7:未执行;用户确认前禁止创建或推送 `v0.0.8`。 - Task 8 Step 7:用户确认后进入发布封存;最终档案提交、`main` 推送及 `v0.0.8` 精确标签推送由本次收尾执行并记录。
- Task 8 Step 8:开发后图谱已刷新到 `95b8611`;最终档案提交后还需再次刷新并核对远端。 - Task 8 Step 8:开发后图谱已在各实施阶段刷新;本次最终档案提交后再次刷新并核对本地、远端分支与标签。
### Docker 后续执行口径 ### Docker 后续执行口径
用户于 2026-08-13 决定:Docker 暂不作为后续日常开发与阶段验收的必跑项,待核心功能完整后再决定是否保留 Docker 部署。现有 Docker/Compose 文件与本次已通过的历史验证不删除;后续日常执行 `pnpm verify`,只有最终交付且用户确认继续采用 Docker 时才执行 `pnpm verify:docker` 或 `pnpm verify:release`。 用户于 2026-08-13 最终决定彻底移除 Docker 依赖,项目生产交付只支持 Ubuntu 源码部署。早期 Docker/Compose 验证记录作为当时真实事实保留在历史档案,但现行仓库已删除可执行 Docker 资产;后续发布统一执行 `pnpm verify:release` 的源码门禁。
@@ -1,7 +1,7 @@
id: GOV-009 id: GOV-009
name: 应用工程脚手架基线 name: 应用工程脚手架基线
slug: application-scaffold-baseline slug: application-scaffold-baseline
status: reviewing status: released
owner: project owner: project
created_at: 2026-08-13 created_at: 2026-08-13
prd: prd.md prd: prd.md
@@ -9,10 +9,16 @@ requirements: requirements.md
design: design.md design: design.md
implementation_plan: implementation-plan.md implementation_plan: implementation-plan.md
test_plan: test-plan.md test_plan: test-plan.md
development_summary: development-summary.md
gitnexus_before: gitnexus/before.md gitnexus_before: gitnexus/before.md
gitnexus_impact: gitnexus/impact-plan.md gitnexus_impact: gitnexus/impact-plan.md
release: unreleased gitnexus_after: gitnexus/after.md
completion_gate: 实施完成后必须基于实际前后端架构向用户论证并再次确认 gitnexus_comparison: gitnexus/comparison.md
code_review: review/code-review.md
standards_review: review/standards-review.md
release: v0.0.8
architecture_confirmation: 2026-08-17
completion_gate: 已完成基于实际前后端架构的论证并获得用户确认
architecture_review: architecture-review.md architecture_review: architecture-review.md
source_only_deployment_design: source-only-deployment-design.md source_only_deployment_design: source-only-deployment-design.md
source_only_deployment_implementation_plan: source-only-deployment-implementation-plan.md source_only_deployment_implementation_plan: source-only-deployment-implementation-plan.md
@@ -80,3 +80,14 @@
应用内浏览器补充验证 1440×900 与 390×844:两种视口页面均非空,页面宽度等于视口宽度,无横向溢出、文字重叠或控制台 warning/error;DOM 中导航与“应用就绪”区域完整。 应用内浏览器补充验证 1440×900 与 390×844:两种视口页面均非空,页面宽度等于视口宽度,无横向溢出、文字重叠或控制台 warning/error;DOM 中导航与“应用就绪”区域完整。
最终 Review 发现并修复两项 Important:systemd 模板曾以 `.service.example` 目标名安装,任意新路径的 Dockerfile/Compose 文件曾可绕过固定清单。两项均先增加失败测试,再修复至 GREEN。 最终 Review 发现并修复两项 Important:systemd 模板曾以 `.service.example` 目标名安装,任意新路径的 Dockerfile/Compose 文件曾可绕过固定清单。两项均先增加失败测试,再修复至 GREEN。
## v0.0.8 发布封存验证(2026-08-17)
`npm run governance:finish -- GOV-009 application-scaffold-baseline`、`npm run governance:finish -- GOV-010 development-quality-architecture` 与 `pnpm verify:release` 均以退出码 0 完成。
- 运行时:Node.js 22.22.0、pnpm 10.25.0。
- 治理 10/10、MySQL 规范 2/2、环境 10/10、Schema 28/28、契约 3/3、边界 16/16、源码部署 6/6。
- Web Vitest 11/11;Server Vitest 30/30;Redis API 预检 2/2。
- Web、API、Scheduler、Worker 生产构建均通过;Web JS 163.91 kB、CSS 0.81 kB,未因发布文档变化增加运行时代码。
- Playwright 桌面/移动共 4/4;`verify:source` 确认四类构建产物、systemd 与 Nginx 配置一致。
- 验证只使用开发配置安全边界和现有本机 Redis;没有连接、探测或读取生产数据库,没有创建 RocketMQ Topic 或读写业务数据。
@@ -11,6 +11,6 @@ GOV-009 建立了可运行的应用工程基线:
- 新增契约漂移、Vue SFC 边界、三进程生命周期、Playwright 真实 API 和源码发布门禁。 - 新增契约漂移、Vue SFC 边界、三进程生命周期、Playwright 真实 API 和源码发布门禁。
- 删除 Dockerfile、Compose、镜像校验和容器测试;Redis/MySQL/RocketMQ 统一为外部服务。 - 删除 Dockerfile、Compose、镜像校验和容器测试;Redis/MySQL/RocketMQ 统一为外部服务。
当前状态为 `reviewing/unreleased`。实现提交已推送至 `origin/main`,但按用户要求,必须完成基于真实实现的架构论证并再次确认后才能创建和推送 `v0.0.8` 标签。 本功能已完成基于真实实现的架构论证,并于 2026-08-17 获得用户确认,随 `v0.0.8` 发布。确认范围包括前后端工程边界、Server 三进程、OpenAPI 单向契约、外部基础设施边界和 Ubuntu 仅源码部署路径。
2026-08-13 后续确认的仅源码部署决策已取代此前可选 Docker 交付结论。历史验证记录继续保留用于追溯,但仓库不再提供可执行 Docker 能力。 2026-08-13 后续确认的仅源码部署决策已取代此前可选 Docker 交付结论。历史验证记录继续保留用于追溯,但仓库不再提供可执行 Docker 能力。
@@ -44,3 +44,25 @@ Critical、Important、Minor 均无未关闭问题。
Critical、Important、Minor 均无未关闭问题。 Critical、Important、Minor 均无未关闭问题。
最终结论:passed 最终结论: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
@@ -33,3 +33,20 @@ Critical、Important、Minor 均无未关闭问题。
Critical、Important、Minor 均无未关闭问题。 Critical、Important、Minor 均无未关闭问题。
最终结论:passed 最终结论:passed
## v0.0.8 发布封存复核
- 用户于 2026-08-17 确认 GOV-009 实际架构,原有 `reviewing/unreleased` 描述作为确认前事实保留;manifest 和发布说明现已同步为 `released/v0.0.8`。
- 新增独立 `development-summary.md`,七个固定章节完整记录原始需求、范围变化、完成项、缺陷、延期、提交和验证证据。
- GOV-009 与 GOV-010 的状态、版本、CHANGELOG、Review 和回退口径一致;FEAT-DS-001 仍为未发布 PoC 前置档案,没有误报为已实现采集能力。
- 本次提交继续使用带 GOV-009 的中文 Conventional Commit,推送 `main` 后再单独精确推送 `v0.0.8`,不使用 GitHub、全局 Git 配置、强推或批量标签推送。
## 安全、性能与架构检查
安全边界覆盖开发库固定白名单、秘密隔离、最小权限配置、错误脱敏和外部基础设施只读检查;性能边界覆盖独立构建、三进程生命周期、无生产时治理开销和后续业务指标延期说明。实际架构与用户确认的 Vue 3、NestJS 三进程、OpenAPI 单向契约和 Ubuntu 仅源码部署一致。
## GitNexus 与开发总结检查
开发前影响、开发后检测、索引基线和前后对比文件完整;发布封存只影响文档与版本,不改变执行流。独立开发总结七个固定章节均有实质内容,并逐项说明 HTTP/OpenAPI、Web API、消息、数据库、Redis、API、Scheduler、Worker、部署、测试和文档的同步边界。
最终结论:passed
@@ -15,4 +15,4 @@ GOV-009 没有创建业务表、执行迁移、写入生产数据库、创建 Ro
- 回退后重新执行健康检查、契约门禁和可用性验证。 - 回退后重新执行健康检查、契约门禁和可用性验证。
- 外部基础设施和 `/etc/a-share-analysis/*.env` 不属于应用回退范围,禁止删除或覆盖。 - 外部基础设施和 `/etc/a-share-analysis/*.env` 不属于应用回退范围,禁止删除或覆盖。
当前尚未创建 `v0.0.8` 标签,因此无需删除或移动标签。用户确认发布后,若发布回退也只能新建更高版本修复或明确的回退提交,不能移动已推送标签。 `v0.0.8` 发布后不得删除、移动或覆盖已推送标签。需要回退时只能创建新的中文回退提交,验证并推送后再发布更高补丁版本;远程数据库、Redis、RocketMQ 和环境文件均不属于代码回退对象。
@@ -23,8 +23,16 @@
- 浏览器访问 Web 与 API 健康检查,无控制台阻断错误。 - 浏览器访问 Web 与 API 健康检查,无控制台阻断错误。
- `pnpm verify:release` 只执行源码发布链路,不调用 Docker。 - `pnpm verify:release` 只执行源码发布链路,不调用 Docker。
## 安全检查 ## 安全验证
- Git 跟踪文件不得包含本地密码、开发库凭据、AI Key 或生产地址。 - Git 跟踪文件不得包含本地密码、开发库凭据、AI Key 或生产地址。
- Web 构建产物不得包含 Server env 键或消息契约。 - Web 构建产物不得包含 Server env 键或消息契约。
- 连接错误和测试日志不得输出密码。 - 连接错误和测试日志不得输出密码。
- Schema 测试必须拒绝非开发环境、非固定库名、未知远程主机、错误 MySQL 版本和字符规则;验证过程不得连接生产数据库。
- RocketMQ 保持禁用态或只读可达性检查,不创建 Topic、不发送或消费消息。
## 性能验证
- Web、API、Scheduler、Worker 必须分别完成生产构建,Scheduler/Worker 在持续运行和 SIGTERM 退出测试中不得异常自退。
- Playwright 桌面与移动链路验证应用外壳和真实 API 健康代理,记录构建耗时与产物体积,不把测试替代服务计入生产能力。
- 当前没有市场行情负载、数据库业务查询或 RocketMQ 消息收发,因此吞吐与延迟压测不适用;适用边界仅为脚手架启动、构建、生命周期和有限健康检查。
@@ -3,7 +3,7 @@
- 功能编号:GOV-010 - 功能编号:GOV-010
- 总结版本:0.1 - 总结版本:0.1
- 日期:2026-08-13 - 日期:2026-08-13
- 发布状态:未发布,开发与 Review 已完成 - 发布状态:已随 `v0.0.8` 发布
## 原始开发需求 ## 原始开发需求
@@ -47,7 +47,7 @@
- AI Provider 延期到独立功能设计,届时兼容 OpenAI API 协议;本次没有预留虚假实现或前端密钥。 - AI Provider 延期到独立功能设计,届时兼容 OpenAI API 协议;本次没有预留虚假实现或前端密钥。
- 当前页面接入真实健康或市场概览 API 将随对应页面功能实施;本次不为了展示请求层而增加无产品价值调用。 - 当前页面接入真实健康或市场概览 API 将随对应页面功能实施;本次不为了展示请求层而增加无产品价值调用。
- 后端新业务模块会在实际出现职责时遵循按需分层;现有健康模块未迁移,避免没有业务收益的结构调整。 - 后端新业务模块会在实际出现职责时遵循按需分层;现有健康模块未迁移,避免没有业务收益的结构调整。
- GOV-010 保持 `unreleased`,不创建版本标签;发布仍受 GOV-009 架构复核和用户确认约束。 - GOV-009 的实际架构复核已于 2026-08-17 获得用户确认;GOV-010 随同归入 `v0.0.8`。市场概览、AI Provider、用户体系及订阅能力仍按独立功能推进,不因本次治理发布视为已实现。
## 关键提交 ## 关键提交
@@ -60,8 +60,9 @@
| `d2c1863` | `feat(GOV-010): 建立前端 API 分域边界` | 已推送 `origin/main` | | `d2c1863` | `feat(GOV-010): 建立前端 API 分域边界` | 已推送 `origin/main` |
| `e992edc` | `fix(GOV-010): 修复 Swagger 传递依赖漏洞` | 已推送 `origin/main` | | `e992edc` | `fix(GOV-010): 修复 Swagger 传递依赖漏洞` | 已推送 `origin/main` |
| `f178fb4` | `feat(GOV-010): 完成开发质量与架构治理` | 已推送 `origin/main` | | `f178fb4` | `feat(GOV-010): 完成开发质量与架构治理` | 已推送 `origin/main` |
| `a398bc4` | `docs(GOV-010): 更新最终 GitNexus 基线` | 已推送 `origin/main` |
每个阶段提交后均核对本地 `HEAD` 与 Gitea `refs/heads/main`;最终治理提交 `f178fb4` 已完成该核对。本收尾文档提交会在推送后继续核对远程 SHA。 每个阶段提交后均核对本地 `HEAD` 与 Gitea `refs/heads/main`;最终 GitNexus 基线提交 `a398bc4` 已推送。本次发布封存提交与 `v0.0.8` 标签继续按规范分别推送并核对远程 SHA。
## 验证证据 ## 验证证据
@@ -16,3 +16,7 @@
MEDIUM 还反映了项目边界验证流的变化:该工具增加了 Axios、fetch、业务 URL 和统一 request 的 AST 规则。它只在开发/发布门禁运行,不进入 API、Scheduler、Worker 或浏览器生产请求路径。 MEDIUM 还反映了项目边界验证流的变化:该工具增加了 Axios、fetch、业务 URL 和统一 request 的 AST 规则。它只在开发/发布门禁运行,不进入 API、Scheduler、Worker 或浏览器生产请求路径。
未检测到计划外的 RocketMQ 消息消费者、MySQL/Redis 数据访问、Schema 迁移或三进程运行流变化。GitNexus 对 Markdown 文档以章节符号记录,不能替代人工阅读,因此同步修改结论在 `comparison.md` 和 Review 中重复核对。 未检测到计划外的 RocketMQ 消息消费者、MySQL/Redis 数据访问、Schema 迁移或三进程运行流变化。GitNexus 对 Markdown 文档以章节符号记录,不能替代人工阅读,因此同步修改结论在 `comparison.md` 和 Review 中重复核对。
## v0.0.8 发布封存检测
2026-08-17 再次执行 `npx gitnexus detect-changes --repo a-share-analysis`:22 个已索引文档/版本文件、55 个文档符号、0 条受影响执行流,风险 LOW。本次只把已完成治理归入 `v0.0.8`;Axios、OpenAPI、HTTP 字段、MySQL、Redis、RocketMQ、API、Scheduler、Worker 和源码部署均无运行时同步变化。
@@ -1,7 +1,7 @@
id: GOV-010 id: GOV-010
name: 开发质量与前后端架构规范 name: 开发质量与前后端架构规范
slug: development-quality-architecture slug: development-quality-architecture
status: reviewing status: released
owner: project owner: project
created_at: 2026-08-13 created_at: 2026-08-13
prd: prd.md prd: prd.md
@@ -12,4 +12,8 @@ test_plan: test-plan.md
development_summary: development-summary.md development_summary: development-summary.md
gitnexus_before: gitnexus/before.md gitnexus_before: gitnexus/before.md
gitnexus_impact: gitnexus/impact-plan.md gitnexus_impact: gitnexus/impact-plan.md
release: unreleased gitnexus_after: gitnexus/after.md
gitnexus_comparison: gitnexus/comparison.md
code_review: review/code-review.md
standards_review: review/standards-review.md
release: v0.0.8
@@ -41,3 +41,10 @@
- 桌面截图:`screenshots/iterations/app-shell-desktop-1440x900-61f85e5.png`,实际浏览器 DOM 视口 1440×900。 - 桌面截图:`screenshots/iterations/app-shell-desktop-1440x900-61f85e5.png`,实际浏览器 DOM 视口 1440×900。
- 移动截图:`screenshots/iterations/app-shell-mobile-61f85e5.png`,实际浏览器 DOM 视口 390×844。 - 移动截图:`screenshots/iterations/app-shell-mobile-61f85e5.png`,实际浏览器 DOM 视口 390×844。
- 两个视口均有可见 `main` 和页面标题,无横向溢出;浏览器错误/警告日志为空。截图只证明本次请求基础设施迁移没有造成外壳回归,不代表市场概览 UI 已实现。 - 两个视口均有可见 `main` 和页面标题,无横向溢出;浏览器错误/警告日志为空。截图只证明本次请求基础设施迁移没有造成外壳回归,不代表市场概览 UI 已实现。
## v0.0.8 发布封存验证(2026-08-17)
- GOV-009 与 GOV-010 完成门禁均通过;`pnpm verify:release` 以 Node.js 22.22.0、pnpm 10.25.0 完整通过。
- 最终计数为治理 10、MySQL 2、环境 10、Schema 28、契约 3、边界 16、部署 6、Web 11、Server 30、API 预检 2、Playwright 4,全部通过且无失败。
- Web 与 API/Scheduler/Worker 构建、源码产物、systemd/Nginx 一致性均通过;本次仅改变发布文档和状态,不改变 Axios、OpenAPI 或后端运行行为。
- 安全边界与 2026-08-13 Review 一致:不访问生产配置或数据库,不输出凭据,不写入 Redis/MySQL,不启用 RocketMQ 收发。
@@ -1,7 +1,7 @@
# GOV-010 未发布变更说明 # GOV-010 发布说明
- 状态:验证中,未发布 - 状态:已随 `v0.0.8` 发布
- 日期:2026-08-13 - 发布日期:2026-08-17
## 新增 ## 新增
@@ -52,3 +52,12 @@
## 最终结论 ## 最终结论
最终结论:passed 最终结论:passed
## v0.0.8 发布封存复核
- 复核日期:2026-08-17
- 本次只把已完成并通过 Review 的 GOV-010 归入 `v0.0.8`,没有修改 Axios 请求行为、OpenAPI 契约、后端分层代码或依赖版本。
- 安全与性能结论没有变化:错误脱敏、有限超时、无自动重试、传递依赖修复和包体证据继续有效;本次文档状态变化不引入运行时资源开销。
- GitNexus 影响仅为发布追溯文档;HTTP/OpenAPI、MySQL、Redis、RocketMQ、API、Scheduler、Worker 和部署无需同步修改。
最终结论:passed
@@ -25,7 +25,7 @@
## 不符合项与处置 ## 不符合项与处置
初审发现 Review 最终结论校验允许“passed”出现在正文中间,已按测试先行修复为最后非空行校验;没有遗留不符合项。历史已发布档案未改写;GOV-010 保持 `unreleased`。 初审发现 Review 最终结论校验允许“passed”出现在正文中间,已按测试先行修复为最后非空行校验;没有遗留不符合项。历史已发布档案未改写;在本次审查时 GOV-010 保持 `unreleased`。
## 安全、性能与架构检查 ## 安全、性能与架构检查
@@ -38,3 +38,11 @@
## 最终结论 ## 最终结论
最终结论:passed 最终结论:passed
## v0.0.8 发布封存复核
- GOV-009 架构确认门禁已于 2026-08-17 满足,GOV-010 的 `released/v0.0.8` 状态与开发总结、发布说明和 CHANGELOG 一致。
- 原 Review 中 `unreleased` 是确认前的真实历史状态;本节记录后续发布决定,不反向改写当时审查事实。
- 最终完成门禁、全量源码发布验证、GitNexus 变更检测、中文提交、Gitea 分支推送和精确标签推送按发布流程重新执行。
最终结论:passed