Skip to content

[refactor] server/router/api/v1 包 DRY/SOLID 违约技术债务清理 #268

@hrygo

Description

@hrygo

背景

server/router/api/v1 包进行了 DRY/SOLID 原则扫描,发现 13 处违约问题需要清理。

详细报告:docs/reports/api-v1-dry-solid-violations.md


问题清单

DRY 违约 (6 项) - 中优先级

# 问题 位置 影响
1 AI 服务可用性检查重复 30+ 次 connect_handler.go 代码膨胀
2 用户获取模式重复 auth_service.go, ai_service.go 维护成本
3 资源名称解析模式重复 user_service.go 不一致风险
4 权限检查模式重复 10+ 次 user_service.go, memo_service.go 代码膨胀
5 Schedule Reminders 转换重复 schedule_service.go 维护成本
6 Connect 错误转换重复 connect_handler.go 代码膨胀

SOLID 违约 (7 项)

# 原则 问题 严重程度
1 SRP APIV1Service 实现 11 个 gRPC 服务接口
2 SRP user_service.go 1444 行,包含 6 个功能域
3 SRP connect_handler.go 包含 parrot 业务逻辑
4 OCP UpdateSchedule 字段更新硬编码
5 ISP AIService 包含 16+ 字段,客户端无需全部
6 DIP getRouterService 直接依赖具体实现

修复计划

Phase 1: 高优先级 SRP 违约

  • 拆分 user_service.go 为独立文件
    • user_service_crud.go
    • user_service_settings.go
    • user_service_tokens.go
    • user_service_webhooks.go
    • user_service_notifications.go
    • user_service_converter.go
  • 评估 APIV1Service 拆分可行性

Phase 2: DRY 违约清理

  • 创建 requireAI() 辅助函数
  • 创建 requireUserOrAdmin() 权限检查函数
  • 统一用户获取逻辑到 common.go
  • 创建资源名称解析器
  • 提取 reminders 转换函数

Phase 3: 其他优化

  • 重构 ScheduleService.UpdateSchedule 字段映射
  • 评估 AIService 接口拆分
  • 移动 parrot 逻辑到专用文件

参考文档

  • 扫描报告:docs/reports/api-v1-dry-solid-violations.md
  • 扫描日期:2026-02-18

Labels

technical-debt, refactor, api-v1

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions