- 移除未使用的TabPane组件 - 修复类型定义和导入方式 - 优化mock数据源的环境变量判断逻辑 - 更新文档结构并归档旧文件 - 添加新的UI组件和Memo组件 - 调整API路径和响应处理
19 KiB
19 KiB
Frontend Design (Crawlful Hub)
定位:Crawlful Hub 前端架构设计文档 - 包含技术栈、目录结构、核心模块及开发规范。 更新日期: 2026-03-18 最高优先级参考: Business_Blueprint.md
1. 技术栈 (Tech Stack)
1.1 当前技术栈
| 层级 | 技术 | 版本 | 用途 |
|---|---|---|---|
| Framework | React | 18.x | UI 框架 |
| Language | TypeScript | 5.x | 开发语言 |
| Build Tool | Umi | 4.x | 构建工具 |
| UI Library | Ant Design | 5.x | 组件库 |
| State | Redux | 4.x | 状态管理 |
| Router | Umi Router | 4.x | 路由管理 |
| Testing | Jest | 29.x | 单元测试 |
1.2 技术栈演进 (2026 Q4 目标)
| 层级 | 技术 | 版本 | 用途 |
|---|---|---|---|
| Framework | React | 19 (或 Next.js 15) | UI 框架 |
| Language | TypeScript | 5.x | 开发语言 |
| Build Tool | Vite (开发) + Rspack (生产) | - | 构建工具 |
| UI Library | Ant Design 5.x + 自定义组件库 | - | 组件库 |
| State | Zustand + TanStack Query | - | 状态管理 |
| Router | Umi Router 4.x | - | 路由管理 |
| Testing | Jest | 29.x | 单元测试 |
| 微前端 | qiankun | - | 大型模块独立部署 |
2. 目录结构 (Directory Structure)
dashboard/src/
│
├─ .umi/ # Umi 生成文件
│ ├─ core/
│ ├─ appData.json
│ └─ exports.ts
│
├─ components/ # 公共组件
│ ├─ ui/ # UI 组件库
│ │ ├─ Button.tsx
│ │ ├─ Card.tsx
│ │ ├─ ComponentLibrary.tsx
│ │ ├─ Input.tsx
│ │ ├─ ResponsiveLayout.tsx
│ │ └─ index.ts
│ ├─ LazyLoad.tsx # 懒加载组件
│ ├─ Table.tsx # 表格组件
│ ├─ VirtualList.tsx # 虚拟滚动组件
│ ├── README.md
│ └── index.ts
│
├─ models/ # 状态管理
│ ├─ StateManagement.ts # 状态管理主文件
│ ├─ global.ts # 全局状态
│ ├─ order.ts # 订单状态
│ ├─ crossBorder.ts # 跨境电商状态
├─ pages/
│ ├─ CrossBorder/
│ │ ├─ ProductManagement.tsx # 跨境商品管理
│ │ ├─ CustomsDeclaration.tsx # 清关申报
│ │ ├─ LogisticsManagement.tsx # 物流管理
│ │ ├─ PaymentManagement.tsx # 支付管理
│ │ ├─ PlatformIntegration.tsx # 平台集成
│ │ └─ index.tsx
├─ services/
│ ├─ crossBorderDataSource.ts # 跨境电商数据源
│ ├─ platformIntegrationService.ts # 平台集成服务
│ ├─ product.ts # 商品状态
│ └── index.ts
│
├─ pages/ # 页面组件
│ ├─ ABTest/ # A/B测试
│ ├─ Ad/ # 广告管理
│ ├─ AfterSales/ # 售后服务
│ ├─ Auth/ # 认证
│ ├─ B2B/ # B2B贸易
│ ├─ B2BTrade/ # B2B贸易
│ ├─ Blacklist/ # 黑名单管理
│ ├─ Compliance/ # 合规管理
│ ├─ Finance/ # 财务管理
│ ├─ Inventory/ # 库存管理
│ ├─ Logistics/ # 物流管理
│ ├─ Marketing/ # 营销管理
│ ├─ Merchant/ # 商户管理
│ ├─ Orders/ # 订单管理
│ ├─ Product/ # 商品管理
│ ├─ Reports/ # 报表中心
│ ├─ Return/ # 退货管理
│ ├─ Settings/ # 设置
│ ├─ Suppliers/ # 供应商管理
│ ├─ UserAsset/ # 用户资产
│ └─ index.tsx # 首页/仪表盘
│
├─ services/ # API 服务
│ ├─ api/ # API 客户端
│ │ ├─ client.ts
│ │ ├─ index.ts
│ │ ├─ order.ts
│ │ ├─ product.ts
│ │ └─ user.ts
│ ├─ merchantOrderService.ts # 商户订单服务
│ ├─ merchantService.ts # 商户服务
│ ├─ merchantSettlementService.ts # 商户结算服务
│ └─ merchantShopService.ts # 商户店铺服务
│
├─ tests/ # 测试文件
│ ├─ frontend.functional.test.ts # 前端功能测试
│ └─ frontend.integration.test.ts # 前端集成测试
│
└─ utils/ # 工具函数
├─ PerformanceOptimization.ts # 性能优化
├─ performance.ts # 性能相关
├─ responsive.ts # 响应式相关
└─ security.ts # 安全相关
3. 页面路由 (Routes)
3.1 路由结构
const routes = [
// 公共路由
{ path: '/login', element: <Login /> },
// 受保护路由
{
path: '/',
element: <MainLayout />,
children: [
{ path: '/', element: <Dashboard /> },
{ path: '/products', element: <Products /> },
{ path: '/products/:id', element: <ProductDetail /> },
{ path: '/products/create', element: <ProductCreate /> },
{ path: '/products/review', element: <ProductReview /> },
{ path: '/orders', element: <Orders /> },
{ path: '/orders/:id', element: <OrderDetail /> },
{ path: '/orders/audit', element: <OrderAudit /> },
{ path: '/finance', element: <Finance /> },
{ path: '/finance/transactions', element: <Transactions /> },
{ path: '/finance/reconciliation', element: <Reconciliation /> },
{ path: '/inventory', element: <Inventory /> },
{ path: '/inventory/warehouses', element: <Warehouses /> },
{ path: '/inventory/forecast', element: <InventoryForecast /> },
{ path: '/marketing', element: <Marketing /> },
{ path: '/marketing/ads', element: <Ads /> },
{ path: '/marketing/competitors', element: <Competitors /> },
{ path: '/suppliers', element: <Suppliers /> },
{ path: '/suppliers/:id', element: <SupplierDetail /> },
{ path: '/reports', element: <Reports /> },
{ path: '/reports/profit', element: <ProfitReport /> },
{ path: '/reports/performance', element: <PerformanceReport /> },
{ path: '/settings', element: <Settings /> },
{ path: '/settings/profile', element: <ProfileSettings /> },
{ path: '/settings/tenant', element: <TenantSettings /> },
{ path: '/settings/users', element: <UserManagement /> },
]
}
];
3.2 权限路由
// 基于角色的路由访问控制
const roleRoutes = {
ADMIN: ['*'], // 所有路由
MANAGER: ['*'], // 所有路由
OPERATOR: [
'/products',
'/orders',
'/inventory'
],
FINANCE: [
'/finance',
'/reports'
],
SOURCING: [
'/products',
'/suppliers'
],
LOGISTICS: [
'/orders',
'/inventory'
],
ANALYST: [
'/reports',
'/marketing/competitors'
]
};
4. 核心模块
4.1 商品管理模块
功能列表
- 商品列表展示 (分页、筛选、排序)
- 商品详情查看
- 商品创建/编辑
- 商品审核流程
- 批量操作
- 动态定价
- 套利分析
页面组件
Product/index.tsx- 商品管理入口Product/ProductDetail.tsx- 商品详情页Product/ProductPublishForm.tsx- 商品发布表单Product/MaterialUpload.tsx- 物料上传
4.2 订单管理模块
功能列表
- 订单列表展示
- 订单详情查看
- 订单状态流转
- 批量审核
- 订单统计
- 异常订单处理
- 订单聚合分析
页面组件
Orders/index.tsx- 订单管理入口Orders/OrderList.tsx- 订单列表页Orders/OrderDetail.tsx- 订单详情页Orders/ExceptionOrder.tsx- 异常订单处理Orders/OrderAggregation.tsx- 订单聚合分析
4.3 商户管理模块
功能列表
- 商户列表管理
- 商户订单管理
- 商户结算管理
- 商户店铺管理
页面组件
Merchant/index.tsx- 商户管理入口Merchant/MerchantManage.tsx- 商户管理Merchant/MerchantOrderManage.tsx- 商户订单管理Merchant/MerchantSettlementManage.tsx- 商户结算管理Merchant/MerchantShopManage.tsx- 商户店铺管理
4.4 售后服务模块
功能列表
- 退货申请处理
- 退款流程管理
- 客户服务
页面组件
AfterSales/index.tsx- 售后服务入口AfterSales/ReturnApply.tsx- 退货申请AfterSales/RefundProcess.tsx- 退款流程AfterSales/CustomerService.tsx- 客户服务
4.5 物流管理模块
功能列表
- 物流选择
- 运费计算
- 物流追踪
页面组件
Logistics/index.tsx- 物流管理入口Logistics/LogisticsSelect.tsx- 物流选择Logistics/FreightCalc.tsx- 运费计算Logistics/LogisticsTrack.tsx- 物流追踪
4.6 合规管理模块
功能列表
- 合规检查
- 证书管理
- 证书过期提醒
页面组件
Compliance/index.tsx- 合规管理入口Compliance/ComplianceCheck.tsx- 合规检查Compliance/CertificateManage.tsx- 证书管理Compliance/CertificateExpiryReminder.tsx- 证书过期提醒
4.7 黑名单管理模块
功能列表
- 黑名单管理
- 风险监控
页面组件
Blacklist/index.tsx- 黑名单管理入口Blacklist/BlacklistManage.tsx- 黑名单管理Blacklist/RiskMonitor.tsx- 风险监控
4.8 B2B贸易模块
功能列表
- 企业报价
- 批量订单
- 合同管理
页面组件
B2B/index.tsx- B2B贸易入口B2B/EnterpriseQuote.tsx- 企业报价B2B/BatchOrder.tsx- 批量订单B2B/ContractManage.tsx- 合同管理
4.9 广告管理模块
功能列表
- 广告投放管理
- ROI分析
- 广告计划
页面组件
Ad/index.tsx- 广告管理入口Ad/AdDelivery.tsx- 广告投放Ad/ROIAnalysis.tsx- ROI分析Ad/AdPlanPage.tsx- 广告计划
4.10 财务管理模块
功能列表
- 财务概览
- 交易记录
- 对账记录
页面组件
Finance/index.tsx- 财务管理入口Finance/Transactions.tsx- 交易记录Finance/Reconciliation.tsx- 对账记录
4.11 库存管理模块
功能列表
- 库存概览
- 仓库管理
- 库存预测
页面组件
Inventory/index.tsx- 库存管理入口Inventory/Warehouses.tsx- 仓库管理Inventory/InventoryForecast.tsx- 库存预测
4.12 营销管理模块
功能列表
- 营销概览
- 广告管理
- 竞争对手分析
页面组件
Marketing/index.tsx- 营销管理入口Marketing/Ads.tsx- 广告管理Marketing/Competitors.tsx- 竞争对手分析
4.13 供应商管理模块
功能列表
- 供应商列表
- 供应商详情
- 供应商产品管理
页面组件
Suppliers/index.tsx- 供应商管理入口Suppliers/SupplierDetail.tsx- 供应商详情
4.14 报表中心模块
功能列表
- 报表概览
- 利润报表
- 绩效报表
页面组件
Reports/index.tsx- 报表中心入口Reports/ProfitReport.tsx- 利润报表Reports/PerformanceReport.tsx- 绩效报表
4.15 设置模块
功能列表
- 设置概览
- 个人设置
- 租户设置
- 用户管理
页面组件
Settings/index.tsx- 设置入口Settings/ProfileSettings.tsx- 个人设置Settings/TenantSettings.tsx- 租户设置Settings/UserManagement.tsx- 用户管理
4.16 A/B测试模块
功能列表
- A/B测试配置
- 测试结果分析
页面组件
ABTest/index.tsx- A/B测试入口ABTest/ABTestConfig.tsx- A/B测试配置ABTest/ABTestResults.tsx- 测试结果分析
4.11 退货管理模块
功能列表
- 退货监控
- SKU管理
页面组件
Return/index.tsx- 退货管理入口Return/ReturnMonitor.tsx- 退货监控Return/SKUManage.tsx- SKU管理
4.12 用户资产管理模块
功能列表
- 会员等级管理
- 积分管理
- 用户资产
页面组件
UserAsset/index.tsx- 用户资产管理入口UserAsset/MemberLevel.tsx- 会员等级管理UserAsset/PointsManage.tsx- 积分管理UserAsset/UserAssets.tsx- 用户资产
4.13 多语言管理模块
功能列表
- 语言切换
- 翻译管理
- 多语言内容发布
- 语言资源管理
页面组件
I18n/index.tsx- 多语言管理入口I18n/LanguageSwitcher.tsx- 语言切换组件I18n/TranslationManage.tsx- 翻译管理I18n/ContentPublish.tsx- 多语言内容发布
5. 组件规范
5.1 组件命名
- 页面组件: PascalCase,以功能命名 (如
ProductList,OrderDetail) - 公共组件: PascalCase,以功能命名 (如
DataTable,FilterPanel) - Hooks: camelCase,以
use开头 (如useProducts,useAuth)
5.2 组件结构
// 页面组件示例
import React from 'react';
import { useQuery } from '@tanstack/react-query';
import { Table, Button } from 'antd';
import { useProducts } from '@/hooks/useProducts';
export const Products: React.FC = () => {
const { data, isLoading } = useProducts();
const columns = [
{ title: '商品名称', dataIndex: 'title' },
{ title: '平台', dataIndex: 'platform' },
{ title: '状态', dataIndex: 'status' },
{ title: '售价', dataIndex: 'sellingPrice' },
];
return (
<div>
<h1>商品管理</h1>
<Table
dataSource={data}
columns={columns}
loading={isLoading}
/>
</div>
);
};
5.3 状态管理
// Redux Store 示例
import { createStore, combineReducers, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import { createLogger } from 'redux-logger';
// 定义状态类型
interface AppState {
user: UserState;
products: ProductState;
orders: OrderState;
loading: boolean;
error: string | null;
}
// 组合reducers
const rootReducer = combineReducers({
user: userReducer,
products: productsReducer,
orders: ordersReducer,
app: appReducer,
});
// 中间件
const middleware = [thunk];
if (process.env.NODE_ENV === 'development') {
middleware.push(createLogger());
}
// 创建store
const store = createStore(rootReducer, applyMiddleware(...middleware));
export default store;
6. API 集成
6.1 API 客户端配置
// services/api/client.ts
import axios from 'axios';
const api = axios.create({
baseURL: process.env.API_URL || 'http://localhost:3000/api',
timeout: 30000,
});
// 请求拦截器
api.interceptors.request.use((config) => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
// 响应拦截器
api.interceptors.response.use(
(response) => response.data,
(error) => {
if (error.response?.status === 401) {
// 处理未授权
window.location.href = '/Auth/LoginPage';
}
return Promise.reject(error);
}
);
export default api;
6.2 API 服务
// services/api/product.ts
import api from './client';
export const productService = {
getAll: (params?: any) => {
return api.get('/products', { params });
},
getById: (id: string) => {
return api.get(`/products/${id}`);
},
create: (data: any) => {
return api.post('/products', data);
},
update: (id: string, data: any) => {
return api.put(`/products/${id}`, data);
},
delete: (id: string) => {
return api.delete(`/products/${id}`);
},
};
// services/api/order.ts
import api from './client';
export const orderService = {
getAll: (params?: any) => {
return api.get('/orders', { params });
},
getById: (id: string) => {
return api.get(`/orders/${id}`);
},
updateStatus: (id: string, status: string) => {
return api.put(`/orders/${id}/status`, { status });
},
};
7. 开发规范
7.1 代码规范
- 使用 TypeScript 严格模式
- 组件使用函数式组件 + Hooks
- 使用绝对路径导入 (
@/components/...) - 避免使用
any类型
7.2 样式规范
- 使用 Ant Design 组件默认样式
- 自定义样式使用 CSS Modules 或 Tailwind
- 遵循设计系统规范
7.3 错误处理
// 错误边界
import { ErrorBoundary } from 'react-error-boundary';
const ErrorFallback = ({ error }: { error: Error }) => (
<div>
<h2>出错了</h2>
<p>{error.message}</p>
</div>
);
// 使用
<ErrorBoundary FallbackComponent={ErrorFallback}>
<App />
</ErrorBoundary>
8. 构建与部署
8.1 环境变量
VITE_API_URL=http://localhost:3000/api/v1
VITE_APP_NAME=Crawlful Hub
VITE_APP_VERSION=1.0.0
8.2 构建命令
npm install # 安装依赖
npm run dev # 开发模式
npm run build # 生产构建
npm run preview # 预览构建
npm run test # 运行测试
9. 前端发展规划
9.1 前端架构规划
- 微前端架构: 采用 qiankun 实现大型模块独立部署,解决大型应用构建慢、维护难的问题
- BFF 层: 引入 Backend for Frontend 模式,统一接口管理,减少前端复杂度
- 多端适配: 支持桌面端、平板端和移动端的响应式布局
- 离线能力: 实现 PWA,支持离线访问核心功能
9.2 页面功能扩展计划
| 模块 | 现有功能 | 计划扩展 |
|---|---|---|
| 商品管理 | 基础商品管理、套利分析 | 智能选品推荐、商品生命周期管理、多平台批量操作 |
| 订单管理 | 订单列表、状态流转 | 智能审单、异常订单自动处理、多渠道订单聚合 |
| 财务管理 | 基础财务概览 | 智能对账、多币种自动换算、税务报表自动生成 |
| 营销管理 | 广告投放管理 | 智能广告优化、竞品分析、多平台营销协同 |
| 库存管理 | 基础库存管理 | 智能补货建议、库存预测、多仓协同 |
| 物流管理 | 基础物流选择 | 智能物流路径规划、运费优化、实时轨迹监控 |
| 平台集成 | 基础平台连接 | 更多平台集成、API 自动同步、无 API 平台支持 |
9.3 组件库规划
- 基础组件: 基于 Ant Design 5.x 扩展,统一设计规范
- 业务组件: 封装商品、订单、财务等核心业务组件
- 智能组件: 集成 AI 能力的智能推荐、智能分析组件
- 可视化组件: 基于 ECharts 的数据可视化组件库
- 表单组件: 智能表单验证、动态表单生成
9.4 性能优化规划
- 构建优化: 使用 Vite + Rspack,提升构建速度
- 渲染优化: 虚拟滚动、懒加载、代码分割
- 缓存策略: 合理使用浏览器缓存、Service Worker 缓存
- 网络优化: HTTP/2、HTTP/3 支持,减少请求体积
- 监控体系: 集成前端性能监控,实时预警性能问题
9.5 开发体验优化
- 代码生成: 基于模板自动生成页面、组件代码
- Mock 系统: 完善的 Mock 数据体系,支持离线开发
- 开发工具: 定制化 VS Code 插件,提升开发效率
- 文档体系: 自动生成 API 文档、组件文档
10. 相关文档
本文档基于业务蓝图设计,最后更新: 2026-03-18