P/PromptTools
Instruction asset / workflow

WORKFLOW.md

從 Google Drive .github/WORKFLOW.md 匯入

共用指令內容

使用中

🚀 新功能開發標準作業流程 (SOP)

本文件定義了專案中開發新功能的標準生命週期,所有開發人員與 AI 輔助工具在建構功能時,皆必須嚴格遵循此流程。

階段 1:既有資源評估 (Assessment)

在撰寫任何新程式碼之前,必須先確認是否能重複使用現有資源,以避免疊床架屋。

* 盤點共用核心:檢查 CHMC.dll

* 決策路徑

* 已有可用方法(如:加解密、日誌記錄、設定檔讀取):優先引用該方法,並於程式碼註解中明確標示來源。

* 無可用方法:進入「階段 2」開始全新開發。

階段 2:需求分析與系統設計 (Design)

確保開發目標與資料結構在動工前已完全底定。

1. 功能對焦:釐清並確認功能目標、使用者故事(User Story)以及預期的輸入/輸出。

2. 資料庫設計 (DB):設計關聯式資料表結構,確立主鍵 (PK)、外鍵 (FK) 與必要的索引 (Index),並於 Sybase ASE 資料庫中建置完成。

* ⛔ Sybase ASE DDL 語法規範

* IDENTITY 欄位必須使用 INT IDENTITY,IDENTITY 已隱含 NOT NULL。

* DEFAULT 語序:DEFAULT <value> NOT NULL(DEFAULT 在前,NOT NULL 在後)。

* 小範圍整數欄位(如 sort_order)使用 TINYINT

* CREATE INDEX 不支援 DESC,排序方向由查詢 ORDER BY 控制。

* FK 欄位型別須與所參考的 PK 一致(INT)。

* 每個 DDL 語句後須加 GO 批次分隔符。

3. 通訊介面設計 (API):定義 WebService 預計提供的 WebMethod,以及前後端交換資料的 JSON 格式 (Request / Response)。

階段 3:後端核心建構 (Backend Construction)

嚴格遵守「由下而上」的順序進行開發,確保資料流的安全與穩定。

> ⛔ 全階段通用約束 — 檔案編碼

> 本階段(及階段 4)所有新建的 .cs.aspx.asmx.master.ascx 檔案必須使用 UTF-8 + BOM 編碼。

> VS Code 的 create_file 工具不會自動加 BOM,建檔後須立即用 PowerShell 補加:

> ```powershell

> $utf8BOM = New-Object System.Text.UTF8Encoding $true

> $utf8NoBOM = New-Object System.Text.UTF8Encoding $false

> $content = [System.IO.File]::ReadAllText("檔案路徑", $utf8NoBOM)

> [System.IO.File]::WriteAllText("檔案路徑", $content, $utf8BOM)

> ```

1. 建立 Models (DTO) 類別

* 位置App_Code/Models/

* 命名Dto{功能名稱}.cs

2. 建立 DAL 類別

* 位置App_Code/DAL/

* 命名Dbo{功能名稱}.cs

* 規範:遵循 #file:.github/instructions/DAL.instructions.md(必須使用參數化查詢防範 SQL 注入)。

* ⛔ DbHelperSQL 方法簽章FillDataSet 必須傳 4 參數 (sql, CommandType.Text, parameters/null, TableName)ExecuteNonQuery 必須傳 3 參數 (sql, CommandType.Text, parameters)。禁止省略任何參數。

3. 建立 BLL 類別

* 位置App_Code/BLL/

* 命名Biz{功能名稱}.cs

* 規範:遵循 #file:.github/instructions/BLL.instructions.md(負責商業邏輯與 DTO 驗證)。

* ⛔ DataRow 映射 DBNull 防護:將 DataRow 映射至 DTO 時,所有資料庫中允許 NULL 的欄位(如 data_dtdata_op,或區分建立/更新時的 create_dtdata_dtcreate_opdata_op必須先以 q["col"] == DBNull.Value 判斷,再進行 Convert.ToDateTime() / Convert.ToInt32() 等型別轉換。直接轉換 DBNull 會拋出 InvalidCastException

4. 建立 WebService 類別

* 位置App_Code/WS/

* 命名{功能名稱}WS.cs

* 規範:遵循 #file:.github/instructions/WebService.instructions.md(必須實作全域例外攔截與 CHMC.Log 日誌記錄)。

階段 4:前端介面與串接 (Frontend Development)

建構使用者介面,並透過 AJAX 與後端 API 進行安全通訊。

1. ⛔ 建立 ASPX 頁面與 Code-Behind (CRITICAL)

* 每個 .aspx 頁面必須同時建立對應的 .aspx.cs code-behind 檔案。禁止建立沒有 code-behind 的 .aspx 頁面。

* .aspx<%@ Page %> 指令必須包含 CodeFile="PageName.aspx.cs"Inherits="Pages_Feature_PageName"

* Code-behind 類別必須繼承 BasePage,以取得 SSO 驗證、Session 管理與權限檢查能力。

* 後台 Admin 頁面CheckAuthorization 維持預設 false,但仍須繼承 BasePage

* 前台公開頁面CheckAuthorization 維持預設 false,但仍須繼承 BasePage

* 類別命名規則:依路徑以底線串接,例如 Pages/Welfare/Admin/Dashboard.aspxPages_Welfare_Admin_Dashboard

* 同時建立對應的 .js 檔案。

* 規範:遵循 #file:.github/instructions/Frontend.instructions.md 中的「⛔ 0. ASPX Code-Behind 強制規範」。

2. 設計 HTML 結構:使用 Bootstrap 5 組件庫設計響應式 (RWD) 結構,絕對禁止使用會觸發 PostBack 的伺服器控制項。

3. 撰寫 JavaScript

* 使用 jQuery 3.7.2 的 AJAX (POST) 呼叫「階段 3」建立的 WebService。

* 將回傳資料安全地渲染至頁面(強制使用 Encode 或 .text() 防範 XSS)。

* 規範:遵循 #file:.github/instructions/Frontend.instructions.md

階段 5:整合與測試 (Testing & Delivery)

確保品質達到標準後方可進入版控。

1. 本機驗證:在本機開發環境進行完整的端到端 (End-to-End) 功能測試,確保前後端 JSON 通訊無誤且無 500/403 錯誤。

2. 相容性測試:進行跨瀏覽器測試(如 Edge, Chrome),確保 UI 渲染與 JS 執行正常。

3. 日誌審查:檢查 App_Data/Logs/ 確認測試過程中無潛在例外拋出。

版本紀錄

1 個不可變版本
v1
從 Google Drive 初次匯入
2026/07/28 02:59:43