722f57076672e97384e593b131acc81012aad9ec
- Add DEPLOYMENT.md for 1Panel deployment guide with troubleshooting - Add README.md with project architecture and quick start guide - Update .gitignore to exclude development docs (openspec/, CLAUDE.md, etc.) - Unify port configuration via .env (BACKEND_PORT, FRONTEND_PORT, MINIO_API_PORT, MINIO_CONSOLE_PORT) - Update start-dev.sh and check-env.sh to read ports from .env 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Task Reporter
Task Reporter 是一個生產事件即時協作報告系統,專為製造業生產線異常事件的追蹤、協作與報告而設計。
功能特色
核心功能
- 事件房間管理 - 建立、管理生產異常事件的專屬聊天室
- 即時訊息 - WebSocket 即時通訊,支援文字訊息及打字指示器
- 檔案上傳 - 支援圖片、文件、日誌檔案上傳 (MinIO 儲存)
- AI 報告生成 - 透過 DIFY 整合自動生成事件報告 (Word 格式)
- LOT 批號追蹤 - 關聯受影響的生產批號
權限系統
- AD 整合認證 - 透過 Active Directory API 進行身份驗證
- 角色權限 - 房間擁有者 (Owner)、編輯者 (Editor)、檢視者 (Viewer)
- 開放房間存取 - 所有登入用戶可自由加入房間
- 系統管理員 - 特殊權限帳號,可管理所有房間
事件分類
- 類型: 設備故障、物料短缺、品質問題、其他
- 嚴重等級: 低、中、高、緊急
- 狀態: 進行中、已解決、已封存
專案架構
Task_Reporter/
├── app/ # 後端 (FastAPI)
│ ├── core/ # 核心設定
│ │ ├── config.py # 環境變數設定
│ │ └── database.py # 資料庫連線
│ ├── db/ # 資料庫初始化
│ ├── modules/ # 功能模組
│ │ ├── auth/ # 認證模組
│ │ │ ├── models.py # User, Session 模型
│ │ │ ├── router.py # 認證 API
│ │ │ └── services/ # AD 客戶端
│ │ ├── chat_room/ # 聊天室模組
│ │ │ ├── models.py # Room, RoomMember 模型
│ │ │ ├── router.py # 房間管理 API
│ │ │ └── schemas.py # Pydantic schemas
│ │ ├── realtime/ # 即時訊息模組
│ │ │ ├── models.py # Message 模型
│ │ │ ├── router.py # WebSocket 端點
│ │ │ ├── websocket_manager.py
│ │ │ └── services/ # 訊息服務
│ │ ├── file_storage/ # 檔案儲存模組
│ │ │ ├── models.py # FileAttachment 模型
│ │ │ ├── router.py # 檔案上傳 API
│ │ │ └── validators.py # 檔案驗證
│ │ └── report_generation/ # 報告生成模組
│ │ ├── models.py # Report 模型
│ │ ├── router.py # 報告 API
│ │ └── services/ # DIFY 整合
│ └── main.py # FastAPI 入口
├── alembic/ # 資料庫遷移
│ └── versions/ # 遷移版本檔
├── frontend/ # 前端 (React + Vite)
│ ├── src/
│ │ ├── components/ # React 元件
│ │ ├── hooks/ # 自訂 Hooks
│ │ ├── pages/ # 頁面元件
│ │ ├── services/ # API 服務
│ │ ├── stores/ # Zustand 狀態管理
│ │ ├── types/ # TypeScript 型別
│ │ └── utils/ # 工具函數
│ ├── package.json
│ └── vite.config.ts
├── scripts/ # 工具腳本
│ └── migrate_orphan_files.py # 孤立檔案遷移工具
├── tests/ # 測試檔案
├── check-env.sh # 環境檢查腳本
├── start-dev.sh # 啟動開發環境
├── stop-dev.sh # 停止開發環境
├── start-prod.sh # 啟動生產環境
├── stop-prod.sh # 停止生產環境
├── .env.example # 後端環境變數範本
├── .env.docker.example # Docker 環境變數範本
├── docker-compose.minio.yml # MinIO Docker 設定
├── requirements.txt # Python 依賴
├── alembic.ini # Alembic 設定
└── DEPLOYMENT.md # 部署指南
技術棧
後端
- FastAPI - 非同步 Web 框架
- SQLAlchemy 2.0 - ORM
- MySQL - 關聯式資料庫
- Alembic - 資料庫遷移
- MinIO - S3 相容物件儲存
- WebSocket - 即時通訊
- python-docx - Word 文件生成
前端
- React 18 - UI 框架
- TypeScript - 型別安全
- Vite - 建置工具
- TanStack Query - 資料同步
- Zustand - 狀態管理
- Tailwind CSS - 樣式框架
基礎設施
- MinIO - 物件儲存
- DIFY - AI 服務整合
快速開始
必要條件
- Python 3.11+
- Node.js 18+
- MySQL 8.0+
- Docker (用於 MinIO)
方式一: 使用內建腳本 (推薦)
# 1. 檢查環境是否就緒
./check-env.sh
# 2. 設定環境變數
cp .env.example .env
nano .env # 填入 DATABASE_URL, FERNET_KEY 等
# 3. 建立虛擬環境並安裝依賴
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 4. 執行資料庫遷移
alembic upgrade head
# 5. 啟動開發環境 (MinIO + Backend + Frontend)
./start-dev.sh
# 停止服務
./stop-dev.sh
方式二: 手動啟動
1. 啟動 MinIO
docker-compose -f docker-compose.minio.yml up -d
2. 設定後端
# 建立虛擬環境
python3 -m venv venv
source venv/bin/activate
# 安裝依賴
pip install -r requirements.txt
# 設定環境變數
cp .env.example .env
# 編輯 .env 填入必要設定
# 執行資料庫遷移
alembic upgrade head
# 啟動後端
uvicorn app.main:app --reload --port 8000
3. 設定前端
cd frontend
# 安裝依賴
npm install
# 設定環境變數 (可選)
cp .env.example .env
# 啟動開發伺服器
npm run dev
存取應用
- 前端: http://localhost:3000
- 後端 API: http://localhost:8000/api
- API 文件: http://localhost:8000/docs
- MinIO Console: http://localhost:9001
內建腳本說明
| 腳本 | 說明 |
|---|---|
./check-env.sh |
檢查環境設定 (Python, Node, MySQL, MinIO, 環境變數) |
./start-dev.sh |
啟動開發環境 (所有服務 + hot-reload) |
./stop-dev.sh |
停止開發環境 |
./start-prod.sh |
啟動生產環境 (multi-worker backend) |
./stop-prod.sh |
停止生產環境 |
API 端點概覽
認證 (/api/auth)
POST /login- 登入POST /logout- 登出GET /me- 取得目前用戶資訊POST /refresh- 更新 token
房間管理 (/api/rooms)
GET /- 列出房間POST /- 建立房間GET /{room_id}- 取得房間詳情PATCH /{room_id}- 更新房間DELETE /{room_id}- 封存房間POST /{room_id}/join- 加入房間GET /{room_id}/members- 取得成員列表POST /{room_id}/lots- 新增 LOT 批號DELETE /{room_id}/lots/{lot}- 移除 LOT 批號
即時訊息 (/api/realtime)
WebSocket /ws/{room_id}- 即時訊息連線GET /rooms/{room_id}/messages- 取得歷史訊息GET /rooms/{room_id}/online-users- 取得線上用戶
檔案管理 (/api/rooms/{room_id}/files)
POST /- 上傳檔案GET /- 列出檔案GET /{file_id}/download- 下載檔案
報告生成 (/api/rooms/{room_id}/reports)
POST /generate- 生成報告GET /- 列出報告GET /{report_id}/status- 報告狀態GET /{report_id}/download- 下載報告GET /{report_id}/markdown- 取得 Markdown 預覽
環境變數
詳見 .env.example 取得完整設定說明。
必要設定
DATABASE_URL- MySQL 連線字串FERNET_KEY- 加密金鑰AD_API_URL- AD 認證 APIMINIO_*- MinIO 連線設定
可選設定
DIFY_API_KEY- AI 報告功能SYSTEM_ADMIN_EMAIL- 系統管理員
部署
詳見 DEPLOYMENT.md 取得完整的 1Panel 部署指南。
開發
資料庫遷移
# 建立新遷移
alembic revision --autogenerate -m "描述"
# 執行遷移
alembic upgrade head
# 回滾
alembic downgrade -1
測試
pytest tests/
程式碼檢查
ruff check app/
授權
Private - 版權所有
Description
Languages
Python
52.9%
TypeScript
40.2%
Shell
6.4%
CSS
0.2%