first commit
This commit is contained in:
202
README.md
Normal file
202
README.md
Normal file
@@ -0,0 +1,202 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user