feat: 新增售后逆向流程和物流策略闭环页面

refactor: 移除不再使用的提示文件和文档副本

docs: 更新开发进度文档,补充前端任务完成情况
This commit is contained in:
2026-03-18 21:02:23 +08:00
parent 6d0d2b6157
commit 96373deb2f
17 changed files with 29574 additions and 901 deletions

View File

@@ -55,8 +55,20 @@
| AI-Frontend-12 | 高退货率SKU闭环AI | AI-HR001, AI-HR002 | ReturnAnalysisService.ts, ReturnOptimizationService.ts | 2026-03-19 15:00 | ✅ 已完成 |
| AI-Frontend-12 | 高退货率SKU闭环数据 | DT-HR002 | ReturnEffectAnalysisService.ts | 2026-03-19 16:00 | ✅ 已完成 |
| **AI-Backend-22** | **技术基础设施闭环** | **BE-TI001, BE-TI002, BE-TI003, BE-TI004, BE-TI005** | **ServiceManagementService.ts, DataManagementService.ts, MessageProcessingService.ts, SecurityComplianceService.ts, MonitoringAlertService.ts** | **2026-03-19 17:00** | **✅ 已完成** |
| AI-Frontend-17 | 前端骨架闭环 | FE-SK001, FE-SK002, FE-SK003, FE-SK004, FE-SK005, FE-INT001, FE-INT002, FE-INT003, FE-INT004 | MenuComponent.tsx, DashboardPage.tsx, ProductPage.tsx, OrdersPage.tsx, ComponentLibrary.tsx | 2026-03-20 09:00 | 🔒 进行中 |
| **AI-Frontend-17** | **前端骨架闭环** | **FE-SK001, FE-SK002, FE-SK003, FE-SK004, FE-SK005, FE-INT001, FE-INT002, FE-INT003, FE-INT004** | **MenuComponent.tsx, DashboardPage.tsx, ProductPage.tsx, OrdersPage.tsx, ComponentLibrary.tsx** | **2026-03-20 18:00** | **✅ 已完成** |
| AI-Frontend-18 | 独立站管理闭环 | FE-IS001, FE-IS002, FE-IS003, FE-IS004, FE-IS005, FE-IS006 | IndependentSiteList.tsx, IndependentSiteCreate.tsx, IndependentSiteConfig.tsx, IndependentSiteProduct.tsx, IndependentSiteOrder.tsx, IndependentSiteAnalytics.tsx | 2026-03-18 10:00 | ✅ 已完成 |
| AI-Frontend-19 | 多商户管理闭环 | FE-MV001, FE-MV002, FE-MV003, FE-MV004 | MerchantManage.tsx, MerchantOrderManage.tsx, MerchantSettlementManage.tsx, MerchantShopManage.tsx | 2026-03-20 10:00 | ✅ 已完成 |
| AI-Frontend-22 | 恶意买家黑名单闭环 | FE-BL001, FE-BL002 | BlacklistManage.tsx, RiskMonitor.tsx | 2026-03-18 10:00 | ✅ 已完成 |
| AI-Frontend-28 | 用户资产闭环 | FE-UA001, FE-UA002, FE-UA003 | MemberLevel.tsx, PointsManage.tsx, UserAssets.tsx | 2026-03-18 11:00 | ✅ 已完成 |
| **AI-Frontend-20** | **售后逆向闭环** | **FE-SR001, FE-SR002, FE-SR003** | **ReturnApply.tsx, RefundProcess.tsx, CustomerService.tsx** | **2026-03-20 11:00** | **✅ 已完成** |
| **AI-Frontend-24** | **供应商管理闭环** | **FE-SP001** | **SupplierDetail.tsx** | **2026-03-20 12:00** | **✅ 已完成** |
| **AI-Frontend-21** | **物流策略闭环** | **FE-LOG001, FE-LOG002, FE-LOG003** | **LogisticsSelect.tsx, ShippingCostCalculator.tsx, LogisticsTracking.tsx** | **2026-03-20 13:00** | **✅ 已完成** |
| **AI-Frontend-23** | **营销管理闭环** | **FE-MK001, FE-MK002** | **Competitors.tsx, Ads.tsx** | **2026-03-20 13:00** | **✅ 已完成** |
| **AI-Frontend-25** | **报表与分析闭环** | **FE-RP001, FE-RP002** | **ProfitReport.tsx, PerformanceReport.tsx** | **2026-03-20 14:00** | **✅ 已完成** |
| **AI-Frontend-26** | **A/B测试与策略优化闭环** | **FE-AB001, FE-AB002** | **ABTestConfig.tsx, ABTestResults.tsx** | **2026-03-20 15:00** | **✅ 已完成** |
| **AI-Frontend-27** | **高退货率SKU闭环** | **FE-RT001, FE-RT002** | **ReturnMonitor.tsx, SKUManage.tsx** | **2026-03-20 16:00** | **✅ 已完成** |
| **AI-Frontend-22** | **恶意买家黑名单闭环** | **FE-BL001, FE-BL002** | **BlacklistManage.tsx, RiskMonitor.tsx** | **2026-03-20 17:00** | **✅ 已完成** |
| **AI-Frontend-28** | **用户资产闭环** | **FE-UA001, FE-UA002, FE-UA003** | **MemberLevel.tsx, PointsManage.tsx, UserAssets.tsx** | **2026-03-20 17:00** | **✅ 已完成** |
**占用规则**:
@@ -452,7 +464,83 @@
| FE-IS006 | 独立站管理闭环 | 独立站数据分析页面 | 站点ID, 时间范围 | 分析报告 | 点击分析 | ✅ completed | P1 | FE-IS001 | 12h | AI-Frontend-18 |
| FE-INT002 | 前端交互闭环 | AI定价功能交互 | 商品数据, 市场数据 | AI定价功能 | FE-SK003 | ✅ completed | P1 | FE-SK003 | 8h | AI-Frontend-17 |
| FE-INT003 | 前端交互闭环 | 订单处理交互 | 订单数据, 状态管理 | 订单处理功能 | FE-SK004 | ✅ completed | P1 | FE-SK004 | 8h | AI-Frontend-17 |
| FE-INT004 | 前端交互闭环 | 统一交互规范实现 | 交互设计, 用户体验 | 交互规范实现 | FE-SK005 | ✅ completed | P1 | FE-SK005 | 10h | AI-Frontend-17 |
| FE-INT004 | 前端交互闭环 | 统一交互规范实现 | 交互设计, 用户体验 | 交互规范实现 | FE-SK005 | ✅ completed | P1 | FE-SK005 | 10h | AI-Frontend-17
# 前端缺失任务补充
## 1.23 商户管理前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-MV001 | 多商户管理闭环 | 商户管理页面 | 商户ID, 筛选条件 | 商户列表 | 页面加载 | ✅ completed | P1 | FE-SK001 | 10h | AI-Frontend-19 |
| FE-MV002 | 多商户管理闭环 | 商户订单管理页面 | 商户ID, 订单信息 | 订单列表 | 页面加载 | ✅ completed | P1 | FE-MV001 | 10h | AI-Frontend-19 |
| FE-MV003 | 多商户管理闭环 | 商户结算管理页面 | 商户ID, 结算信息 | 结算列表 | 页面加载 | ✅ completed | P1 | FE-MV001 | 10h | AI-Frontend-19 |
| FE-MV004 | 多商户管理闭环 | 商户店铺管理页面 | 商户ID, 店铺信息 | 店铺列表 | 页面加载 | ✅ completed | P1 | FE-MV001 | 10h | AI-Frontend-19 |
## 1.24 售后服务前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-SR001 | 售后逆向闭环 | 退货申请页面 | 订单ID, 退货原因 | 退货申请 | 点击申请 | ✅ 已完成 | P1 | FE-SK001 | 10h | AI-Frontend-20 |
| FE-SR002 | 售后逆向闭环 | 退款流程页面 | 退款ID, 退款金额 | 退款处理 | 点击处理 | ✅ 已完成 | P1 | FE-SR001 | 10h | AI-Frontend-20 |
| FE-SR003 | 售后逆向闭环 | 客户服务页面 | 客户ID, 服务类型 | 服务记录 | 点击服务 | ✅ 已完成 | P1 | FE-SR001 | 10h | AI-Frontend-20 |
## 1.25 物流管理前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-LOG001 | 物流策略闭环 | 物流选择页面 | 订单ID, 物流参数 | 物流选项 | 点击选择 | ✅ 已完成 | P1 | FE-SK001 | 10h | AI-Frontend-21 |
| FE-LOG002 | 物流策略闭环 | 运费计算页面 | 订单ID, 重量信息 | 运费结果 | 点击计算 | ✅ 已完成 | P1 | FE-LOG001 | 10h | AI-Frontend-21 |
| FE-LOG003 | 物流策略闭环 | 物流追踪页面 | 物流单号, 追踪信息 | 追踪状态 | 点击追踪 | ✅ 已完成 | P1 | FE-LOG001 | 10h | AI-Frontend-21 |
## 1.26 黑名单管理前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-BL001 | 恶意买家黑名单闭环 | 黑名单管理页面 | 黑名单ID, 筛选条件 | 黑名单列表 | 页面加载 | ✅ completed | P1 | FE-SK001 | 10h | AI-Frontend-22 |
| FE-BL002 | 恶意买家黑名单闭环 | 风险监控页面 | 风险ID, 监控参数 | 风险报告 | 点击监控 | ✅ completed | P1 | FE-BL001 | 10h | AI-Frontend-22 |
## 1.27 营销管理前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-MK001 | 营销管理闭环 | 竞争对手分析页面 | 竞品ID, 分析参数 | 竞品分析 | 点击分析 | ✅ completed | P1 | FE-SK001 | 10h | AI-Frontend-23 |
| FE-MK002 | 营销管理闭环 | 营销活动管理页面 | 活动ID, 营销参数 | 活动列表 | 页面加载 | ✅ completed | P1 | FE-MK001 | 10h | AI-Frontend-23 |
## 1.28 供应商管理前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-SP001 | 供应商管理闭环 | 供应商详情页面 | 供应商ID, 交易记录 | 供应商详情 | 点击查看 | ✅ completed | P1 | FE-SK001 | 10h | AI-Frontend-24 |
## 1.29 报表中心前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-RP001 | 报表与分析闭环 | 利润报表页面 | 时间范围, 报表参数 | 利润报表 | 点击生成 | ✅ completed | P1 | FE-SK001 | 10h | AI-Frontend-25 |
| FE-RP002 | 报表与分析闭环 | 绩效报表页面 | 时间范围, 绩效参数 | 绩效报表 | 点击生成 | ✅ completed | P1 | FE-RP001 | 10h | AI-Frontend-25 |
## 1.30 A/B测试前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-AB001 | A/B测试与策略优化闭环 | A/B测试配置页面 | 测试参数, 流量分配 | 测试配置 | 点击配置 | ✅ completed | P1 | FE-SK001 | 10h | AI-Frontend-26 |
| FE-AB002 | A/B测试与策略优化闭环 | 测试结果分析页面 | 测试ID, 结果数据 | 结果报告 | 点击分析 | ✅ completed | P1 | FE-AB001 | 10h | AI-Frontend-26 |
## 1.31 退货管理前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-RT001 | 高退货率SKU闭环 | 退货监控页面 | SKU ID, 退货数据 | 退货统计 | 点击监控 | ✅ completed | P1 | FE-SK001 | 10h | AI-Frontend-27 |
| FE-RT002 | 高退货率SKU闭环 | SKU管理页面 | SKU ID, 管理参数 | SKU列表 | 点击管理 | ✅ completed | P1 | FE-RT001 | 10h | AI-Frontend-27 |
## 1.32 用户资产管理前端【P1 高优先级 - 新增】
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
| -------- | ------ | ------ | ---------- | ---- | ---- | ---- | --- | -------- | ---- | ------------- |
| FE-UA001 | 用户资产闭环 | 会员等级管理页面 | 会员ID, 等级参数 | 等级列表 | 页面加载 | ✅ completed | P1 | FE-SK001 | 10h | AI-Frontend-28 |
| FE-UA002 | 用户资产闭环 | 积分管理页面 | 用户ID, 积分数据 | 积分列表 | 点击管理 | ✅ completed | P1 | FE-UA001 | 10h | AI-Frontend-28 |
| FE-UA003 | 用户资产闭环 | 用户资产页面 | 用户ID, 资产数据 | 资产统计 | 点击查看 | ✅ completed | P1 | FE-UA001 | 10h | AI-Frontend-28 |
|
***
@@ -1646,5 +1734,634 @@ export class FeatureModuleService {
***
## 附录A前端交互任务补充
> **说明**本附录补充前端交互设计相关的详细任务与Business_ClosedLoops.md中的前端交互规范对应确保前端实现与业务闭环一致。
### A.1 商品中心交互任务
对应闭环:**数据采集与清洗闭环**、**商品刊登闭环**、**定价与利润决策闭环**
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
|---------|---------|---------|------|------|---------|------|--------|------|---------|--------|
| FE-INT-P001 | 商品主数据闭环 | 商品列表筛选交互 | 筛选条件 | 筛选结果 | 用户操作 | ⏳ pending | P1 | FE-SK003 | 4h | AI-Frontend-XX |
| FE-INT-P002 | 商品主数据闭环 | 商品列表排序交互 | 排序字段 | 排序结果 | 用户操作 | ⏳ pending | P1 | FE-SK003 | 4h | AI-Frontend-XX |
| FE-INT-P003 | 商品主数据闭环 | 商品新增交互 | 商品信息 | 新商品 | 点击新增 | ⏳ pending | P1 | FE-SK003 | 6h | AI-Frontend-XX |
| FE-INT-P004 | 商品主数据闭环 | 商品编辑交互 | 编辑数据 | 更新结果 | 点击编辑 | ⏳ pending | P1 | FE-INT-P003 | 4h | AI-Frontend-XX |
| FE-INT-P005 | 定价与利润决策闭环 | 商品定价交互 | 成本数据 | 定价结果 | 点击定价 | ⏳ pending | P1 | FE-SK003 | 8h | AI-Frontend-XX |
| FE-INT-P006 | 商品刊登闭环 | 商品上架交互 | 上架确认 | 上架结果 | 点击上架 | ⏳ pending | P1 | FE-INT-P005 | 4h | AI-Frontend-XX |
| FE-INT-P007 | 商品刊登闭环 | 商品同步交互 | 同步请求 | 同步任务 | 点击同步 | ⏳ pending | P1 | FE-INT-P006 | 6h | AI-Frontend-XX |
| FE-INT-P008 | 商品主数据闭环 | 商品批量操作交互 | 选中商品 | 批量结果 | 批量操作 | ⏳ pending | P1 | FE-INT-P003 | 8h | AI-Frontend-XX |
| FE-INT-P009 | 商品主数据闭环 | 商品详情查看交互 | 商品ID | 详情数据 | 点击查看 | ⏳ pending | P1 | FE-SK003 | 4h | AI-Frontend-XX |
| FE-INT-P010 | 定价与利润决策闭环 | 实时定价计算交互 | 成本输入 | 计算结果 | 输入变化 | ⏳ pending | P1 | FE-INT-P005 | 6h | AI-Frontend-XX |
### A.2 订单中心交互任务
对应闭环:**订单履约闭环**、**订单集中管理闭环**、**售后逆向闭环**
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
|---------|---------|---------|------|------|---------|------|--------|------|---------|--------|
| FE-INT-O001 | 订单履约闭环 | 订单列表筛选交互 | 筛选条件 | 筛选结果 | 用户操作 | ⏳ pending | P1 | FE-SK004 | 4h | AI-Frontend-XX |
| FE-INT-O002 | 订单履约闭环 | 订单确认交互 | 订单ID | 确认结果 | 点击确认 | ⏳ pending | P1 | FE-SK004 | 4h | AI-Frontend-XX |
| FE-INT-O003 | 订单履约闭环 | 订单发货交互 | 发货信息 | 发货结果 | 点击发货 | ⏳ pending | P1 | FE-INT-O002 | 6h | AI-Frontend-XX |
| FE-INT-O004 | 订单履约闭环 | 订单完成交互 | 订单ID | 完成结果 | 点击完成 | ⏳ pending | P1 | FE-INT-O003 | 4h | AI-Frontend-XX |
| FE-INT-O005 | 订单履约闭环 | 订单取消交互 | 取消原因 | 取消结果 | 点击取消 | ⏳ pending | P1 | FE-SK004 | 4h | AI-Frontend-XX |
| FE-INT-O006 | 售后逆向闭环 | 售后申请交互 | 售后信息 | 申请结果 | 点击申请 | ⏳ pending | P1 | FE-INT-O004 | 6h | AI-Frontend-XX |
| FE-INT-O007 | 售后逆向闭环 | 售后审核交互 | 审核结果 | 处理结果 | 点击审核 | ⏳ pending | P1 | FE-INT-O006 | 4h | AI-Frontend-XX |
| FE-INT-O008 | 售后逆向闭环 | 退款处理交互 | 退款金额 | 退款结果 | 点击退款 | ⏳ pending | P1 | FE-INT-O007 | 6h | AI-Frontend-XX |
| FE-INT-O009 | 订单集中管理闭环 | 多平台订单聚合交互 | 平台筛选 | 聚合结果 | 用户操作 | ⏳ pending | P1 | FE-SK004 | 8h | AI-Frontend-XX |
| FE-INT-O010 | 订单履约闭环 | 异常订单处理交互 | 异常信息 | 处理结果 | 点击处理 | ⏳ pending | P1 | FE-SK004 | 6h | AI-Frontend-XX |
### A.3 执行中心交互任务
对应闭环:**服务编排与执行闭环**
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
|---------|---------|---------|------|------|---------|------|--------|------|---------|--------|
| FE-INT-T001 | 服务编排与执行闭环 | 任务列表筛选交互 | 筛选条件 | 筛选结果 | 用户操作 | ⏳ pending | P1 | FE-SK001 | 4h | AI-Frontend-XX |
| FE-INT-T002 | 服务编排与执行闭环 | 任务重试交互 | 任务ID | 重试结果 | 点击重试 | ⏳ pending | P1 | FE-INT-T001 | 4h | AI-Frontend-XX |
| FE-INT-T003 | 服务编排与执行闭环 | 任务取消交互 | 任务ID | 取消结果 | 点击取消 | ⏳ pending | P1 | FE-INT-T001 | 4h | AI-Frontend-XX |
| FE-INT-T004 | 服务编排与执行闭环 | 任务日志查看交互 | 任务ID | 日志数据 | 点击查看 | ⏳ pending | P1 | FE-INT-T001 | 4h | AI-Frontend-XX |
| FE-INT-T005 | 服务编排与执行闭环 | 任务详情查看交互 | 任务ID | 详情数据 | 点击查看 | ⏳ pending | P1 | FE-INT-T001 | 4h | AI-Frontend-XX |
| FE-INT-T006 | 服务编排与执行闭环 | 批量任务操作交互 | 选中任务 | 批量结果 | 批量操作 | ⏳ pending | P1 | FE-INT-T001 | 6h | AI-Frontend-XX |
### A.4 数据中心交互任务
对应闭环:**报表与分析闭环**
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
|---------|---------|---------|------|------|---------|------|--------|------|---------|--------|
| FE-INT-A001 | 报表与分析闭环 | 数据筛选交互 | 筛选条件 | 筛选结果 | 用户操作 | ⏳ pending | P1 | FE-SK002 | 4h | AI-Frontend-XX |
| FE-INT-A002 | 报表与分析闭环 | 时间范围选择交互 | 时间范围 | 数据更新 | 选择时间 | ⏳ pending | P1 | FE-INT-A001 | 4h | AI-Frontend-XX |
| FE-INT-A003 | 报表与分析闭环 | 图表交互 | 图表操作 | 数据详情 | 点击图表 | ⏳ pending | P1 | FE-INT-A001 | 6h | AI-Frontend-XX |
| FE-INT-A004 | 报表与分析闭环 | 数据导出交互 | 导出格式 | 导出文件 | 点击导出 | ⏳ pending | P1 | FE-INT-A001 | 4h | AI-Frontend-XX |
| FE-INT-A005 | 报表与分析闭环 | KPI卡片交互 | 卡片点击 | 详情数据 | 点击卡片 | ⏳ pending | P1 | FE-INT-A001 | 4h | AI-Frontend-XX |
### A.5 合规中心交互任务
对应闭环:**合规与证书管理闭环**、**合规与风控闭环**
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
|---------|---------|---------|------|------|---------|------|--------|------|---------|--------|
| FE-INT-C001 | 合规与证书管理闭环 | 证书上传交互 | 证书文件 | 上传结果 | 点击上传 | ⏳ pending | P1 | FE-SK001 | 6h | AI-Frontend-XX |
| FE-INT-C002 | 合规与证书管理闭环 | 证书审核交互 | 审核结果 | 处理结果 | 点击审核 | ⏳ pending | P1 | FE-INT-C001 | 4h | AI-Frontend-XX |
| FE-INT-C003 | 合规与风控闭环 | 合规检查交互 | 商品ID | 检查结果 | 点击检查 | ⏳ pending | P1 | FE-SK001 | 6h | AI-Frontend-XX |
| FE-INT-C004 | 合规与风控闭环 | 风险监控交互 | 监控参数 | 监控结果 | 用户操作 | ⏳ pending | P1 | FE-INT-C003 | 6h | AI-Frontend-XX |
### A.6 系统设置交互任务
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 |
|---------|---------|---------|------|------|---------|------|--------|------|---------|--------|
| FE-INT-S001 | 系统设置 | 平台账号配置交互 | 账号信息 | 配置结果 | 保存配置 | ⏳ pending | P2 | FE-SK001 | 6h | AI-Frontend-XX |
| FE-INT-S002 | 系统设置 | 汇率配置交互 | 汇率数据 | 配置结果 | 保存配置 | ⏳ pending | P2 | FE-SK001 | 4h | AI-Frontend-XX |
| FE-INT-S003 | 系统设置 | 成本模板配置交互 | 模板数据 | 配置结果 | 保存配置 | ⏳ pending | P2 | FE-SK001 | 6h | AI-Frontend-XX |
| FE-INT-S004 | 系统设置 | WinNode配置交互 | 节点信息 | 配置结果 | 保存配置 | ⏳ pending | P2 | FE-SK001 | 6h | AI-Frontend-XX |
## 附录B前端开发规范
> **说明**本附录定义前端开发的技术规范包括技术栈、项目结构、组件规范、状态管理和API交互规范。
### B.1 技术栈与架构
#### 核心技术栈
| 层级 | 技术 | 版本 | 说明 |
|------|------|------|------|
| **框架** | React | 18.x | UI框架 |
| **脚手架** | Umi | 4.x | 企业级前端框架 |
| **UI库** | Ant Design | 5.x | 组件库 |
| **状态管理** | dva | @umijs/max内置 | 全局状态管理 |
| **请求库** | axios + umi-request | latest | HTTP请求 |
| **路由** | Umi Router | 内置 | 约定式路由 |
| **构建工具** | Webpack | 5.x | 打包工具 |
| **类型检查** | TypeScript | 4.x | 类型安全 |
| **样式** | Less + CSS Modules | - | 样式方案 |
#### 项目结构
```
dashboard/
├── config/ # 配置文件
│ ├── config.ts # 主配置
│ ├── routes.ts # 路由配置
│ └── proxy.ts # 代理配置
├── src/
│ ├── components/ # 组件
│ │ ├── business/ # 业务组件
│ │ │ ├── ProductTable/
│ │ │ ├── OrderTable/
│ │ │ └── TaskTable/
│ │ ├── common/ # 通用组件
│ │ │ ├── StatusTag/
│ │ │ ├── ConfirmModal/
│ │ │ └── PageHeader/
│ │ └── charts/ # 图表组件
│ │ ├── SalesChart/
│ │ └── ProfitChart/
│ ├── layouts/ # 布局组件
│ │ ├── BasicLayout.tsx
│ │ ├── BlankLayout.tsx
│ │ └── components/
│ ├── pages/ # 页面组件
│ │ ├── dashboard/
│ │ ├── products/
│ │ │ ├── list/
│ │ │ ├── detail/
│ │ │ └── components/
│ │ ├── orders/
│ │ ├── tasks/
│ │ ├── analytics/
│ │ ├── compliance/
│ │ └── settings/
│ ├── models/ # 状态管理
│ │ ├── product.ts
│ │ ├── order.ts
│ │ ├── task.ts
│ │ └── global.ts
│ ├── services/ # API服务
│ │ ├── product.ts
│ │ ├── order.ts
│ │ ├── task.ts
│ │ └── api.ts
│ ├── utils/ # 工具函数
│ │ ├── request.ts
│ │ ├── constants.ts
│ │ ├── helpers.ts
│ │ └── format.ts
│ ├── hooks/ # 自定义Hooks
│ │ ├── useProduct.ts
│ │ ├── useOrder.ts
│ │ └── useTable.ts
│ ├── types/ # 类型定义
│ │ ├── product.d.ts
│ │ ├── order.d.ts
│ │ └── global.d.ts
│ ├── access.ts # 权限配置
│ └── app.ts # 运行时配置
├── public/ # 静态资源
├── tests/ # 测试文件
├── package.json
├── tsconfig.json
└── README.md
```
### B.2 组件设计规范
#### 组件分类
| 分类 | 说明 | 存放路径 | 命名规范 |
|------|------|---------|---------|
| **页面组件** | 完整页面 | src/pages/ | PascalCase.tsx |
| **布局组件** | 页面布局 | src/layouts/ | PascalCase.tsx |
| **业务组件** | 业务相关 | src/components/business/ | PascalCase/index.tsx |
| **通用组件** | 通用UI | src/components/common/ | PascalCase/index.tsx |
| **图表组件** | 数据可视化 | src/components/charts/ | PascalCase/index.tsx |
#### 组件模板
```typescript
// src/components/business/ProductTable/index.tsx
import React, { useState } from 'react';
import { Table } from 'antd';
import styles from './index.module.less';
// 类型定义
export interface ProductTableProps {
data: Product[];
loading?: boolean;
onEdit?: (record: Product) => void;
onDelete?: (record: Product) => void;
}
// 组件实现
const ProductTable: React.FC<ProductTableProps> = ({
data,
loading = false,
onEdit,
onDelete,
}) => {
// 状态定义
const [selectedRows, setSelectedRows] = useState<Product[]>([]);
// 列定义
const columns = [
// ...
];
return (
<Table
className={styles.table}
columns={columns}
dataSource={data}
loading={loading}
rowSelection={{
selectedRowKeys: selectedRows.map(row => row.id),
onChange: (_, rows) => setSelectedRows(rows),
}}
/>
);
};
export default ProductTable;
```
### B.3 状态管理规范
#### Model规范
```typescript
// src/models/product.ts
import { Effect, Reducer } from 'umi';
import { getProductList, getProductDetail } from '@/services/product';
// 状态类型
export interface ProductState {
list: Product[];
detail: Product | null;
loading: boolean;
pagination: {
current: number;
pageSize: number;
total: number;
};
}
// Model定义
export interface ProductModelType {
namespace: 'product';
state: ProductState;
effects: {
fetchList: Effect;
fetchDetail: Effect;
};
reducers: {
setList: Reducer<ProductState>;
setDetail: Reducer<ProductState>;
setLoading: Reducer<ProductState>;
};
}
const ProductModel: ProductModelType = {
namespace: 'product',
state: {
list: [],
detail: null,
loading: false,
pagination: {
current: 1,
pageSize: 20,
total: 0,
},
},
effects: {
*fetchList({ payload }, { call, put }) {
yield put({ type: 'setLoading', payload: true });
const response = yield call(getProductList, payload);
yield put({ type: 'setList', payload: response.data });
yield put({ type: 'setPagination', payload: response.pagination });
yield put({ type: 'setLoading', payload: false });
},
*fetchDetail({ payload: id }, { call, put }) {
yield put({ type: 'setLoading', payload: true });
const response = yield call(getProductDetail, id);
yield put({ type: 'setDetail', payload: response.data });
yield put({ type: 'setLoading', payload: false });
},
},
reducers: {
setList(state, { payload }) {
return { ...state, list: payload };
},
setDetail(state, { payload }) {
return { ...state, detail: payload };
},
setLoading(state, { payload }) {
return { ...state, loading: payload };
},
},
};
export default ProductModel;
```
### B.4 API交互规范
#### Service规范
```typescript
// src/services/product.ts
import request from '@/utils/request';
import { ProductListParams, CreateProductData, UpdateProductData, PricingData } from '@/types/product';
/**
* 获取商品列表
* @param params 查询参数
*/
export async function getProductList(params: ProductListParams) {
return request('/api/products', {
method: 'GET',
params,
});
}
/**
* 获取商品详情
* @param id 商品ID
*/
export async function getProductDetail(id: string) {
return request(`/api/products/${id}`, {
method: 'GET',
});
}
/**
* 创建商品
* @param data 商品数据
*/
export async function createProduct(data: CreateProductData) {
return request('/api/products', {
method: 'POST',
data,
});
}
/**
* 更新商品
* @param id 商品ID
* @param data 商品数据
*/
export async function updateProduct(id: string, data: UpdateProductData) {
return request(`/api/products/${id}`, {
method: 'PUT',
data,
});
}
/**
* 删除商品
* @param id 商品ID
*/
export async function deleteProduct(id: string) {
return request(`/api/products/${id}`, {
method: 'DELETE',
});
}
/**
* 更新商品价格
* @param id 商品ID
* @param data 定价数据
*/
export async function updateProductPrice(id: string, data: PricingData) {
return request(`/api/products/${id}/price`, {
method: 'POST',
data,
});
}
/**
* 同步商品到平台
* @param id 商品ID
* @param platform 平台名称
*/
export async function syncProductToPlatform(id: string, platform: string) {
return request(`/api/products/${id}/sync`, {
method: 'POST',
data: { platform },
});
}
```
#### Request封装
```typescript
// src/utils/request.ts
import { extend, RequestOptionsInit } from 'umi-request';
import { notification } from 'antd';
const codeMessage: Record<number, string> = {
200: '服务器成功返回请求的数据。',
201: '新建或修改数据成功。',
202: '一个请求已经进入后台排队(异步任务)。',
204: '删除数据成功。',
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
401: '用户没有权限(令牌、用户名、密码错误)。',
403: '用户得到授权,但是访问是被禁止的。',
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
406: '请求的格式不可得。',
410: '请求的资源被永久删除,且不会再得到的。',
422: '当创建一个对象时,发生一个验证错误。',
500: '服务器发生错误,请检查服务器。',
502: '网关错误。',
503: '服务不可用,服务器暂时过载或维护。',
504: '网关超时。',
};
/**
* 异常处理程序
*/
const errorHandler = (error: { response: Response }): Response => {
const { response } = error;
if (response && response.status) {
const errorText = codeMessage[response.status] || response.statusText;
const { status, url } = response;
notification.error({
message: `请求错误 ${status}: ${url}`,
description: errorText,
});
// 401 未授权,跳转到登录页
if (status === 401) {
window.location.href = '/login';
}
} else if (!response) {
notification.error({
description: '您的网络发生异常,无法连接服务器',
message: '网络异常',
});
}
return response;
};
/**
* 配置request请求时的默认参数
*/
const request = extend({
errorHandler,
// 默认错误处理
credentials: 'include', // 默认请求是否带上cookie
});
// 请求拦截器
request.interceptors.request.use((url, options) => {
// 添加token
const token = localStorage.getItem('token');
if (token) {
options.headers = {
...options.headers,
Authorization: `Bearer ${token}`,
};
}
return { url, options };
});
// 响应拦截器
request.interceptors.response.use(async (response) => {
const data = await response.clone().json();
if (data.code !== 200) {
notification.error({
message: '请求失败',
description: data.message || '未知错误',
});
}
return response;
});
export default request;
```
### B.5 路由与权限规范
#### 路由配置
```typescript
// config/routes.ts
export default [
{
path: '/',
component: '@/layouts/BasicLayout',
routes: [
{ path: '/', redirect: '/dashboard' },
{
path: '/dashboard',
name: '工作台',
icon: 'DashboardOutlined',
component: '@/pages/dashboard',
access: 'dashboard:read',
},
{
path: '/products',
name: '商品中心',
icon: 'ShoppingOutlined',
access: 'product:read',
routes: [
{
path: '/products/list',
name: '商品列表',
component: '@/pages/products/list',
access: 'product:read',
},
{
path: '/products/detail/:id',
name: '商品详情',
component: '@/pages/products/detail',
hideInMenu: true,
access: 'product:read',
},
{
path: '/products/create',
name: '新增商品',
component: '@/pages/products/create',
hideInMenu: true,
access: 'product:create',
},
],
},
{
path: '/orders',
name: '订单中心',
icon: 'FileTextOutlined',
access: 'order:read',
routes: [
{
path: '/orders/list',
name: '订单列表',
component: '@/pages/orders/list',
access: 'order:read',
},
{
path: '/orders/detail/:id',
name: '订单详情',
component: '@/pages/orders/detail',
hideInMenu: true,
access: 'order:read',
},
],
},
// ... 其他路由
],
},
];
```
#### 权限配置
```typescript
// src/access.ts
import { InitialState } from 'umi';
export default function(initialState: InitialState) {
const { currentUser } = initialState || {};
const permissions = currentUser?.permissions || [];
const role = currentUser?.role || '';
return {
// 工作台权限
'dashboard:read': permissions.includes('dashboard:read'),
// 商品权限
'product:read': permissions.includes('product:read'),
'product:create': permissions.includes('product:create'),
'product:update': permissions.includes('product:update'),
'product:delete': permissions.includes('product:delete'),
'product:sync': permissions.includes('product:sync'),
// 订单权限
'order:read': permissions.includes('order:read'),
'order:confirm': permissions.includes('order:confirm'),
'order:ship': permissions.includes('order:ship'),
'order:cancel': permissions.includes('order:cancel'),
'order:refund': permissions.includes('order:refund'),
// 任务权限
'task:read': permissions.includes('task:read'),
'task:retry': permissions.includes('task:retry'),
'task:cancel': permissions.includes('task:cancel'),
// 数据权限
'analytics:read': permissions.includes('analytics:read'),
'analytics:export': permissions.includes('analytics:export'),
// 合规权限
'compliance:read': permissions.includes('compliance:read'),
'compliance:upload': permissions.includes('compliance:upload'),
'compliance:audit': permissions.includes('compliance:audit'),
// 设置权限仅ADMIN
'settings:read': role === 'ADMIN',
'settings:update': role === 'ADMIN',
};
}
```
---
**补充说明**
1. 本附录内容基于参考文档的前端开发规范与现有50个业务闭环保持一致
2. 所有技术栈选择遵循项目特定规则中的约束
3. 组件规范和状态管理规范与Business_ClosedLoops.md中的前端交互规范对应
4. API交互规范遵循五元组追踪要求
***
**最后更新时间**2026-03-18
**维护者**Crawlful Hub AI Team