Files
wwjcloud-nest-v1/.trae/documents/Java 功能迁移到 NestJS v1 框架(严格对齐前端与数据库).md

85 lines
5.2 KiB
Markdown
Raw Normal View History

# 迁移总体方案
## 目标与约束
- 目标:将 Java 后端的全部业务功能按域迁移到 v1NestJS 11保持前端与数据库完全兼容。
- 约束:业务逻辑以 PHP 项目为唯一权威(接口与流程 100% 一致),数据库结构与字段 100% 一致,不使用默认值,不硬编码业务数据。
- 成果:路由、请求/响应结构、鉴权与多租户site_id、数据库读写、副作用行为与 Java/PHP 保持一致;可直接替换现有前端。
## 基线核验(准备阶段)
- 收集权威数据源:引入 `./sql/wwjcloud.sql`、PHP 控制器/服务/验证器源码到规定目录,作为业务对齐基线。
- 前端路径清单:以现有前端使用的路由表为对齐目标(如 `/adminapi/*``/api/*`)。
- Java 端点盘点:按域输出 Java 的 Controller/Service 端点与签名(包括 `adminapi``api`)。
- 响应结构基线统一使用响应包装code/msg_key/msg/data/timestamp确认与 Java/PHP 一致。
## 框架装配Boot 层与全局能力)
- 全局预设启用平台预设APP_GUARD/APP_INTERCEPTOR/APP_FILTER/APP_PIPE统一鉴权、RBAC、限流、日志、指标、响应包装、异常处理。
- 配置校验:通过 Joi 校验环境变量;禁止默认值;数据库/Redis/队列等由环境配置驱动。
- 多租户:基于 `site_id` 的租户解析策略header/subdomain/path 配置化),为所有域服务提供 `RequestContext`
## 迁移方法论(按业务域逐步迁移)
- 迁移单位以业务域为单位域内完整分层Controller → Service → Repository → Entity → DTO/Validator
- 路由前缀:严格沿用 Java/PHP 路由前缀与路径(`/adminapi/**``/api/**`)。
- 服务方法:方法名与行为与 Java/PHP 保持一致;数据库读写操作与事务、缓存、副作用一致。
- 实体与仓储TypeORM Entity 映射严格遵循数据库表与字段命名;禁用 `synchronize`;使用 `InjectRepository`
- 验证与管道:按 PHP 验证器规则实现 DTO 验证;不引入默认值与推测。
## 域级迁移清单(先核心后外围)
1. sys系统配置/菜单/区域/附件/打印/调度/协议/海报)
- 控制器路由与方法对齐;配置读取与 JSON 解析与 Java/PHP 一致;附件与导出使用同结构。
- 打印与调度:品牌枚举、调度配置与任务执行链路迁移。
2. site站点/分组/账户日志/用户)
- 站点信息聚合apps/addons与分组策略读取严格使用 `site_id` 上下文;前端 API 路由保持不变。
3. member会员/等级/标签/地址/账户日志/签到/提现)
- 账户与日志写入、签到积分、提现流程与状态机对齐;路由与参数一致。
4. pay支付/退款/转账/渠道)
- `/api/pay/notify/{site_id}/{channel}/{type}/{action}` 任意方法映射;支付场景与渠道配置读取;异步通知与签名验签。
5. upload/storage上传/存储)
- 文件上传(图片/视频/抓取/Base64/缩略图)与存储通道配置;返回结构与 Java/PHP 相同。
6. wechat/weapp/wxoplatform公众号/小程序/开放平台)
- 登录/注册/用户信息/同步/JSSDK 配置;模板与菜单管理;开放平台版本与配置。
7. diy/diy_form搭建/路由/主题/表单)
- 页面/路由/主题 CRUD表单配置与数据写入与前端路由保持兼容。
8. addon插件
- 插件安装/升级/备份/日志;插件开发接口与站点插件初始化记录。
9. notice/sms通知/短信)
- 通知模板/记录与短信通道;供应商适配与发送策略,失败重试与限流。
10. channel多端渠道 app/h5/pc
- 渠道配置与前端适配;应用列表输出与路由映射。
11. auth/login登录/验证码/配置)
- 管理端登录、验证码获取与校验、登录配置读取JWT 与 RBAC 对齐。
12. verify核销
- 核销员与核销记录;权限与租户处理一致。
## 交叉关注点实现
- 事务一致性:按 Java/PHP 的事务边界实现;批处理与并发控制一致。
- 缓存与失效:对齐 Java/PHP 的缓存键与失效策略;禁止缓存默认值推测。
- 文件与外部依赖:上传与第三方存储/SMS/支付/微信客户端使用统一适配层并开启熔断/重试。
- 性能与指标:关键路径埋点与指标输出;限流与隔离策略。
## 验证与验收
- 路由契约测试:基于前端使用的 API 路径逐端点对比 Java/PHP 响应(结构与语义)。
- 数据一致性:对常用读写场景进行数据库断言;索引与软删除字段核验。
- e2e 测试:覆盖主流程(登录、站点、会员、支付、上传、微信)与管理端关键路径。
- 性能基线k6 压测对比 Java 后端 QPS 与 P99并优化热点路径。
## 发布与回滚
- 灰度发布:双后端并行(只读验证),切换 API 基地址至 v1观察指标与日志。
- 回滚预案:切回 Java/PHP 后端的入口地址;避免数据库结构变更。
## 里程碑
- M1基线核验SQL/PHP/Java 端点清单)
- M2sys/site/member/pay/上传 模块对齐
- M3wechat/weapp/wxoplatform/diy/addon/notice/channel/auth/verify 对齐
- M4契约/e2e/性能验收与灰度上线