# 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 所有，僅供公司內部使用。