first commit

This commit is contained in:
2026-09-11 01:41:52 +08:00
commit 9f22e6ccae
263 changed files with 28935 additions and 0 deletions
@@ -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`,所有引用一致更新。