Files
SalesPipeline/README.md
2026-01-09 19:14:41 +08:00

203 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <your-repo>
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