first commit
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
---
|
||||
name: 局部变量resp-req重命名为全称
|
||||
overview: 将项目中作为局部变量/函数参数的缩写 resp、req 统一重命名为 response、request,不改动 Dao 字段与 Go 惯用短名,不触碰 c.Request/http.Request 等标准库字段,保证编译与 vet 通过、对外行为不变。
|
||||
todos:
|
||||
- id: scan-occurrences
|
||||
content: 使用 [subagent:code-explorer] 全仓普查 \bresp\b、\breq\b 命中点,输出文件与行号清单,并标注需排除的 RequestID/c.Request/ResponseFormat 等完整标识符
|
||||
status: completed
|
||||
- id: rename-handlers
|
||||
content: 重命名 internal/routers/api/v1 全部 handler 中的局部 resp→response、req→request,借助 [skill:lsp-code-analysis] 做作用域内安全 rename 并同步引用
|
||||
status: completed
|
||||
dependencies:
|
||||
- scan-occurrences
|
||||
- id: rename-service
|
||||
content: 重命名 internal/service 各文件的参数名 req→request 与局部 resp→response,保持函数体引用一致,借助 [skill:lsp-code-analysis] 校验引用
|
||||
status: completed
|
||||
dependencies:
|
||||
- scan-occurrences
|
||||
- id: rename-middleware-pkg
|
||||
content: 重命名 internal/middleware/lzcwyjwt.go 及 pkg(wechat 等)中命中的局部 resp/req,排除类型名与导出符号
|
||||
status: completed
|
||||
dependencies:
|
||||
- scan-occurrences
|
||||
- id: verify-build
|
||||
content: 执行 gofmt、go build ./...、go vet ./... 并 grep 复核无残留独立 resp/req 变量、排除项未被改动
|
||||
status: completed
|
||||
dependencies:
|
||||
- rename-handlers
|
||||
- rename-service
|
||||
- rename-middleware-pkg
|
||||
---
|
||||
|
||||
## 需求概述
|
||||
|
||||
将项目中作为**局部变量与函数参数**的缩写标识符 `resp`、`req` 统一重命名为全称 `response`、`request`,提升代码可读性与命名一致性。这是纯内部命名重构,不改变任何对外行为。
|
||||
|
||||
## 明确边界(已与用户确认)
|
||||
|
||||
- **要改**:`resp → response`、`req → request`(仅限局部变量/函数参数标识符)
|
||||
- **保留不改**:
|
||||
- service 中的 `xxxDao` 字段(`Dao` 为领域专有缩写)
|
||||
- Go 惯用短名:`ctx`、`err`、`ok`、`db`、`id`、`tx`、循环变量 `i` 等
|
||||
- 所有类型名/导出符号:`dto.XxxRequest`、`dto.XxxResponse`、`app.Response`、`app.NewResponse`、`ToResponse`、`ToErrorResponse`、`ResponseFormat`、`chatResponse`、`FortuneResponse` 等
|
||||
- 标准库/框架字段:`c.Request`、`http.Request`、`c.Request.Context()`
|
||||
- 含 `req`/`resp` 的完整标识符:`RequestID`、`GetRequestID`、`requestIDKey`、`ShouldBindQuery`、`responseFormat` 等
|
||||
|
||||
## 验收标准
|
||||
|
||||
- 项目内不再有名为 `resp`/`req` 的独立局部变量/参数标识符
|
||||
- 上述排除项完全未被改动
|
||||
- `go build ./...`、`go vet ./...` 通过,对外 HTTP 行为、DTO JSON tag、路由完全不变
|
||||
|
||||
## 技术方案
|
||||
|
||||
### 重构策略
|
||||
|
||||
采用**逐文件、按 Go 标识符词边界精确替换**的方式(`\bresp\b → response`、`\breq\b → request`),仅作用于变量声明、赋值与引用位置。优先使用 LSP 作用域内重命名(rename symbol)保证不跨作用域误伤;对形态高度统一的 handler 文件可按文件精确替换后逐一校验。
|
||||
|
||||
### 命中范围(已通过 search_content 统计确认)
|
||||
|
||||
**handler 层**(`internal/routers/api/v1/*.go`,形态统一):
|
||||
|
||||
- `resp := app.NewResponse(c)` → `response := app.NewResponse(c)`,后续 `resp.ToResponse(...)` / `resp.ToErrorResponse(...)` 同步更新
|
||||
- `var req dto.XxxRequest`、`req.XxxUUID = c.Param(...)`、`&req` → 全部改为 `request`
|
||||
|
||||
**service 层**(`internal/service/*.go`):
|
||||
|
||||
- 方法参数名 `req *dto.XxxRequest` → `request *dto.XxxRequest`,函数体内引用同步更新
|
||||
- 局部 `resp`(如 `horoscope.go`、`user.go` 组装响应处)→ `response`
|
||||
|
||||
**middleware / pkg**:
|
||||
|
||||
- `internal/middleware/lzcwyjwt.go` 的 `resp := app.NewResponse(c)`
|
||||
- `pkg/wechat/*`、`pkg/errcode`、`pkg/app` 等如有名为 `req`/`resp` 的局部变量/参数,一并处理(以实际命中为准)
|
||||
|
||||
### 关键防回归点
|
||||
|
||||
- `\breq\b`(小写+词边界)天然不匹配 `c.Request`(大写 R)、`RequestID`、`requestIDKey`、`ShouldBindQuery`,但替换时须逐处确认无误伤
|
||||
- `\bresp\b` 不匹配 `ResponseFormat`、`responseFormat`、`chatResponse`、`FortuneResponse`、`RecommendLLMResponse`,保持不动
|
||||
- 类型名 `dto.*Request`/`dto.*Response`、`app.Response`/`app.NewResponse`/`ToResponse` 等导出符号绝不改动
|
||||
- 替换后须确认无与既有 `response`/`request` 标识符的命名冲突(当前代码未发现同名局部变量)
|
||||
|
||||
### 涉及文件清单(预估,以实际命中为准)
|
||||
|
||||
```
|
||||
internal/routers/api/v1/
|
||||
├── user.go # [MODIFY] resp/req → response/request
|
||||
├── quota.go # [MODIFY] 同上
|
||||
├── horoscope.go # [MODIFY] 同上
|
||||
├── clothes.go # [MODIFY] 同上(含 multipart 分支)
|
||||
├── outfit.go # [MODIFY] 同上(命中较多)
|
||||
├── closet.go # [MODIFY] 同上
|
||||
├── collect.go # [MODIFY] 同上
|
||||
├── like.go # [MODIFY] 同上
|
||||
├── notification.go # [MODIFY] 同上
|
||||
├── goods.go # [MODIFY] 同上
|
||||
├── order.go # [MODIFY] 同上(含回调 handler)
|
||||
└── airecommend.go # [MODIFY] 同上
|
||||
internal/service/
|
||||
├── user.go / quota.go / horoscope.go / clothes.go / outfit.go
|
||||
├── closet.go / collect.go / like.go / notification.go
|
||||
├── goods.go / order.go / airecommend.go # [MODIFY] 参数名 req→request、局部 resp→response
|
||||
internal/middleware/
|
||||
└── lzcwyjwt.go # [MODIFY] resp → response
|
||||
pkg/
|
||||
├── wechat/mini.go, wechat/pay.go # [MODIFY] 按实际命中的局部 req/resp
|
||||
└── errcode/*, app/* # [CHECK] 按实际命中处理,类型/方法名不动
|
||||
```
|
||||
|
||||
### 验证方式
|
||||
|
||||
- `gofmt -l` 无格式问题
|
||||
- `go build ./...`、`go vet ./...` 通过
|
||||
- grep 复核:无残留作为独立标识符的 `\bresp\b`/`\breq\b` 局部变量;`c.Request`、`RequestID`、`dto.*Request`、`dto.*Response`、`ResponseFormat` 等未被改动
|
||||
|
||||
## Agent Extensions
|
||||
|
||||
### SubAgent
|
||||
|
||||
- **code-explorer**
|
||||
- Purpose:在重构前对全仓库 `\bresp\b`、`\breq\b` 做精确命中普查,产出「文件 → 行号 → 上下文」清单,并甄别需排除的完整标识符(RequestID、c.Request、ResponseFormat 等),确保不漏改、不误伤。
|
||||
- Expected outcome:得到完整、去噪后的待改点清单,作为逐文件重命名的依据。
|
||||
|
||||
### Skill
|
||||
|
||||
- **lsp-code-analysis**
|
||||
- Purpose:对 `req`/`resp` 局部变量与函数参数执行 LSP 作用域内 rename(含引用点同步更新)与改前引用预览,避免跨作用域误改。
|
||||
- Expected outcome:每个 `resp`/`req` 标识符在其作用域内被安全重命名为 `response`/`request`,所有引用一致更新。
|
||||
Reference in New Issue
Block a user