refactor(api): 拆分 products.ts 为目录结构(types/utils/products/index) #947

Closed
xiaoxia wants to merge 2 commits from refactor/products-api into develop
Owner

变更说明

将 174 行的 products.ts 拆分为目录化结构,保持导入路径向后兼容。

拆分结构

api/products/
├── types.ts     # 类型定义(ProductItem/VideoItem/ReviewStatus 等)
├── utils.ts     # 数据转换工具(mapVideoToProductItem)
├── products.ts  # 全部 7 个 API 函数
└── index.ts     # 统一入口 re-export

变更统计

  • 旧文件:products.ts 174 行 → 删除
  • 新入口:index.ts ~40 行(-77%)
  • 新增文件:4 个
  • 导入路径 @/api/products 保持不变,向后兼容

影响范围

无业务逻辑变更,纯文件结构调整。所有导出与原文件一致。

## 变更说明 将 174 行的 products.ts 拆分为目录化结构,保持导入路径向后兼容。 ## 拆分结构 ``` api/products/ ├── types.ts # 类型定义(ProductItem/VideoItem/ReviewStatus 等) ├── utils.ts # 数据转换工具(mapVideoToProductItem) ├── products.ts # 全部 7 个 API 函数 └── index.ts # 统一入口 re-export ``` ## 变更统计 - 旧文件:products.ts 174 行 → 删除 - 新入口:index.ts ~40 行(-77%) - 新增文件:4 个 - 导入路径 `@/api/products` 保持不变,向后兼容 ## 影响范围 无业务逻辑变更,纯文件结构调整。所有导出与原文件一致。
xiaoxia added 1 commit 2026-07-26 17:07:46 +08:00
refactor(api): 拆分 products.ts 为目录结构(types/utils/products/index)
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 26s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 37s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m25s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m26s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 57s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m27s
AI Code Review / AI Code Review (pull_request) Successful in 1m16s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 32s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 59s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 56s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 2m29s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m6s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 21s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
17d6530438
将 174 行的 products.ts 拆分为目录化结构:
- types.ts: 类型定义(ProductItem/VideoItem/ReviewStatus 等)
- utils.ts: 数据转换函数(mapVideoToProductItem)
- products.ts: 全部 7 个 API 函数
- index.ts: 统一入口 re-export,保持 @/api/products 路径向后兼容

主入口从 174 行减少到约 40 行,按职责清晰分层。
xiaoxia added 1 commit 2026-07-27 12:34:59 +08:00
Merge branch 'develop' into refactor/products-api
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 30s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 43s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m17s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m16s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m59s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 28s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m54s
AI Code Review / AI Code Review (pull_request) Successful in 1m19s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 46s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 34s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 15m19s
CI/CD Pipeline / CI Gate (pull_request) 失败: CI/CD Pipeline / Validate - Code Quality (pull_request) [frontend-only]
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 20s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 17s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
ff845c3086
Collaborator

代码审查结果 - PR #947

⚠️ 问题(0个需要修改)

💡 建议(1个可选)

  1. apps/web/src/api/products/index.ts:建议谨慎导出内部类型和工具函数
    • 说明:原代码中 VideoItem(后端原始响应结构)和 mapVideoToProductItem(转换逻辑)是文件私有的,重构后通过 index.ts 对外进行了导出。这会导致外部代码可以直接依赖后端的数据结构,增加了前后端耦合度。如果后续后端结构变更,影响范围会变大。
    • 建议:除非业务层确实需要使用这些内部类型或工具,否则建议仅在模块内部使用,保持对外暴露的 API 为纯粹的领域模型(ProductItem 等)。

格式检查通过 | 逻辑审查通过 | 性能无明显问题


🤖 由 AI 代码审查机器人自动生成 | 2026-07-27 06:25:24 | 模型:

## 代码审查结果 - PR #947 ### ⚠️ 问题(0个需要修改) ### 💡 建议(1个可选) 1. **apps/web/src/api/products/index.ts**:建议谨慎导出内部类型和工具函数 - **说明**:原代码中 `VideoItem`(后端原始响应结构)和 `mapVideoToProductItem`(转换逻辑)是文件私有的,重构后通过 `index.ts` 对外进行了导出。这会导致外部代码可以直接依赖后端的数据结构,增加了前后端耦合度。如果后续后端结构变更,影响范围会变大。 - **建议**:除非业务层确实需要使用这些内部类型或工具,否则建议仅在模块内部使用,保持对外暴露的 API 为纯粹的领域模型(`ProductItem` 等)。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-27 06:25:24 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot approved these changes 2026-07-27 14:26:06 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-27 14:26:06 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。

🚀 预览环境已部署

项目 详情
PR号 #947
预览链接 https://pr-947.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #947 | | 预览链接 | [https://pr-947.preview.xiaoxiajianji.com](https://pr-947.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Collaborator

Auto merge skipped after multiple 405 errors: PR may have conflicts or unresolved checks. Please review manually. This is not a CI failure.

Auto merge skipped after multiple 405 errors: PR may have conflicts or unresolved checks. Please review manually. This is not a CI failure.
xiaoxia closed this pull request 2026-07-27 16:33:12 +08:00

🗑️ 预览环境已清理

PR #947 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #947 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 30s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 43s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m17s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m16s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m59s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 28s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m54s
AI Code Review / AI Code Review (pull_request) Successful in 1m19s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 46s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 34s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 15m19s
CI/CD Pipeline / CI Gate (pull_request) 失败: CI/CD Pipeline / Validate - Code Quality (pull_request) [frontend-only]
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 20s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 17s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.