chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
@@ -0,0 +1,46 @@
# 活動人員簽到簽退
## 資料關聯
Classes.ID (1) <-> (*) SignUp.CourseID
## 資料類別
* 各資料存取類別、資料集合類別、資料類別已有程式碼
* 如需擴充加在 DAC_XXXX2.cs 裡面
* DAC_Classes:活動資料處理類別
* ClassesList:活動資料集類別
* ClassesItem:活動資料項目類別
* DAC_SignUp:活動參加人員資料處理類別
* SignUpList:活動參加人員資料集類別
* SignUpItem:活動參加人員資料項目類別
* CheckInItem:簽到資料項目類別(用於 UploadCheckIns
## 畫面檔
* 沒有,這是寫給 WinForm 客戶端使用的後端服務
## 後端服務
* Services/ClassesService.asmx
* 活動的後端服務
* SearchClasses:查詢活動清單
* Services/SignUpService.asmx
* 活動參加人員的後端服務
* SearchSignUps:以活動編號(CourseID)查詢參加人員
* UploadCheckIns(int courseID, List<CheckInItem> items):批量上傳簽到簽退資料
* 上傳資料欄位(CheckInItem):CourseID, Name, Mobile, IDNumber, IDType, MealType, Email, SignUpType, CheckInType, CheckInTime
* 驗證規則
* CourseID: 必填、必須存在於課程表 Classes.ID
* Name, Mobile: 必填
* SignUpType: 必填,允許值 (預約 / 現場)
* CheckInType: 必填,允許值 (CHECKIN / CHECKOUT)
* CheckInTime: 必填,格式 yyyy-MM-dd HH:mm:ss
* 處理邏輯
* 按 (CourseID, Name, Mobile) 查詢 SignUp 表
* 若找到則依照 CheckInType 更新 CheckInTime/CheckOutTime,計入成功筆數
* 若沒找到則新增 (SignUpType="現場"),並依 CheckInType 設定時間欄位,計入成功筆數
* 不使用 transaction
* 回應格式
* 成功: { Success: true, Message: "...", Data: { CreatedCount, UpdatedCount, FailedCount, SkippedCount, SuccessIDs, Errors } }
* 失敗: { Success: false, Message: "...", Data: {...} }
## 技術規格
* 前端使用 Vue.js 實作,不使用 Server Control
* 後端使用 WebService,要 EnableSession