Server - 后端服务
📋 项目简介
Server 是 Crawlful Hub 的后端服务,提供了完整的API接口,用于处理商品管理、订单处理、物流策略、广告营销、B2B贸易等核心业务功能。
🚀 核心功能
1. 商品管理
- 商品CRUD操作
- 库存同步
- 商品健康度监控
2. 订单管理
- 订单CRUD操作
- 订单状态更新
- 批量订单处理
3. 物流管理
- 物流渠道选择
- 运费计算
- 物流轨迹跟踪
4. 广告管理
- 广告计划管理
- 投放效果分析
- ROI计算
5. B2B贸易管理
- 企业报价管理
- 批量订单处理
- 合同管理
6. 售后管理
- 退货申请处理
- 退款流程管理
- 客户服务
7. 合规管理
- 证书管理
- 合规检查
- 证书过期提醒
8. 用户资产管理
- 资产管理
- 积分管理
- 会员等级管理
9. A/B测试管理
- 测试策略管理
- 测试结果分析
- 自动优化
🏗 技术栈
- 框架: Node.js + Express
- 语言: TypeScript
- 数据库: MySQL
- 缓存: Redis
- 消息队列: BullMQ
- 认证: JWT
📦 快速开始
环境要求
- Node.js 16+
- MySQL 8.0+
- Redis 6.0+
安装依赖
cd server
npm install
数据库初始化
# 执行数据库初始化脚本
mysql -u root -p < ../scripts/db-init.sql
配置环境变量
创建 .env 文件,配置以下环境变量:
# 服务器配置
PORT=3003
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=crawlful_hub
# Redis配置
REDIS_HOST=localhost
REDIS_PORT=6379
# JWT配置
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=24h
# 日志配置
LOG_LEVEL=info
启动服务
# 开发模式
npm run dev
# 生产模式
npm run build
npm start
📁 项目结构
server/
├── src/
│ ├── api/ # API接口
│ │ ├── controllers/ # 控制器
│ │ ├── middleware/ # 中间件
│ │ └── routes/ # 路由
│ ├── config/ # 配置文件
│ ├── core/ # 核心服务
│ │ ├── ai/ # AI服务
│ │ ├── auth/ # 认证服务
│ │ ├── biz/ # 业务服务
│ │ ├── cache/ # 缓存服务
│ │ ├── connectors/ # 平台连接器
│ │ ├── engine/ # 业务引擎
│ │ ├── gateway/ # 网关
│ │ ├── governance/ # 治理服务
│ │ ├── graph/ # 图服务
│ │ ├── guards/ # 守卫
│ │ ├── integrations/ # 集成服务
│ │ ├── isolation/ # 隔离服务
│ │ ├── network/ # 网络服务
│ │ ├── orchestrator/ # 编排服务
│ │ ├── pipeline/ # 管道服务
│ │ ├── protocols/ # 协议服务
│ │ ├── runtime/ # 运行时服务
│ │ ├── sandbox/ # 沙箱服务
│ │ ├── scheduler/ # 调度服务
│ │ ├── security/ # 安全服务
│ │ ├── telemetry/ # 遥测服务
│ │ └── workers/ # 工作器
│ ├── database/ # 数据库相关
│ ├── domains/ # 业务域
│ ├── services/ # 业务服务
│ ├── utils/ # 工具函数
│ ├── app.ts # 应用入口
│ └── index.ts # 主入口
├── package.json # 项目配置
├── tsconfig.json # TypeScript 配置
└── README.md # 项目说明
🔧 开发规范
代码规范
- 遵循 TypeScript 最佳实践
- 使用 ESLint 进行代码检查
- 服务类命名使用 PascalCase,后缀为 Service
- 文件命名使用 PascalCase
提交规范
- 提交信息使用中文描述
- 提交前确保代码通过测试
- 大型功能提交前创建分支
🤝 贡献
欢迎贡献代码和提出建议!请先阅读项目文档,然后提交 Pull Request。