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)
DBMSSQL(沿用,透過 mssql-django 驅動)
WSGIWaitress(Windows 10 原生部署)

三大支柱

  1. 架構五層式架構(API / Schema / Service / Repository / Model)
  2. 流程需求單生命週期 + LDAP 認證流程
  3. 資料單號流水號規則 + 歷史異動日誌

部署架構(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)

安全性設計

  1. 前端:所有 Token 改放 HttpOnly Cookie(防 XSS);React 預設編碼
  2. 後端schema 層做字串長度/類型檢驗;SECRET_KEY、MSSQL 密碼、LDAP 金鑰抽到 .env
  3. 權限:刪除/編輯 API 必須在 service 層重新驗證 request.user 角色(防越權)

從舊系統承襲的調校

設計時一次解掉舊系統累積的問題:

  • 多重 MSSQL 連線:用 Django Database Routing 支援跨連線
  • AD 連線穩定性python-ldap 直連通訊協定,避開 COM 元件層級異常
  • 資安隱匿:Waitress ident 參數抑制 / 自訂 Server: HTTP 標頭,防技術堆疊資訊外洩
  • UI 修復line-clamp 跨瀏覽器修正、登入頁報錯處理 — 全在 React 組件 + CSS Modules / Tailwind 一次性解掉

新增功能(重生版獨有)

  1. 新進同仁帳號創建進度:寄信同時寫 MSSQL,CallIT 顯示某日新進同仁帳號創建狀態(員編 / 姓名搜尋)
  2. 密碼修改整合:整合 ERA / 1-TV 密碼修改;忘記密碼者若信箱可存取,寄送臨時密碼
  3. 公司內部捷徑書籤:整合所有內部捷徑為書籤頁

角色

User、行政、主官管、IT — 4 種,依 AD Group 或 DB 白名單在 service 層判定。

相關概念

強連結(原文明確提及)

推斷連結(LLM 認為相關,待確認)

  • OAuth 流程 ?? — 同樣是認證流程,但 CallIT 用 LDAP 不用 OAuth,僅供對照

深入閱讀

← 回到 wiki