chore: push latest changes

This commit is contained in:
wanwu
2025-11-16 22:13:57 +08:00
parent de821ae5fd
commit 7ede50739b
780 changed files with 101983 additions and 10460 deletions

View File

@@ -308,4 +308,35 @@ curl -s -X POST http://localhost:3001/api/ai/recovery/drain
### 参考
- 详细指南:`docs/AI-RECOVERY-DEV.md`
- 工作流规范:`docs/AI-WORKFLOW-GUIDE.md`
- 工作流规范:`docs/AI-WORKFLOW-GUIDE.md`
## 对齐 Java 迁移规则(强约束)
- 只替换为 NestJS/boot 写法,不改变任何业务逻辑与数据流。
- 路由/方法/参数/返回结构必须与 Java 1:1 对齐;禁止新增/删改字段与键名。
- 参数与上下文来源:
- `siteId/memberId` 统一由 `RequestContextService.getSiteId()``RequestContextService.memberId` 获取,或由上层传入 `param.siteId/param.memberId`;控制器禁止手动写入上下文字段。
- `Channel` 仅在 Java 明确默认值的场景保留默认Header `Channel` 默认 `h5`),否则禁止使用 `|| 'h5'`
- 默认值与返回:
- 禁止新增默认值(如 `getSiteId() || 0``|| ''``|| 0`);仅保留与 Java 对齐的配置/JSON 读取默认(等价 `getStr(...,"" )``getInt(...,0)`)。
- 返回结构与 Java 对齐(例如 `{ data: '<json-string>' }`),禁止附加额外键。
- 路由与方法:
- 路径/HTTP 方法严格一致(如 `GET /api/verify_detail/{code}`),参数名对齐(如 `out_trade_no`)。
- 不新增非 Java 的调试/演示接口。
- 服务层与控制器职责:
- 登录/权限校验由守卫处理;服务层不做“未登录”等过度校验。
- 服务层使用传参 `param.*` 或上下文读取,禁止在服务层覆盖传入值。
- VO 构建与 Java 一致(如提现 `transfer` 子对象),仅映射必要字段。
- 查询与分页:
- where 条件对齐 Java`siteId/memberId/id` 组合等),排序与分页一致(同字段/顺序/limit/skip
- 异常与校验:
- 异常信息与 Java 文案一致;参数校验放在 DTO/管道/验证器,不在服务层硬编码。
- 类型与结构:
- 避免 `as any` 类型逃逸;保持 DTO/VO 类型清晰JSON/VO 转换遵循 Java 结构(等效 `BeanUtils.copyProperties` 行为)。
- 变更流程(必须遵循):
- 先“扫描 → 标记 → 按批次改动 → 验证”,不得边看边改。
- 批次 A清理 `Number(this.requestContext.getSiteId() || 0)``getSiteId() || 0`
- 批次 B清理 `RequestUtils.channel() || 'h5'`(保留方法内部默认)。
- 批次 C控制器移除手工注入上下文字段`siteId`)。
- 批次 D参数名/路由/返回结构对齐(如 `out_trade_no`、VO 子对象)。
- 批次完成后,用关键模式自检:`getSiteId\(\)\s*\|\|\s*0``Number\(this\.requestContext\.getSiteId\(\) \|\| 0\)``RequestUtils\.channel\(\) \|\|\s*['"]h5['"]`
- 验收标准:
- 路由/方法/参数名/返回结构与 Java 100% 一致;无默认值污染;控制器不手工注入上下文字段;查询与分页排序一致;异常信息一致;类型明确无无谓 `as any`