CallIT 系統
年代集團 IT 資訊需求單系統,從 ASP.NET Web Forms 全面重構為 Django 5.1 + React 前後端分離架構。
為什麼存在
舊系統長年累積技術債(Web Forms、PyService 排程、UI 截斷顯示),維護成本高、安全性不足、擴充困難。本次重生計畫做完整功能復刻 + 架構升級。
技術選型
| 層 | 技術 |
|---|---|
| 後端 | Python 3.12 + Django 5.1 |
| 前端 | React + TypeScript(SPA) |
| 認證 | django-auth-ldap 5.2.0 + python-ldap 3.4.5(接 AD) |
| DB | MSSQL(沿用,透過 mssql-django 驅動) |
| WSGI | Waitress(Windows 10 原生部署) |
三大支柱
部署架構(Windows 10)
- 前端靜態:
npm run build→ Nginx (Windows) 或 Waitress +whitenoise - 後端:
waitress-serve --port=8000 --threads=4 myproject.wsgi:application - 資料庫:
mssql-django連接字串 - 背景任務:Windows Task Scheduler →
python manage.py check_pending_requests(取代舊 PyService)
安全性設計
- 前端:所有 Token 改放 HttpOnly Cookie(防 XSS);React 預設編碼
- 後端:
schema層做字串長度/類型檢驗;SECRET_KEY、MSSQL 密碼、LDAP 金鑰抽到.env - 權限:刪除/編輯 API 必須在
service層重新驗證request.user角色(防越權)
從舊系統承襲的調校
設計時一次解掉舊系統累積的問題:
- 多重 MSSQL 連線:用 Django Database Routing 支援跨連線
- AD 連線穩定性:
python-ldap直連通訊協定,避開 COM 元件層級異常 - 資安隱匿:Waitress
ident參數抑制 / 自訂Server:HTTP 標頭,防技術堆疊資訊外洩 - UI 修復:
line-clamp跨瀏覽器修正、登入頁報錯處理 — 全在 React 組件 + CSS Modules / Tailwind 一次性解掉
新增功能(重生版獨有)
- 新進同仁帳號創建進度:寄信同時寫 MSSQL,CallIT 顯示某日新進同仁帳號創建狀態(員編 / 姓名搜尋)
- 密碼修改整合:整合 ERA / 1-TV 密碼修改;忘記密碼者若信箱可存取,寄送臨時密碼
- 公司內部捷徑書籤:整合所有內部捷徑為書籤頁
角色
User、行政、主官管、IT — 4 種,依 AD Group 或 DB 白名單在 service 層判定。
相關概念
強連結(原文明確提及)
推斷連結(LLM 認為相關,待確認)
- OAuth 流程 ?? — 同樣是認證流程,但 CallIT 用 LDAP 不用 OAuth,僅供對照
深入閱讀
← 回到 wiki