Files
OCR/setup_dev_env.sh
egg d7e64737b7 feat: migrate to WSL Ubuntu native development environment
從 Docker/macOS+Conda 部署遷移到 WSL2 Ubuntu 原生開發環境

主要變更:
- 移除所有 Docker 相關配置檔案 (Dockerfile, docker-compose.yml, .dockerignore 等)
- 移除 macOS/Conda 設置腳本 (SETUP.md, setup_conda.sh)
- 新增 WSL Ubuntu 自動化環境設置腳本 (setup_dev_env.sh)
- 新增後端/前端快速啟動腳本 (start_backend.sh, start_frontend.sh)
- 統一開發端口配置 (backend: 8000, frontend: 5173)
- 改進資料庫連接穩定性(連接池、超時設置、重試機制)
- 更新專案文檔以反映當前 WSL 開發環境

Technical improvements:
- Database connection pooling with health checks and auto-reconnection
- Retry logic for long-running OCR tasks to prevent DB timeouts
- Extended JWT token expiration to 24 hours
- Support for Office documents (pptx, docx) via LibreOffice headless
- Comprehensive system dependency installation in single script

Environment:
- OS: WSL2 Ubuntu 24.04
- Python: 3.12 (venv)
- Node.js: 24.x LTS (nvm)
- Backend Port: 8000
- Frontend Port: 5173

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-13 21:00:42 +08:00

166 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
# Tool_OCR WSL Ubuntu 開發環境設置腳本
set -e # 遇到錯誤時停止
echo "================================"
echo "Tool_OCR 開發環境設置"
echo "================================"
echo ""
# 顏色定義
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# 檢查是否為 root
if [ "$EUID" -eq 0 ]; then
echo -e "${RED}請不要使用 sudo 運行此腳本${NC}"
echo "腳本會在需要時提示輸入 sudo 密碼"
exit 1
fi
echo -e "${YELLOW}[1/8] 更新系統套件列表...${NC}"
sudo apt update
echo ""
echo -e "${YELLOW}[2/8] 安裝 Python 開發工具...${NC}"
sudo apt install -y \
python3-pip \
python3-venv \
python3-dev \
build-essential \
pkg-config
echo ""
echo -e "${YELLOW}[3/8] 安裝系統層級依賴...${NC}"
sudo apt install -y \
pandoc \
libmagic1 \
libmagic-dev \
fonts-noto-cjk \
fonts-noto-cjk-extra \
fonts-liberation \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libcairo2 \
libcairo2-dev \
libgdk-pixbuf2.0-0 \
libgdk-pixbuf-2.0-dev \
libffi-dev \
libffi8 \
shared-mime-info \
poppler-utils \
libgl1 \
libglib2.0-0 \
libglib2.0-dev \
libgomp1 \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libopencv-dev \
libsqlite3-dev \
libreoffice-core-nogui \
libreoffice-writer-nogui \
libreoffice-impress-nogui \
ca-certificates \
curl \
wget \
libxml2 \
libxslt1-dev \
python3-cffi
echo ""
echo -e "${YELLOW}[4/8] 安裝 Node.js 和 npm...${NC}"
# 檢查是否已安裝 nvm
if [ ! -d "$HOME/.nvm" ]; then
echo "安裝 nvm..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 載入 nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
else
echo "nvm 已安裝"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
fi
# 安裝 Node.js LTS
echo "安裝 Node.js LTS..."
nvm install --lts
nvm use --lts
echo ""
echo -e "${YELLOW}[5/8] 創建 Python 虛擬環境...${NC}"
if [ ! -d "venv" ]; then
python3 -m venv venv
echo "虛擬環境已創建"
else
echo "虛擬環境已存在"
fi
echo ""
echo -e "${YELLOW}[6/8] 安裝 Python 依賴...${NC}"
source venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
echo ""
echo -e "${YELLOW}測試關鍵套件...${NC}"
python -c "import magic; print('✓ python-magic')" || echo "✗ python-magic failed"
python -c "from weasyprint import HTML; print('✓ WeasyPrint')" || echo "✗ WeasyPrint failed"
python -c "import cv2; print('✓ OpenCV')" || echo "✗ OpenCV failed"
echo ""
echo -e "${YELLOW}[7/8] 安裝前端依賴...${NC}"
cd frontend
# 清理可能存在的鎖定文件
if [ -d "node_modules" ]; then
echo "清理現有 node_modules..."
rm -rf node_modules package-lock.json
fi
# 清理 npm 緩存
npm cache clean --force
# 安裝依賴(使用 --force 避免鎖定問題)
echo "安裝前端依賴..."
npm install --force
cd ..
echo ""
echo -e "${YELLOW}[8/8] 創建必要的目錄...${NC}"
mkdir -p backend/uploads/{temp,processed,images}
mkdir -p backend/storage/{markdown,json,exports}
mkdir -p backend/models/paddleocr
mkdir -p backend/logs
echo ""
echo -e "${GREEN}================================${NC}"
echo -e "${GREEN}環境設置完成!${NC}"
echo -e "${GREEN}================================${NC}"
echo ""
echo "下一步操作:"
echo "1. 初始化數據庫:"
echo " source venv/bin/activate"
echo " cd backend"
echo " alembic upgrade head"
echo " python create_test_user.py"
echo " cd .."
echo ""
echo "2. 啟動後端:"
echo " ./start_backend.sh"
echo ""
echo "3. 啟動前端 (新終端):"
echo " ./start_frontend.sh"
echo ""
echo "4. 訪問應用:"
echo " 前端: http://localhost:5173"
echo " API文檔: http://localhost:8000/docs"
echo " 健康檢查: http://localhost:8000/health"
echo ""