# 技术需求分析与架构设计 > **文档目的**:对 Crawlful Hub 项目进行技术需求分析和架构设计,为开发团队提供清晰的技术指导。 > **更新日期**:2026-03-17 ## 1. 技术需求分析 ### 1.1 功能需求 #### 核心业务模块 | 模块 | 功能点 | 优先级 | 技术实现要点 | |------|--------|--------|-------------| | **商品管理 (PIM)** | SPU/SKU管理 | P0 | 支持商品档案管理、多平台商品刊登、商品采集、产品裂变等 | | | 多平台商品刊登 | P0 | 支持 TikTok Shop、Amazon、eBay、Shopee、Temu 等平台 | | | 商品采集 | P1 | 支持 1688、速卖通、竞品采集等 | | | 产品裂变 | P0 | 支持标题、图片、价格、SKU、描述等裂变 | | **订单管理 (OMS)** | 多平台订单处理 | P0 | 支持自动拉取、订单详情获取、订单确认、发货回传等 | | | 订单利润分析 | P0 | 计算每笔订单利润,包含采购成本、平台费、物流、税费等 | | **库存管理 (WMS)** | 库存同步 | P0 | 各平台库存同步,防超卖 | | | 库存预警 | P0 | 安全库存提醒 | | | 库存分配 | P1 | 指定仓库库存 | | **财务管理 (FIN)** | 财务对账 | P0 | 结算流水、费用流水、退款流水对账 | | | 多币种对账 | P0 | 支持不同币种的对账 | | | 平台费用监控 | P0 | 监控各平台费用 | | **供应商管理 (SCM)** | 供应商产能监控 | P1 | 监控供应商产能情况 | | **客户关系 (CRM)** | CRM客户管理 | P1 | 管理客户信息和订单 | #### 平台接入需求 | 类型 | 平台 | 技术实现 | |------|------|----------| | **有 API 平台** | TikTok Shop | 通过官方 API 对接 | | | Amazon | 通过 SP-API 对接 | | | eBay | 通过官方 API 对接 | | | Shopee | 通过官方 API 对接 | | **无 API 平台** | Temu | 通过 No-API Bridge 对接 | | | Taobao | 通过 No-API Bridge 对接 | ### 1.2 非功能需求 | 需求类型 | 具体要求 | 技术实现 | |----------|----------|----------| | **性能** | 核心接口响应 <200ms | 使用缓存、优化数据库查询 | | | 内存占用符合 4096MB 限制 | 合理管理内存使用 | | | 数据库慢查询 <100ms | 优化 SQL 查询,添加索引 | | **可用性** | 99.9% 可用性 | 高可用架构设计 | | | 健康检查接口 | 实现 /api/health 接口 | | **安全性** | 环境变量管理 | 使用 .env 文件,忽略提交 | | | 敏感密钥管理 | 使用 Vault 或类似服务 | | | 跨租户数据隔离 | 基于 tenantId 进行数据隔离 | | | SQL 注入防护 | 使用参数化查询 | | **可扩展性** | 多租户模型 | 支持 Tenant -> Organization -> Shop -> User 四层级隔离 | | | 插件系统 | 支持 Extension 扩展 | | **可维护性** | 代码规范 | 遵循 ESLint、Prettier 规范 | | | 文档完整 | 完善的技术文档 | ### 1.3 数据需求 #### 核心数据模型 | 数据模型 | 关键字段 | 说明 | |----------|----------|------| | **商品 (SPU/SKU)** | tenantId, productId/spuId, skuId, skuCode, attributes, costPrice, status | 作为刊登/库存/订单的统一主数据 | | **平台映射** | tenantId, shopId, platform, erpSkuId, platformProductId, platformSkuId, mappingVersion | 避免“同一SKU多次重复刊登/重复拉单” | | **订单** | tenantId, shopId, platformOrderId, orderId, status, buyer, amount, currency, createTime | 订单主表,状态机承载者 | | **订单项** | orderId, skuId, platformSkuId, quantity, price, cost | 承接利润与库存扣减 | | **库存流水** | tenantId, warehouseId, skuId, changeType, deltaQty, balanceQty, refType, refId, occurTime | 占库/扣库/回补/盘点统一落流水 | | **运单/履约** | tenantId, orderId, shipmentId, carrier, trackingNo, labelUrl, status | 发货回传与轨迹同步承载者 | | **售后/退货/质检** | tenantId, orderId, returnId, reason, status, inspectionResult, photos | 逆向闭环承载者 | | **退款** | tenantId, orderId, refundId, amount, status, decisionStatus | 必须走门禁状态机 | | **结算/费用** | tenantId, shopId, statementId, feeLines[], settledAmount, currency, status | 对账闭环承载者 | ### 1.4 安全需求 | 安全类型 | 具体要求 | 技术实现 | |----------|----------|----------| | **认证授权** | JWT 认证 | 实现基于 JWT 的认证机制 | | | RBAC 权限模型 | 基于角色的访问控制 | | | 预设角色 | ADMIN, MANAGER, OPERATOR, FINANCE, SOURCING, LOGISTICS, ANALYST | | **数据安全** | 数据加密 | 敏感数据加密存储 | | | 数据脱敏 | 敏感日志脱敏处理 | | | 审计日志 | 全量操作流水线日志 | | **API 安全** | 请求限流 | 基于 Redis 实现 API 速率限制 | | | 防 CSRF | 实现 CSRF 防护 | | | 防 XSS | 实现 XSS 防护 | ## 2. 架构设计 ### 2.1 系统架构 #### 三层架构 ```mermaid flowchart TD subgraph Console[前端中控台] UI[用户界面] Components[业务组件] State[状态管理] Services[API服务层] end subgraph Hub[后端服务层] API[API路由] Core[核心业务逻辑] Domains[业务领域模型] Workers[异步任务] DB[数据库] Cache[缓存] end subgraph Extension[边缘执行层] WinNode[Win Node Agent] BrowserWorker[Browser Worker] Collect[数据采集] end UI --> Components Components --> State State --> Services Services --> API API --> Core Core --> Domains Core --> Workers Domains --> DB Core --> Cache Core --> WinNode WinNode --> BrowserWorker BrowserWorker --> Collect Collect --> Core ``` #### 核心模块关系 | 模块 | 职责 | 依赖关系 | |------|------|----------| | **API 路由层** | 处理 HTTP 请求,参数验证 | 依赖 Core 层 | | **核心业务逻辑** | 业务规则处理,状态管理 | 依赖 Domains 层 | | **业务领域模型** | 数据模型,业务实体 | 依赖 DB | | **异步任务** | 处理耗时操作,如采集、同步 | 依赖 Core 层 | | **边缘执行层** | 处理无 API 平台的操作 | 依赖 Core 层 | ### 2.2 目录结构 #### 前端目录结构 ``` src/ ├── components/ # 公共组件 │ ├── Business/ # 业务组件 │ └── Basic/ # 基础组件 ├── pages/ # 页面组件 ├── stores/ # Zustand 状态管理 ├── services/ # API 服务层 (TanStack Query) ├── utils/ # 工具函数 ├── hooks/ # 自定义 Hooks ├── types/ # TypeScript 类型定义 └── assets/ # 静态资源 ``` #### 后端目录结构 ``` server/src/ ├── core/ # 核心功能、算力调度、隐私审计 ├── domains/ # 业务领域模型 │ ├── product/ # 商品相关 │ ├── order/ # 订单相关 │ ├── inventory/ # 库存相关 │ ├── finance/ # 财务相关 │ ├── supplier/ # 供应商相关 │ └── customer/ # 客户相关 ├── api/ # 外部与内部 API 路由 │ ├── controllers/ # 控制器 │ ├── routes/ # 路由定义 │ └── middleware/ # 中间件 ├── workers/ # 异步任务与爬虫任务 ├── utils/ # 工具函数 └── config/ # 配置文件 ``` ### 2.3 技术实现 #### 前端技术栈 | 技术 | 版本 | 用途 | |------|------|------| | UmiJS | 4.x | 前端框架 | | Ant Design | 5.x | UI 组件库 | | Zustand | 4.x | 全局状态管理 | | TanStack Query | 5.x | 服务端状态管理 | | React Hook Form | 最新 | 表单管理 | | Zod | 最新 | 表单验证 | | AntV G2/G6 | 5.x | 数据可视化 | | Axios | 最新 | HTTP 客户端 | #### 后端技术栈 | 技术 | 版本 | 用途 | |------|------|------| | Node.js | v20+ | 运行环境 | | TypeScript | 最新 | 开发语言 | | MySQL | 8.0 | 数据库 | | Redis | 6.0 | 缓存、队列 | | Knex.js | 最新 | ORM | | Express | 最新 | Web 框架 | | JWT | 最新 | 认证 | | BullMQ | 最新 | 任务队列 | ### 2.4 数据库设计 #### 核心表结构 | 表名 | 说明 | 关键字段 | |------|------|----------| | **cf_user** | 用户表 | id, username, password, role, tenant_id | | **cf_tenant** | 租户表 | id, name, status | | **cf_shop** | 店铺表 | id, tenant_id, platform, shop_name, api_credentials | | **cf_product** | 商品表 | id, tenant_id, spu_id, sku_id, sku_code, attributes, cost_price, status | | **cf_platform_mapping** | 平台映射表 | id, tenant_id, shop_id, platform, erp_sku_id, platform_product_id, platform_sku_id | | **cf_order** | 订单表 | id, tenant_id, shop_id, platform_order_id, status, buyer, amount, currency | | **cf_order_item** | 订单项表 | id, order_id, sku_id, platform_sku_id, quantity, price, cost | | **cf_inventory_log** | 库存流水表 | id, tenant_id, warehouse_id, sku_id, change_type, delta_qty, balance_qty, ref_type, ref_id | | **cf_shipment** | 运单表 | id, tenant_id, order_id, carrier, tracking_no, label_url, status | | **cf_after_sales** | 售后表 | id, tenant_id, order_id, reason, status, inspection_result | | **cf_refund** | 退款表 | id, tenant_id, order_id, amount, status, decision_status | | **cf_statement** | 结算表 | id, tenant_id, shop_id, statement_id, settled_amount, currency, status | ### 2.5 API 设计 #### RESTful API 标准 | 方法 | 用途 | 示例 | |------|------|------| | GET | 查询 | GET /api/v1/orders | | POST | 创建 | POST /api/v1/orders | | PUT | 完整更新 | PUT /api/v1/orders/:id | | PATCH | 部分更新 | PATCH /api/v1/orders/:id | | DELETE | 删除 | DELETE /api/v1/orders/:id | #### 响应结构 ```typescript // 成功响应 { "success": true, "data": { ... }, "pagination": { "page": 1, "pageSize": 20, "total": 100 } } // 错误响应 { "success": false, "error": { "code": "ORDER_NOT_FOUND", "message": "订单不存在", "details": {} } } ``` ### 2.6 部署方案 #### 开发环境 | 组件 | 配置 | |------|------| | Node.js | v20+ | | MySQL | 8.0 (本地或 Docker) | | Redis | 6.0 (本地) | | 前端 | UmiJS 开发服务器 | | 后端 | Express 开发服务器 | #### 生产环境 | 组件 | 配置 | |------|------| | 前端 | 阿里云 OSS + CDN | | 后端 | 阿里云 ECS | | 数据库 | 阿里云 RDS (MySQL 8.0) | | 缓存 | 阿里云 Redis | | 监控 | 阿里云 SLS + Prometheus | #### 部署流程 1. **代码构建**:前端和后端代码构建 2. **资源部署**:前端静态资源部署到 OSS,后端代码部署到 ECS 3. **数据库迁移**:执行数据库迁移脚本 4. **服务启动**:启动后端服务 5. **健康检查**:验证服务是否正常运行 ## 3. 技术风险评估 | 风险类型 | 具体风险 | 影响程度 | 应对措施 | |----------|----------|----------|----------| | **平台 API 变更** | 第三方平台 API 变更导致集成失败 | 高 | 建立 API 监控机制,定期检查 API 状态 | | **无 API 平台反爬** | 无 API 平台的反爬机制导致采集失败 | 高 | 实现智能反爬策略,如代理 IP 池、UA 轮换、指纹隔离 | | **数据一致性** | 多平台数据同步不一致 | 高 | 实现分布式事务,确保数据一致性 | | **性能瓶颈** | 大量订单或商品数据导致系统性能下降 | 中 | 优化数据库查询,使用缓存,实现异步处理 | | **安全漏洞** | 系统存在安全漏洞 | 高 | 定期进行安全审计,使用安全扫描工具 | ## 4. 技术选型理由 | 技术 | 选型理由 | |------|----------| | **Node.js** | 高性能、事件驱动,适合处理大量并发请求 | | **TypeScript** | 类型安全,提高代码质量和可维护性 | | **MySQL** | 成熟稳定,适合关系型数据存储 | | **Redis** | 高性能缓存,适合存储会话和热点数据 | | **UmiJS** | 开箱即用,集成了路由、构建等功能 | | **Ant Design** | 组件丰富,设计美观,适合企业级应用 | | **Zustand** | 轻量级状态管理,易于使用 | | **TanStack Query** | 强大的服务端状态管理,支持缓存和同步 | ## 5. 开发计划 ### 5.1 里程碑 | 阶段 | 目标 | 时间预估 | |------|------|----------| | **需求分析与架构设计** | 完成技术需求分析和架构设计 | 1 周 | | **核心功能开发** | 实现商品管理、订单管理、库存管理等核心功能 | 8 周 | | **平台接入** | 完成各平台 API 接入 | 4 周 | | **测试与优化** | 进行功能测试、性能测试和安全测试 | 2 周 | | **部署上线** | 部署到生产环境并进行监控 | 1 周 | ### 5.2 关键技术点 1. **多平台商品刊登**:实现统一的商品发布接口,支持多平台适配 2. **订单履约闭环**:实现从订单拉取到发货回传的完整流程 3. **库存同步机制**:确保各平台库存数据一致,防止超卖 4. **财务对账系统**:实现多币种对账,支持差异处理 5. **No-API 平台接入**:实现智能爬虫和数据解析 6. **多租户隔离**:确保不同租户数据安全隔离 7. **性能优化**:优化系统性能,确保高并发场景下的稳定性 ## 6. 结论 Crawlful Hub 项目是一个功能丰富、技术复杂度较高的企业级贸易 ERP 系统。通过合理的技术选型和架构设计,我们可以构建一个稳定、高效、安全的系统,满足企业级用户的需求。 本技术需求分析和架构设计文档为开发团队提供了清晰的技术指导,包括功能需求、非功能需求、数据需求、安全需求以及系统架构、目录结构、技术实现、数据库设计、API 设计和部署方案等。 在开发过程中,我们需要关注技术风险,采取相应的应对措施,确保系统的稳定性和可靠性。同时,我们需要按照开发计划有序推进,确保项目按时完成。