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,93 @@
---
name: service-span-naming-dedupe
overview: 将 service 层 span 名从 svc.<方法名> 统一改为 svc.<领域><方法名>,消除跨 service 的同名 span,使 span 名全局唯一、可按名过滤,并与 DAO 层 dao.<领域><动作> 命名风格对齐。
todos:
- id: rename-clothes-outfit
content: 替换 clothes.go、outfit.go 共 13 处 span 命名(Clothes/Outfit 领域前缀)
status: completed
- id: rename-closet-collect-like
content: 替换 closet.go、collect.go、like.go 共 8 处 span 命名(ClosetShare/Collect/Like 领域前缀)
status: completed
- id: rename-notification-quota-user
content: 替换 notification.go、quota.go、user.go 共 10 处 span 命名(Notification/Quota/User 领域前缀)
status: completed
- id: rename-goods-horoscope-order-airecommend
content: 替换 goods.go、horoscope.go、order.go、airecommend.go 共 11 处 span 命名(Goods/Horoscope/Order/AIRecommend 领域前缀)
status: completed
- id: verify-build-vet
content: 运行 go build ./... 与 go vet ./...,并搜索确认无裸 svc 方法名 span
status: completed
dependencies:
- rename-clothes-outfit
- rename-closet-collect-like
- rename-notification-quota-user
- rename-goods-horoscope-order-airecommend
---
## 用户需求
将 service 层已埋设的 span 命名从 `svc.<方法名>` 调整为 `svc.<领域名><方法名>`,解决因多个 service 存在同名方法而导致的 span 名重复问题(如 `svc.Create`、`svc.List`、`svc.GetByUUID`),使每个 span 名全局唯一、可精确过滤与区分业务归属。
## 功能内容
- 仅修改 `global.Tracer.Start(ctx, "svc.Xxx")` 中的 span 名字符串,不改变业务逻辑、方法签名、import 或返回类型。
- 领域名取 Service 结构体名去掉 `Service` 后缀,与 DAO 层 `dao.ClothesCreate`、`dao.OutfitCreate` 的「领域名 + 动作」驼峰命名风格保持一致。
- 覆盖 12 个 service 文件、共 42 处 span。
## 技术栈
- 语言:Go
- 可观测:OpenTelemetry Trace(`global.Tracer.Start`)
- 改动性质:纯字符串替换,无新增依赖、无结构变更
## 实现方案
### 命名规则
- 领域名 = Service 结构体名去掉 `Service` 后缀:
- ClothesService → Clothes
- OutfitService → Outfit
- ClosetShareService → ClosetShare
- CollectService → Collect
- LikeService → Like
- NotificationService → Notification
- QuotaService → Quota
- UserService → User
- GoodsService → Goods
- HoroscopeService → Horoscope
- OrderService → Order
- AIRecommendService → AIRecommend
- span 名 = `svc.` + 领域名 + 方法名,驼峰无分隔,与方法名大小写一致。
### 特殊处理
- `CollectService.Collect` → `svc.CollectCollect`、`LikeService.LikeCreate` → `svc.LikeLikeCreate`,为「领域名 + 方法名」严格拼接导致的字面重复,但规则统一、机械可推导;本次不重命名方法本身。
## 实现细节
- 仅替换 `global.Tracer.Start(ctx, "svc.Xxx")` 的第二个字符串参数。
- 不改 import、不新增/删除 span、不调整方法体其他内容。
- 每个文件内按方法逐一替换,保证 42 处全部覆盖。
## 目录结构
```
internal/service/
├── clothes.go # [MODIFY] svc.Upload→svc.ClothesUpload、svc.ProcessImageAsync→svc.ClothesProcessImageAsync、svc.ProcessStatusGetByUUID→svc.ClothesProcessStatusGetByUUID、svc.GetByUUID→svc.ClothesGetByUUID、svc.UpdateByUUID→svc.ClothesUpdateByUUID、svc.DeleteByUUID→svc.ClothesDeleteByUUID、svc.List→svc.ClothesList(7 处)
├── outfit.go # [MODIFY] svc.Create→svc.OutfitCreate、svc.GetByUUID→svc.OutfitGetByUUID、svc.UpdateByUUID→svc.OutfitUpdateByUUID、svc.List→svc.OutfitList、svc.Delete→svc.OutfitDelete、svc.Public→svc.OutfitPublic(6 处)
├── closet.go # [MODIFY] svc.Create→svc.ClosetShareCreate、svc.Detail→svc.ClosetShareDetail、svc.List→svc.ClosetShareList、svc.Cancel→svc.ClosetShareCancel(4 处)
├── collect.go # [MODIFY] svc.Collect→svc.CollectCollect、svc.List→svc.CollectList(2 处)
├── like.go # [MODIFY] svc.LikeCreate→svc.LikeLikeCreate、svc.GetByTargetID→svc.LikeGetByTargetID(2 处)
├── notification.go # [MODIFY] svc.List→svc.NotificationList、svc.GetByUUID→svc.NotificationGetByUUID、svc.Read→svc.NotificationRead、svc.Unread→svc.NotificationUnread(4 处)
├── quota.go # [MODIFY] svc.InfoGetBySelf→svc.QuotaInfoGetBySelf、svc.FlowList→svc.QuotaFlowList(2 处)
├── user.go # [MODIFY] svc.WxLogin→svc.UserWxLogin、svc.InfoGetBySelf→svc.UserInfoGetBySelf、svc.ProfileUpdate→svc.UserProfileUpdate、svc.RefreshToken→svc.UserRefreshToken(4 处)
├── goods.go # [MODIFY] svc.GetByCode→svc.GoodsGetByCode、svc.List→svc.GoodsList(2 处)
├── horoscope.go # [MODIFY] svc.GetToday→svc.HoroscopeGetToday(1 处)
├── order.go # [MODIFY] svc.Create→svc.OrderCreate、svc.PayNotify→svc.OrderPayNotify、svc.Cancel→svc.OrderCancel、svc.List→svc.OrderList、svc.RefundApply→svc.OrderRefundApply、svc.RefundNotify→svc.OrderRefundNotify(6 处)
└── airecommend.go # [MODIFY] svc.Create→svc.AIRecommendCreate、svc.Save→svc.AIRecommendSave(2 处)
```
## 验证方式
- `go build ./...` 与 `go vet ./...` 通过。
- 全项目搜索确认不再存在 `"svc.Create"`、`"svc.List"`、`"svc.GetByUUID"` 等裸方法名 span。