feat: 发布 v1 智能框架 0.1.0 版本

🚀 新增功能:
- wwjcloud-nest-v1: 完整的 NestJS 智能框架
- AI 自愈机制: @wwjcloud/auto-healing 模块
- 智能代码生成: tools-v1/php-tools 迁移工具链
- AI 能力规划: v1/docs/AI-CAPABILITY-ROADMAP.md

📦 核心模块:
- libs/wwjcloud-ai: AI 策略和恢复服务
- libs/wwjcloud-boot: 启动和配置管理
- libs/wwjcloud-core: 核心基础设施
- libs/wwjcloud-addon: 插件系统

🏗️ 架构特性:
- 分层渐进式 AI 策略
- 微服务导向的模块化设计
- 与 PHP 项目 100% 业务一致性
- Docker 容器化部署支持

📋 版本信息:
- 版本: v0.1.0
- 发布日期: 2025-01-25
- 分支: v1
This commit is contained in:
wanwujie
2025-10-19 19:55:52 +08:00
parent e7a1d6b4d6
commit b5826ee469
1103 changed files with 179805 additions and 1672 deletions

View File

@@ -1,278 +0,0 @@
# AI 框架功能对比图 - NestJS vs ThinkPHP
## 📋 概述
本文档为 AI 开发者提供 NestJS 和 ThinkPHP 框架的详细对比,包含功能映射、开发规范、命名约定和目录结构对比,确保 AI 能够更好地理解和开发功能。
**重要原则:既要尊重 NestJS 框架特性,又要与 PHP 项目业务逻辑保持一致**
## 🔄 核心功能映射
### 1. 基础架构对比
| 功能模块 | ThinkPHP | NestJS | 对应关系 | 实现方式 |
|---------|----------|---------|----------|----------|
| **路由系统** | `Route::get()` | `@Get()` | ✅ 直接对应 | 装饰器路由 |
| **控制器** | `Controller` | `@Controller()` | ✅ 直接对应 | 装饰器控制器 |
| **中间件** | `Middleware` | `@UseGuards()` | ✅ 功能对应 | 守卫/拦截器 |
| **依赖注入** | `Container::get()` | `constructor()` | ✅ 更强大 | 自动注入 |
| **数据验证** | `Validate` | `@UsePipes()` | ✅ 功能对应 | 验证管道 |
| **异常处理** | `Exception` | `@UseFilters()` | ✅ 功能对应 | 异常过滤器 |
### 2. 数据库操作对比
| 功能模块 | ThinkPHP | NestJS | 对应关系 | 实现方式 |
|---------|----------|---------|----------|----------|
| **模型定义** | `Model` | `@Entity()` | ✅ 功能对应 | TypeORM 实体 |
| **查询构建** | `Db::table()` | `Repository` | ✅ 功能对应 | TypeORM 仓库 |
| **关联关系** | `hasMany()` | `@OneToMany()` | ✅ 功能对应 | TypeORM 关联 |
| **事务处理** | `Db::startTrans()` | `@Transaction()` | ✅ 功能对应 | TypeORM 事务 |
| **软删除** | `SoftDelete` | `@DeleteDateColumn()` | ✅ 功能对应 | TypeORM 软删除 |
### 3. 缓存和会话
| 功能模块 | ThinkPHP | NestJS | 对应关系 | 实现方式 |
|---------|----------|---------|----------|----------|
| **缓存管理** | `Cache::get()` | `@Inject(CACHE_MANAGER)` | ✅ 功能对应 | Cache Manager |
| **会话管理** | `Session` | `@Session()` | ✅ 功能对应 | Session 装饰器 |
| **Redis 集成** | `Redis::get()` | `@InjectRedis()` | ✅ 功能对应 | Redis 模块 |
## 🏗️ 目录结构对比
### ThinkPHP 目录结构
```
thinkphp/
├── app/ # 应用目录
│ ├── controller/ # 控制器
│ ├── model/ # 模型
│ ├── service/ # 服务层
│ └── middleware/ # 中间件
├── config/ # 配置文件
├── public/ # 公共资源
├── route/ # 路由定义
└── vendor/ # 第三方包
```
### NestJS 目录结构
```
wwjcloud/
├── src/ # 源代码目录
│ ├── common/ # 通用服务层 (对应 ThinkPHP app/)
│ │ ├── admin/ # 管理端服务
│ │ ├── member/ # 会员服务
│ │ ├── rbac/ # 权限管理
│ │ └── settings/ # 系统设置
│ ├── config/ # 配置管理层 (对应 ThinkPHP config/)
│ │ ├── entity/ # 实体配置
│ │ ├── database/ # 数据库配置
│ │ └── env/ # 环境配置
│ ├── core/ # 核心基础设施层 (对应 ThinkPHP 核心)
│ │ ├── base/ # 基础类
│ │ ├── traits/ # 特性类
│ │ ├── database/ # 数据库核心
│ │ └── security/ # 安全核心
│ └── vendor/ # 第三方服务适配层 (对应 ThinkPHP vendor/)
│ ├── payment/ # 支付适配器
│ ├── storage/ # 存储适配器
│ └── sms/ # 短信适配器
├── public/ # 公共资源
└── package.json # 依赖管理
```
### 层级对应关系
| 层级 | ThinkPHP | NestJS | 说明 |
|------|----------|---------|------|
| **应用层** | `app/` | `src/common/` | 业务逻辑和通用服务 |
| **配置层** | `config/` | `src/config/` | 配置管理和环境变量 |
| **核心层** | 框架核心 | `src/core/` | 基础设施和核心功能 |
| **适配层** | `vendor/` | `src/vendor/` | 第三方服务集成 |
## 📝 命名规范和约束
### 1. 数据库命名规范
**重要约束:与 PHP 项目共用数据库,必须保持命名一致**
- **表名**: 与 PHP 项目完全一致,包括前缀和命名方式
- **字段名**: 与 PHP 项目完全一致,不能修改任何字段名
- **字段类型**: 与 PHP 项目完全一致,不能修改字段类型
- **索引结构**: 与 PHP 项目完全一致,不能添加或删除索引
**原则:看到 PHP 项目怎么命名,我们就怎么命名,保持 100% 一致**
### 2. 代码命名规范
#### 类名规范
- **实体类**: 使用 PascalCase`User`, `OrderDetail`
- **服务类**: 使用 PascalCase + Service`UserService`, `OrderService`
- **控制器**: 使用 PascalCase + Controller`UserController`
- **DTO 类**: 使用 PascalCase + Dto`CreateUserDto`, `UpdateUserDto`
#### 方法名规范
**业务逻辑方法优先与 PHP 项目保持一致NestJS 特有方法按 NestJS 规范:**
- **CRUD 方法**: 与 PHP 项目方法名保持一致
- **查询方法**: 与 PHP 项目方法名保持一致
- **业务方法**: 与 PHP 项目方法名保持一致
- **NestJS 生命周期方法**: 按 NestJS 规范,如 `onModuleInit()`, `onApplicationBootstrap()`
**原则:业务逻辑与 PHP 保持一致NestJS 特性按 NestJS 规范**
#### 变量名规范
**业务变量优先与 PHP 项目保持一致NestJS 特有变量按 NestJS 规范:**
- **业务变量**: 与 PHP 项目变量名保持一致
- **业务常量**: 与 PHP 项目常量名保持一致
- **NestJS 注入变量**: 按 NestJS 规范,如 `private readonly userService: UserService`
- **TypeORM 相关变量**: 按 TypeORM 规范,如 `@InjectRepository(User)`
**原则:业务变量与 PHP 保持一致NestJS 特性按 NestJS 规范**
### 3. 文件命名规范
#### 目录结构
```
src/common/admin/
├── controllers/ # 控制器目录
│ ├── userController.ts
│ └── orderController.ts
├── services/ # 服务目录
│ ├── user.service.ts
│ └── order.service.ts
├── entities/ # 实体目录
│ ├── user.entity.ts
│ └── order.entity.ts
└── dto/ # DTO 目录
├── createUser.dto.ts
└── updateUser.dto.ts
```
#### 文件命名
**NestJS 特有的文件类型,按照 NestJS 规范命名:**
- **控制器**: `{模块名}Controller.ts` (NestJS 规范)
- **服务**: `{模块名}.service.ts` (NestJS 规范)
- **实体**: `{模块名}.entity.ts` (TypeORM 规范,对应 PHP 的模型)
- **DTO**: `{操作}-{模块名}.dto.ts` (NestJS 规范,对应 PHP 的验证器)
- **模块**: `{模块名}.module.ts` (NestJS 规范)
**原则NestJS 特有的文件类型按 NestJS 规范,业务逻辑与 PHP 保持一致**
## 🔧 开发约束和规范
### 1. 数据库约束
#### 必须遵守的规则
- **表结构**: 与 PHP 项目完全一致,不能修改任何结构
- **索引**: 与 PHP 项目完全一致,不能修改索引
- **外键**: 与 PHP 项目完全一致,不能修改外键
- **触发器**: 与 PHP 项目完全一致,不能修改触发器
#### 数据一致性
- **事务处理**: 与 PHP 项目保持一致的事务处理方式
- **软删除**: 与 PHP 项目保持一致的软删除方式
- **状态管理**: 与 PHP 项目保持一致的状态管理方式
**原则PHP 项目怎么做,我们就怎么做,保持 100% 一致**
### 2. API 设计约束
#### 接口规范
- **URL 格式**: 与 PHP 项目完全一致
- **请求方法**: 与 PHP 项目完全一致
- **响应格式**: 与 PHP 项目完全一致
- **错误处理**: 与 PHP 项目完全一致
**原则PHP 项目怎么设计接口,我们就怎么设计,保持 100% 一致**
#### 权限控制
- **认证**: 与 PHP 项目保持一致的认证方式
- **授权**: 与 PHP 项目保持一致的授权方式
- **数据隔离**: 与 PHP 项目保持一致的数据隔离方式
**原则PHP 项目怎么控制权限,我们就怎么控制,保持 100% 一致**
### 3. 代码质量约束
#### 类型安全
- **必须使用 TypeScript**: 不允许使用 `any` 类型
- **接口定义**: 所有 DTO 和响应对象必须有接口定义
- **类型检查**: 启用严格模式,不允许隐式类型转换
#### 错误处理
- **异常捕获**: 与 PHP 项目保持一致的异常处理方式
- **日志记录**: 与 PHP 项目保持一致的日志记录方式
- **错误响应**: 与 PHP 项目保持一致的错误响应格式
**原则PHP 项目怎么处理错误,我们就怎么处理,保持 100% 一致**
## 🚀 AI 开发指南
### 1. 开发流程
#### 创建新功能模块
1. **分析需求**: 确定功能属于哪个层级 (common/config/core/vendor)
2. **参考 PHP 项目**: 查看 PHP 项目如何实现相同功能
3. **保持一致性**: 与 PHP 项目保持 100% 一致
4. **创建组件**: 按照 NestJS 规范创建相应的组件
5. **配置模块**: 在相应的模块中注册组件
#### 开发原则
**既要尊重 NestJS 框架特性,又要与 PHP 项目业务逻辑保持一致**
- **框架特性**: 按照 NestJS 规范使用装饰器、依赖注入、管道等特性
- **业务逻辑**: 与 PHP 项目保持 100% 一致
- **数据操作**: 与 PHP 项目保持 100% 一致
- **接口设计**: 与 PHP 项目保持 100% 一致
### 2. 常见问题解决
#### 常见问题解决原则
**遇到问题时,首先查看 PHP 项目是如何解决的,然后按照相同方式解决**
- **数据库问题**: 参考 PHP 项目的数据库配置和操作方式
- **权限问题**: 参考 PHP 项目的权限控制方式
- **性能问题**: 参考 PHP 项目的性能优化方式
- **业务问题**: 参考 PHP 项目的业务实现方式
**原则PHP 项目怎么解决,我们就怎么解决,保持 100% 一致**
### 3. 最佳实践
#### 最佳实践原则
**参考 PHP 项目的最佳实践,保持 100% 一致**
- **代码组织**: 与 PHP 项目保持一致的代码组织方式
- **错误处理**: 与 PHP 项目保持一致的错误处理方式
- **测试策略**: 与 PHP 项目保持一致的测试策略
**原则PHP 项目怎么组织代码,我们就怎么组织,保持 100% 一致**
## 📚 参考资源
### 官方文档
- **NestJS**: https://nest.nodejs.cn/
- **TypeORM**: https://typeorm.io/
- **ThinkPHP**: https://doc.thinkphp.cn/
### 项目相关
- **数据库结构**: 参考 PHP 项目的数据库设计
- **API 接口**: 参考 PHP 项目的接口文档
- **业务逻辑**: 参考 PHP 项目的业务实现
## 🎯 总结
### 平衡原则
1. **尊重 NestJS**: 充分利用 NestJS 的装饰器、依赖注入、管道等特性
2. **保持业务一致**: 业务逻辑、数据操作、接口设计与 PHP 项目 100% 一致
3. **框架适配**: 用 NestJS 的方式实现 PHP 项目的功能
### 开发策略
- **看到 PHP 项目怎么做的,我们就怎么做** (业务层面)
- **看到 NestJS 怎么做的,我们就怎么做** (框架层面)
- **两者结合,发挥各自优势**
---
**注意**: 本文档是 AI 开发的重要参考,请严格按照平衡原则进行开发,既要尊重 NestJS 框架特性,又要与 PHP 项目业务逻辑保持一致。

View File

@@ -196,4 +196,46 @@ node auto-mapping-checker.js
---
**重要提醒**: 本文档是AI开发的核心指南所有AI智能体必须严格遵循此工作流程确保开发质量和规范一致性。
**重要提醒**: 本文档是AI开发的核心指南所有AI智能体必须严格遵循此工作流程确保开发质量和规范一致性。
## ✅ AI 恢复队列操作清单(务实闭环)
### 环境准备
- 设置:`AI_ENABLED=true``GLOBAL_PREFIX=api`
- 开发驱动:`QUEUE_DRIVER=memory`(免 Redis/Kafka 干扰)
- 端口建议:`apps/api``3001`
### 验证步骤
```bash
# 1) 队列初始状态
curl -s http://localhost:3001/api/ai/recovery/status
# 2) 模拟失败事件(入队增长)
curl -s "http://localhost:3001/api/ai/recovery/simulate-failure?taskId=T1&severity=high&reason=workflow"
# 3) 再次查看队列(确认增长)
curl -s http://localhost:3001/api/ai/recovery/status
# 4) 处理一个恢复请求(收敛)
curl -s -X POST http://localhost:3001/api/ai/recovery/process-one
# 5) 清空队列(可选)
curl -s -X POST http://localhost:3001/api/ai/recovery/drain
```
### 产出物(各智能体对应)
- S3 InfraOperator`CONFIG_SETUP.md` 更新 AI 环境项与驱动策略
- S4 Developer`AiController` 路由联通,端到端闭环日志截图/记录
- S6 QualityGatee2e 用例覆盖事件→入队→处理→收敛
- S7 Auditor检查 `GLOBAL_PREFIX`、异常过滤器状态码策略、端口映射一致性
- S8 Release变更说明与生产守卫策略移除或保护 `@Public()`
### 生产策略提醒
- 路由守卫:生产环境请加 `JwtAuthGuard/RolesGuard` 或在网关层做访问控制
- 队列驱动:选 `redis``kafka`,实现跨进程/跨实例协同
- 观测性:按需开启指标与追踪,采样与暴露端口需合规
### 参考链接
- 配置指南:`docs/CONFIG_SETUP.md`
- 开发指南:`docs/DEVELOPMENT-GUIDE.md`
- 端点细节:`docs/AI-RECOVERY-DEV.md`

View File

@@ -1,322 +0,0 @@
# NestJS vs PHP 框架 API 接口对比分析
## 📊 总体统计
| 项目 | NestJS | PHP | 差异 |
|------|--------|-----|------|
| 控制器总数 | 164 | 200+ | -36 |
| API接口总数 | 800+ | 1000+ | -200+ |
| 管理端接口 | 120+ | 150+ | -30+ |
| 前台接口 | 40+ | 80+ | -40+ |
## 🔍 详细对比分析
### 1. 系统管理模块 (sys)
#### ✅ NestJS 已实现
- `admin/sys/role` - 角色管理
- `admin/sys/config` - 系统配置
- `admin/sys/area` - 地区管理
- `admin/sys/attachment` - 附件管理
- `admin/sys/schedule` - 定时任务
- `admin/sys/agreement` - 协议管理
- `admin/sys/menu` - 菜单管理
- `admin/sys/common` - 通用接口
- `admin/sys/export` - 导出功能
- `admin/sys/printer` - 打印管理
- `admin/sys/poster` - 海报管理
- `admin/sys/channel` - 渠道管理
- `admin/sys/app` - 应用管理
- `admin/sys/ueditor` - 编辑器
- `api/sys/home` - 首页接口
- `api/sys/settings` - 设置接口
- `api/sys/task` - 任务接口
- `api/sys/area` - 地区接口
- `api/sys/scan` - 扫描接口
#### ❌ NestJS 缺失
- `admin/sys/dict` - 字典管理
- `admin/sys/log` - 日志管理
- `admin/sys/monitor` - 系统监控
- `admin/sys/cache` - 缓存管理
- `admin/sys/backup` - 备份管理
- `admin/sys/upgrade` - 升级管理
### 2. 站点管理模块 (site)
#### ✅ NestJS 已实现
- `adminapi/site` - 站点管理
- `adminapi/site/group` - 站点分组
- `adminapi/site/user` - 站点用户
- `adminapi/site/user-log` - 用户日志
- `adminapi/site/account` - 站点账户
- `adminapi/site/account-log` - 账户日志
#### ❌ NestJS 缺失
- `admin/site/domain` - 域名管理
- `admin/site/theme` - 主题管理
- `admin/site/template` - 模板管理
- `admin/site/plugin` - 插件管理
### 3. 会员管理模块 (member)
#### ✅ NestJS 已实现
- `adminapi/member/member` - 会员管理
- `adminapi/member/level` - 会员等级
- `adminapi/member/address` - 会员地址
- `adminapi/member/account` - 会员账户
- `adminapi/member/cash-out` - 提现管理
- `adminapi/member/sign` - 签到管理
- `adminapi/member/label` - 会员标签
- `adminapi/member/config` - 会员配置
- `api/member/member` - 会员接口
- `api/member/level` - 等级接口
- `api/member/address` - 地址接口
- `api/member/account` - 账户接口
- `api/member/cash-out` - 提现接口
#### ❌ NestJS 缺失
- `admin/member/point` - 积分管理
- `admin/member/coupon` - 优惠券管理
- `admin/member/group` - 会员分组
- `admin/member/statistics` - 会员统计
### 4. 支付管理模块 (pay)
#### ✅ NestJS 已实现
- `adminapi/pay` - 支付管理
- `adminapi/pay-channel` - 支付渠道
- `adminapi/pay/transfer` - 转账管理
- `adminapi/pay/refund` - 退款管理
- `api/pay/pay` - 支付接口
- `api/pay/transfer` - 转账接口
#### ❌ NestJS 缺失
- `admin/pay/order` - 订单管理
- `admin/pay/bill` - 账单管理
- `admin/pay/statistics` - 支付统计
- `admin/pay/report` - 支付报表
### 5. 微信管理模块 (wechat)
#### ✅ NestJS 已实现
- `adminapi/wechat/config` - 微信配置
- `api/wechat/serve` - 微信服务
- `api/wechat/wechat` - 微信接口
#### ❌ NestJS 缺失
- `admin/wechat/menu` - 微信菜单
- `admin/wechat/template` - 微信模板
- `admin/wechat/reply` - 自动回复
- `admin/wechat/media` - 素材管理
- `admin/wechat/qrcode` - 二维码管理
- `admin/wechat/user` - 微信用户
- `admin/wechat/statistics` - 微信统计
### 6. 小程序管理模块 (weapp)
#### ✅ NestJS 已实现
- `adminapi/weapp/config` - 小程序配置
- `api/weapp/serve` - 小程序服务
- `api/weapp/weapp` - 小程序接口
#### ❌ NestJS 缺失
- `admin/weapp/version` - 版本管理
- `admin/weapp/template` - 模板管理
- `admin/weapp/package` - 包管理
- `admin/weapp/delivery` - 发布管理
- `admin/weapp/statistics` - 小程序统计
### 7. 插件管理模块 (addon)
#### ✅ NestJS 已实现
- `adminapi/addon/addon` - 插件管理
- `adminapi/addon/backup` - 备份管理
- `adminapi/addon/upgrade` - 升级管理
- `adminapi/addon/develop` - 开发管理
- `adminapi/addon/app` - 应用管理
- `api/addon` - 插件接口
#### ❌ NestJS 缺失
- `admin/addon/install` - 安装管理
- `admin/addon/uninstall` - 卸载管理
- `admin/addon/config` - 插件配置
- `admin/addon/log` - 插件日志
### 8. 文件管理模块 (upload)
#### ✅ NestJS 已实现
- `adminapi/upload` - 文件上传
- `adminapi/upload/storage` - 存储管理
- `api/upload` - 上传接口
#### ❌ NestJS 缺失
- `admin/upload/category` - 文件分类
- `admin/upload/watermark` - 水印管理
- `admin/upload/compress` - 压缩管理
### 9. 认证管理模块 (auth)
#### ✅ NestJS 已实现
- `adminapi/auth/captcha` - 验证码
- `adminapi/auth/login-config` - 登录配置
- `api/login/config` - 登录配置接口
- `api/login/register` - 注册接口
#### ❌ NestJS 缺失
- `admin/auth/user` - 用户管理
- `admin/auth/role` - 角色管理
- `admin/auth/permission` - 权限管理
- `admin/auth/session` - 会话管理
### 10. 通知管理模块 (notice)
#### ✅ NestJS 已实现
- `adminapi/notice/notice-log` - 通知日志
#### ❌ NestJS 缺失
- `admin/notice/sms` - 短信管理
- `admin/notice/email` - 邮件管理
- `admin/notice/push` - 推送管理
- `admin/notice/template` - 模板管理
- `admin/notice/statistics` - 通知统计
### 11. 统计管理模块 (stat)
#### ✅ NestJS 已实现
- `adminapi/stat/site-stat` - 站点统计
#### ❌ NestJS 缺失
- `admin/stat/visitor` - 访客统计
- `admin/stat/order` - 订单统计
- `admin/stat/member` - 会员统计
- `admin/stat/pay` - 支付统计
- `admin/stat/report` - 报表管理
### 12. DIY管理模块 (diy)
#### ✅ NestJS 已实现
- `api/diy/diy` - DIY接口
- `api/diy/form` - 表单接口
#### ❌ NestJS 缺失
- `admin/diy/config` - DIY配置
- `admin/diy/route` - 路由管理
- `admin/diy/template` - 模板管理
- `admin/diy/component` - 组件管理
### 13. 其他模块
#### ✅ NestJS 已实现
- `adminapi/niucloud/module` - 模块管理
- `adminapi/niucloud/cloud` - 云服务
- `adminapi/verify/verifier` - 验证器
- `adminapi/verify/verify` - 验证管理
- `adminapi/dict/dict` - 字典管理
- `adminapi/generator/generator` - 代码生成器
- `adminapi/poster/poster` - 海报管理
- `adminapi/aliapp/config` - 支付宝小程序配置
- `adminapi/wxoplatform/config` - 微信开放平台配置
- `adminapi/wxoplatform/weapp-version` - 微信小程序版本
- `adminapi/wxoplatform/server` - 服务器管理
- `adminapi/wxoplatform/oplatform` - 开放平台
- `adminapi/applet/site-version` - 应用版本
- `adminapi/applet/version` - 版本管理
- `adminapi/applet/version-download` - 版本下载
- `adminapi/channel/h5` - H5渠道
- `adminapi/channel/pc` - PC渠道
- `adminapi/home/site` - 首页站点
- `adminapi/user/user` - 用户管理
#### ❌ NestJS 缺失
- `admin/cms/article` - 文章管理
- `admin/cms/category` - 分类管理
- `admin/cms/tag` - 标签管理
- `admin/cms/comment` - 评论管理
- `admin/mall/goods` - 商品管理
- `admin/mall/category` - 商品分类
- `admin/mall/order` - 订单管理
- `admin/mall/cart` - 购物车
- `admin/mall/coupon` - 优惠券
- `admin/mall/promotion` - 促销活动
- `admin/mall/inventory` - 库存管理
- `admin/mall/shipping` - 物流管理
- `admin/mall/refund` - 退款管理
- `admin/mall/review` - 评价管理
- `admin/mall/statistics` - 商城统计
## 🚨 关键缺失分析
### 1. 电商核心功能缺失
- **商品管理**: 商品CRUD、分类、标签、属性
- **订单管理**: 订单流程、状态管理、物流跟踪
- **购物车**: 购物车管理、结算流程
- **优惠券**: 优惠券系统、促销活动
- **库存管理**: 库存控制、预警系统
- **物流管理**: 物流跟踪、配送管理
### 2. 内容管理功能缺失
- **CMS系统**: 文章、分类、标签管理
- **评论系统**: 评论管理、审核流程
- **媒体管理**: 图片、视频、文档管理
### 3. 高级功能缺失
- **系统监控**: 性能监控、日志分析
- **缓存管理**: 缓存策略、清理机制
- **备份恢复**: 数据备份、恢复功能
- **升级管理**: 系统升级、版本管理
### 4. 统计分析功能缺失
- **业务统计**: 订单、会员、支付统计
- **访客分析**: 访问统计、用户行为
- **报表系统**: 各类业务报表
## 📈 完整性评估
| 模块 | 完成度 | 缺失接口数 | 优先级 |
|------|--------|------------|--------|
| 系统管理 | 85% | 6 | 高 |
| 站点管理 | 75% | 4 | 高 |
| 会员管理 | 80% | 4 | 高 |
| 支付管理 | 70% | 4 | 高 |
| 微信管理 | 40% | 6 | 中 |
| 小程序管理 | 40% | 5 | 中 |
| 插件管理 | 75% | 4 | 中 |
| 文件管理 | 60% | 3 | 中 |
| 认证管理 | 50% | 4 | 高 |
| 通知管理 | 20% | 5 | 中 |
| 统计管理 | 20% | 5 | 中 |
| DIY管理 | 40% | 4 | 低 |
| 电商模块 | 0% | 15+ | 高 |
| 内容管理 | 0% | 5+ | 中 |
## 🎯 建议修复优先级
### 高优先级 (必须修复)
1. **电商核心功能** - 商品、订单、购物车管理
2. **认证权限系统** - 用户、角色、权限管理
3. **系统管理完善** - 字典、日志、监控功能
4. **支付系统完善** - 订单、账单、统计功能
### 中优先级 (建议修复)
1. **微信小程序功能** - 菜单、模板、用户管理
2. **通知系统** - 短信、邮件、推送功能
3. **统计分析** - 各类业务统计报表
4. **文件管理** - 分类、水印、压缩功能
### 低优先级 (可选修复)
1. **DIY系统** - 模板、组件管理
2. **内容管理** - CMS、评论系统
3. **高级功能** - 监控、备份、升级
## 📝 总结
NestJS框架目前实现了约**60%**的API接口主要缺失
1. **电商核心功能** - 这是最大的功能缺口
2. **微信小程序完整功能** - 菜单、模板、用户管理
3. **统计分析系统** - 各类业务统计和报表
4. **内容管理系统** - 文章、分类、评论管理
5. **高级系统功能** - 监控、备份、升级管理
建议优先实现电商核心功能,这是业务系统的核心,其他功能可以逐步完善。

View File

@@ -1,193 +0,0 @@
# 架构基线与 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 为唯一权威对齐实现。

View File

@@ -226,74 +226,8 @@ curl -X POST http://localhost:3000/adminapi/config/dynamic \
## 🧪 测试配置
### 验证配置
本章节的 AI 专属配置与守卫说明已迁移至 v1 模块文档:
- `wwjcloud-nest-v1/docs/AI-RECOVERY-DEV.md`
- `wwjcloud-nest-v1/docs/AI-RECOVERY-SECURITY.md`
```bash
# 启动应用后访问配置验证接口
curl http://localhost:3000/adminapi/config/validate
# 查看系统配置
curl http://localhost:3000/adminapi/config/system
```
### 配置检查清单
- [ ] 数据库连接正常
- [ ] Redis 连接正常
- [ ] JWT 密钥已设置
- [ ] 日志级别合适
- [ ] 文件上传路径存在
- [ ] 第三方服务配置正确
## 🚨 常见问题
### 1. 配置不生效
**问题**:修改了 `.env` 文件但配置没有生效
**解决**
- 确保 `.env` 文件在项目根目录
- 重启应用
- 检查环境变量名称是否正确
### 2. 数据库连接失败
**问题**:无法连接到数据库
**解决**
- 检查 `DB_HOST`、`DB_PORT`、`DB_USERNAME`、`DB_PASSWORD`
- 确保数据库服务正在运行
- 检查防火墙设置
### 3. Redis 连接失败
**问题**:无法连接到 Redis
**解决**
- 检查 `REDIS_HOST`、`REDIS_PORT`、`REDIS_PASSWORD`
- 确保 Redis 服务正在运行
- 检查 Redis 配置
### 4. JWT 错误
**问题**JWT 相关错误
**解决**
- 确保 `JWT_SECRET` 已设置且足够复杂
- 检查 `JWT_EXPIRES_IN` 格式
- 验证 `JWT_ALGORITHM` 设置
## 📚 相关文档
- [配置中心使用指南](../src/config/README.md)
- [API 文档](http://localhost:3000/docs)
- [健康检查](http://localhost:3000/health)
## 🤝 支持
如果遇到配置问题,请:
1. 检查本文档的常见问题部分
2. 查看应用日志
3. 使用配置验证接口检查配置
4. 联系技术支持团队
项目主文档不再承载 v1 专属说明,请在 v1 目录内查看与维护。

311
docs/DEVELOPMENT-GUIDE.md Normal file
View File

@@ -0,0 +1,311 @@
# WWJCloud NestJS 开发指导原则
> 基于 v0.1.1 版本真实项目结构分析制定
> 更新时间: 2025-01-27
> 适用范围: WWJCloud NestJS 项目开发
## 🎯 核心开发原则
### 1. 框架使用原则
- **框架层面**: 100% 使用 NestJS 的方式和特性
- **业务层面**: 与 PHP 项目保持 100% 一致
- **数据层面**: 与 PHP 项目数据库结构 100% 一致
### 2. 开发约束条件
-**必须**: 基于 PHP 项目真实代码进行开发
-**必须**: 基于真实数据库表结构进行映射
-**必须**: 遵循项目既定的命名规范
-**禁止**: 自创业务逻辑或数据结构
-**禁止**: 编写骨架代码或 TODO 注释
-**禁止**: 硬编码业务数据或配置
## 📁 项目结构规范
### 目录层级
```
src/
├── config/ # 配置管理层
│ ├── *.config.ts # 各类配置文件
│ ├── config.module.ts # 配置模块
│ └── *.entity.ts # 配置相关实体
├── common/ # 通用服务层
│ ├── base/ # 基础服务
│ ├── utils/ # 工具类
│ ├── interceptors/ # 拦截器
│ ├── guards/ # 守卫
│ └── pipes/ # 管道
├── core/ # 核心基础设施层
│ └── (待开发)
└── vendor/ # 第三方服务适配层
├── pay/ # 支付服务
├── sms/ # 短信服务
└── upload/ # 上传服务
```
## 🏷️ 命名规范标准
### 文件命名规范
#### 1. 实体文件
- **格式**: `kebab-case.entity.ts`
- **示例**: `dynamic-config.entity.ts`, `sys-user.entity.ts`
- **说明**: 使用短横线分隔,以 `.entity.ts` 结尾
#### 2. 服务文件
- **格式**: `kebab-case.service.ts`
- **示例**: `config-center.service.ts`, `pay.service.ts`
- **说明**: 使用短横线分隔,以 `.service.ts` 结尾
#### 3. 控制器文件
- **格式**: `kebab-case.controller.ts`
- **示例**: `config-center.controller.ts`, `auth.controller.ts`
- **说明**: 使用短横线分隔,以 `.controller.ts` 结尾
#### 4. 工具类文件
- **格式**: `kebab-case.util.ts`
- **示例**: `json.util.ts`, `string.util.ts`
- **说明**: 使用短横线分隔,以 `.util.ts` 结尾
#### 5. 模块文件
- **格式**: `kebab-case.module.ts`
- **示例**: `config.module.ts`, `auth.module.ts`
- **说明**: 使用短横线分隔,以 `.module.ts` 结尾
#### 6. DTO 文件
- **格式**: `PascalCaseDto.ts`
- **示例**: `CreateUserDto.ts`, `UpdateConfigDto.ts`
- **说明**: 使用 PascalCase`Dto.ts` 结尾
### 类命名规范
#### 1. 实体类
- **格式**: `PascalCase`
- **示例**: `DynamicConfig`, `SysUser`, `MemberLevel`
- **说明**: 与数据库表名对应,使用 PascalCase
#### 2. 服务类
- **格式**: `PascalCase + Service`
- **示例**: `ConfigCenterService`, `PayService`, `AuthService`
- **说明**: 业务名称 + Service 后缀
#### 3. 控制器类
- **格式**: `PascalCase + Controller`
- **示例**: `ConfigCenterController`, `AuthController`
- **说明**: 业务名称 + Controller 后缀
#### 4. 工具类
- **格式**: `PascalCase + Util`
- **示例**: `JsonUtil`, `StringUtil`, `DateUtil`
- **说明**: 功能名称 + Util 后缀
#### 5. DTO 类
- **格式**: `操作动词 + 业务名称 + Dto`
- **示例**: `CreateUserDto`, `UpdateConfigDto`, `QueryMemberDto`
- **说明**: 明确表示操作类型和业务对象
### 方法命名规范
#### 1. 业务方法
- **格式**: `camelCase`
- **原则**: 与 PHP 项目方法名保持一致
- **示例**: `getUserList()`, `addUser()`, `updateConfig()`
#### 2. 私有方法
- **格式**: `camelCase`
- **示例**: `private validateUser()`, `private formatData()`
#### 3. 生命周期方法
- **格式**: 按 NestJS 标准
- **示例**: `onModuleInit()`, `onApplicationBootstrap()`
### 变量命名规范
#### 1. 私有属性
- **格式**: `private readonly camelCase`
- **示例**: `private readonly logger`, `private readonly configService`
#### 2. 业务变量
- **格式**: `camelCase`
- **原则**: 与 PHP 项目变量名保持一致
- **示例**: `userId`, `userName`, `configKey`
#### 3. 常量
- **格式**: `UPPER_SNAKE_CASE`
- **示例**: `DEFAULT_PAGE_SIZE`, `MAX_RETRY_COUNT`
### 数据库相关命名
#### 1. 表名映射
- **原则**: 与 PHP 项目表名 100% 一致
- **示例**: `nc_sys_config`, `nc_sys_user`, `nc_member_level`
- **说明**: 不能修改任何表名或前缀
#### 2. 字段名映射
- **原则**: 与 PHP 项目字段名 100% 一致
- **示例**: `site_id`, `config_key`, `create_time`, `update_time`
- **说明**: 不能修改任何字段名或类型
## 🔧 开发最佳实践
### Nest DI 与导入规范(重要)
- DI 相关类(如 `MetricsService``CacheService``LockService`)统一使用深路径导入:`@wwjcloud/wwjcloud-boot/infra/...`
- 禁止在 AI 模块中通过聚合路径 `@wwjcloud/wwjcloud-boot` 导入上述 DI 类,避免符号不一致导致依赖解析失败。
- 优先使用“按类型注入”,仅在确有抽象需要时使用令牌,并确保令牌在提供方模块中唯一、稳定导出。
- 避免在运行期使用 `ModuleRef.get` 动态解析,除非处理循环依赖或跨域解耦的极端场景。
- 约定Boot 层模块负责提供与导出,业务模块仅按类型消费,不再重复定义别名提供者。
### 1. 依赖注入
```typescript
@Injectable()
export class UserService {
constructor(
private readonly userRepository: Repository<User>,
private readonly configService: ConfigService,
private readonly logger: Logger,
) {}
}
```
### 2. 装饰器使用
```typescript
@Controller('api/user')
@UseGuards(JwtAuthGuard)
export class UserController {
@Get('list')
@UseInterceptors(ResponseInterceptor)
async getUserList(@Query() query: QueryUserDto) {
// 实现逻辑
}
}
```
### 3. 异常处理
```typescript
@Injectable()
export class UserService {
async findUser(id: number) {
const user = await this.userRepository.findOne({ where: { id } });
if (!user) {
throw new NotFoundException('用户不存在');
}
return user;
}
}
```
### 4. 数据验证
```typescript
export class CreateUserDto {
@IsString()
@IsNotEmpty()
username: string;
@IsEmail()
email: string;
@IsOptional()
@IsString()
nickname?: string;
}
```
## 📋 开发检查清单
### 开发前检查
- [ ] 已查看对应的 PHP 源码文件
- [ ] 已查看相关的数据库表结构
- [ ] 已理解真实的业务逻辑
- [ ] 已确认所有依赖关系
### 开发中检查
- [ ] 文件命名符合项目规范
- [ ] 类命名符合项目规范
- [ ] 方法命名与 PHP 项目一致
- [ ] 数据库字段映射准确
- [ ] 业务逻辑与 PHP 项目一致
### 开发后检查
- [ ] 代码可以正常编译
- [ ] 所有依赖正确注入
- [ ] 数据库操作正常
- [ ] API 接口功能正确
- [ ] 异常处理完善
## 🚫 常见错误避免
### 1. 命名错误
- ❌ 错误: `userController.ts` (camelCase)
- ✅ 正确: `user.controller.ts` (kebab-case)
### 2. 文件结构错误
- ❌ 错误: 按技术层级划分目录
- ✅ 正确: 按业务模块划分目录
### 3. 业务逻辑错误
- ❌ 错误: 自创业务逻辑
- ✅ 正确: 基于 PHP 项目真实代码
### 4. 数据库映射错误
- ❌ 错误: 修改表名或字段名
- ✅ 正确: 与 PHP 项目 100% 一致
## 📚 参考资源
- **项目仓库**: wwjcloud-nsetjs
- **PHP 项目**: niucloud-php
- **数据库结构**: `sql/wwjcloud.sql`
- **NestJS 官方文档**: https://nestjs.com/
- **TypeORM 文档**: https://typeorm.io/
---
> 本文档基于项目真实结构制定,请严格遵循以确保代码质量和项目一致性。
## 🔧 AI 恢复模块集成与测试
### 模块挂载
- 根应用:`AI_ENABLED=true` 时动态导入 `AiModule`
- `apps/api`:直接导入 `AiModule`,受 `GLOBAL_PREFIX=api` 影响
- 开发阶段:`AiController` 使用 `@Public()` 便于无令牌验证;生产需加守卫或网关策略
### 路由与前缀
- 推荐统一使用 `GLOBAL_PREFIX=api` 以避免基础设施路由状态码异常
- 端点示例:
- `GET /api/ai/recovery/status`
- `GET /api/ai/recovery/simulate-failure?taskId=T1&severity=high&reason=dev`
- `POST /api/ai/recovery/process-one`
- `POST /api/ai/recovery/drain`
### 队列驱动策略
- 开发:`QUEUE_DRIVER=memory`,避免 Kafka/Redis 干扰,快速闭环
- 生产:推荐 `redis` 或企业内部 `kafka`,实现跨进程/跨实例协同
### 依赖注入规范(与 DI 章节一致)
- Boot 层 DI 使用深路径导入:`@wwjcloud/wwjcloud-boot/infra/...`
- 业务模块按类型消费,避免重复定义令牌与别名
- 事件监听器与服务在 `AiModule` 内提供并导出:`AiSelfHealListener``AiRecoveryService`
### 本地端到端验证
```bash
# 查看初始队列大小
curl -s http://localhost:3001/api/ai/recovery/status
# 模拟失败(入队)
curl -s "http://localhost:3001/api/ai/recovery/simulate-failure?taskId=T1&severity=high&reason=dev"
# 再次查看(应增长)
curl -s http://localhost:3001/api/ai/recovery/status
# 处理一个(收敛)
curl -s -X POST http://localhost:3001/api/ai/recovery/process-one
# 清空队列(可选)
curl -s -X POST http://localhost:3001/api/ai/recovery/drain
```
### 测试建议
- e2e覆盖失败事件触发 → 入队 → 处理 → 收敛的闭环
- 异常过滤:`GLOBAL_PREFIX=api``/api/metrics``/api/health` 保留原始状态码
- 队列驱动兼容:`memory``redis``kafka` 三模式最小用例
### 参考
- 详细指南:`docs/AI-RECOVERY-DEV.md`
- 工作流规范:`docs/AI-WORKFLOW-GUIDE.md`

View File

@@ -1,352 +0,0 @@
# 🏗️ 三大框架原则对比与统一标准
## 📋 概述
本文档为AI开发者提供NestJS、ThinkPHP、Spring Boot三大框架的详细对比包含功能映射、开发规范、命名约定和目录结构对比确保AI能够更好地理解和开发功能。
**重要原则:既要尊重 NestJS 框架特性,又要与 PHP 项目业务逻辑保持一致**
## 🔄 核心功能映射
### 1. 基础架构对比
| 功能模块 | ThinkPHP | NestJS | Spring Boot | 对应关系 | 实现方式 |
|---------|----------|---------|-------------|----------|----------|
| **路由系统** | `Route::get()` | `@Get()` | `@GetMapping()` | ✅ 直接对应 | 装饰器路由 |
| **控制器** | `Controller` | `@Controller()` | `@RestController` | ✅ 直接对应 | 装饰器控制器 |
| **中间件** | `Middleware` | `@UseGuards()` | `@Component` | ✅ 功能对应 | 守卫/拦截器 |
| **依赖注入** | `Container::get()` | `constructor()` | `@Autowired` | ✅ 更强大 | 自动注入 |
| **数据验证** | `Validate` | `@UsePipes()` | `@Valid` | ✅ 功能对应 | 验证管道 |
| **异常处理** | `Exception` | `@UseFilters()` | `@ExceptionHandler` | ✅ 功能对应 | 异常过滤器 |
### 2. 数据库操作对比
| 功能模块 | ThinkPHP | NestJS | Spring Boot | 对应关系 | 实现方式 |
|---------|----------|---------|-------------|----------|----------|
| **模型定义** | `Model` | `@Entity()` | `@Entity` | ✅ 功能对应 | TypeORM/JPA 实体 |
| **查询构建** | `Db::table()` | `Repository` | `JpaRepository` | ✅ 功能对应 | TypeORM/JPA 仓库 |
| **关联关系** | `hasMany()` | `@OneToMany()` | `@OneToMany` | ✅ 功能对应 | ORM 关联 |
| **事务处理** | `Db::startTrans()` | `@Transaction()` | `@Transactional` | ✅ 功能对应 | 声明式事务 |
| **软删除** | `SoftDelete` | `@DeleteDateColumn()` | `@SQLDelete` | ✅ 功能对应 | ORM 软删除 |
### 3. 缓存和会话
| 功能模块 | ThinkPHP | NestJS | Spring Boot | 对应关系 | 实现方式 |
|---------|----------|---------|-------------|----------|----------|
| **缓存管理** | `Cache::get()` | `@Inject(CACHE_MANAGER)` | `@Cacheable` | ✅ 功能对应 | Cache Manager |
| **会话管理** | `Session` | `@Session()` | `HttpSession` | ✅ 功能对应 | Session 装饰器 |
| **Redis 集成** | `Redis::get()` | `@InjectRedis()` | `@Autowired RedisTemplate` | ✅ 功能对应 | Redis 模块 |
## 🏗️ 目录结构对比
### ThinkPHP 目录结构
```
thinkphp/
├── app/ # 应用目录
│ ├── controller/ # 控制器
│ ├── model/ # 模型
│ ├── service/ # 服务层
│ └── middleware/ # 中间件
├── config/ # 配置文件
├── public/ # 公共资源
├── route/ # 路由定义
└── vendor/ # 第三方包
```
### Spring Boot 目录结构
```
spring-boot/
├── src/main/java/
│ ├── controller/ # 控制器层
│ ├── service/ # 服务层
│ ├── repository/ # 数据访问层
│ ├── entity/ # 实体层
│ ├── dto/ # 数据传输对象
│ └── config/ # 配置类
├── src/main/resources/
│ ├── application.yml # 配置文件
│ └── static/ # 静态资源
└── pom.xml # 依赖管理
```
### NestJS 目录结构
```
wwjcloud/
├── src/ # 源代码目录
│ ├── common/ # 通用服务层 (对应 ThinkPHP app/)
│ │ ├── auth/ # 认证授权模块
│ │ ├── member/ # 会员管理模块
│ │ ├── sys/ # 系统管理模块
│ │ ├── site/ # 站点管理模块
│ │ ├── addon/ # 插件管理模块
│ │ ├── upload/ # 文件上传模块
│ │ └── ... # 其他业务模块
│ ├── config/ # 配置管理层 (对应 ThinkPHP config/)
│ │ ├── database/ # 数据库配置
│ │ ├── redis/ # Redis配置
│ │ ├── jwt/ # JWT配置
│ │ └── app/ # 应用配置
│ ├── core/ # 核心基础设施层 (对应 ThinkPHP 核心)
│ │ ├── base/ # 基础类
│ │ ├── database/ # 数据库核心
│ │ ├── security/ # 安全核心
│ │ └── interceptors/ # 拦截器
│ └── vendor/ # 第三方服务适配层 (对应 ThinkPHP vendor/)
│ ├── payment/ # 支付适配器
│ ├── storage/ # 存储适配器
│ └── sms/ # 短信适配器
├── public/ # 公共资源
└── package.json # 依赖管理
```
### 层级对应关系
| 层级 | ThinkPHP | Spring Boot | NestJS | 说明 |
|------|----------|-------------|---------|------|
| **应用层** | `app/` | `src/main/java/` | `src/common/` | 业务逻辑和通用服务 |
| **配置层** | `config/` | `src/main/resources/` | `src/config/` | 配置管理和环境变量 |
| **核心层** | 框架核心 | Spring框架 | `src/core/` | 基础设施和核心功能 |
| **适配层** | `vendor/` | 第三方依赖 | `src/vendor/` | 第三方服务集成 |
## 📝 命名规范对比
### 1. PHP (ThinkPHP) 实际命名规范
基于对 `niucloud-php` 项目的实际分析:
| 文件类型 | 命名规范 | 实际示例 | 说明 |
|---------|----------|----------|------|
| **控制器** | `PascalCase.php` | `User.php`, `Order.php` | 无Controller后缀 |
| **模型** | `PascalCase.php` | `SysUser.php`, `MemberLevel.php` | 直接使用业务名称 |
| **验证器** | `PascalCase.php` | `User.php`, `Member.php` | 无Validate后缀 |
| **服务** | `PascalCase.php` | `UserService.php`, `OrderService.php` | 有Service后缀 |
| **目录** | `snake_case` | `adminapi/`, `validate/`, `model/` | 小写下划线 |
### 2. Java (Spring Boot) 标准命名规范
| 文件类型 | 命名规范 | 标准示例 | 说明 |
|---------|----------|----------|------|
| **控制器** | `PascalCase + Controller.java` | `UserController.java`, `OrderController.java` | 有Controller后缀 |
| **实体** | `PascalCase.java` | `User.java`, `Order.java` | 直接使用业务名称 |
| **服务** | `PascalCase + Service.java` | `UserService.java`, `OrderService.java` | 有Service后缀 |
| **DTO** | `PascalCase + Dto.java` | `CreateUserDto.java`, `UserResponseDto.java` | 有Dto后缀 |
| **仓储** | `PascalCase + Repository.java` | `UserRepository.java` | 有Repository后缀 |
| **目录** | `camelCase` | `controller/`, `service/`, `dto/` | 驼峰命名 |
### 3. NestJS 框架标准命名规范
| 文件类型 | 命名规范 | 标准示例 | 说明 |
|---------|----------|----------|------|
| **控制器** | `camelCaseController.ts` | `userController.ts`, `userProfileController.ts` | camelCase + 后缀 |
| **实体** | `camelCase.entity.ts` | `userEntity.ts`, `sysUser.entity.ts` | camelCase + 后缀 |
| **服务** | `camelCase.service.ts` | `userService.ts`, `userProfileService.ts` | camelCase + 后缀 |
| **DTO** | `camelCase.dto.ts` | `createUser.dto.ts`, `updateUser.dto.ts` | camelCase + 后缀 |
| **模块** | `camelCase.module.ts` | `userModule.ts`, `adminModule.ts` | camelCase + 后缀 |
| **目录** | `camelCase` | `controllers/`, `services/`, `dto/` | camelCase 目录 |
**重要说明**
- **文件名**:使用 `camelCase.suffix.ts` 格式(本项目统一规范)
- **类名**:使用 `PascalCase` 格式TypeScript标准
- **示例**:文件 `userController.ts` 导出类 `UserController`
## 🎯 统一命名标准(最终规范)
### 核心原则
1. **业务对齐优先**: 业务逻辑命名与PHP项目保持一致
2. **框架规范遵循**: NestJS特有文件类型按NestJS规范
3. **可读性保证**: 确保命名清晰、语义明确
### 文件命名规范(最终版)
#### 实体文件命名
- **规范**: `{PHP模型名首字母小写}.entity.ts`
- **对应关系**: 与PHP模型文件一一对应但使用PascalCase命名
- **示例**:
- PHP `SysUser.php` → NestJS `SysUser.entity.ts`
- PHP `SysConfig.php` → NestJS `SysConfig.entity.ts`
- PHP `MemberLevel.php` → NestJS `MemberLevel.entity.ts`
#### 控制器文件命名
- **规范**: `{模块名}Controller.ts` (NestJS 标准使用camelCase)
- **示例**: `userController.ts`, `orderController.ts`, `adminController.ts`
#### 服务文件命名
- **规范**: `{模块名}.service.ts` (NestJS 标准使用PascalCase)
- **示例**: `User.service.ts`, `Order.service.ts`, `Admin.service.ts`
#### DTO文件命名
- **规范**: `{操作动词}{模块名}Dto.ts` (项目实际使用格式)
- **示例**: `CreateUserDto.ts`, `UpdateUserDto.ts`, `QueryAdminDto.ts`
#### 验证器文件命名
- **规范**: `{模块名}.validator.ts` (区别于PHP无后缀)
- **示例**: `user.validator.ts`, `member.validator.ts`
#### 模块文件命名
- **规范**: `{模块名}.module.ts` (NestJS 标准)
- **示例**: `user.module.ts`, `admin.module.ts`, `auth.module.ts`
### 类命名规范(最终版)
#### 实体类命名
- **规范**: `PascalCase` (与PHP模型名保持一致)
- **示例**: `SysUser`, `SysConfig`, `MemberLevel`
#### 控制器类命名
- **规范**: `PascalCase + Controller`
- **示例**: `UserController`, `AdminController`, `AuthController`
#### 服务类命名
- **规范**: `PascalCase + Service`
- **示例**: `UserService`, `OrderService`, `AdminService`
#### DTO类命名
- **规范**: `PascalCase + Dto`
- **示例**: `CreateUserDto`, `UpdateUserDto`, `QueryAdminDto`
### 方法命名规范(最终版)
#### 业务逻辑方法
**优先与 PHP 项目保持一致NestJS 特有方法按 NestJS 规范:**
- **CRUD 方法**: 与 PHP 项目方法名保持一致
- **查询方法**: 与 PHP 项目方法名保持一致
- **业务方法**: 与 PHP 项目方法名保持一致
- **NestJS 生命周期方法**: 按 NestJS 规范,如 `onModuleInit()`, `onApplicationBootstrap()`
#### 变量命名规范
**业务变量优先与 PHP 项目保持一致NestJS 特有变量按 NestJS 规范:**
- **业务变量**: 与 PHP 项目变量名保持一致
- **业务常量**: 与 PHP 项目常量名保持一致
- **NestJS 注入变量**: 按 NestJS 规范,如 `private readonly userService: UserService`
- **TypeORM 相关变量**: 按 TypeORM 规范,如 `@InjectRepository(User)`
## 🔧 数据库命名规范
### 重要约束:与 PHP 项目共用数据库,必须保持命名一致
- **表名**: 与 PHP 项目完全一致,包括前缀和命名方式
- **字段名**: 与 PHP 项目完全一致,不能修改任何字段名
- **字段类型**: 与 PHP 项目完全一致,不能修改字段类型
- **索引结构**: 与 PHP 项目完全一致,不能添加或删除索引
**原则:看到 PHP 项目怎么命名,我们就怎么命名,保持 100% 一致**
## 🏗️ 模块目录结构规范
### 标准模块目录结构
```
src/common/{模块名}/
├── {模块名}.module.ts # 模块定义文件
├── controllers/ # 控制器目录
│ ├── adminapi/ # 管理端控制器目录对应PHP adminapi/controller
│ │ └── {模块名}Controller.ts
│ └── api/ # 前台控制器目录对应PHP api/controller
│ └── {模块名}Controller.ts
├── services/ # 服务目录
│ ├── admin/ # 管理端服务目录对应PHP service/admin
│ │ └── {模块名}.service.ts
│ ├── api/ # 前台服务目录对应PHP service/api
│ │ └── {模块名}.service.ts
│ └── core/ # 核心服务目录对应PHP service/core
│ └── {模块名}.service.ts
├── entity/ # 实体目录对应PHP model
│ ├── {实体名}.entity.ts # 实体文件PascalCase.entity.ts格式
│ └── {配置实体}.entity.ts # 配置实体文件
├── dto/ # DTO 目录对应PHP validate
│ ├── admin/ # 管理端DTO目录
│ │ ├── Create{模块名}Dto.ts
│ │ └── Update{模块名}Dto.ts
│ └── api/ # 前台DTO目录
│ ├── {操作}Dto.ts
│ └── {操作}Dto.ts
├── guards/ # 守卫目录(可选)
├── decorators/ # 装饰器目录(可选)
├── interfaces/ # 接口目录(可选)
└── enums/ # 枚举目录(可选)
```
### 实际示例基于auth模块
```
src/common/auth/
├── auth.module.ts
├── controllers/
│ ├── adminapi/ # 管理端控制器目录
│ │ └── authController.ts
│ └── api/ # 前台控制器目录
│ └── authController.ts
├── services/
│ ├── admin/ # 管理端服务目录
│ │ └── Auth.service.ts
│ ├── api/ # 前台服务目录
│ │ └── Auth.service.ts
│ └── core/ # 核心服务目录
│ └── Auth.service.ts
├── entity/
│ └── AuthToken.entity.ts
├── dto/
│ ├── admin/ # 管理端DTO目录
│ │ ├── CreateAuthDto.ts
│ │ └── UpdateAuthDto.ts
│ └── api/ # 前台DTO目录
│ ├── LoginDto.ts
│ └── RegisterDto.ts
├── guards/
│ ├── GlobalAuthGuard.ts
│ ├── JwtAuthGuard.ts
│ └── RolesGuard.ts
├── decorators/
│ ├── RolesDecorator.ts
│ ├── public.decorator.ts
│ └── user-context.decorator.ts
└── interfaces/
└── user.interface.ts
```
## 🔄 模块间通信规范
### 模块依赖管理
## 🎯 框架特性对比
### 依赖注入对比
| 框架 | 实现方式 | 示例 |
|------|----------|------|
| **ThinkPHP** | 容器获取 | `Container::get('UserService')` |
| **Spring Boot** | 注解注入 | `@Autowired private UserService userService;` |
| **NestJS** | 构造函数注入 | `constructor(private userService: UserService) {}` |
### 装饰器对比
| 功能 | ThinkPHP | Spring Boot | NestJS |
|------|----------|-------------|---------|
| **路由** | `Route::get()` | `@GetMapping()` | `@Get()` |
| **验证** | `validate()` | `@Valid` | `@UsePipes()` |
| **事务** | `Db::startTrans()` | `@Transactional` | `@Transaction()` |
| **缓存** | `Cache::remember()` | `@Cacheable` | `@UseInterceptors()` |
## 📚 最佳实践
### 1. 业务逻辑迁移原则
- 严格按照PHP项目的业务逻辑实现
- 保持API接口的输入输出格式一致
- 维护相同的数据验证规则
- 确保错误处理机制一致
### 2. 框架特性使用原则
- 充分利用NestJS的依赖注入特性
- 使用装饰器简化代码编写
- 采用模块化设计提高代码可维护性
- 利用TypeScript的类型系统提高代码质量
### 3. 性能优化原则
- 合理使用缓存机制
- 优化数据库查询
- 实现异步处理
- 采用批量操作减少数据库访问
---
**重要提醒**: 本文档是三框架对比的权威指南AI开发者必须严格遵循这些原则确保代码质量和规范一致性。

View File

@@ -1,139 +0,0 @@
# 🎉 PHP 业务迁移成功报告
## 📊 迁移执行结果
### ✅ 迁移统计
- **总表数**: 9张表
- **成功迁移**: 3张表 (sys_user, sys_menu, sys_config)
- **生成文件数**: 39个文件
- **成功率**: 33.3% (核心系统表 100% 成功)
### 🏗️ 成功迁移的模块
#### 1. 系统核心模块 (100% 成功)
-**sys_user** - 系统用户表 (13个文件)
-**sys_menu** - 系统菜单表 (13个文件)
-**sys_config** - 系统配置表 (13个文件)
#### 2. 会员管理模块 (待完善)
- ❌ member - 需要补充表结构信息
- ❌ member_level - 需要补充表结构信息
- ❌ member_address - 需要补充表结构信息
#### 3. 支付管理模块 (待完善)
- ❌ pay - 需要补充表结构信息
- ❌ pay_channel - 需要补充表结构信息
- ❌ refund - 需要补充表结构信息
## 🎯 生成的代码质量
### ✨ 代码特性
-**完整的 CRUD 操作**: 增删改查功能完备
-**Swagger API 文档**: 自动生成 API 文档注解
-**TypeORM 实体映射**: 完整的数据库映射
-**数据验证装饰器**: 使用 class-validator 验证
-**事件驱动架构**: 支持事件和监听器
-**依赖注入模式**: 使用 NestJS 依赖注入
-**错误处理机制**: 完善的异常处理
-**分页查询支持**: 内置分页功能
-**类型安全保证**: 完整的 TypeScript 类型
### 📁 生成的文件结构
```
src/common/sysUser/
├── controllers/adminapi/sysUserController.ts # 控制器
├── services/admin/sysUser.service.ts # 服务层
├── entity/sysUser.entity.ts # 实体
├── dto/
│ ├── createSysUser.dto.ts # 创建DTO
│ ├── updateSysUser.dto.ts # 更新DTO
│ └── querySysUser.dto.ts # 查询DTO
├── mapper/sysUser.mapper.ts # 数据访问层
├── events/
│ ├── sysUser.created.event.ts # 创建事件
│ ├── sysUser.updated.event.ts # 更新事件
│ └── sysUser.deleted.event.ts # 删除事件
└── listeners/
├── sysUser.created.listener.ts # 创建监听器
├── sysUser.updated.listener.ts # 更新监听器
└── sysUser.deleted.listener.ts # 删除监听器
```
## 🚀 工具性能表现
### 📈 生成效率
- **单表生成时间**: < 1秒
- **文件生成速度**: 13个文件/表
- **代码质量**: 生产就绪
- **类型安全**: 100% TypeScript 覆盖
### 🔧 工具特性验证
-**批量迁移**: 支持多表同时迁移
-**模块化组织**: 按业务模块分组
-**错误处理**: 优雅处理缺失表信息
-**进度跟踪**: 实时显示迁移进度
-**报告生成**: 详细的迁移报告
## 🎯 下一步行动计划
### 立即执行 (高优先级)
1. **补充表结构信息**: 为缺失的表添加完整的字段定义
2. **完善会员模块**: 迁移 member, member_level, member_address
3. **完善支付模块**: 迁移 pay, pay_channel, refund
4. **集成测试**: 测试生成的代码在 NestJS 中的运行
### 后续优化 (中优先级)
1. **业务逻辑集成**: 添加具体的业务逻辑
2. **权限控制**: 集成 RBAC 权限系统
3. **数据验证**: 完善验证规则和约束
4. **性能优化**: 优化查询和缓存策略
### 长期规划 (低优先级)
1. **自动化部署**: 集成 CI/CD 流程
2. **监控告警**: 添加应用监控
3. **文档完善**: 生成完整的 API 文档
4. **测试覆盖**: 添加单元测试和集成测试
## 🏆 迁移工具优势
### 技术优势
- **架构对齐**: 完美对齐 Java Spring Boot 架构
- **业务保持**: 100% 保持 PHP 业务逻辑
- **规范统一**: 遵循 NestJS 最佳实践
- **类型安全**: 完整的 TypeScript 支持
### 开发效率
- **自动化程度**: 90% 代码自动生成
- **开发速度**: 提升 10倍开发效率
- **代码质量**: 统一的高质量代码
- **维护成本**: 大幅降低维护成本
### 扩展性
- **模块化**: 支持模块化开发
- **可配置**: 灵活的配置选项
- **可扩展**: 易于添加新功能
- **可维护**: 清晰的代码结构
## 🎉 总结
我们的 PHP 业务迁移工具已经成功运行,并展示了强大的代码生成能力!
### 核心成就
1.**成功迁移**: 3张核心系统表完美迁移
2.**代码质量**: 生成生产就绪的高质量代码
3.**工具稳定**: 迁移工具运行稳定可靠
4.**架构完整**: 完整的 NestJS 架构实现
### 技术价值
- **开发效率**: 从手工编码到自动化生成
- **代码质量**: 统一规范的高质量代码
- **架构对齐**: 完美对齐现代框架架构
- **业务保持**: 100% 保持原有业务逻辑
### 商业价值
- **时间节省**: 大幅缩短开发时间
- **成本降低**: 减少人工开发成本
- **质量提升**: 提高代码质量和一致性
- **风险降低**: 减少人为错误和遗漏
**🚀 我们的迁移工具已经准备就绪,可以开始大规模的 PHP 业务迁移了!**

View File

@@ -1,269 +0,0 @@
# 🏷️ 命名规范指南
## 📋 概述
本文档为AI开发者提供完整的命名规范指南确保NestJS项目与PHP项目在业务层面保持100%一致同时遵循NestJS框架特性。
## 🎯 核心原则
1. **业务对齐优先**: 业务逻辑命名与PHP项目保持一致
2. **框架规范遵循**: NestJS特有文件类型按NestJS规范
3. **可读性保证**: 确保命名清晰、语义明确
4. **数据库一致性**: 与PHP项目共用数据库命名必须完全一致
## 🏗️ 三大框架命名规范对比
### 1. PHP (ThinkPHP) 实际命名规范
基于 `niucloud-php` 项目的实际分析:
| 文件类型 | 命名规范 | 实际示例 | 说明 |
|---------|----------|----------|------|
| **控制器** | `PascalCase.php` | `User.php`, `Order.php` | 无Controller后缀 |
| **模型** | `PascalCase.php` | `SysUser.php`, `MemberLevel.php` | 直接使用业务名称 |
| **验证器** | `PascalCase.php` | `User.php`, `Member.php` | 无Validate后缀 |
| **服务** | `PascalCase.php` | `UserService.php`, `OrderService.php` | 有Service后缀 |
| **目录** | `snake_case` | `adminapi/`, `validate/`, `model/` | 小写下划线 |
### 2. Java (Spring Boot) 标准命名规范
| 文件类型 | 命名规范 | 标准示例 | 说明 |
|---------|----------|----------|------|
| **控制器** | `PascalCase + Controller.java` | `UserController.java` | 有Controller后缀 |
| **实体** | `PascalCase.java` | `User.java`, `Order.java` | 直接使用业务名称 |
| **服务** | `PascalCase + Service.java` | `UserService.java` | 有Service后缀 |
| **DTO** | `PascalCase + Dto.java` | `CreateUserDto.java` | 有Dto后缀 |
| **仓储** | `PascalCase + Repository.java` | `UserRepository.java` | 有Repository后缀 |
### 3. NestJS 框架标准命名规范
| 文件类型 | 命名规范 | 标准示例 | 说明 |
|---------|----------|----------|------|
| **控制器** | `camelCaseController.ts` | `userController.ts`, `userProfileController.ts` | camelCase + 后缀 |
| **实体** | `camelCase.entity.ts` | `userEntity.ts`, `sysUser.entity.ts` | camelCase + 后缀 |
| **服务** | `camelCase.service.ts` | `userService.ts`, `userProfileService.ts` | camelCase + 后缀 |
| **DTO** | `camelCase.dto.ts` | `createUser.dto.ts`, `updateUser.dto.ts` | camelCase + 后缀 |
| **模块** | `camelCase.module.ts` | `userModule.ts`, `adminModule.ts` | camelCase + 后缀 |
**重要说明**
- **文件名**:使用 `camelCase.suffix.ts` 格式(项目统一规范)
- **类名**:使用 `PascalCase` 格式TypeScript 标准)
- **示例**:文件 `userController.ts` 导出类 `UserController`
## 🎯 统一命名标准(最终规范)
### 文件命名规范camelCase + 后缀)
#### 实体文件命名
- **规范**: `{PHP模型名转camelCase}.entity.ts`
- **对应关系**: 与 PHP 模型文件一一对应,但使用 camelCase 命名
- **示例**:
- PHP `SysUser.php` → NestJS `sysUser.entity.ts`
- PHP `SysConfig.php` → NestJS `sysConfig.entity.ts`
- PHP `MemberLevel.php` → NestJS `memberLevel.entity.ts`
#### 控制器文件命名
- **规范**: `{模块名}Controller.ts`(使用 camelCase
- **示例**: `userController.ts`, `orderController.ts`, `adminController.ts`
#### 服务文件命名
- **规范**: `{模块名}.service.ts`(使用 camelCase
- **示例**: `userService.ts`, `orderService.ts`, `adminService.ts`
#### DTO文件命名
- **规范**: `{操作动词}{模块名}.dto.ts`(使用 camelCase
- **示例**: `createUser.dto.ts`, `updateUser.dto.ts`, `queryAdmin.dto.ts`
#### 验证器文件命名
- **规范**: `{模块名}.validator.ts` (区别于PHP无后缀)
- **示例**: `user.validator.ts`, `member.validator.ts`
#### 模块文件命名
- **规范**: `{模块名}.module.ts` (NestJS 标准)
- **示例**: `user.module.ts`, `admin.module.ts`, `auth.module.ts`
### 类命名规范
#### 实体类命名
- **规范**: `PascalCase` (与PHP模型名保持一致)
- **示例**: `SysUser`, `SysConfig`, `MemberLevel`
#### 控制器类命名
- **规范**: `PascalCase + Controller`
- **示例**: `UserController`, `AdminController`, `AuthController`
#### 服务类命名
- **规范**: `PascalCase + Service`
- **示例**: `UserService`, `OrderService`, `AdminService`
#### DTO类命名
- **规范**: `{操作动词}{模块名}Dto`
- **示例**: `CreateUserDto`, `UpdateOrderDto`, `QueryMemberDto`
### 方法命名规范
#### 业务逻辑方法
**优先与PHP项目保持一致NestJS特有方法按NestJS规范**
- **CRUD方法**: 与PHP项目方法名保持一致
- **查询方法**: 与PHP项目方法名保持一致
- **业务方法**: 与PHP项目方法名保持一致
- **NestJS生命周期方法**: 按NestJS规范`onModuleInit()`, `onApplicationBootstrap()`
#### 变量命名规范
**业务变量优先与PHP项目保持一致NestJS特有变量按NestJS规范**
- **业务变量**: 与PHP项目变量名保持一致
- **业务常量**: 与PHP项目常量名保持一致
- **NestJS注入变量**: 按NestJS规范`private readonly userService: UserService`
- **TypeORM相关变量**: 按TypeORM规范`@InjectRepository(User)`
## 🗄️ 数据库命名规范
### 重要约束
**与PHP项目共用数据库必须保持命名100%一致**
- **表名**: 与PHP项目完全一致包括前缀和命名方式
- **字段名**: 与PHP项目完全一致不能修改任何字段名
- **字段类型**: 与PHP项目完全一致不能修改字段类型
- **索引结构**: 与PHP项目完全一致不能添加或删除索引
### 实体映射规范
```typescript
// 正确示例与PHP模型SysUser.php对应
@Entity('sys_user') // 表名与PHP项目一致
export class SysUser {
@PrimaryGeneratedColumn()
id: number; // 字段名与PHP项目一致
@Column({ name: 'username', length: 50 })
username: string; // 字段名与PHP项目一致
@Column({ name: 'created_at', type: 'timestamp' })
createdAt: Date; // 字段名与PHP项目一致
}
```
## 📁 目录结构命名规范
### 标准模块目录结构
```
src/common/{模块名}/
├── {模块名}.module.ts # 模块定义文件
├── controllers/ # 控制器目录
│ ├── adminapi/ # 管理端控制器目录对应PHP adminapi/controller
│ │ └── {模块名}Controller.ts
│ └── api/ # 前台控制器目录对应PHP api/controller
│ └── {模块名}Controller.ts
├── services/ # 服务目录
│ ├── admin/ # 管理端服务目录对应PHP service/admin
│ │ └── {模块名}.service.ts
│ ├── api/ # 前台服务目录对应PHP service/api
│ │ └── {模块名}.service.ts
│ └── core/ # 核心服务目录对应PHP service/core
│ └── {模块名}.service.ts
├── entity/ # 实体目录对应PHP model
│ ├── {实体名}.entity.ts # 实体文件camelCase.entity.ts 格式)
│ └── {配置实体}.entity.ts # 配置实体文件
├── dto/ # DTO 目录对应PHP validate
│ ├── admin/ # 管理端DTO目录
│ │ ├── create{模块名}.dto.ts
│ │ └── update{模块名}.dto.ts
│ └── api/ # 前台DTO目录
│ ├── {操作}{模块名}.dto.ts
│ └── {操作}{模块名}.dto.ts
├── guards/ # 守卫目录(可选)
├── decorators/ # 装饰器目录(可选)
├── interfaces/ # 接口目录(可选)
└── enums/ # 枚举目录(可选)
```
### 实际示例基于auth模块
```
src/common/auth/
├── auth.module.ts
├── controllers/
│ ├── adminapi/
│ │ └── authController.ts # 管理端控制器
│ └── api/
│ └── authController.ts # 前台控制器
├── services/
│ ├── admin/
│ │ └── auth.service.ts # 管理端服务
│ ├── api/
│ │ └── auth.service.ts # 前台服务
│ └── core/
│ └── auth.service.ts # 核心服务
├── entity/
│ └── auth-token.entity.ts # 实体文件
├── dto/
│ ├── admin/
│ │ ├── createAuth.dto.ts # 管理端DTO
│ │ └── updateAuth.dto.ts
│ └── api/
│ ├── login.dto.ts # 前台DTO
│ └── register.dto.ts
├── guards/
│ ├── global-auth.guard.ts
│ ├── jwt-auth.guard.ts
│ └── roles.guard.ts
├── decorators/
│ ├── roles.decorator.ts
│ ├── public.decorator.ts
│ └── user-context.decorator.ts
└── interfaces/
└── user.interface.ts
```
## 🚫 命名禁止规则
### 绝对禁止的命名行为
1. **🚫 禁止修改数据库相关命名**
- 不能修改表名、字段名、索引名
- 不能修改字段类型和长度
- 必须与PHP项目数据库结构100%一致
2. **🚫 禁止自创业务方法名**
- 业务方法名必须与PHP项目对应方法保持一致
- 不能随意创造新的业务方法名
3. **🚫 禁止使用非标准缩写**
- 避免使用不明确的缩写,如 `usr` 代替 `user`
- 避免使用中文拼音命名
4. **🚫 禁止混合命名风格**
- 同一项目内必须保持命名风格一致
- 不能在同一文件中混用不同的命名规范
## ✅ 命名检查清单
### 开发前检查
- [ ] 已查看对应的PHP源码文件命名
- [ ] 已确认数据库表结构和字段命名
- [ ] 已理解业务逻辑和方法命名
- [ ] 已确认模块目录结构规范
### 开发中检查
- [ ] 实体类名与PHP模型名保持一致
- [ ] 数据库表名和字段名与PHP项目一致
- [ ] 业务方法名与PHP项目对应方法一致
- [ ] 文件命名符合NestJS规范
### 开发后检查
- [ ] 所有命名符合统一标准
- [ ] 没有使用禁止的命名方式
- [ ] 目录结构清晰规范
- [ ] 文档和注释命名准确
## 📚 相关文档
- [AI智能体工作流程指南](./AI-WORKFLOW-GUIDE.md)
- [AI开发禁止规则](./AI-DEVELOPMENT-RULES.md)
- [三框架原则对比](./FRAMEWORK-PRINCIPLES.md)
- [项目整体结构参考](./PROJECT-STRUCTURE.md)
---
**重要提醒**: 命名规范是代码质量的基础所有AI开发者必须严格遵循此命名规范确保项目的一致性和可维护性。

View File

@@ -0,0 +1,85 @@
# 🧭 生产部署手册AI 恢复模块)
## 📋 目标
- 明确生产环境的守卫策略、队列驱动选择与观测性配置
- 保证 AI 恢复端点受控暴露、跨实例协同与稳定可观测
## ✅ 环境与前缀
- `AI_ENABLED=true`(启用 AI 模块)
- `GLOBAL_PREFIX=api`(统一前缀,保证基础设施路由状态码正确)
- 端口:建议 `apps/api` 使用 `3001`,根应用 `3000` 按需
## 🔐 路由守卫策略
- 开发期:`AiController``@Public()` 便于联调
- 生产期:务必加守卫或网关限制
- `JwtAuthGuard` + `RolesGuard`
- 网关层限制来源 IP、路径前缀 (`/api/ai/recovery/*`)
- 限流与防刷Nginx/网关 `rate-limit`,并在服务侧加入短时计数器
## 🔄 队列驱动选择
- `QUEUE_DRIVER=redis`(推荐,跨进程/跨实例可靠)
- 备选:`QUEUE_DRIVER=kafka`(企业内消息中间件)
- 开发/测试:`QUEUE_DRIVER=memory`(单进程快速闭环)
### Redis 驱动示例
```bash
QUEUE_DRIVER=redis
REDIS_ENABLED=true
REDIS_URL=redis://username:password@redis:6379/0
```
### Kafka 驱动示例
```bash
QUEUE_DRIVER=kafka
KAFKA_ENABLED=true
KAFKA_BROKER=kafka:9092
KAFKA_CLIENT_ID=wwjcloud-ai
KAFKA_GROUP_ID=wwjcloud-ai-group
```
## 📊 观测性配置
- 指标:`METRICS_ENABLED=true`,暴露 `/api/metrics`
- 追踪:`TELEMETRY_ENABLED=true`按需开启配置采样率与后端Jaeger/Tempo
- 健康检查:`/api/health` 保留原始状态码(异常过滤器已处理)
### 示例
```bash
METRICS_ENABLED=true
TELEMETRY_ENABLED=true
TRACING_ENABLED=true
JAEGER_ENDPOINT=http://jaeger:14268/api/traces
```
## 🚧 暴露面与网关策略
- 仅在内网或受控网段暴露 `AiController` 路由;若必须外网,务必加守卫与限流
- 通过 API 网关或 WAF 设置:
- 路由白名单:`/api/ai/recovery/status`(仅内部监控)
- 隔离管理接口与前台接口的域名/前缀
- 每秒/每分钟限流阈值与封禁策略
## 🧪 验证清单(生产前)
- 配置生效检查
- `AI_ENABLED=true``GLOBAL_PREFIX=api``QUEUE_DRIVER``redis``kafka`
- 指标与健康检查端点可访问且状态码正确
- 功能闭环
- 触发失败事件 → 入队(跨实例)→ 处理 → 队列收敛
- 安全检查
- 路由已加守卫或经网关限制
- 限流与防刷策略生效
- 日志中不包含敏感信息(脱敏)
## 📝 变更与灰度
-`@Public()` 改为受控守卫或移除(由网关策略接管)
- 驱动切换:`memory → redis/kafka`,需在灰度期观察入队/处理时延与失败率
- 观测性:上线后先低采样启动,逐步提升采样率与指标抓取频率
## 🧯 回滚预案
- 路由临时关闭或仅内网可见
- 队列回退至 `memory` 模式以隔离中间件问题(仅在单实例应急)
- 观测性降级:关闭高频采样,保留关键健康检查
## 🔗 参考文档
- 配置指南:`docs/CONFIG_SETUP.md`
- 开发指南:`docs/DEVELOPMENT-GUIDE.md`
- 端点细节:`docs/AI-RECOVERY-DEV.md`
- 工作流指南:`docs/AI-WORKFLOW-GUIDE.md`

View File

@@ -1,48 +0,0 @@
# SYS API 对照与缺口清单
- 管理端 /adminapi
- config
- GET /adminapi/config/system → 系统配置快照PHP/Java 同等能力)
- GET /adminapi/config/dynamic → 动态配置列表
- GET /adminapi/config/dynamic/:key → 单项配置
- POST /adminapi/config/dynamic → 创建配置
- PUT /adminapi/config/dynamic/:key → 更新配置
- DELETE /adminapi/config/dynamic/:key → 删除配置
- POST /adminapi/config/refresh-cache → 刷新缓存(占位)
- GET /adminapi/config/validate, /metadata, /stats → 运营辅助
- sys/menu
- GET /adminapi/sys/menu/list, /tree → 菜单查询
- POST /adminapi/sys/menu → 创建
- PUT /adminapi/sys/menu/:id → 更新
- DELETE /adminapi/sys/menu/:id → 删除
- sys/dict
- GET /adminapi/sys/dict/types, /items?type=xxx → 查询
- POST /adminapi/sys/dict/type, /item → 创建
- PUT /adminapi/sys/dict/type/:id, /item/:id → 更新
- DELETE /adminapi/sys/dict/type/:id, /item/:id → 删除
- sys/area
- GET /adminapi/sys/area/list, /tree → 区域查询
- 前台 /api
- config
- GET /api/config/:key → 单项
- GET /api/config?keys=a,b,c → 批量(新增)
- dict
- GET /api/dict/:type/items → 项列表
- area
- GET /api/area/tree → 区域树
- 鉴权/租户/权限
- 管理端Jwt + SiteScope + @Roles(全局 RolesGuard 已启用)
- 前台:可选鉴权 + SiteScope
- 与 PHP/Java 对齐情况
- 路由结构:已对齐 admin/api 分层
- 业务能力config/dict/menu/area 已具备常见 CRUD/查询
- 审计config/dict/menu 写操作已记录
- 多租户site_id 查询隔离
- 缺口与建议
- e2e补齐鉴权/租户/权限关键路径(进行中)
- 缓存dict/menu 已加短缓存;如需可扩展至 area
- 文档Swagger 分组与 Token 访问控制(可选)