chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,277 @@
|
||||
# SignUpService 後端服務規格完整性檢查
|
||||
|
||||
## 檢查日期
|
||||
2024年
|
||||
|
||||
## 概述
|
||||
根據文檔 `DOC\活動人員簽到簽退與同步.md` 規格,發現 **SignUpService.asmx** 服務的實現 **不完整**,缺失關鍵的簽到簽退功能。
|
||||
|
||||
---
|
||||
|
||||
## 檢查結果
|
||||
|
||||
### ✅ 已實現的方法
|
||||
|
||||
| 方法名 | 規格狀態 | 實現狀態 |
|
||||
|------|--------|--------|
|
||||
| SearchSignUps | 已定義 | ✅ 完整實現 |
|
||||
| SaveSignUp | 已定義 | ✅ 完整實現 |
|
||||
| DeleteSignUp | 已定義 | ✅ 完整實現 |
|
||||
| ProcessImportFile | 已定義 | ✅ 完整實現 |
|
||||
| ConfirmImport | 已定義 | ✅ 完整實現 |
|
||||
| ImportSignUps | 已定義 | ✅ 完整實現 (已棄用) |
|
||||
| ExportSignUps | 已定義 | ✅ 完整實現 |
|
||||
|
||||
### ❌ 缺失的方法
|
||||
|
||||
| 方法名 | 規格描述 | 優先級 | 狀態 |
|
||||
|------|--------|------|-----|
|
||||
| UploadSignUps | 同步簽到簽退資料 | 高 | ❌ **缺失** |
|
||||
| CheckIn | QRCode 簽到 | 高 | ❌ **缺失** |
|
||||
| CheckOut | QRCode 簽退 | 高 | ❌ **缺失** |
|
||||
| OnSiteCheckIn | 現場臨時簽到 | 中 | ❌ **缺失** |
|
||||
| OnSiteCheckOut | 現場臨時簽退 | 中 | ❌ **缺失** |
|
||||
|
||||
---
|
||||
|
||||
## 缺失方法詳細規格
|
||||
|
||||
### 1️⃣ UploadSignUps (優先級:高)
|
||||
|
||||
**用途**:同步 WinForm 客戶端的簽到簽退資料到資料庫
|
||||
|
||||
**規格**:
|
||||
```
|
||||
輸入參數:
|
||||
- courseID (int):活動編號
|
||||
- SignUpList:包含 CheckInTime 和 CheckOutTime 的參加人員清單
|
||||
|
||||
邏輯流程:
|
||||
1. 用 courseID、Name、Mobile 查詢 SignUp 資料表
|
||||
2. 如果找到相應記錄:
|
||||
- 若 CheckInTime 非空,不更新 CheckInTime
|
||||
- 若 CheckOutTime 非空,不更新 CheckOutTime
|
||||
- 其他情況按新值更新
|
||||
3. 如果未找到記錄:
|
||||
- 若 SignUpType == "現場",則新增記錄並設定 CheckInTime、CheckOutTime
|
||||
- 其他 SignUpType 則跳過
|
||||
|
||||
返回值:BaseResponse
|
||||
- Success:操作是否成功
|
||||
- Message:結果訊息
|
||||
- Data:更新統計(新增、更新、跳過筆數)
|
||||
```
|
||||
|
||||
### 2️⃣ CheckIn (優先級:高)
|
||||
|
||||
**用途**:通過 QRCode 條碼簽到
|
||||
|
||||
**規格**:
|
||||
```
|
||||
輸入參數:
|
||||
- CheckType:"checkin"(固定值)
|
||||
- QRCode:條碼內容
|
||||
- CheckInTime:簽到時間
|
||||
|
||||
邏輯流程:
|
||||
1. 用 QRCode 查詢 SignUp 資料表
|
||||
2. 如果找到:
|
||||
- 更新 CheckInTime 欄位為傳入值
|
||||
- 返回成功訊息
|
||||
3. 如果未找到:
|
||||
- 返回「找不到資料」訊息
|
||||
|
||||
返回值:BaseResponse
|
||||
- Success:操作是否成功
|
||||
- Message:結果訊息 (成功或找不到)
|
||||
- Data:更新的記錄內容
|
||||
```
|
||||
|
||||
### 3️⃣ CheckOut (優先級:高)
|
||||
|
||||
**用途**:通過 QRCode 條碼簽退
|
||||
|
||||
**規格**:
|
||||
```
|
||||
輸入參數:
|
||||
- CheckType:"checkout"(固定值)
|
||||
- QRCode:條碼內容
|
||||
- CheckOutTime:簽退時間
|
||||
|
||||
邏輯流程:
|
||||
1. 用 QRCode 查詢 SignUp 資料表
|
||||
2. 如果找到:
|
||||
- 更新 CheckOutTime 欄位為傳入值
|
||||
- 返回成功訊息
|
||||
3. 如果未找到:
|
||||
- 返回「找不到資料」訊息
|
||||
|
||||
返回值:BaseResponse
|
||||
- Success:操作是否成功
|
||||
- Message:結果訊息 (成功或找不到)
|
||||
- Data:更新的記錄內容
|
||||
```
|
||||
|
||||
### 4️⃣ OnSiteCheckIn (優先級:中)
|
||||
|
||||
**用途**:現場臨時簽到(無預約)
|
||||
|
||||
**規格**:
|
||||
```
|
||||
輸入參數:
|
||||
- CheckType:"checkin"(固定值)
|
||||
- Name:學員姓名
|
||||
- Mobile:手機號
|
||||
- CheckInTime:簽到時間
|
||||
|
||||
邏輯流程:
|
||||
1. 用 Name、Mobile 查詢 SignUp 資料表
|
||||
2. 如果找到:
|
||||
- 更新 CheckInTime 欄位
|
||||
3. 如果未找到:
|
||||
- 新增一筆記錄,SignUpType 設為 "現場"
|
||||
- 設定 CheckInTime、CheckOutTime 欄位
|
||||
|
||||
返回值:BaseResponse
|
||||
- Success:操作是否成功
|
||||
- Message:結果訊息
|
||||
- Data:新增/更新的記錄內容
|
||||
```
|
||||
|
||||
### 5️⃣ OnSiteCheckOut (優先級:中)
|
||||
|
||||
**用途**:現場臨時簽退(無預約)
|
||||
|
||||
**規格**:
|
||||
```
|
||||
輸入參數:
|
||||
- CheckType:"checkout"(固定值)
|
||||
- Name:學員姓名
|
||||
- Mobile:手機號
|
||||
- CheckOutTime:簽退時間
|
||||
|
||||
邏輯流程:
|
||||
1. 用 Name、Mobile 查詢 SignUp 資料表
|
||||
2. 如果找到:
|
||||
- 更新 CheckOutTime 欄位
|
||||
3. 如果未找到:
|
||||
- 新增一筆記錄,SignUpType 設為 "現場"
|
||||
- 設定 CheckInTime、CheckOutTime 欄位
|
||||
|
||||
返回值:BaseResponse
|
||||
- Success:操作是否成功
|
||||
- Message:結果訊息
|
||||
- Data:新增/更新的記錄內容
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 影響範圍
|
||||
|
||||
### 受影響的客戶端功能
|
||||
- ❌ WinForm 客戶端無法同步簽到簽退資料
|
||||
- ❌ 掃描條碼簽到/簽退功能無法使用
|
||||
- ❌ 現場臨時簽到/簽退功能無法使用
|
||||
|
||||
### 依賴這些方法的系統
|
||||
- 報到系統客戶端 (WinForm)
|
||||
- 活動簽到簽退模組
|
||||
|
||||
---
|
||||
|
||||
## 實現建議
|
||||
|
||||
### DAC 層支援度檢查
|
||||
✅ DAC_SignUp 已支援的操作:
|
||||
- SelectOne(int ID):按 ID 查詢
|
||||
- Select(bool, int?, string, string, string):按 CourseID、Name、Mobile、QRCode 查詢
|
||||
- SelectPage():分頁查詢
|
||||
- InsertOne():新增記錄
|
||||
- UpdateOne():更新記錄
|
||||
|
||||
✅ 建議的 DAC 擴充方法(在 DAC_SignUp2.cs 中):
|
||||
```csharp
|
||||
// 按 QRCode 查詢
|
||||
public SignUpList SelectByQRCode(string qrCode)
|
||||
{
|
||||
// 使用 QRCode 精確查詢
|
||||
}
|
||||
|
||||
// 按 Name 和 Mobile 查詢
|
||||
public SignUpList SelectByNameAndMobile(int courseID, string name, string mobile)
|
||||
{
|
||||
// 用 courseID、Name、Mobile 精確查詢
|
||||
}
|
||||
|
||||
// 更新 CheckInTime 和 CheckOutTime(選擇性)
|
||||
public int UpdateCheckTimes(int id, DateTime? checkInTime, DateTime? checkOutTime)
|
||||
{
|
||||
// 智能更新:非空才更新
|
||||
}
|
||||
```
|
||||
|
||||
### 實現步驟
|
||||
1. **在 DAC_SignUp2.cs 中新增必要的查詢方法**
|
||||
- SelectByQRCode()
|
||||
- SelectByNameAndMobile()
|
||||
|
||||
2. **在 SignUpService.asmx.cs 中實現 5 個缺失方法**
|
||||
- UploadSignUps()
|
||||
- CheckIn()
|
||||
- CheckOut()
|
||||
- OnSiteCheckIn()
|
||||
- OnSiteCheckOut()
|
||||
|
||||
3. **測試驗證**
|
||||
- 單元測試:確保邏輯正確
|
||||
- 集成測試:與 WinForm 客戶端測試
|
||||
- 邊界測試:空值、重複等情況
|
||||
|
||||
---
|
||||
|
||||
## 數據表結構確認
|
||||
|
||||
SignUp 表欄位(來自 DAC_SignUp1.cs):
|
||||
- ✅ ID:流水號(主鍵)
|
||||
- ✅ CourseID:課程 ID
|
||||
- ✅ Name:學員姓名
|
||||
- ✅ Mobile:手機號
|
||||
- ✅ QRCode:條碼內容
|
||||
- ✅ SignUpType:報名方式(預約/現場)
|
||||
- ✅ CheckInTime:簽到時間(允許 NULL)
|
||||
- ✅ CheckOutTime:簽退時間(允許 NULL)
|
||||
- ✅ DB_APPNO、DB_CRDAT、DB_CRUSR、DB_TRDAT、DB_TRUSR:系統欄位
|
||||
|
||||
**結論**:數據表結構完全支援規格需求 ✅
|
||||
|
||||
---
|
||||
|
||||
## 建議的實現優先級
|
||||
|
||||
| 優先級 | 方法 | 理由 |
|
||||
|------|------|------|
|
||||
| 1️⃣ **高** | CheckIn / CheckOut | WinForm 掃描條碼最常用功能 |
|
||||
| 2️⃣ **高** | UploadSignUps | 批量同步 WinForm 資料 |
|
||||
| 3️⃣ **中** | OnSiteCheckIn / OnSiteCheckOut | 補充現場臨時簽到 |
|
||||
|
||||
---
|
||||
|
||||
## 參考文檔
|
||||
- `DOC\活動人員簽到簽退與同步.md`:規格文檔
|
||||
- `Models\DAC_SignUp1.cs`:數據訪問層實現
|
||||
- `Services\SignUpService.asmx.cs`:Web Service 實現
|
||||
|
||||
---
|
||||
|
||||
## 檢查結論
|
||||
|
||||
❌ **規格完整性評分:58% (7/12 方法已實現)**
|
||||
|
||||
### 缺陷總結
|
||||
1. 簽到簽退核心功能缺失(CheckIn/CheckOut)
|
||||
2. 批量同步功能缺失(UploadSignUps)
|
||||
3. 現場臨時簽到功能缺失(OnSiteCheckIn/Out)
|
||||
|
||||
### 建議
|
||||
⚠️ **建議立即補充實現缺失的 5 個方法**,以完整支持 WinForm 客戶端的簽到簽退功能。
|
||||
|
||||
Reference in New Issue
Block a user