Skip to content

變更紀錄 (Changelog) ​

瑞成工程專案管理系統(Rui-Cheng PMS)由通用 Next.js 模板客製化而來。 早期通用模板的金流(Stripe/ECPay)、模組註冊表(module registry)、OAuth 等功能,在落地瑞成 PMS 時已移除,本變更紀錄僅保留與瑞成 PMS 相關的演進。

瑞成 PMS 客製化 ​

領域落地 ​

  • 六大案件分類(A1 設計監造 / A2 鑑定 / A3 巡查 / B1 建案 / B2 計算案 / B3 鑑定案)+ 自訂分類
  • 三種進度模式:節點式(自動加總)、自填式、彈性混合式(B3 可編輯節點名稱/權重,已完成節點鎖定)
  • 母子追加案(資料化:case_categories.supports_subcases,B2 預設開,自訂自填式分類可選開;子案以狀態追蹤、不計進度 %)
  • 前置資料(NAS 連結,不做檔案上傳)
  • 協力廠商登錄(甲方/上包/下包/營造廠/事務所,自由標籤,與案件多對多連結)+ CSV 匯出/匯入
  • 複製案件(以既有案件為種子預填新增案件精靈,不預填名稱與起訖日期)
  • 案件窗口改為從業主資料庫選取(可多位,case_contacts;E358 的案件頁直接編輯窗口已移除)

登入與權限 ​

  • 工牌編號登入(R00001 格式 + 密碼,不需 Email)— 取代原本的 Email/OAuth 登入
  • 三層 RBAC:管理員 admin / 行政 operator / 一般 staff,10 旗標權限矩陣(lib/rc-permissions.ts)
  • 核心責任界線:行政可代操作文書,但不可填進度 %(overridePct 為 admin 專屬)
  • 「持有 editNodes 者」與被指派技師同樣可回復上一步/撤回送審/登記外審輪次與現場勘查(代操作稽核標 onBehalf);completeNode 仍僅限被指派技師
  • 一般僅見被指派案件(lib/rc-visibility.ts)

預警與通知 ​

  • 依「業主工作日」計算時程消耗 %(政府春節不計 / 建商週六上班 / 半導體 24/7)
  • 四級燈號:綠 <50 / 黃 50–74 / 橙 75–89 / 紅 ≥90
  • 站內通知由 in-process 排程每小時整點掃描(E320,NOTIFICATION_SCAN_CRON 可覆寫),系統內通知鈴鐺,不寄 Email

業主 CRM 與稽核 ​

  • 業主資料庫(屬性分類、NDA、聯絡窗口含離職歷史、綁定案件)
  • 稽核日誌:所有 CRUD 經 rcLog 留痕,永久不可刪不可改,可篩選匯出 CSV(民事舉證,追訴期最長 10 年)

版本演進(技術面摘要;逐項說明見 repo 根目錄 CHANGELOG.md) ​

版本日期重點Migration
v1.2.02026-10-05第二輪變更需求 C1–C9(Phases 78–87,客戶 2026-09-25 書面簽核):動態死線連動、業主核定等待、回復上一步、公文總表、協力廠商、管理費轉發紀錄至 0021
v1.2.1–v1.2.72026-10-05~10-09案件窗口從業主資料庫選取(0022,v1.2.1)、公文直接連結案件(0023)、母子追加案資料化(0024,v1.2.4)、各式 QA/手測修正0022–0024
v1.3.02026-10-10儀表板/我的待辦重新設計、期限不漏掉、外審輪次、現場勘查行程(Phases 99–103,E385–E393、E396–E398)0025–0027
v1.4.02026-10-13第二次客戶面談(Phase 104,E399–E404):前置資料備註、複製節點內容(createCase.nodes/copyFromCaseId)、多角色帳號(users.roles,有效權限=最高角色)、v1.3 新功能的角色調整(lib/rc-case-actor-rules.ts、setCaseHardDeadline)、帳號權限收斂(lib/rc-account-rules.ts:授予管理員/更動管理員帳號僅管理員;角色降級前須先改派)、名冊匯入工具0028–0029
v1.4.22026-10-13工作階段強化(Phase 106,E406):users.session_version + JWT sv 讓重設/變更密碼與停用使舊登入失效;登入效期 7 天0030
v1.4.32026-10-13共用 PasswordInput(顯示/隱藏密碼)套用登入、變更密碼、重設密碼、管理員重設密碼無
v1.4.72026-10-20複製案件:精靈帶入業主+負責人員、新增 quickCopyCase 一鍵快速複製(lib/rc-quick-copy.ts)、_create-core.ts 自動案號撞號重試(E409/E410);案件列表記住篩選(lib/rc-list-filter.ts,E411);CSV 匯入預覽(dry-run)與連結修正(RCPM-585~588);部署平台 Zeabur → Railway無
v1.4.62026-10-16NAS 連結可貼 Windows 共享資料夾路徑(RCPM-583 階段 1:lib/rc-nas-link.ts 協定白名單、「複製路徑」);公文 CSV 重新匯入時 NAS 連結留白=不變更(RCPM-584)無
v1.4.52026-10-14公文總表使用者回饋(RCPM-578/580/581/582):預設最新在前、搜尋框、表頭日期排序鈕+起訖日期區間(filterByDocDateRange)、CSV 匯入認得「案名」表頭/提示不認得欄位/可選改匯成未歸案(importOfficialDocsCsv unmatchedAsUnfiled)無
v1.4.42026-10-13表單防誤關與建案精靈草稿(Phase 107,E407:RcModal dirty/useModalDirty、lib/rc-draft*.ts);稽核修正(Phase 108,E408:Edge auth.config.ts 補 session.maxAge 使 7 天效期真正生效、本人變更密碼寫稽核、jwt callback 失效關閉)無
v1.4.12026-10-13安全補強(Phase 105,E405):停用(離職)帳號即時失效——getLiveRole 與 jwt callback 都檢查帳號狀態;無 migration無

v1.3.0 技術重點

  • 三張新資料表/欄位(皆純新增): 0025 公文 direction/reply_due/replied_at 與案件 hard_deadline/hard_deadline_kind(含 CHECK);0026 review_rounds;0027 site_visits 與 site_visit_members。
  • 「今天」改為請求範圍求值(getRcToday() 於函式內呼叫;守門測試 frozen-today-guard),修正儀表板與掃描「凍在部署日」的舊缺陷。
  • 單一燈號入口 resolveAlertLevel: 公文回覆期限與案件硬期限只能把燈號拉高,不降低;儀表板、待辦、列表、詳情與通知掃描因此一致。
  • 逾期用語固定為「合約已逾期/節點落後/逾期待辦/有逾期項目」;畫面天數為日曆天,燈號仍為業主工作日 %。
  • 儀表板/待辦的篩選網址(?alert=、?court=、?filter=、?member=)與卡片數字共用同一批純函式,數字必相等。
  • CSV 下載統一帶 UTF-8 BOM(lib/download-csv.ts);字型改為自架。
  • 工程流程: scripts/verify/{run-gates,intake-pr,merge-pr}.sh(本機完整關卡 + 子代理 PR 驗收/合併)、scripts/deploy/{zeabur-db,sync-env-branches,rotate-pg-password,verify-env}.sh(備份/migrate/驗證/分支同步/密碼輪替)、scripts/jira/sync_epics.py(Epic ↔ Jira)。

已從產品移除(請勿加回) ​

  • 金流/訂閱(Stripe、ECPay、PaymentProvider 抽象)
  • 模組註冊表(module registry)與對外 SaaS landing/pricing
  • OAuth、2FA、LINE 整合、Email 通知、檔案上傳

技術基礎(沿用) ​

  • Next.js 16 App Router + React 19 + TypeScript + Tailwind v4 + shadcn/ui
  • Auth.js v5(JWT session)+ Drizzle ORM + PostgreSQL 15
  • Vitest 單元測試(db-free 層 ≥80% 覆蓋率)+ Playwright e2e
  • Zeabur 單一服務部署

Released under the MIT License.