變更紀錄 (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.0 | 2026-10-05 | 第二輪變更需求 C1–C9(Phases 78–87,客戶 2026-09-25 書面簽核):動態死線連動、業主核定等待、回復上一步、公文總表、協力廠商、管理費轉發紀錄 | 至 0021 |
| v1.2.1–v1.2.7 | 2026-10-05~10-09 | 案件窗口從業主資料庫選取(0022,v1.2.1)、公文直接連結案件(0023)、母子追加案資料化(0024,v1.2.4)、各式 QA/手測修正 | 0022–0024 |
| v1.3.0 | 2026-10-10 | 儀表板/我的待辦重新設計、期限不漏掉、外審輪次、現場勘查行程(Phases 99–103,E385–E393、E396–E398) | 0025–0027 |
| v1.4.0 | 2026-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.2 | 2026-10-13 | 工作階段強化(Phase 106,E406):users.session_version + JWT sv 讓重設/變更密碼與停用使舊登入失效;登入效期 7 天 | 0030 |
| v1.4.3 | 2026-10-13 | 共用 PasswordInput(顯示/隱藏密碼)套用登入、變更密碼、重設密碼、管理員重設密碼 | 無 |
| v1.4.7 | 2026-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.6 | 2026-10-16 | NAS 連結可貼 Windows 共享資料夾路徑(RCPM-583 階段 1:lib/rc-nas-link.ts 協定白名單、「複製路徑」);公文 CSV 重新匯入時 NAS 連結留白=不變更(RCPM-584) | 無 |
| v1.4.5 | 2026-10-14 | 公文總表使用者回饋(RCPM-578/580/581/582):預設最新在前、搜尋框、表頭日期排序鈕+起訖日期區間(filterByDocDateRange)、CSV 匯入認得「案名」表頭/提示不認得欄位/可選改匯成未歸案(importOfficialDocsCsv unmatchedAsUnfiled) | 無 |
| v1.4.4 | 2026-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.1 | 2026-10-13 | 安全補強(Phase 105,E405):停用(離職)帳號即時失效——getLiveRole 與 jwt callback 都檢查帳號狀態;無 migration | 無 |
v1.3.0 技術重點
- 三張新資料表/欄位(皆純新增):
0025公文direction/reply_due/replied_at與案件hard_deadline/hard_deadline_kind(含 CHECK);0026review_rounds;0027site_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 單一服務部署