┌─────────────────────────────────────────────────────────────┐
│ 前端层 (Next.js App Router) │
│ app/page.tsx app/app/* app/auth/* │
│ Components: shadcn/ui + lucide icons │
├─────────────────────────────────────────────────────────────┤
│ API 路由层 (Next.js) │
│ /api/contacts, /api/orders, /api/ai, ... │
├──────────────┬─────────────────────────┬────────────────────┤
│ 服务层 │ AI 适配层 │ 基础设施 │
│ services/ │ lib/ai/ │ auth, i18n │
│ 业务逻辑 │ providers/ (可插拔) │ │
│ 跨模块编排 │ tasks/ (提示词) │ │
├──────────────┴─────────────────────────┴────────────────────┤
│ 数据访问层 (repositories/) │
│ 接口: list / get / create / update / delete / query │
├─────────────────────────────────────────────────────────────┤
│ 数据存储层 │
│ 开发: In-Memory Store → 生产: PostgreSQL (Drizzle ORM) │
│ 缓存: Redis (可选) 搜索: Elasticsearch (可选) │
└─────────────────────────────────────────────────────────────┘
src/
db/
schema/ # Drizzle ORM 表定义 (18 个表)
index.ts # Schema 导出
contacts.ts # 客户 + 联系人
products.ts # 产品
orders.ts # 订单 + 里程碑
quotations.ts# 报价单
shipments.ts # 出货 + 单证
inquiries.ts # 询盘
suppliers.ts # 供应商 + 供应产品
communications.ts # 沟通记录
users.ts / companies.ts / ai_config.ts / settings.ts
# ---- 以下为新模块 ----
suppliers.ts # 仓库 / 库存 / 采购 / 财务 / 海关 / EDM / OA / 知识库
lib/
repositories/ # 数据访问层
types.ts # Repository 接口定义
base.ts # InMemoryRepository 基类
index.ts # 具体仓库实现
services/ # 服务层
index.ts # 服务 + 跨模块编排
ai/ # AI 适配层
providers/ # 可插拔 AI 提供商
tasks/ # AI 任务 (报价/建议/摘要)
store.ts # 内存数据存储 (MVP)
Company (1) → Users (N)
Company (1) → Contacts (N) → ContactPersons (N)
Company (1) → Products (N) → Inventory (N)
Contact (1) → Inquiries (N) → Quotations (N) → Orders (N) → Shipments (N) → Documents (N)
Order (1) → OrderMilestones (N)
Order (1) → Communications (N)
Contact (1) → Communications (N)
Company (1) → Suppliers (N)
Supplier (N) → Products (M) [supplier_products]
Product (1) → Inventory (N) → InventoryTransactions (N)
Supplier (1) → PurchaseOrders (N)
Order (1) → Invoices (N)
Order (1) → Expenses (N)
Company (1) → AIProviderConfigs (N) → AITaskMappings (N)
interface AIProvider {
id: string; // "deepseek" | "openai" | "tongyi" | "ollama"
name: string; // 显示名称
chat(props: ChatProps): Promise<ChatResponse>;
}
// 每个业务任务可配置不同 Provider
// 系统设置 → AI 配置 → 任务映射
v0.5 (当前) → v1.0 (此版本) → v1.5 → v2.0
CRM + 供应商管理 + 海关数据 + 独立站
订单 + 库存/进销存 + EDM 营销 + 插件市场
报价 + OA 审批流 + 智能问数 + 社区版
产品 + 财务管理 + RAG 管道
AI 报价 + 海关数据导入 + 多语言增强
多语言/币种 + 邮件营销
+ 知识库