| 版本 | 日期 | 描述 | 作者 |
|---|---|---|---|
| 3.0 | 2025-10-20 | 基于PRD创建集团AI智能进销存系统全栈架构 | Winston |
本文档定义了集团管理多公司AI智能进销存应用系统的完整技术架构。系统基于D8D Starter技术栈构建,支持多租户架构、AI智能决策和多端访问(Web + 小程序)。
全面定义集团级进销存系统的技术架构,包括多租户数据隔离、AI服务集成、多端支持等关键设计。
| 日期 | 版本 | 描述 | 作者 |
|---|---|---|---|
| 2025-10-20 | 3.0 | 基于PRD创建集团AI智能进销存系统全栈架构 | Winston |
平台: Docker + Node.js 多八多云端容器环境 核心服务: PostgreSQL 17, Redis 7, MinIO对象存储 部署主机: 多八多云端开发容器环境,开放8080端口外网访问 小程序平台: Taro多端框架(微信、支付宝、H5等)
graph TD
subgraph "前端应用层"
A[React 19 Web管理后台] --> B[React Router v7]
A --> C[React Query 状态管理]
A --> D[shadcn/ui 组件库]
E[Taro 多端小程序] --> F[微信小程序]
E --> G[支付宝小程序]
E --> H[H5移动端]
E --> I[其他小程序平台]
end
subgraph "API网关层"
J[Hono 4.8.5 API路由] --> K[Zod Schema验证]
J --> L[JWT认证中间件]
J --> M[多租户权限中间件]
J --> N[OpenAPI文档生成]
J --> O[AI服务代理]
end
subgraph "业务服务层"
P[通用CRUD服务] --> Q[TypeORM实体管理]
R[组织架构服务] --> S[多租户数据隔离]
T[供应商管理服务] --> U[供应商评价系统]
V[销售管理服务] --> W[订单处理流程]
X[库存管理服务] --> Y[实时库存监控]
Z[采购管理服务] --> AA[采购审批流程]
AB[客户档案服务] --> AC[客户等级管理]
AD[AI决策服务] --> AE[智能预测分析]
end
subgraph "数据存储层"
AF[PostgreSQL 17] --> AG[用户和组织数据]
AF --> AH[业务实体数据]
AF --> AI[AI决策记录]
AJ[Redis 7 缓存] --> AK[会话缓存]
AJ --> AL[业务数据缓存]
AM[MinIO 对象存储] --> AN[文件存储]
end
subgraph "AI服务层"
AO[第三方AI服务] --> AP[销售预测]
AO --> AQ[库存优化]
AO --> AR[供应商匹配]
AO --> AS[客户分析]
end
subgraph "基础设施层"
AT[Docker Compose] --> AU[本地开发环境]
AV[Node.js 20.19.2] --> AW[生产运行时]
end
A --> J
E --> J
J --> P
J --> R
J --> T
J --> V
J --> X
J --> Z
J --> AB
J --> AD
P --> AF
AD --> AO
N --> AX[Swagger UI /ui]
style A fill:#e1f5fe
style E fill:#e8f5e8
style J fill:#f3e5f5
style P fill:#fff3e0
style R fill:#fff0f5
style AD fill:#e1f5fe
style AO fill:#f0fff0
| 类别 | 技术 | 版本 | 用途 | 备注 |
|---|---|---|---|---|
| 运行时 | Node.js | 20.19.2 | 服务器运行时环境 | ES模块支持 |
| 框架 | Hono | 4.8.5 | Web框架和API路由 | RPC类型安全 |
| 数据库 | PostgreSQL | 17 | 数据持久化存储 | 多租户支持 |
| ORM | TypeORM | 0.3.25 | 数据库操作抽象 | 实体管理 |
| 缓存 | Redis | 7 | 会话和数据缓存 | 性能优化 |
| 存储 | MinIO | latest | 对象存储服务 | 文件管理 |
| 验证 | Zod | 4.x | Schema验证 | 类型安全 |
| 认证 | JWT | 9.0.2 | 用户认证和安全 | Bearer Token |
| 文档 | @hono/zod-openapi | latest | OpenAPI文档生成 | Swagger UI |
| 类别 | 技术 | 版本 | 用途 | 备注 |
|---|---|---|---|---|
| 框架 | React | 19.1.0 | 用户界面构建 | 最新版本 |
| 构建工具 | Vite | 7.0.0 | 开发服务器和构建 | 热重载支持 |
| 路由 | React Router | v7 | 前端路由管理 | 声明式路由 |
| 状态管理 | React Query | 5.83.0 | 服务端状态管理 | 数据同步 |
| UI组件 | shadcn/ui | latest | 组件库 | 基于Radix UI |
| 样式 | Tailwind CSS | 4.1.11 | 原子化CSS框架 | 设计一致性 |
| 类型检查 | TypeScript | 5.x | 类型安全 | 严格模式 |
| 类别 | 技术 | 版本 | 用途 | 备注 |
|---|---|---|---|---|
| 框架 | Taro | 4.1.4 | 多端小程序框架 | 一次开发多端运行 |
| UI框架 | React | 18.0.0 | 小程序UI构建 | 与Web端共享逻辑 |
| 状态管理 | @tanstack/react-query | 5.84.1 | 服务端状态管理 | 与Web端一致 |
| 表单处理 | react-hook-form | 7.62.0 | 表单状态管理 | 类型安全 |
| 验证 | Zod | 4.0.14 | Schema验证 | 与后端一致 |
| 样式 | Tailwind CSS | 4.1.11 | 原子化CSS框架 | 跨端样式 |
| 服务 | 用途 | 集成方式 | 数据流 |
|---|---|---|---|
| 销售预测 | 基于历史数据预测未来销售 | REST API | 销售数据 → AI服务 → 预测结果 |
| 库存优化 | 智能库存分配和补货建议 | 异步处理 | 库存数据 → AI服务 → 优化建议 |
| 供应商匹配 | 基于采购需求推荐供应商 | 实时调用 | 采购需求 → AI服务 → 供应商推荐 |
| 客户分析 | 客户行为分析和信用评估 | 批量处理 | 客户数据 → AI服务 → 分析报告 |
// 公司实体
interface Company {
id: number;
name: string;
code: string; // 公司编码
parentId: number | null; // 母公司ID
level: number; // 层级深度
path: string; // 层级路径
status: 'active' | 'inactive';
createdAt: Date;
updatedAt: Date;
}
// 用户实体扩展
interface User {
id: number;
username: string;
email: string | null;
password: string;
companyId: number; // 所属公司
roles: Role[];
company: Company;
createdAt: Date;
updatedAt: Date;
}
数据库层面:
company_id 字段应用层面:
company_id 过滤条件// 权限检查逻辑
function checkDataAccess(user: User, targetCompanyId: number): boolean {
// 管理员可以访问所有数据
if (user.roles.some(role => role.name === 'super_admin')) {
return true;
}
// 母公司管理员可以访问子公司数据
if (user.roles.some(role => role.name === 'parent_admin')) {
return isChildCompany(user.companyId, targetCompanyId);
}
// 普通用户只能访问本公司数据
return user.companyId === targetCompanyId;
}
功能特性:
数据模型:
interface Company {
id: number;
name: string;
code: string;
parentId: number | null;
level: number;
path: string;
status: 'active' | 'inactive';
contactInfo: ContactInfo;
businessInfo: BusinessInfo;
}
功能特性:
数据模型:
interface Supplier {
id: number;
name: string;
code: string;
companyId: number;
contactInfo: ContactInfo;
businessInfo: BusinessInfo;
rating: number; // 1-5星评价
status: 'active' | 'inactive' | 'blacklisted';
documents: SupplierDocument[];
createdAt: Date;
updatedAt: Date;
}
功能特性:
数据模型:
interface SalesOrder {
id: number;
orderNumber: string;
companyId: number;
customerId: number;
warehouseId: number;
items: OrderItem[];
totalAmount: number;
status: 'pending' | 'confirmed' | 'shipped' | 'delivered' | 'cancelled';
source: 'manual' | 'duocaibao' | 'api';
createdAt: Date;
updatedAt: Date;
}
功能特性:
数据模型:
interface Inventory {
id: number;
productId: number;
warehouseId: number;
companyId: number;
quantity: number;
reservedQuantity: number; // 预留数量
availableQuantity: number; // 可用数量
minStock: number; // 最低库存
maxStock: number; // 最高库存
lastUpdated: Date;
}
功能特性:
数据模型:
interface PurchaseOrder {
id: number;
orderNumber: string;
companyId: number;
supplierId: number;
items: PurchaseItem[];
totalAmount: number;
status: 'draft' | 'submitted' | 'approved' | 'ordered' | 'received' | 'completed';
aiRecommendation: AIRecommendation; // AI供应商匹配建议
createdAt: Date;
updatedAt: Date;
}
功能特性:
数据模型:
interface Customer {
id: number;
name: string;
code: string;
companyId: number;
contactInfo: ContactInfo;
level: 'A' | 'B' | 'C' | 'D'; // 客户等级
creditRating: number; // 信用评分
totalOrders: number;
totalAmount: number;
lastOrderDate: Date | null;
aiAnalysis: CustomerAnalysis; // AI分析结果
createdAt: Date;
updatedAt: Date;
}
graph TD
A[业务系统] --> B[AI服务网关]
B --> C[销售预测服务]
B --> D[库存优化服务]
B --> E[供应商匹配服务]
B --> F[客户分析服务]
C --> G[历史销售数据]
C --> H[市场趋势数据]
D --> I[当前库存数据]
D --> J[需求预测数据]
E --> K[供应商数据库]
E --> L[采购需求数据]
F --> M[客户行为数据]
F --> N[交易历史数据]
O[第三方AI服务] --> P[机器学习模型]
O --> Q[自然语言处理]
O --> R[推荐算法]
C --> O
D --> O
E --> O
F --> O
style A fill:#e1f5fe
style B fill:#f3e5f5
style O fill:#fff0f5
// 销售预测请求
interface SalesForecastRequest {
companyId: number;
productIds: number[];
period: '7d' | '30d' | '90d';
historicalData: SalesHistory[];
}
// 库存优化请求
interface InventoryOptimizationRequest {
companyId: number;
warehouseId: number;
products: ProductStockInfo[];
demandForecast: DemandForecast[];
}
// AI服务响应
interface AIResponse<T> {
success: boolean;
data: T;
confidence: number; // 置信度 0-1
reasoning: string; // 决策理由
timestamp: Date;
}
// 通用分页响应
interface PaginatedResponse<T> {
data: T[];
pagination: {
total: number;
current: number;
pageSize: number;
totalPages: number;
};
}
// 统一错误格式
interface ApiError {
error: {
code: string;
message: string;
details?: Record<string, any>;
timestamp: string;
requestId: string;
};
}
// 缓存层级设计
interface CacheStrategy {
level1: 'memory'; // 内存缓存,快速访问
level2: 'redis'; // Redis缓存,应用共享
level3: 'database'; // 数据库,持久化存储
ttl: {
memory: 60, // 60秒
redis: 300, // 5分钟
database: 3600 // 1小时
};
}
graph TD
A[用户访问] --> B[负载均衡器]
B --> C[Web应用服务器]
B --> D[API服务器]
C --> E[静态资源CDN]
D --> F[数据库集群]
D --> G[Redis集群]
D --> H[MinIO集群]
D --> I[AI服务]
J[小程序] --> K[微信/支付宝平台]
K --> D
style C fill:#e1f5fe
style D fill:#f3e5f5
style F fill:#e8f5e8
# 安装依赖
pnpm install
# 启动开发环境
pnpm dev # 启动Web端开发服务器
pnpm dev:mini [platform] # 启动小程序开发服务器
# 运行测试
pnpm test # 运行所有测试
pnpm test:api # 运行API测试
pnpm test:components # 运行组件测试
pnpm test:e2e # 运行E2E测试
pnpm test:mini # 运行小程序测试
# 代码质量
pnpm lint # ESLint检查
pnpm typecheck # TypeScript类型检查
pnpm test:coverage # 测试覆盖率报告
# 后端环境变量
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres
REDIS_URL=redis://localhost:6379
MINIO_ENDPOINT=localhost
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
JWT_SECRET=your-jwt-secret-key
AI_SERVICE_URL=https://api.ai-service.com
NODE_ENV=development
# 前端环境变量
VITE_API_BASE_URL=http://localhost:3000/api
VITE_AI_SERVICE_URL=https://api.ai-service.com
docs/prd.mddocs/brief.md/ui 端点访问docs/architecture/testing-strategy.md文档状态: 正式版 下次评审: 2025-11-20