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
+45
View File
@@ -0,0 +1,45 @@
# 資料同步
## 員工資料下載
* Services/BPSNService.asmx
* METHOD Download:下載員工資料
* 資料存取類別:DAC_BPSN
* 資料讀取方法:SelectForClient()
## 報到資料上傳
* Services/SignUpService.asmx
* METHOD UploadCheckIns(int courseID, List<CheckInItem> items):上傳簽到簽退資料清單
* 資料表
* SignUp 參加人員
* Classes 課程
* 資料存取類別
* DAC_SignUp 參加人員
* DAC_Classes 課程
* 上傳資料欄位(CheckInItem
* CourseID (INTEGER NOT NULL) - 課程ID
* Name (TEXT NOT NULL) - 學員姓名
* Mobile (TEXT NOT NULL) - 手機號
* IDNumber (TEXT) - 身分證字號
* IDType (TEXT) - 身分別
* MealType (TEXT) - 餐點
* Email (TEXT) - 電子郵件
* SignUpType (TEXT) - 報名方式(預約 / 現場)
* CheckInType (TEXT) - 簽到類別(CHECKIN / CHECKOUT
* CheckInTime (DATETIME) - 簽到/簽退時間
* 驗證規則
* CourseID: 必填、必須存在於課程表 Classes.ID
* Name: 必填
* Mobile: 必填
* SignUpType: 必填,允許值 (預約 / 現場)
* CheckInType: 必填,允許值(CHECKIN / CHECKOUT
* CheckInTime: 必填,格式 yyyy-MM-dd HH:mm:ss
* 處理邏輯
* 用 CourseID 查詢 Classes.ID,若不存在則拒絕整批資料
* 按 (CourseID, Name, Mobile) 作為複合主鍵查詢 SignUp 表
* 若找到則依照 CheckInType 使用傳入的 CheckInTime 更新 CheckInTime/CheckOutTime,計入成功筆數
* 若沒找到則新增 (SignUpType="現場"),並依 CheckInType 設定時間欄位,計入成功筆數
* 不使用 transaction
* 回應格式
* 成功: { Success: true, Message: "...", Data: { CreatedCount, UpdatedCount, FailedCount, SkippedCount, SuccessIDs, Errors } }
* 失敗: { Success: false, Message: "..." }