# SalesPipeline - 銷售管線管理系統 一個完整的銷售管線追蹤系統,用於管理 DIT (Design-In Tracking) 案件、樣品紀錄、訂單明細,並提供智慧模糊比對與分析儀表板。 ## 系統架構 ``` Frontend (React + TypeScript + i18n) │ │ REST API (Single Port) ▼ Backend (FastAPI + SQLAlchemy) │ ▼ Database (MySQL) ``` ## 功能特色 - **使用者驗證**:JWT 登入/註冊、角色權限管理 - **多語言支援**:繁體中文、英文 (i18next) - **資料匯入**:自動偵測 Excel 表頭位置,支援中文欄位對應 - **智慧模糊比對**:使用 rapidfuzz 計算客戶名稱相似度 - ≥95%:自動匹配 - 80-95%:需人工審核 - <80%:不匹配 - **分析儀表板**:KPI 統計、轉換漏斗圖、歸因明細表 - **報表匯出**:支援 Excel 和 PDF 格式 - **單一 Port 部署**:前後端整合於同一服務 ## 快速開始 ### 前置需求 - Node.js 18+ - Python 3.10+ - MySQL 5.7+ / 8.0+ ### 安裝步驟 1. **Clone 專案** ```bash git clone cd SampleOrderAssistant ``` 2. **設定後端** ```bash cd backend python -m venv venv # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate pip install -r requirements.txt ``` 3. **設定環境變數** ```bash cp .env.example .env # 編輯 .env 檔案設定資料庫連線 ``` 4. **設定前端** ```bash cd frontend npm install ``` ### 開發模式 1. **啟動後端** (Port 8000) ```bash cd backend python run.py ``` 2. **啟動前端** (Port 3000) ```bash cd frontend npm run dev ``` 3. 打開瀏覽器前往 http://localhost:3000 ### 生產環境部署 1. **建置前端** ```bash cd frontend npm run build ``` 2. **啟動服務** ```bash cd backend python run.py ``` 3. 打開瀏覽器前往 http://localhost:8000 詳細部署說明請參考 [deploy/1panel-setup.md](deploy/1panel-setup.md) ## API 文件 後端啟動後 (DEBUG=True),可前往以下網址查看 API 文件: - Swagger UI: http://localhost:8000/api/docs - ReDoc: http://localhost:8000/api/redoc ## 專案結構 ``` SampleOrderAssistant/ ├── frontend/ # React 前端 │ ├── src/ │ │ ├── components/ # UI 元件 │ │ ├── services/ # API 服務 │ │ ├── hooks/ # Custom Hooks │ │ ├── i18n/ # 多語言設定 │ │ │ └── locales/ # 語言檔案 (zh-TW, en) │ │ └── types/ # TypeScript 類型 │ └── package.json │ ├── backend/ # FastAPI 後端 │ ├── app/ │ │ ├── models/ # 資料模型 │ │ ├── routers/ # API 路由 │ │ ├── services/ # 業務邏輯 │ │ └── utils/ # 工具函數 │ ├── static/ # 前端建置輸出 │ ├── .env # 環境變數 (不進版控) │ ├── .env.example # 環境變數範本 │ └── requirements.txt │ ├── data/ # 資料目錄 │ └── uploads/ # 上傳檔案 │ ├── deploy/ # 部署設定 │ ├── 1panel-setup.md # 1Panel 部署指南 │ ├── salespipeline.service # Systemd 服務檔 │ └── deploy.sh # 自動部署腳本 │ └── README.md ``` ## 資料庫表格 | 表格名稱 | 說明 | |---------|------| | PJ_SOA_Users | 使用者帳戶 | | PJ_SOA_DIT_Records | DIT 案件資料 | | PJ_SOA_Sample_Records | 樣品記錄 | | PJ_SOA_Order_Records | 訂單明細 | | PJ_SOA_Match_Results | 配對結果 | | PJ_SOA_Review_Logs | 審核日誌 | ## 技術棧 ### 前端 - React 18 + TypeScript - Vite - TailwindCSS - Recharts - React Query - React Router DOM - react-i18next - Axios ### 後端 - FastAPI - SQLAlchemy 2.0 - MySQL (PyMySQL) - rapidfuzz - openpyxl + pandas - reportlab - python-jose (JWT) ## 環境變數 | 變數名稱 | 說明 | 預設值 | |---------|------|--------| | DB_HOST | 資料庫主機 | localhost | | DB_PORT | 資料庫端口 | 3306 | | DB_USER | 資料庫使用者 | root | | DB_PASSWORD | 資料庫密碼 | - | | DB_DATABASE | 資料庫名稱 | sales_pipeline | | SECRET_KEY | JWT 密鑰 | - | | ALGORITHM | JWT 演算法 | HS256 | | ACCESS_TOKEN_EXPIRE_MINUTES | Token 過期時間(分鐘) | 1440 | | APP_HOST | 應用監聽地址 | 0.0.0.0 | | APP_PORT | 應用監聽端口 | 8000 | | WORKERS | 工作進程數 | 1 | | DEBUG | 開發模式 | False | | TABLE_PREFIX | 資料表前綴 | PJ_SOA_ | | CORS_ORIGINS | 允許的跨域來源 (逗號分隔) | - | ## License MIT