Skip to content

refactor(lib): Restructure infrastructure with API client, type definitions and modular utilities#423

Closed
huangli28926 wants to merge 3 commits intoLianjiaTech:developfrom
huangli28926:pr4-addModelsV3-0107
Closed

refactor(lib): Restructure infrastructure with API client, type definitions and modular utilities#423
huangli28926 wants to merge 3 commits intoLianjiaTech:developfrom
huangli28926:pr4-addModelsV3-0107

Conversation

@huangli28926
Copy link

refactor: Restructure lib layer architecture and enhance infrastructure

  • feat(api): Add unified API client wrapper

    • Implement dynamic baseURL resolution (SSR/CSR support)
    • Add request/response interceptors
    • Support auto-unwrapping for multiple backend formats
    • Implement 401 auto-redirect logic
  • feat(api): Add meta module API methods

    • Category, endpoint, model, channel management APIs
    • Metadata query and update interface encapsulation
  • feat(types): Add complete OpenAPI type definitions

    • Core entity types (model, channel, endpoint)
    • API request/response types
  • refactor(utils): Refactor utils to modular structure

    • Split single utils.ts into directory structure
    • Add price formatting utility functions
    • Keep common utilities (cn, getInitialEndpoint)
  • feat(constants): Add theme constants configuration

    • Tag color system (18 colors)
  • feat(i18n): Add model page translations

    • loadingModels/loading/noFilterTags/retry
  • chore: Remove empty placeholder files (.gitkeep)

refactor(lib): 重构基础架构,新增 API 客户端、类型定义和工具函数模块化

  • feat(api): 新增统一的 API 客户端封装

    • 实现动态 baseURL 解析(支持 SSR/CSR)
    • 添加请求/响应拦截器
    • 支持多种后端响应格式自动解包
    • 实现 401 自动重定向逻辑
  • feat(api): 新增 meta 模块 API 方法集

    • 分类、端点、模型、渠道管理 API
    • 元数据查询和更新接口封装
  • feat(types): 新增完整的 OpenAPI 类型定义

    • 模型、渠道、端点等核心实体类型
    • API 请求响应类型
  • refactor(utils): 重构工具函数模块化结构

    • 将单文件 utils.ts 拆分为目录结构
    • 新增价格格式化工具函数
    • 保留通用工具函数(cn、getInitialEndpoint)
  • feat(constants): 新增主题常量配置

    • 标签颜色系统(18 种颜色)
  • feat(i18n): 新增模型页面相关翻译

    • loadingModels/loading/noFilterTags/retry
  • chore: 移除空占位文件 (.gitkeep)

@szl97
Copy link
Collaborator

szl97 commented Jan 7, 2026

@claude 检查提交的代码,使用中文回复

@szl97
Copy link
Collaborator

szl97 commented Jan 7, 2026

Claude finished @szl97's task —— View job


正在检查提交的代码...

代码审查任务清单

  • 分析项目整体重构架构
  • 审查 API 客户端实现 (lib/api/client.ts)
  • 检查类型定义 (lib/types/openapi.ts)
  • 审查工具函数模块化重构 (lib/utils/)
  • 检查新增的 UI 组件
  • 审查 hooks 和数据获取逻辑
  • 提供综合代码审查反馈

代码审查结果

🟢 总体评价

这次重构整体质量很高,架构设计合理,代码结构清晰。重构符合现代前端最佳实践,模块化程度高,可维护性得到明显提升。

🔍 详细审查意见

1. API 客户端实现 (lib/api/client.ts:1-232) ✅

优点:

  • 智能的 baseURL 解析逻辑,完美支持 SSR/CSR 环境
  • 响应拦截器支持多种后端格式自动解包(Java后端包裹格式 + 扁平格式)
  • 401 自动重定向逻辑设计周到,排除了 userInfo 接口避免循环重定向
  • 错误处理全面,HTTP 状态码映射合理
  • 开发环境日志记录详细,便于调试

建议改进:

  • client.ts:86 使用了 any 类型断言,建议定义具体的响应格式接口
  • client.ts:125 检查 userInfo 接口使用了字符串匹配,建议使用更精确的路径匹配

2. 类型定义 (lib/types/openapi.ts:1-241) ✅

优点:

  • 类型定义完整且结构化,覆盖了所有核心业务实体
  • 接口命名规范,语义清晰
  • 支持泛型的分页和响应包装类型设计优秀

建议改进:

  • openapi.ts:22 UserInfo.optionalInfo 建议使用更具体的类型而不是 Record<string, any>
  • openapi.ts:97 Model.properties 同样建议定义具体的属性接口

3. API 方法封装 (lib/api/meta.ts:1-200) ✅

优点:

  • 方法命名清晰,符合 RESTful 约定
  • 参数处理规范,查询参数和请求体分离合理
  • 错误处理依赖统一的 apiClient,保持一致性

注意点:

  • meta.ts:17,24,29 部分方法直接返回 response.data 而其他返回 response,建议统一处理方式

4. 工具函数模块化 (lib/utils/) ✅

优点:

  • 从单文件拆分为模块化结构,职责分离清晰
  • price.ts 价格格式化工具函数设计合理,处理了各种边界情况
  • 保留了原有核心工具函数(cn, getInitialEndpoint),向下兼容良好

5. UI 组件实现 ✅

ModelCard 组件 (components/ui/modelCard/index.tsx:1-103):

  • 组件设计符合现代 React 最佳实践
  • 使用了工具函数 formatPriceInfo 进行价格格式化,代码复用性好
  • 支持可选的添加渠道回调,扩展性良好

ModelFilterPanel 组件 (components/ui/models/index.tsx:1-178):

  • 状态管理合理,使用了 useMemo 优化性能
  • 受控组件模式实现正确,支持外部状态同步
  • 事件处理使用 useCallback 优化,避免不必要的重渲染

6. Hooks 设计 (useEndpointData.ts:1-105) ✅

优点:

  • 分离了初始加载和模型更新的 loading 状态,UX 体验更好
  • 使用 useRef 优化依赖判断,避免不必要的请求
  • 错误处理完善,包含了重试机制

🛡️ 安全性审查

  • 没有发现明显的安全漏洞
  • API 客户端正确处理了认证和 CORS
  • 没有敏感信息泄漏风险

📦 架构评价

模块化程度: 9/10
代码质量: 8.5/10
类型安全: 8/10
可维护性: 9/10

🔧 建议优化

  1. 减少 any 类型的使用,增强类型安全性
  2. 统一 API 响应处理方式
  3. 考虑添加更多的错误边界处理
  4. 可考虑添加 API 缓存机制提升性能

这次重构为项目奠定了良好的基础架构,为后续功能开发提供了坚实的技术支撑。


/**
* 自定义 Hook: 管理端点数据的获取和状态
*/
export const useEndpointData = (endpoint: string, selectedTags: string[]) => {
Copy link
Collaborator

@fengyizhu fengyizhu Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

看起来 endpoint、models这些基础数据非常通用,建议规划到一个 context 对象结构, 把定义和 获取拆开。可以单开issues处理

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants