Files
zt-closet-wxmini-frontend/.codebuddy/plans/前后端业务逻辑一致性检查报告_1d1a6eb4.md
T
2026-09-11 01:45:04 +08:00

129 lines
7.1 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.
---
name: 前后端业务逻辑一致性检查报告
overview: 全量比对后端 Go 服务(zt-closet-backend)与微信小程序前端(zt-closet-wxmini-frontend)的业务逻辑,逐模块核对接口路径、请求/响应字段、枚举值、状态机、错误码的一致性,最终产出一份差异清单报告(不改任何代码)。
todos:
- id: explore-backend
content: 用 [subagent:code-explorer] 探索后端 dto/service/errcode/constants,提取权威契约清单
status: completed
- id: explore-frontend
content: 用 [subagent:code-explorer] 探索前端 pages/utils/types,提取实际调用契约清单
status: completed
- id: compare-core
content: 对比用户/额度/运势/衣物模块,记录差异与严重程度
status: completed
dependencies:
- explore-backend
- explore-frontend
- id: compare-social
content: 对比穿搭/AI推荐/衣柜分享/收藏点赞/通知模块,记录差异与严重程度
status: completed
dependencies:
- explore-backend
- explore-frontend
- id: compare-trade
content: 对比商品/订单/虚拟支付模块,并全表核对错误码与枚举
status: completed
dependencies:
- explore-backend
- explore-frontend
- id: gen-report
content: 汇总生成《前后端业务逻辑一致性检查报告》
status: completed
dependencies:
- compare-core
- compare-social
- compare-trade
---
## 用户需求
检查后端业务服务全量代码(`~/zt-closet-backend`),确保前端微信小程序与后端业务逻辑一致。
## 已确认的处理方式
1. **仅输出不一致报告**:以差异清单形式呈现(接口路径、字段、枚举值、状态机、错误码等),**不修改任何前后端代码**。
2. **不核对后端《接口文档.md》**:本次只关注「前端代码」与「后端源码」的一致性,以 `/root/zt-closet-backend` 的 Go 源码为权威基准。
## 核心产出
产出一份《前后端业务逻辑一致性检查报告》,按业务模块(用户 / 额度 / 运势 / 衣物 / 穿搭 / AI 推荐 / 衣柜分享 / 收藏点赞 / 通知 / 商品 / 订单支付)分类,逐项列出:
- 不一致位置(前端文件:行 + 后端文件:行)
- 差异描述
- 严重程度(阻断 / 高风险 / 低风险 / 建议)
- 建议修复方向
## 技术栈
- 后端(权威基准,只读分析):Go + Gin,位于 `/root/zt-closet-backend`
- 前端(被检查方,只读分析):微信小程序原生 + TypeScript,位于 `/root/zt-closet-wxmini-frontend/miniprogram`
- 比对方法:静态源码契约提取 + 逐模块交叉比对,不涉及运行时
## 实现方案
### 核心策略
采用「契约提取—交叉比对」方法:
1. **提取后端权威契约**:以 `internal/routers/router.go` 注册的 42 个接口为主线,通读 `internal/routers/api/v1/`、`internal/dto/`、`internal/service/`、`pkg/errcode/`,提取每个接口的路径、HTTP 方法、请求字段(名称/必填/类型/枚举)、响应字段(名称/类型/单位)、枚举值、状态机规则、错误码。
2. **提取前端实际契约**:通读 17 个页面 `.ts` 与 `utils/request.ts`、`utils/config.ts`、`utils/auth.ts`、`types/models.ts`、`typings/index.d.ts`,提取实际调用的接口路径、请求体字段名、响应字段名、枚举常量定义、错误码映射表、关键业务规则处理(轮询/幂等/额度回退/惰性过期等)。
3. **逐模块交叉比对**:后端契约 vs 前端契约,识别字段名不一致、枚举值缺失/错位、错误码遗漏、单位换算缺失、状态机处理缺失等问题。
### 比对维度(关键决策)
- 接口路径与 HTTP 方法是否一致
- 请求字段名 / 必填性 / 类型 / 枚举取值是否一致
- 响应字段名 / 类型 / 单位(金额分、时间秒)是否一致
- 枚举常量值与状态机定义是否一致
- 错误码映射表是否完整且值正确
- 关键业务规则前端是否实现(上传轮询、支付后轮询订单、点赞乐观更新、分享惰性过期、AI 推荐额度不退还提示等)
### 严重程度分级
- **阻断**:导致功能不可用或数据错误(如字段名错误、请求路径错误、枚举值错位)
- **高风险**:特定场景下功能出错或体验严重受损(如单位未换算、错误码遗漏导致误提示)
- **低风险**:边缘场景或文案差异
- **建议**:非功能性优化建议
## 实现要点
- **不修改任何代码**,唯一新增物为报告文件 `/root/zt-closet-wxmini-frontend/前后端业务逻辑一致性检查报告.md`。
- 以后端源码为唯一权威,前端为被检查对象。
- 重点核对项:
- 虚拟支付链路:`/order/virtual` + `wx.requestVirtualPayment`,字段 `sign_data`/`pay_sig`/`signature`、`platform` 枚举 `android|ios|harmony|windows`、`mode` 取值,对照后端 `dto/order.go`、`service/virtualpay.go`。
- 易错字段:主颜色请求字段 `color` vs 响应 `color_main`;通知 `is_read` 1=未读/2=已读;`/like/:targetUUID` 路径参数驼峰;AI 推荐响应字段 `outfit_item`(单数)。
- 额度与状态机:上传/删除回退规则、公开扣额度、AI 生成失败回退、衣柜分享惰性过期。
- 错误码全表:前端 `ERROR_MESSAGES` 与后端 `pkg/errcode` 逐项核对,确认缺失与值错误。
- 疑似缺口:前端未调用 `/ad-reward/grant`(广告激励额度发放)入口,需确认是否属功能缺失。
## 目录结构
本次任务不修改现有代码,仅新增一份报告文件;以下为报告产出位置与需要通读的源码范围。
```
/root/zt-closet-wxmini-frontend/
└── 前后端业务逻辑一致性检查报告.md # [NEW] 唯一产出物,按业务模块分类记录差异清单
只读分析范围(后端):
/root/zt-closet-backend/
├── internal/routers/router.go # 42 个接口注册主线
├── internal/routers/api/v1/ # 13 个 handler
├── internal/dto/ # 14 个请求/响应 DTO
├── internal/service/ # 18 个业务逻辑(含 virtualpay/constants)
└── pkg/errcode/ # 10 个错误码文件
只读分析范围(前端):
/root/zt-closet-wxmini-frontend/miniprogram/
├── pages/ # 17 个页面 .ts
├── utils/request.ts / config.ts / auth.ts # 请求封装 / 枚举与错误码 / Token
├── types/models.ts # 前端实体类型
└── typings/index.d.ts # 全局类型声明
```
## 推荐使用的 Agent 扩展
### SubAgent
- **code-explorer**
- 用途:后端(dto/service/errcode/constants 等 60+ 文件)与前端(17 页面 + utils + types)体量较大,使用该子代理跨目录、多文件并行探索,高效提取接口契约与调用点,避免主上下文被大量源码淹没。
- 预期结果:产出后端权威契约清单(接口字段/枚举/错误码/状态机)与前端实际调用契约清单(路径/字段/枚举/错误码映射/业务规则处理),作为逐模块比对的输入。