feat: implement user authentication module

- Backend (FastAPI):
  - External API authentication (pj-auth-api.vercel.app)
  - JWT token validation with Redis session storage
  - RBAC with department isolation
  - User, Role, Department models with pjctrl_ prefix
  - Alembic migrations with project-specific version table
  - Complete test coverage (13 tests)

- Frontend (React + Vite):
  - AuthContext for state management
  - Login page with error handling
  - Protected route component
  - Dashboard with user info display

- OpenSpec:
  - 7 capability specs defined
  - add-user-auth change archived

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
beabigegg
2025-12-28 23:41:37 +08:00
commit 1fda7da2c2
77 changed files with 6562 additions and 0 deletions

1
prd.txt Normal file
View File

@@ -0,0 +1 @@
1. 產品目標 (Product Vision)建立一個跨部門的單一事實來源Single Source of Truth降低工程師報工負擔並提供主管即時的資源負載與專案進度分析。2. 目標用戶與核心痛點用戶角色核心痛點系統解決方案基層工程師報工繁瑣、雜事多、不知優先順序自動化提醒、個人任務面板、一鍵回報阻礙單位主管不知道部屬在忙什麼、資源分配不均部署負荷熱圖 (Heatmap)、多專案健康看板行政/PMO資料散落在各處、進度更新不及時標準化範本、自動化週報、文件版控中心3. 功能需求 (Functional Requirements)A. 任務管理與階層 (Task & Hierarchy)多層級架構: 空間 (Space) > 專案 (Project) > 任務 (Task) > 子任務 (Sub-task)。自定義欄位 (Custom Fields) 支持下拉選單、公式、人員標籤。例如:封裝類型、機台編號、預計良率。多維視角: 支援看板 (Kanban)、甘特圖 (Gantt)、列表 (List) 與行事曆視角。B. 資源管理與協作 (Resource & Collaboration)負載熱圖: 自動統計每人每週分配的 Task 總時數,超過 80% 顯示黃色,超過 100% 顯示紅色。阻礙 (Blocker) 機制: 工程師可將任務標記為 "Blocked",強制要求主管介入排解,並發送即時通知。留言回覆: 任務內部的討論線索,支援 @相關人員,減少 Email 往返。C. 自動化與報告 (Automation & Reporting)觸發器 (Triggers) 當任務狀態變更為「待測試」時,自動通知設備工程師。自動週報: 每週五下午 4:00 自動彙整本週「已完成」與「進行中」的任務發送給主管。4. 非功能需求 (Non-functional Requirements)資訊安全: 支援企業 AD/LDAP 整合,設定細部權限(例如:廠務部不能看研發部的專案內容)。操作稽核: 所有的變更(誰改了死線、誰刪了文件)必須有 Log 紀錄。