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

9.4 KiB
Raw Blame History

架构基线与 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 为唯一权威对齐实现。