Skip to content

youngOman/MiniCRM

Repository files navigation

MiniCRM Pro - 輕量型、一站式 B2C CRM 系統


專案概述

  1. MiniCRM Pro 是個 開源、輕量型高效率 CRM 系統,專為中小企業、創業者與小型電商 打造,無需設定、免授權費,只保留最實用的核心功能
  2. RAG-based AI 客服,結合 RAG + LLaMA3 + LINE Messaging API,檢索系統內部資訊(如知識庫、客服紀錄、SOP、FAQ),以自然語言隨時隨地即時與系統互動
  3. AI 助理將能根據系統資料回答精準且具上下文的業務與客戶問題
    1. 查詢客戶資料、訂單狀態、交易記錄、客服工單、FAQs、知識庫
      1. 整合聯絡資訊、互動紀錄、購買歷史、服務請求、資產紀錄與報價/促銷紀錄,建立完整可追溯的客戶輪廓,掌握每位客戶的偏好、行為、問題、需求、價值
      2. 同時管理多個品牌與供應商,不同品牌或供應商可進行獨立的客戶資料管理(訂單、交易記錄..等)
    2. 訂單、交易、產品資料、追蹤交易紀錄
      1. 管理客戶關係、追蹤銷售業績及分析業務表現,並進行後續的精準再行銷及提升顧客忠誠度及回流率。
      2. 瞭解公司是否朝正確方向邁進,或是否有不足之處。
      3. 獲得更多潛在客戶、提升生產力,以及提升客戶滿意度
    3. 透過互動式儀表板瀏覽銷售業績、當季客戶偏好、客戶族群、營收表現..等資訊
      1. 營收趨勢、今日、本月(新增客戶量、新增訂單、完成交易數)、客戶指標(平均客戶價值、待處理訂單、轉換率)...等
      2. 客戶增長趨勢、客戶來源分佈、客戶價值分析、客戶行為分析...
      3. 客戶生命週期價值 (CLV) 計算及分析: 客戶價值分布、各客戶來源價值、頂級客戶排行、月度 CLV 趨勢...
  • Example Usage:

    • AI 助理根據系統資料回答精準且具上下文的業務與客戶問題
    • 例:「告訴我 VIP 客戶常見的售後問題,以及該如何處理」
    • 例:「幫我找出上個月購買最多的 25-35 歲女性客戶」
  • (開發中):成交率、追加銷售率、新淨收入、銷售週期長短、客戶獲取成本 (CAC)、 AI 智慧摘要

RAG 工作流程 講解

RAG = Retrieval(檢索)+ Augmented(增強)+ Generation(生成)

  1. Retrieval: search_similar_examples() 找相似範例
  2. Augmented: 將範例+schema 作為上下文
  3. Generation: LLM 根據上下文生成 SQL

  1. 知識收集: 將 CRM 系統的資料庫 schema 和查詢範例向量化儲存
  2. 查詢理解: 當用戶輸入自然語言查詢時,搜尋相關的範例和 schema
  3. 上下文增強: 提供相關背景資訊給 LLM,提升 SQL 生成準確度
  4. Ex:
    • "幫我找出上個月購買最多的 25-35 歲女性客戶"
    • 系統會搜尋相關的客戶表 schema 和類似查詢範例
    • 協助 LLM 生成正確的 SQL 查詢

  1. 知識庫儲存階段(預先建立)

    • 資料表 Schema → 格式化文本 → 向量化 → 存入 ChromaDB
    • 查詢範例 → 格式化文本 → SentenceTransformer 向量化 → ChromaDB (examples_collection)
  2. 查詢處理並回覆階段(用戶互動)

    • 用戶輸入 → 意圖分類(同時向量搜尋相似範例作為上下文)→ SQL 生成(同時向量搜尋相關 Schema + 相似範例作為上下文)→ 執行 SQL → SQL 結果 → 格式化限制(限制結果筆數、避免傳給 LLM 的資料過長,影響回應品質)→ LLM 生成自然語言 → 返回用戶

RAG 工作流程

階段一:系統初始化(知識庫建立)

步驟 函數 檔案 說明 Ollama LLM
1 add_sample_data() query_engine.py:319 主控初始化函數
2 _add_customer_service_schemas() query_engine.py:412 準備 3 個資料表的 schema
3.1 add_schema_info() knowledge_base.py:32 添加 FAQ 表 schema
3.1.1 _format_schema_text() knowledge_base.py:151 格式化 schema 為文本
3.1.2 SentenceTransformer knowledge_base.py:38 向量化並存入 ChromaDB
3.2 add_schema_info() knowledge_base.py:32 添加知識庫表 schema
3.3 add_schema_info() knowledge_base.py:32 添加工單表 schema
4 add_query_example() × N 次 knowledge_base.py:53 添加查詢範例並向量化

階段二:用戶查詢處理

順序 函數 檔案:行號 說明 Ollama LLM
1 process_query() query_engine.py:28 主查詢處理入口
2 classify_intent() llm_service.py:25 開始意圖分類
2.1 search_similar_examples() knowledge_base.py:75 第 1 次搜尋:為意圖分類提供上下文
2.2 Ollama LLM 調用 llm_service.py:63 意圖分類 第 1 次
3 _handle_sql_query() query_engine.py:82 SQL 查詢處理流程
4 generate_sql() llm_service.py:84 開始 SQL 生成
4.1 search_relevant_schemas() knowledge_base.py:121 搜尋相關資料表結構
4.2 search_similar_examples() knowledge_base.py:75 第 2 次搜尋:為 SQL 生成提供範例
4.3 Ollama LLM 調用 llm_service.py:127 結合 RAG 檢索結果生成 SQL 第 2 次
5 _execute_sql() query_engine.py:167 安全執行 SQL
6 generate_response() llm_service.py:147 轉為自然語言回應 第 3 次

1. 營銷分析儀表板

  • 可依區間、來源、標籤等條件切換統計維度

  • 清晰呈現營運概況與銷售表現

  • 營收趨勢圖表:顯示營收增長曲線與趨勢分析

  • 客戶成長趨勢:顯示客戶數量增長曲線與趨勢分析

  • 訂單成長分析:訂單數量與金額成長統計

  • 交易分析:付款方式分布、交易狀態統計、營收來源

  • 關鍵指標卡片

    • 今日數據:新增客戶數、新增訂單數、完成交易數
    • 月度統計:客戶指標、平均客戶價值
    • 營運指標:待處理訂單、轉換率計算

2.客戶管理及分析頁面報表

  • 可跨欄位比對,快速定位目標客戶或交易紀錄

  • 客戶管理,可依 客戶名稱、聯絡方式(Email、電話)、公司、來源 進行搜尋

  • 多條件篩選與即時模糊搜尋功能

  • 客戶總覽:客戶基本統計與導航中心、6 大關鍵指標、導航卡片、統一篩選器

    • 客戶基本資料 (姓名、聯絡方式、公司)
    • 客戶分類 (來源、標籤、備註)
    • 人口統計資料 (年齡、性別、購買偏好)
    • 客戶資料匯入功能
    • 客戶搜尋和排序
  • 客戶人口分析:年齡/性別分布、消費行為深度分析

  • 客戶行為分析:產品偏好、季節性購買模式分析、策略建議

  • 客戶分群分析:客戶來源效果、等級分布、細分矩陣

  • 客戶終身價值(CLV)分析:每個客戶在整個生命週期內預期能為公司帶來的總價值

    • CLV 概覽統計:平均 CLV、平均客單價、平均消費頻率、總客戶價值、平均顧客壽命
    • 客戶價值分布:低/中/高/頂級客戶分群分析
    • 來源 CLV 分析:各獲客渠道的客戶價值
    • 頂級客戶排行:CLV 前 20 名客戶詳細列表
    • 月度 CLV 趨勢:時間序列價值變化分析
    • 可以:
      • 關注最有價值的客戶群體
      • 追蹤不同獲客渠道的客戶價值
      • 制定基於 CLV 的精準行銷策略,比如針對高 CLV 值的客戶提供專屬優惠或服務
      • 監控客戶價值趨勢變化
  • 批次資料匯入

    • 支援 CSV / Excel 檔案格式
    • 彈性欄位對應,可選擇忽略不必要欄位
    • 不完整資料亦可導入,具備容錯機制

所有分析頁面皆支援篩選功能:日期範圍、客戶來源、年齡、性別

3. 訂單管理系統

  • 可依訂單編號、客戶名稱、聯絡方式、訂單狀態 搜尋特定訂單 Ï

  • 下拉選單可依 訂單狀態(待處理、處理中、已出貨、已送達、已取消、已退款)篩選

  • 快速搜尋:依訂單編號、客戶名稱、聯絡方式進行搜尋

  • 狀態篩選:待處理、處理中、已出貨、已送達、已取消、已退款

  • 訂單詳情:訂單資訊與項目管理(OrderItem)、金額計算 (小計、稅金、運費、折扣)

  • 批次操作:支援多筆訂單狀態更新

  • 訂單建立、編輯、檢視、刪除

4. 產品管理系統

  • 產品基本資料
    • 產品分類、品牌管理、供應商資料
    • SKU 編碼、SKU、價格少設定、成本、重量、尺寸、圖片
  • 庫存追蹤
    • 現有/預留/可用庫存計算、異動記錄追蹤
    • 低庫存警示、缺貨提醒系統
    • 入庫、出庫、調整、盤點完整記錄
    • 多倉庫位置管理
    • 完整價格變動記錄與趨勢分析
  • 價格管理:歷史價格追蹤、變動記錄
  • 變體支援:產品規格管理(顏色、尺寸等)

5. 交易記錄管理

  • 交易記錄,可依 交易編號、客戶名稱搜尋

  • 下拉選單可依

    • 交易狀態(待處理、已完成、失敗、已取消、已退款)篩選
    • 類型(銷售、退款、付款、退單)篩選
  • 快速搜尋:依交易編號、客戶名稱進行查找

  • 多重篩選

    • 交易狀態:待處理、已完成、失敗、已取消、已退款
    • 交易類型:銷售、退款、付款、退單
  • 付款方式:多種付款方式統計(信用卡、PayPal、Stripe、銀行轉帳、現金、支票..等)

  • 交易報表:財務流水與分析

6. 客服記錄系統

  • 客服工單管理

    • 可從客戶列表內選擇客戶或新增新客戶
    • 客服工單號碼自動生成邏輯:CS + 年月日 + 4 位序號
    • 工單狀態:開啟中、處理中、等待回應、已解決、已關閉
    • 優先級分類:低、中、高、緊急
    • 問題分類:一般諮詢、技術問題、計費問題、產品問題、物流問題、退換貨、客訴、功能建議
    • 工單內容:標題、問題描述、標籤
    • 負責人:專員 A、專員 B、專員 C...主管
  • 搜尋和篩選功能

    • 搜尋:工單號碼、標題、問題描述、客戶姓名、客戶 email
    • 下拉篩選
      • 工單狀態:開啟中、處理中、等待回應、已解決、已關閉
      • 優先級:低、中、高、緊急
      • 問題分類:一般諮詢、技術問題、計費問題、產品問題、物流問題、退換貨、客訴、功能建議
      • 負責人員:依系統用戶篩選
      • 客戶:依客戶篩選
    • 排序功能:建立時間、更新時間、優先級、狀態
  • 客服記錄管理

    • 記錄篩選
      • 工單:依特定工單篩選記錄
      • 記錄類型:內部備註、客戶回應、系統記錄、解決方案
      • 客戶可見性:是否對客戶可見
    • 時間排序:依記錄建立時間排序
  • 客服記錄追蹤

可直接在工單詳情頁面查看工單基本資訊、狀態資訊、客服紀錄、時間軸

  • 客服互動歷史記錄
  • 內部備註、客戶回應、系統記錄、解決方案分類
  • 回應時間統計:首次回應時間、解決時間計算
  • 滿意度評分:1-5 分客戶滿意度評價

7. 知識庫管理系統

  • 知識文章管理:FAQ、操作指南、政策說明、故障排除、SOP
  • 多層次分類結構:支援階層式分類管理
  • 搜尋和篩選功能
    • 文字搜尋:標題、內容、摘要、標籤全文檢索
    • 下拉篩選
      • 分類:依知識庫分類篩選
      • 內容類型:FAQ、操作指南、政策說明、故障排除、SOP
      • 公開狀態:公開可見、內部限制
      • 精選文章:是否為置頂精選
    • 排序功能:建立時間、更新時間、瀏覽次數
  • 內容統計:瀏覽次數、有用評價、無用評價追蹤
  • 精選文章:重要內容置頂顯示

8. FAQ 常見問題

  • 問答管理:問題與答案配對維護
  • 搜尋和篩選功能
    • 文字搜尋:問題、答案內容全文檢索
    • 下拉篩選
      • 分類:依知識庫分類篩選
      • 狀態:啟用、停用狀態篩選
      • 置頂狀態:是否為精選置頂
    • 排序功能:置頂優先、自訂排序、查看次數、建立時間
  • 分類整理:依業務類型分門別類
  • 置頂功能:重要問題優先顯示
  • 使用統計:追蹤查看次數分析

系統頁面截圖

登入頁面

Login Page

客戶資料管理

  • 可手動新增、編輯客戶資料,可編輯 姓名、Email、電話、地址、公司、年齡、性別、購買季節偏好、購買產品類別偏好、備註...等欄位
  • 也可直接在該客戶詳情頁面直接查詢:該客戶的歷史訂單與交易記錄、總消費金額、活躍度..等

Customers Page

匯入多筆客戶資料流程

  • 支援手動新增或批次匯入(CSV / Excel)
  • 多欄位對應設計,可選擇忽略不必要欄位
  • 匯入具容錯能力,即使缺少總消費額、年齡、地址..等欄位也可成功導入,可後續補齊資料,預設顯示「未提供」

Customers Import

訂單管理

可手動新增訂單,也可直接在該訂單內連結到擁有此訂單的客戶,也可新增多項產品,並即時計算稅額、運費、折扣、總金額

Orders Page

交易記錄

  • 可依照 交易狀態、交易類型 下拉選單快速篩選交易記錄,並可直接在該交易記錄內連結到該筆訂單
  • 可手動新增交易記錄,編輯 交易類型、付款方式、付款狀態、金流串接資訊、金流回應、處理時間

Transactions Page

搜尋與篩選資料

  • 客戶管理系統
  • 訂單管理系統:搜尋 Joseph 開頭,訂單狀態為處理中的搜尋結果

Search Results

營銷分析儀表板

dashboard

客戶分析儀表板

客戶總覽頁面

客戶人口分析

客戶行為分析

客戶分群分析

產品管理系統


Tech Stack

後端

  • 框架: Django 4.2.7 + Django REST Framework
  • 身份驗證: JWT (Simple JWT)
  • 資料庫: MySQL (可配置)
  • API 文件: DRF 自動產生
  • 安全性: CORS 標頭、環境變數配置

前端

  • 框架: React 19 with TypeScript
  • 樣式設計: TailwindCSS 4
  • 路由管理: React Router 6
  • HTTP 客戶端: Axios with interceptors
  • 建置工具: Vite
  • 狀態管理: React Hooks

開發工具

  • 環境管理: Python venv
  • 套件管理: pip (Python), npm (Node.js)
  • 程式碼品質: ESLint, TypeScript
  • 版本控制: Git 與 .gitignore

Quick Start

系統需求

  • Python 3.8+
  • Node.js 16+
  • MySQL 5.7+ (或 SQLite 作為替代)
  • Git

1. 複製專案與設定

# 複製儲存庫
git clone https://github.com/yourusername/react-ts-crm.git
cd react-ts-crm

# 設定環境變數
cp .env.example .env
# 編輯 .env 檔案,填入您的資料庫設定

2. 後端設定

# 建立並啟動虛擬環境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 安裝相依套件
pip install -r requirements.txt

# 執行資料庫遷移
python manage.py migrate

# 建立超級使用者
python manage.py createsuperuser

# 建立範例資料 (選用)
python simple_dummy_data.py

# 啟動 Django 伺服器
python manage.py runserver

3. 前端設定

# 進入前端目錄
cd frontend

# 安裝相依套件
npm install

# 啟動開發伺服器
npm run dev

4. 存取應用程式


📖 API 文件

身份驗證端點

POST /api/auth/login/          # 使用帳號密碼登入
POST /api/auth/refresh/        # 刷新 JWT 令牌

客戶管理端點

GET    /api/customers/         # 列出客戶 (含分頁)
POST   /api/customers/         # 建立新客戶
GET    /api/customers/{id}/    # 取得客戶詳情
PUT    /api/customers/{id}/    # 更新客戶資料
DELETE /api/customers/{id}/    # 刪除客戶
GET    /api/customers/{id}/orders/       # 取得客戶訂單
GET    /api/customers/{id}/transactions/ # 取得客戶交易記錄

訂單管理端點

GET    /api/orders/            # 列出訂單 (含分頁)
POST   /api/orders/            # 建立新訂單
GET    /api/orders/{id}/       # 取得訂單詳情
PUT    /api/orders/{id}/       # 更新訂單
DELETE /api/orders/{id}/       # 刪除訂單

交易記錄端點

GET    /api/transactions/      # 列出交易記錄 (含分頁)
POST   /api/transactions/      # 建立新交易記錄
GET    /api/transactions/{id}/ # 取得交易詳情
PUT    /api/transactions/{id}/ # 更新交易記錄
DELETE /api/transactions/{id}/ # 刪除交易記錄

產品管理端點

GET    /api/products/categories/        # 列出產品分類
POST   /api/products/categories/        # 建立新分類
GET    /api/products/categories/{id}/   # 取得分類詳情
PUT    /api/products/categories/{id}/   # 更新分類
DELETE /api/products/categories/{id}/   # 刪除分類

GET    /api/products/brands/            # 列出品牌
POST   /api/products/brands/            # 建立新品牌
GET    /api/products/brands/{id}/       # 取得品牌詳情
PUT    /api/products/brands/{id}/       # 更新品牌
DELETE /api/products/brands/{id}/       # 刪除品牌

GET    /api/products/suppliers/         # 列出供應商
POST   /api/products/suppliers/         # 建立新供應商
GET    /api/products/suppliers/{id}/    # 取得供應商詳情
PUT    /api/products/suppliers/{id}/    # 更新供應商
DELETE /api/products/suppliers/{id}/    # 刪除供應商

GET    /api/products/                   # 列出產品 (含分頁)
POST   /api/products/                   # 建立新產品
GET    /api/products/{id}/              # 取得產品詳情
PUT    /api/products/{id}/              # 更新產品
DELETE /api/products/{id}/              # 刪除產品

GET    /api/products/variants/          # 列出產品款式變體
POST   /api/products/variants/          # 建立產品款式變體
GET    /api/products/variants/{id}/     # 取得變體詳情
PUT    /api/products/variants/{id}/     # 更新變體
DELETE /api/products/variants/{id}/     # 刪除變體

GET    /api/products/inventory/         # 列出庫存資訊
POST   /api/products/inventory/         # 建立庫存記錄
GET    /api/products/inventory/{id}/    # 取得庫存詳情
PUT    /api/products/inventory/{id}/    # 更新庫存
DELETE /api/products/inventory/{id}/    # 刪除庫存記錄

GET    /api/products/stock-movements/   # 列出庫存異動記錄
POST   /api/products/stock-movements/   # 建立庫存異動記錄
GET    /api/products/stock-movements/{id}/ # 取得異動記錄詳情

GET    /api/products/price-history/     # 列出價格變動歷史
POST   /api/products/price-history/     # 建立價格歷史記錄
GET    /api/products/price-history/{id}/ # 取得價格歷史詳情

分析報表端點

GET    /api/reports/dashboard/              # 營銷分析儀表板數據
GET    /api/reports/trends/                 # 趨勢分析數據
GET    /api/reports/customers/              # 客戶分析數據
GET    /api/reports/customer-demographics/  # 客戶人口統計分析
GET    /api/reports/customer-clv/           # 客戶生命週期價值 (CLV) 分析
GET    /api/reports/revenue/                # 營收分析數據

客戶價值分析 (CLV) 端點詳細說明

GET    /api/reports/customer-clv/

支援的查詢參數:

  • date_from: 開始日期 (YYYY-MM-DD)
  • date_to: 結束日期 (YYYY-MM-DD)
  • source: 客戶來源篩選

回傳數據結構範例:

{
 "clv_overview": {
  "total_customers": 150,
  "customers_with_orders": 120,
  "avg_clv": 25000.5,
  "total_clv": 3000060.0,
  "avg_purchase_frequency": 2.5
 },
 "clv_segments": [
  {
   "segment": "頂級客戶",
   "count": 15,
   "total_value": 750000.0,
   "avg_clv": 50000.0,
   "percentage": 12.5
  }
 ],
 "clv_by_source": [
  {
   "source": "website",
   "count": 80,
   "avg_clv": 28000.0,
   "total_clv": 2240000.0,
   "avg_orders": 3.2
  }
 ],
 "top_customers": [
  {
   "id": 1,
   "full_name": "王小明",
   "email": "wang@example.com",
   "total_spent": 85000.0,
   "total_orders": 12,
   "avg_order_value": 7083.33
  }
 ],
 "monthly_clv_trend": [
  {
   "month": "2024-12",
   "new_customers": 25,
   "avg_clv": 22000.0,
   "total_clv": 550000.0
  }
 ]
}

客服記錄系統端點

GET    /api/customer-service/tickets/           # 列出客服工單 (含分頁)
POST   /api/customer-service/tickets/           # 建立新工單
GET    /api/customer-service/tickets/{id}/      # 取得工單詳情
PUT    /api/customer-service/tickets/{id}/      # 更新工單
DELETE /api/customer-service/tickets/{id}/      # 刪除工單
POST   /api/customer-service/tickets/{id}/add_note/  # 新增客服記錄

GET    /api/customer-service/notes/             # 列出客服記錄 (含分頁)
POST   /api/customer-service/notes/             # 建立新記錄
GET    /api/customer-service/notes/{id}/        # 取得記錄詳情
PUT    /api/customer-service/notes/{id}/        # 更新記錄
DELETE /api/customer-service/notes/{id}/        # 刪除記錄

GET    /api/customer-service/knowledge-base/    # 列出知識庫文章 (含分頁)
POST   /api/customer-service/knowledge-base/    # 建立新文章
GET    /api/customer-service/knowledge-base/{id}/  # 取得文章詳情
PUT    /api/customer-service/knowledge-base/{id}/  # 更新文章
DELETE /api/customer-service/knowledge-base/{id}/  # 刪除文章

GET    /api/customer-service/knowledge-categories/  # 列出知識庫分類
POST   /api/customer-service/knowledge-categories/  # 建立新分類
GET    /api/customer-service/knowledge-categories/{id}/  # 取得分類詳情
PUT    /api/customer-service/knowledge-categories/{id}/  # 更新分類
DELETE /api/customer-service/knowledge-categories/{id}/  # 刪除分類

GET    /api/customer-service/faq/               # 列出常見問題 (含分頁)
POST   /api/customer-service/faq/               # 建立新問題
GET    /api/customer-service/faq/{id}/          # 取得問題詳情
PUT    /api/customer-service/faq/{id}/          # 更新問題
DELETE /api/customer-service/faq/{id}/          # 刪除問題

客服工單查詢參數:

  • status: 工單狀態篩選 (open, in_progress, waiting_response, resolved, closed)
  • priority: 優先級篩選 (low, medium, high, urgent)
  • category: 問題分類篩選
  • customer: 客戶篩選
  • assigned_to: 負責人篩選
  • date_from: 開始日期
  • date_to: 結束日期

查詢參數

所有列表端點都支援:

  • search: ?search=關鍵字 - 跨相關欄位搜尋
  • filtering: ?status=active&source=website - 依欄位值篩選
  • ordering: ?ordering=-created_at - 排序結果
  • pagination: ?page=2&page_size=20 - 分頁處理

⚙️ 環境設定

環境變數

在根目錄建立 .env 檔案:

# Django 設定
DEBUG=True
SECRET_KEY=your-secret-key-here

# 資料庫設定 (MySQL)
DB_ENGINE=django.db.backends.mysql
DB_NAME=crm_dashboard
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_HOST=your_db_host
DB_PORT=3306

# SQLite 替代方案
# DB_ENGINE=django.db.backends.sqlite3
# DB_NAME=db.sqlite3

前端設定

前端會自動連接到 Django API。如需更改 API 基礎網址,請更新 src/services/api.ts


🚀 部署

正式環境設定

  1. 環境變數: 在正式環境中設定 DEBUG=False
  2. 資料庫: 正式環境建議使用 PostgreSQL 或 MySQL
  3. 靜態檔案: 設定適當的靜態檔案服務
  4. 安全性: 更新 ALLOWED_HOSTS 及其他安全設定
  5. HTTPS: 啟用 SSL/TLS 安全通訊

Docker 支援

# 使用 Docker Compose 建置並執行
docker compose up --build

# 初始化資料庫(首次執行)
docker compose exec backend python manage.py migrate

# 創建超級用戶
docker compose exec backend python manage.py createsuperuser

# 生成測試資料(客戶、訂單、產品等)
docker compose exec backend python create_enhanced_dummy_data.py

# 生成客服系統測試資料(工單、知識庫、FAQ)
docker compose exec backend python create_customer_service_data.py

測試資料生成

系統提供兩個資料生成腳本,幫助快速建立測試環境:

1. 基礎商務資料 (create_enhanced_dummy_data.py)

  • 📦 產品資料: 50+ 個測試產品,包含分類、品牌、供應商
  • 👥 客戶資料: 500+ 個虛擬客戶,含完整個人資料和偏好
  • 🛒 訂單資料: 1000+ 筆訂單,涵蓋各種狀態和金額
  • 💳 交易記錄: 對應的付款交易,支援多種付款方式
  • 📊 庫存管理: 產品庫存和變體管理

2. 客服系統資料 (create_customer_service_data.py)

  • 🎫 客服工單: 50 筆測試工單,包含各種狀態和優先級
  • 📝 服務記錄: 95+ 筆客服互動記錄,含內部備註和客戶回應
  • 📚 知識庫文章: 50 篇技術文檔,涵蓋常見問題解決方案
  • FAQ 常見問題: 50 個問答對,依分類整理
  • 🏷️ 知識分類: 8 個主要分類(產品使用、技術支援、政策條款等)
# 執行順序建議
docker compose up --build              # 啟動服務
docker compose exec backend python manage.py migrate     # 初始化資料庫
docker compose exec backend python create_enhanced_dummy_data.py    # 生成基礎商務資料
docker compose exec backend python create_customer_service_data.py  # 生成客服資料

# 訪問應用
# 前端: http://localhost:5173
# 後端 API: http://localhost:8000
# 管理後台: http://localhost:8000/admin

🧪 測試

後端測試

# 執行 Django 測試
python manage.py test

# 執行覆蓋率測試
coverage run manage.py test
coverage report

前端測試

# 執行 React 測試
cd frontend
npm test

# 執行覆蓋率測試
npm run test:coverage

📊 資料庫架構

資料模型

  • Customer: 個人資訊、聯絡詳情、來源追蹤、個人化偏好
  • Order: 訂單管理,包含項目與財務計算
  • OrderItem: 訂單內的個別商品,關聯產品與變體
  • Transaction: 付款追蹤與財務記錄
  • Product: 產品主體資訊、價格、成本、庫存
  • ProductVariant: 產品款式變體(顏色、尺寸等規格)
  • Category: 產品分類管理
  • Brand: 品牌資訊管理
  • Supplier: 供應商資訊與關係管理
  • Inventory: 庫存管理與警示
  • StockMovement: 庫存異動記錄
  • PriceHistory: 價格變動歷史

關聯關係

客戶與訂單

  1. Customer → Order (1:M) - 客戶可以有多個訂單
  2. Order → OrderItem (1:M) - 訂單可以包含多個商品項目
  3. Customer → Transaction (1:M) - 客戶可以有多筆交易記錄
  4. Order → Transaction (1:M, Optional) - 訂單可以關聯多筆交易

產品管理

  1. Category → Product (1:M) - 分類包含多個產品
  2. Brand → Product (1:M) - 品牌擁有多個產品
  3. Supplier → Product (1:M) - 供應商供應多個產品
  4. Product → ProductVariant (1:M) - 產品可有多個變體
  5. Product → Inventory (1:1) - 產品對應庫存記錄
  6. ProductVariant → Inventory (1:1) - 變體對應庫存記錄
  7. Product → StockMovement (1:M) - 產品的庫存異動記錄
  8. Product → PriceHistory (1:M) - 產品的價格變動歷史

訂單與產品整合

  1. OrderItem → Product (M:1) - 訂單項目關聯產品
  2. OrderItem → ProductVariant (M:1, Optional) - 訂單項目可關聯產品款式變體

⭐ Star this repository if you find it helpful!

Made with ❤️ by Young

About

RAG-based AI-powered CRM system that integrates LLaMA3 and the LINE Messaging API to enable seamless natural language interaction with users

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors