319 lines
6.8 KiB
Markdown
319 lines
6.8 KiB
Markdown
# PANJIT 文件翻譯系統
|
||
|
||
## 專案簡介
|
||
|
||
PANJIT 文件翻譯系統是一個企業級的多語言文件翻譯平台,支持多種文件格式的自動翻譯。系統採用 Flask + Vue.js 架構,整合 LDAP 認證、Celery 異步處理、通知系統等企業功能。
|
||
|
||
### 主要功能
|
||
|
||
- **多格式翻譯**:支援 Word (.docx)、PowerPoint (.pptx)、Excel (.xlsx)、PDF 文件翻譯
|
||
- **多語言支援**:支援繁體中文、簡體中文、英語、日語、韓語、越南語等
|
||
- **LDAP 認證**:整合企業 Active Directory 用戶系統
|
||
- **異步處理**:使用 Celery + Redis 處理翻譯任務
|
||
- **即時通知**:WebSocket 即時狀態更新 + 郵件通知
|
||
- **檔案管理**:支援單檔下載、批量下載、合併檔案下載
|
||
- **管理後台**:系統統計、用戶管理等功能
|
||
|
||
## 技術架構
|
||
|
||
**後端**
|
||
- Python 3.8+
|
||
- Flask 3.0 + SQLAlchemy 2.0
|
||
- MySQL 資料庫
|
||
- Celery 4.5 + Redis
|
||
- LDAP3 認證
|
||
- Socket.IO 即時通信
|
||
|
||
**前端**
|
||
- Vue.js 3.0 + Composition API
|
||
- Element Plus UI 框架
|
||
- Pinia 狀態管理
|
||
- Vite 建置工具
|
||
|
||
## 系統需求
|
||
|
||
- Python 3.8+
|
||
- Node.js 16+
|
||
- Redis Server
|
||
- MySQL 資料庫(已配置)
|
||
- Windows 10+ 或 Linux 系統
|
||
|
||
## 快速啟動
|
||
|
||
### 開發環境
|
||
|
||
1. **克隆專案**
|
||
```bash
|
||
cd C:\Users\EGG\WORK\data\user_scrip\TOOL\Document_translator_V2
|
||
```
|
||
|
||
2. **後端啟動**
|
||
```bash
|
||
# 使用提供的啟動腳本
|
||
start_dev.bat
|
||
|
||
# 或手動啟動
|
||
python -m venv venv
|
||
venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
python app.py
|
||
```
|
||
|
||
3. **前端啟動**(另開命令視窗)
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
npm run dev
|
||
|
||
# 或使用批次檔
|
||
start_frontend.bat
|
||
```
|
||
|
||
4. **Celery Worker 啟動**(另開命令視窗)
|
||
```bash
|
||
venv\Scripts\activate
|
||
celery -A app.celery worker --loglevel=info --pool=solo
|
||
|
||
# 或使用批次檔
|
||
start_celery_worker.bat
|
||
```
|
||
|
||
### 系統訪問
|
||
|
||
- **前端界面**: http://127.0.0.1:5173 (開發模式)
|
||
- **後端 API**: http://127.0.0.1:12010 (生產模式)
|
||
- **API 文檔**: http://127.0.0.1:12010/api
|
||
- **健康檢查**: http://127.0.0.1:12010/api/v1/health
|
||
|
||
## 專案結構
|
||
|
||
```
|
||
Document_translator_V2/
|
||
├── app/ # 後端應用
|
||
│ ├── api/ # API 路由
|
||
│ ├── models/ # 資料模型
|
||
│ ├── services/ # 業務邏輯
|
||
│ ├── tasks/ # Celery 任務
|
||
│ └── utils/ # 工具函數
|
||
├── frontend/ # 前端應用
|
||
│ ├── src/
|
||
│ │ ├── components/ # Vue 組件
|
||
│ │ ├── views/ # 頁面視圖
|
||
│ │ ├── stores/ # Pinia 狀態
|
||
│ │ └── utils/ # 工具函數
|
||
│ └── package.json
|
||
├── uploads/ # 檔案上傳目錄
|
||
├── logs/ # 日誌目錄
|
||
├── app.py # 主應用入口
|
||
├── celery_app.py # Celery 配置
|
||
├── requirements.txt # Python 依賴
|
||
└── .env # 環境變數
|
||
```
|
||
|
||
## 配置說明
|
||
|
||
### 環境變數 (.env)
|
||
|
||
系統需要以下環境變數配置:
|
||
|
||
```env
|
||
# 資料庫配置
|
||
DATABASE_URL=mysql+pymysql://user:pass@host:port/db_name
|
||
MYSQL_HOST=mysql.theaken.com
|
||
MYSQL_PORT=33306
|
||
MYSQL_USER=A060
|
||
MYSQL_DATABASE=db_A060
|
||
|
||
# LDAP 配置
|
||
LDAP_SERVER=panjit.com.tw
|
||
LDAP_PORT=389
|
||
LDAP_BIND_USER_DN=CN=LdapBind,CN=Users,DC=PANJIT,DC=COM,DC=TW
|
||
|
||
# SMTP 配置
|
||
SMTP_SERVER=mail.panjit.com.tw
|
||
SMTP_PORT=25
|
||
SMTP_SENDER_EMAIL=todo-system@panjit.com.tw
|
||
|
||
# Redis 配置
|
||
REDIS_URL=redis://localhost:6379/0
|
||
```
|
||
|
||
### API 配置 (api.txt)
|
||
|
||
系統使用 Dify API 進行翻譯,需要配置:
|
||
|
||
```
|
||
base_url:YOUR_DIFY_API_BASE_URL
|
||
api:YOUR_DIFY_API_KEY
|
||
```
|
||
|
||
## 部署指南
|
||
|
||
### Docker 部署
|
||
|
||
1. **建置映像**
|
||
```bash
|
||
docker build -t panjit-translator .
|
||
```
|
||
|
||
2. **啟動服務**
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
3. **檢查狀態**
|
||
```bash
|
||
docker-compose ps
|
||
docker logs panjit-translator
|
||
```
|
||
|
||
### 生產環境
|
||
|
||
1. **使用 Gunicorn 啟動**
|
||
```bash
|
||
pip install gunicorn
|
||
gunicorn -w 4 -b 0.0.0.0:12010 app:app
|
||
```
|
||
|
||
2. **前端建置**
|
||
```bash
|
||
cd frontend
|
||
npm run build
|
||
```
|
||
|
||
3. **配置 Web 服務器**
|
||
將 `frontend/dist` 部署到 Nginx 或 Apache
|
||
|
||
## API 文檔
|
||
|
||
### 認證相關
|
||
- `POST /api/v1/auth/login` - 用戶登入
|
||
- `POST /api/v1/auth/logout` - 用戶登出
|
||
- `GET /api/v1/auth/me` - 獲取當前用戶
|
||
|
||
### 檔案上傳
|
||
- `POST /api/v1/files/upload` - 上傳檔案
|
||
|
||
### 任務管理
|
||
- `GET /api/v1/jobs` - 獲取任務列表
|
||
- `GET /api/v1/jobs/{uuid}` - 獲取任務詳情
|
||
- `POST /api/v1/jobs/{uuid}/retry` - 重試任務
|
||
|
||
### 檔案下載
|
||
- `GET /api/v1/files/{uuid}/download/{lang}` - 下載指定語言版本
|
||
- `GET /api/v1/files/{uuid}/download/batch` - 批量下載 (ZIP)
|
||
- `GET /api/v1/files/{uuid}/download/combine` - 下載合併檔案
|
||
|
||
### 通知系統
|
||
- `GET /api/v1/notifications` - 獲取通知列表
|
||
- `POST /api/v1/notifications/{id}/read` - 標記已讀
|
||
|
||
### 系統管理
|
||
- `GET /api/v1/admin/stats` - 系統統計
|
||
- `GET /api/v1/health` - 健康檢查
|
||
|
||
## 故障排除
|
||
|
||
### 常見問題
|
||
|
||
1. **Redis 連接失敗**
|
||
- 確認 Redis 服務是否運行
|
||
- 檢查 REDIS_URL 設定
|
||
|
||
2. **資料庫連接失敗**
|
||
- 確認 MySQL 連接參數
|
||
- 檢查網路連接
|
||
|
||
3. **LDAP 認證失敗**
|
||
- 確認 LDAP 服務器設定
|
||
- 檢查服務帳號權限
|
||
|
||
4. **檔案上傳失敗**
|
||
- 檢查 uploads 目錄權限
|
||
- 確認磁碟空間充足
|
||
|
||
### 日誌查看
|
||
|
||
```bash
|
||
# 應用日誌
|
||
tail -f logs/app.log
|
||
|
||
# Celery 日誌
|
||
tail -f logs/celery.log
|
||
|
||
# 查看錯誤日誌
|
||
grep ERROR logs/app.log
|
||
```
|
||
|
||
## 維護指南
|
||
|
||
### 資料庫維護
|
||
|
||
```bash
|
||
# 備份資料庫
|
||
mysqldump -u A060 -p db_A060 > backup_$(date +%Y%m%d).sql
|
||
|
||
# 清理舊檔案(90天前)
|
||
find uploads/ -mtime +90 -delete
|
||
```
|
||
|
||
### 日誌清理
|
||
|
||
```bash
|
||
# 清理應用日誌(保留30天)
|
||
find logs/ -name "*.log" -mtime +30 -delete
|
||
```
|
||
|
||
## Docker 部署
|
||
|
||
### 快速部署
|
||
|
||
```bash
|
||
# 1. 建置 Docker 映像
|
||
docker build -t panjit-translator .
|
||
|
||
# 2. 運行容器
|
||
docker run -d -p 12010:12010 --name panjit-translator panjit-translator
|
||
|
||
# 3. 檢查服務狀態
|
||
docker ps
|
||
docker logs panjit-translator
|
||
```
|
||
|
||
### 服務管理
|
||
|
||
```bash
|
||
# 停止服務
|
||
docker stop panjit-translator
|
||
|
||
# 啟動服務
|
||
docker start panjit-translator
|
||
|
||
# 重啟服務
|
||
docker restart panjit-translator
|
||
```
|
||
|
||
### 部署方式
|
||
|
||
```bash
|
||
# Docker 部署 (推薦)
|
||
docker build -t panjit-translator .
|
||
docker run -d -p 12010:12010 --name panjit-translator panjit-translator
|
||
```
|
||
|
||
## 支援與聯絡
|
||
|
||
**PANJIT IT Team**
|
||
- Email: it-support@panjit.com.tw
|
||
- 內線電話: 2481
|
||
- 辦公時間: 週一至週五 9:00-18:00
|
||
|
||
## 版本資訊
|
||
|
||
- **版本**: v2.0.0
|
||
- **發布日期**: 2025-09-04
|
||
- **維護人員**: PANJIT IT Team
|
||
|
||
## 授權條款
|
||
|
||
此軟體為 PANJIT 集團內部使用系統,版權歸 PANJIT 所有,僅供公司內部使用。 |