Files
wwjcloud/docs/ARCHITECTURE-BASELINE-AND-COMMON-GUIDE.md
wanwu 8da4047110 feat: v0.3.3 - 清理代码结构,删除common层,保留core层企业级基础设施
- 删除common层业务代码(将通过real-business-logic-generator.js重新生成)
- 清理重复的core层生成工具
- 保留完整的企业级core层基础设施(Security/Cache/Tracing/Event/Queue/Health)
- 版本号升级到0.3.3
- 项目架构现已完整,接下来专注优化PHP到TypeScript语法转换
2025-09-27 03:28:46 +08:00

193 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 架构基线与 Common 层开发指引Config/Core/Common
适用范围本项目已定版的三层架构config/core/common以及与 Java/Spring Boot 与 PHP/ThinkPHP 的对标关系与实践规则。目标:在不自创业务的前提下,指导 AI 基于真实 PHP 代码与数据库结构高一致地开发 common 层模块。
---
## 1. 三层职责与使用方式
### 1.1 Config 层(配置中心与环境治理)
- 职责
- 环境与配置集中管理env.* 与模块化配置)
- 外部服务与框架能力的参数化DB、Redis、JWT、队列等
- 使用规则
- 严禁编写业务逻辑,仅做“配置与适配”
- 新增配置项:优先读取 env统一通过 ConfigService 暴露
- 敏感配置不可写死;可按需对接密钥服务
- 参考位置
- 项目wwjcloud/src/config
- 环境文件wwjcloud/env.*
### 1.2 Core 层(基础能力与横切关注)
- 职责
- 全局管道/拦截器/过滤器/守卫基线
- 观测与日志、链路追踪X-Trace-Id、统一响应/异常
- 限流、CORS、Swagger 文档、调度与事件
- 使用规则
- 仅提供通用规则与“可复用能力”,不承载具体业务
- 全局基线已启用:
- 参数校验Global ValidationPipe
- 统一响应ResponseInterceptor含 traceId
- 统一异常HttpExceptionFilter含 traceId
- 链路追踪TracingInterceptor + X-Trace-Id 贯通
- 速率限制ThrottlerGuard按需配置
- CORSapp.enableCors()
- 文档Swagger/adminapi 与 /api 分文档)
- 参考位置
- 全局注册wwjcloud/src/app.module.ts
- 启动入口wwjcloud/src/main.ts
- Swagger 拆分wwjcloud/src/config/modules/swagger/swaggerService.ts
- Tracing/响应/异常wwjcloud/src/core/**/*
### 1.3 Common 层(业务域模块化实现)
- 职责
- 面向具体业务域(如 user/order/payment
- 内部完整分层Controller → Service → Repository/Entity → DTO
- 与 PHP 项目代码与数据库 100% 一致
- 使用规则
- 文件结构示例(以 user 为例):
- src/common/user/
- user.module.ts模块
- controllers/(管理端/前台可分 adminapi/ 与 api/
- services/
- entity/
- dto/
- guards/(可选)
- 管理端路由前缀:/adminapi前台/api
- Controller 只做:路由与 DTO 校验,禁止写业务
- Service 编排业务流程(必要时开启应用层事务)
- Repository/Entity 与数据库字段 100% 对齐(禁止新增字段)
- DTO/验证规则与 PHP 验证器一致
---
## 2. 三框架对标对照(轻量/功能/性能)
### 2.1 总览对比
| 维度 | Java / Spring Boot | NestJS本项目基线 | PHP / ThinkPHP |
|---|---|---|---|
| 轻量/启动 | 中等偏重、启动慢但稳定 | 轻量、启动快、按需模块 | 最轻、FPM 请求模型 |
| 功能完备度 | 企业级最全(安全/事务/监控) | Web/微服务常用能力齐全 | Web 基础能力齐全 |
| 性能取向 | 高吞吐、高并发、CPU 密集强 | 低延迟 I/O 强、BFF/聚合强 | 请求短、实现快 |
| 并发模型 | 线程池 | 事件循环 + 异步 I/O | 多进程/请求 |
| 可观测性 | Actuator/Micrometer | 健康/日志/Tracing 已落地 | 需组合/扩展 |
| 安全基线 | Spring Security 完备 | 守卫/装饰器灵活 | 中间件/验证器为主 |
### 2.2 分层对比config/core/common
| 能力项 | Spring Boot | NestJS本项目 | ThinkPHP |
|---|---|---|---|
| Config | profiles + 强类型绑定 | env + ConfigModule已启用 | env + config/*.php |
| Core | Validation/Advice/Actuator | ValidationPipe/Filter/Interceptor/Throttler/CORS/Swagger已启用 | Validate/中间件 |
| Common | 分包+组件化 | 业务域模块自治(强约束对齐 PHP/DB | app/{模块} |
### 2.3 性能视角(工程实践)
| 场景 | Spring Boot | NestJS | ThinkPHP |
|---|---|---|---|
| API 聚合/BFF | 可做,线程开销更高 | 强项 | 适合后台接口 |
| CPU 密集 | 强项 | 建议 offload 至 worker/微服务 | 不推荐 |
| I/O 密集 | 稳定 | 强项 | 常规 |
| 冷启动/弹性 | 相对慢 | 快 | 快 |
---
## 3. AI 开发 Common 层的使用方法(强约束版)
> 目标:严格遵循 PHP 源码与数据库结构,使用 NestJS 特性实现相同业务语义;禁止自创和假设。
### 3.1 约束来源(必须核对)
- 数据库表结构:/sql/wwjcloud.sql唯一权威
- PHP 控制器:/niucloud-php/niucloud/app/adminapi/controller/
- PHP 服务层:/niucloud-php/niucloud/app/service/
- PHP 模型:/niucloud-php/niucloud/app/model/
- PHP 验证器:/niucloud-php/niucloud/app/validate/
### 3.2 开发流程S1 → S10
- S1 需求分析体
- 定位对应的 PHP 控制器/服务/验证器/模型与数据库表
- 输出:模块边界、路由表(/adminapi 与 /api、DTO 字段清单、实体字段清单
- S2 架构治理体
- 校验目录与依赖common/{module}/ 按 Controller→Service→Entity→DTO 组织
- 确保依赖方向App(Controller) → Service → Infra/Repository → Entity
- S3 基建接入体
- 若涉及 Redis/队列/事务:按 core 规范接入(事务仅在应用层开启,共享 EntityManager
- S4 开发执行体
- Controller只做路由/DTO 校验;响应交给全局拦截器统一处理
- Service编排业务与 PHP 服务层一致;必要时开启事务(禁止在 Core 开启)
- Entity/Repository字段与 /sql/wwjcloud.sql 100% 对齐(禁止新增字段)
- 接入守卫:管理端统一 JwtAuthGuard + RolesGuard或 AdminCheckTokenGuard
- S5 安全基线体(开发阶段)
- 检查site_id 隔离、越权、敏感字段输出、/adminapi 守卫
- S6 质量门禁体
- ESLint/TS 0 报错;覆盖率与 e2e 关键路径通过
- S7 规范审计体
- 命名/路由/守卫/事务/事件/队列 与 PHP/DB 对齐
- S5 安全基线体(提测前)
- 重点接口越权与敏感输出复检
- S9 性能优化体
- 建议缓存、批处理、异步化,识别 N+1 与大对象
- S10 命名规范体
- 文件/类/方法/变量命名符合既定规范
- S8 上线管控体
- 变更说明、部署步骤、灰度与回滚预案
### 3.3 模块落地清单(逐项核对)
- 路由前缀:管理端 /adminapi前台 /api与 PHP 对齐)
- 守卫:管理端控制器默认 JwtAuthGuard + RolesGuard或 AdminCheckTokenGuard
- DTO字段与 PHP 验证器一致;使用 class-validator + ValidationPipe
- 实体:字段/类型/索引与 wwjcloud.sql 100% 一致;禁止新增字段
- 服务:方法名与 PHP 服务层一致;流程一致;必要时开启事务(应用层)
- 统一响应:无需手工封装,交由 ResponseInterceptortraceId 自动注入
- 异常处理:只抛出 HttpException/自定义异常;由 HttpExceptionFilter 统一处理
- 日志与链路:无需重复生成 traceId使用 request.traceId已在 Core 透传)
- 文档:自动生成 Swagger按 /adminapi 与 /api 拆分
### 3.4 命名与目录规范(强规则)
- 目录名camelCase文件名camelCase.ts
- 类名PascalCase接口名IPascalCaseDTOPascalCase + Dto
- API 命名camelCaseHTTP 方法规范化
- 数据库命名snake_case表/字段/索引/外键)
- PHP 业务命名优先(在不违反 Nest 规范前提下)
### 3.5 事务/队列/事件(基线约束)
- 事务:仅在 ApplicationService 层)开启;多仓储共享同一 EntityManagerCore 不直接操作事务对象
- 队列:仅入队关键 ID处理器放在 Infrastructure按队列名分域
- 事件:统一 DomainEventService事件名 domain.aggregate.action默认 DB Outbox可切 Kafka
- Redis短缓存/限流/幂等SETNX+TTL按需接入
### 3.6 提交与验收
- PR 必须通过:构建、单测/集成/e2e
- 审计项:字段/命名/路由/守卫/事务/队列/事件 与 PHP/DB 对齐
- 命名规范:严格执行大厂标准,提交命名检查报告
---
## 4. 实操模板(创建首个 common 模块时)
- 选定 PHP 源:定位对应 controller/service/validate/model 与 wwjcloud.sql 表
- 创建目录src/common/{module}/module 使用业务域名camelCase
- 落地文件:
- {module}.module.ts
- controllers/{module}Controller.ts必要时 adminapi/ 与 api/ 分目录)
- services/{module}.service.ts
- entity/{Entity}.entity.ts名称与 PHP 模型一致的业务语义)
- dto/{Operation}{Entity}Dto.ts如 CreateUserDto
- 接入守卫:管理端默认接入鉴权与角色守卫
- 编写测试:单测/集成/e2e 涵盖关键路径(校验/守卫/事务)
- 运行验收:确保全局拦截器/过滤器与 traceId 链路正常
---
## 5. 关键基线位置(便于检索)
- 全局模块注册src/app.module.ts
- 启动入口src/main.tsCORS/Swagger
- Swagger 拆分src/config/modules/swagger/swaggerService.ts
- 链路追踪src/core/tracing/tracingInterceptor.ts
- 统一响应src/core/http/interceptors/responseInterceptor.ts
- 统一异常src/core/http/filters/httpExceptionFilter.ts
- HTTP 日志src/core/interceptors/httpLoggingInterceptor.ts
- 安全守卫示例src/core/security/guards/adminCheckToken.guard.ts
---
结论:
- Config/Core 已定版、与 Spring Boot/ThinkPHP 对标的核心能力就绪traceId 与统一响应/异常/限流/CORS/Swagger 等基线已贯通。
- 按本文档清单可直接开始 common 层业务模块开发,严格以 PHP 源码与 wwjcloud.sql 为唯一权威对齐实现。