NO docker

This commit is contained in:
beabigegg
2025-10-02 18:50:53 +08:00
commit 4cace93934
99 changed files with 26967 additions and 0 deletions

411
README.md Normal file
View File

@@ -0,0 +1,411 @@
# PANJIT Document Translator V2
## 🎯 系統概述
企業級文檔翻譯系統,支援多種文檔格式的智能翻譯,包含 OCR 圖像識別和對話上下文連貫性功能。
### 核心功能
-**多格式支援**DOCX、DOC、PDF、PPTX、XLSX、XLS 文檔翻譯
-**智能 OCR**:掃描 PDF 自動識別,含圖像預處理增強
-**對話持續性**:維持翻譯上下文,確保長文檔術語一致性
-**多語言輸出**:單語言翻譯檔 + 多語言組合檔
-**混合認證**API 認證為主LDAP 備援
-**異步處理**Celery + Redis 批量任務隊列
-**快取機制**OCR 快取 + 翻譯快取,避免重複處理
### 支援的翻譯語言
中文(繁體)、中文(簡體)、英文、日文、韓文、法文、德文、西班牙文、俄文、阿拉伯文、葡萄牙文、義大利文、泰文、越南文
---
## 📋 系統需求
### 必要軟體
| 軟體 | 版本要求 | 下載位置 |
|------|---------|---------|
| **Python** | ≥ 3.8 | https://www.python.org/downloads/ |
| **Node.js** | ≥ 16.0 | https://nodejs.org/ |
| **Redis** | ≥ 5.0 | https://github.com/tporadowski/redis/releases |
### 硬體需求
- **CPU**: 4 核心以上 (推薦)
- **記憶體**: ≥ 8GB (推薦 16GB)
- **硬碟空間**: ≥ 20GB
### 網路需求
- 可連線至外部 MySQL 資料庫 (mysql.theaken.com:33306)
- 可連線至 Dify API (外部翻譯服務)
- 可連線至 LDAP 伺服器 (panjit.com.tw:389)
---
## 🚀 快速部署
### 一鍵自動部署(推薦)
```batch
# 執行完整部署腳本
deploy_venv.bat
```
此腳本會自動完成:
1. 建立 Python 虛擬環境
2. 安裝 Python 後端依賴
3. 安裝前端依賴並建置
4. 建立必要目錄
5. 複製前端建置產物
### 手動部署步驟
```batch
# 1. 建立虛擬環境
setup_venv.bat
# 2. 安裝 Python 依賴
install_python_dependencies.bat
# 3. 安裝前端依賴並建置
install_frontend_dependencies.bat
# 4. 建立必要目錄
mkdir uploads cache logs app\static
# 5. 複製前端建置產物
xcopy /E /I /Y frontend\dist app\static
```
---
## 🔧 環境配置
### 1. 環境變數配置 (.env)
主要配置項(已預設):
```bash
# 服務端口
SERVICE_PORT=12010
# 資料庫配置
DATABASE_URL=mysql+pymysql://A060:WLeSCi0yhtc7@mysql.theaken.com:33306/db_A060
# Redis 配置
REDIS_URL=redis://localhost:6379/0
# LDAP 配置
LDAP_SERVER=panjit.com.tw
LDAP_PORT=389
# SMTP 郵件配置
SMTP_SERVER=mail.panjit.com.tw
SMTP_PORT=25
```
💡 **提示**:
- 專案已包含完整的環境配置,可直接使用
- 如需修改:`SECRET_KEY``JWT_SECRET_KEY` 可自訂金鑰
- API 配置已內建於 `api.txt`,無需額外設定
---
## 🎬 啟動與停止
### 啟動所有服務
```batch
# 一鍵啟動(推薦)
start_all.bat
```
會自動啟動 4 個服務,每個在獨立終端視窗:
1. Redis Server (端口 6379)
2. Flask Backend (端口 12010)
3. Celery Worker (任務處理器)
4. Celery Beat (定時任務)
啟動後自動開啟瀏覽器: http://localhost:12010
### 分別啟動服務
```batch
# 視窗 1: Redis
start_redis.bat
# 視窗 2: 後端
start_backend.bat
# 視窗 3: Worker
start_celery_worker.bat
# 視窗 4: Beat
start_celery_beat.bat
```
### 停止所有服務
```batch
stop_all.bat
```
---
## 📊 系統架構
### 服務組成
```
用戶瀏覽器 (http://localhost:12010)
Flask Backend (端口 12010)
├── API 路由處理
├── 靜態檔案服務
├── JWT 認證
└── 檔案上傳管理
Redis (端口 6379)
├── 訊息佇列
├── 任務快取
└── 翻譯快取
Celery Worker ← 處理翻譯任務
MySQL Database (遠端: mysql.theaken.com:33306)
```
### 端口佔用
| 服務 | 端口 | 說明 |
|------|------|------|
| **Flask Backend** | 12010 | 主要 API 服務與前端 |
| **Redis** | 6379 | 訊息佇列與快取 |
| **MySQL** (遠端) | 33306 | 資料庫 |
| **LDAP** (遠端) | 389 | 認證服務 |
---
## 📦 技術棧
### 後端核心套件
```
Flask==3.0.0 # Web 框架
Celery==5.3.4 # 異步任務佇列
redis==5.0.1 # Redis 客戶端
SQLAlchemy==2.0.23 # ORM
PyMySQL==1.1.0 # MySQL 驅動
PyMuPDF>=1.23.0 # PDF 處理
opencv-python-headless==4.8.1.78 # 圖像處理
python-docx==1.1.0 # Word 文檔
python-pptx==0.6.23 # PowerPoint
openpyxl==3.1.2 # Excel
ldap3==2.9.1 # LDAP 認證
```
完整清單請參考 `requirements.txt`
### 前端核心套件
```json
{
"vue": "^3.3.4", // Vue.js 3
"element-plus": "^2.3.8", // UI 組件庫
"axios": "^1.4.0", // HTTP 客戶端
"pinia": "^2.1.6", // 狀態管理
"echarts": "^5.4.3", // 圖表庫
"vite": "^4.4.0" // 建置工具
}
```
完整清單請參考 `frontend/package.json`
---
## 📂 輸出格式說明
### 單語言翻譯檔案
| 輸入格式 | 輸出格式 | 檔名範例 |
|---------|---------|---------|
| `.docx` | `.docx` | `translated_報告_en_20241002.docx` |
| `.pdf` | `.docx` | `translated_文件_ja_20241002.docx` |
| `.xlsx` | `.xlsx` | `translated_表格_zh-CN_20241002.xlsx` |
| `.pptx` | `.pptx` | `translated_簡報_ko_20241002.pptx` |
### 組合多語言檔案
當選擇多個目標語言時,自動產生組合檔案:
**檔名格式**: `combined_{檔名}_multilang_{timestamp}.{副檔名}`
**內容結構**:
```
原文段落1
[英文翻譯]
[日文翻譯]
原文段落2
[英文翻譯]
[日文翻譯]
```
---
## 🗂️ 目錄結構
```
Document_translator_V2_nodocker/
├── app/ # 後端應用程式
│ ├── models/ # 資料模型
│ ├── api/ # API 路由
│ ├── services/ # 業務邏輯
│ ├── tasks/ # Celery 任務
│ ├── utils/ # 工具函數
│ └── static/ # 前端建置產物
├── frontend/ # 前端源碼
│ ├── src/ # 源碼
│ ├── dist/ # 建置產物
│ └── package.json # 依賴清單
├── venv/ # Python 虛擬環境
├── uploads/ # 檔案上傳目錄
├── cache/ # 快取目錄
├── logs/ # 日誌目錄
├── .env # 環境變數
├── api.txt # Dify API 配置
├── requirements.txt # Python 依賴
├── database_schema.sql # 資料庫建置腳本
├── deploy_venv.bat # 一鍵部署
├── setup_venv.bat # 建立虛擬環境
├── install_python_dependencies.bat
├── install_frontend_dependencies.bat
├── start_all.bat # 啟動所有服務
├── start_redis.bat
├── start_backend.bat
├── start_celery_worker.bat
├── start_celery_beat.bat
├── stop_all.bat # 停止所有服務
├── README.md # 本文件
└── README_VENV_DEPLOYMENT.md # 詳細部署手冊
```
---
## ✅ 部署驗證
### 檢查服務狀態
```batch
# Redis
redis-cli ping
# 預期: PONG
# 後端 API
curl http://localhost:12010/api/health
# 預期: {"status":"healthy"}
# 前端
# 開啟瀏覽器: http://localhost:12010
```
### 功能測試
1. 登入系統 (使用 LDAP 帳號)
2. 上傳測試文檔
3. 選擇目標語言
4. 提交翻譯任務
5. 檢查任務狀態
6. 下載翻譯結果
---
## 🐛 故障排除
### Redis 啟動失敗
```batch
# 安裝 Redis (Chocolatey)
choco install redis-64
# 或手動下載
# https://github.com/tporadowski/redis/releases
```
### 端口被佔用
```batch
# 查找佔用進程
netstat -ano | findstr :12010
# 終止進程
taskkill /F /PID <PID>
# 或停止所有服務
stop_all.bat
```
### 資料庫連線失敗
檢查 `.env` 中資料庫配置,確認網路可連線至 `mysql.theaken.com:33306`
### 翻譯任務失敗
1. 檢查 `api.txt` 中 Dify API 配置
2. 查看 Celery Worker 終端的錯誤訊息
3. 確認網路可連線至 Dify API
---
## 🔐 安全建議
### 生產環境檢查清單
- [ ] 修改 `SECRET_KEY``JWT_SECRET_KEY`
- [ ] 確認資料庫密碼安全性
- [ ] 配置防火牆,僅開放必要端口
- [ ] 定期更新套件依賴
- [ ] 配置日誌輪替
- [ ] 定期備份資料庫和檔案
- [ ] 設定檔案自動清理
---
## 📞 技術資訊
### 系統資訊
- **版本**: Document Translator V2
- **服務端口**: 12010
- **Python**: ≥ 3.8
- **Node.js**: ≥ 16
- **核心框架**: Flask 3.0, Vue.js 3, Celery 5.3
### 聯絡資訊
- **管理員**: ymirliu@panjit.com.tw
- **詳細文件**: README_VENV_DEPLOYMENT.md
---
## 📝 快速指令
```batch
# 部署
deploy_venv.bat
# 啟動
start_all.bat
# 停止
stop_all.bat
# 訪問
http://localhost:12010
```
---
**🎉 完成部署後,系統即可正式使用!**