From 71abce9adde605458139df6d52431bb9698f19b7 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期二, 23 十二月 2025 16:02:25 +0800
Subject: [PATCH] 111
---
sql/QW_CHECKIN_DATA.sql | 73 ++++++
IFLOW.md | 123 +++++++++++
logs/mcp-mssqlserver.log | 96 ++++++++
MesQaDingtalkController接口文档.md | 154 ++++++++++++++
.claude/settings.local.json | 7
sql/QW_CHECKIN_DAY_DATA.sql | 85 +++++++
tasks/todo.md | 45 ++++
logs/mcp-mssqlserver-cli.log | 41 +++
8 files changed, 624 insertions(+), 0 deletions(-)
diff --git a/.claude/settings.local.json b/.claude/settings.local.json
new file mode 100644
index 0000000..27be01e
--- /dev/null
+++ b/.claude/settings.local.json
@@ -0,0 +1,7 @@
+{
+ "permissions": {
+ "allow": [
+ "Bash(where mvn:*)"
+ ]
+ }
+}
diff --git a/IFLOW.md b/IFLOW.md
new file mode 100644
index 0000000..4eaa0aa
--- /dev/null
+++ b/IFLOW.md
@@ -0,0 +1,123 @@
+# iFlow 椤圭洰涓婁笅鏂囨枃浠� (IFLOW.md)
+
+## 椤圭洰姒傝堪
+
+杩欐槸涓�涓熀浜� Spring Boot 鐨勯拤閽夋秷鎭帹閫佺郴缁燂紝鍚嶄负 `dingtalk`銆傝绯荤粺閫氳繃閽夐拤寮�鏀惧钩鍙� API 瀹炵幇浜嗗畾鏃舵秷鎭帹閫併�佺敤鎴风鐞嗐�佷互鍙婅澶囨暟鎹彁閱掔瓑鍔熻兘銆備富瑕佸姛鑳藉寘鎷細
+
+1. 閫氳繃鎵嬫満鍙疯幏鍙栭拤閽夌敤鎴稩D
+2. 瀹氭椂鍚戠敤鎴锋帹閫佹秷鎭紙5鍒嗛挓鍜�30鍒嗛挓闂撮殧锛�
+3. 鍚戦拤閽夌兢鑱婃満鍣ㄤ汉鍙戦�佹秷鎭�
+4. 涓庢暟鎹簱浜や簰锛岀鐞嗙敤鎴锋潈闄愬拰娑堟伅鍙戦�佽褰�
+
+椤圭洰浣跨敤浜� MyBatis-Plus 杩涜鏁版嵁搴撴搷浣滐紝Oracle 浣滀负鏁版嵁搴擄紝骞堕泦鎴愪簡閽夐拤SDK鏉ュ疄鐜颁笌閽夐拤骞冲彴鐨勯�氫俊銆�
+
+## 鏍稿績鎶�鏈爤
+
+- **妗嗘灦**: Spring Boot 2.6.13
+- **璇█**: Java 1.8
+- **鏁版嵁搴�**: Oracle锛屼娇鐢� Druid 杩炴帴姹�
+- **鎸佷箙灞�**: MyBatis-Plus
+- **閽夐拤闆嗘垚**: 閽夐拤寮�鏀惧钩鍙� SDK
+- **宸ュ叿搴�**: Lombok, Gson, OkHttp3, Fastjson, Hutool, Apache POI
+- **鍖呯鐞�**: Maven
+
+## 椤圭洰鏋舵瀯
+
+```
+src/
+鈹溾攢鈹� main/
+鈹� 鈹溾攢鈹� java/com/gs/dingtalk/
+鈹� 鈹� 鈹溾攢鈹� DingtalkApplication.java # Spring Boot 鍚姩绫�
+鈹� 鈹� 鈹溾攢鈹� config/
+鈹� 鈹� 鈹� 鈹溾攢鈹� DataAcquisitionConfiguration.java # 閽夐拤搴旂敤閰嶇疆锛圓ppKey銆丄ppSecret绛夛級
+鈹� 鈹� 鈹� 鈹溾攢鈹� ResultMessage.java # 缁熶竴鍝嶅簲娑堟伅鏍煎紡
+鈹� 鈹� 鈹� 鈹斺攢鈹� URLEncoder.java # URL缂栫爜宸ュ叿绫�
+鈹� 鈹� 鈹溾攢鈹� controller/
+鈹� 鈹� 鈹� 鈹斺攢鈹� KMController.java # 娑堟伅鍙戦�佹帶鍒跺眰
+鈹� 鈹� 鈹溾攢鈹� dto/
+鈹� 鈹� 鈹� 鈹溾攢鈹� ApiResponseCode.java # API鍝嶅簲鐮�
+鈹� 鈹� 鈹� 鈹溾攢鈹� DingTalkMessage.java # 閽夐拤娑堟伅 DTO
+鈹� 鈹� 鈹� 鈹溾攢鈹� DingTalkResponse.java # 閽夐拤鍝嶅簲 DTO
+鈹� 鈹� 鈹� 鈹斺攢鈹� Result.java # 缁熶竴杩斿洖缁撴灉
+鈹� 鈹� 鈹溾攢鈹� entity/
+鈹� 鈹� 鈹� 鈹溾攢鈹� SendDingtalk.java # 閽夐拤鐢ㄦ埛瀹炰綋
+鈹� 鈹� 鈹� 鈹斺攢鈹� SendMessage.java # 娑堟伅鍙戦�佸疄浣�
+鈹� 鈹� 鈹溾攢鈹� mapper/
+鈹� 鈹� 鈹� 鈹溾攢鈹� SendDingtalkMapper.java # 閽夐拤鐢ㄦ埛鏁版嵁璁块棶灞�
+鈹� 鈹� 鈹� 鈹斺攢鈹� SendMessageMapper.java # 娑堟伅鍙戦�佹暟鎹闂眰
+鈹� 鈹� 鈹溾攢鈹� service/
+鈹� 鈹� 鈹� 鈹溾攢鈹� SendDingtalkService.java # 閽夐拤鏈嶅姟鎺ュ彛
+鈹� 鈹� 鈹� 鈹溾攢鈹� SendMessageService.java # 娑堟伅鏈嶅姟鎺ュ彛
+鈹� 鈹� 鈹� 鈹溾攢鈹� SimpleExample.java # 閽夐拤娑堟伅鍙戦�佸疄鐜�
+鈹� 鈹� 鈹� 鈹斺攢鈹� impl/
+鈹� 鈹� 鈹� 鈹溾攢鈹� SendDingtalkServiceImpl.java # 閽夐拤鏈嶅姟瀹炵幇
+鈹� 鈹� 鈹� 鈹斺攢鈹� SendMessageServiceImpl.java # 娑堟伅鏈嶅姟瀹炵幇
+鈹� 鈹� 鈹斺攢鈹� task/
+鈹� 鈹� 鈹斺攢鈹� ScheduledTasks.java # 瀹氭椂浠诲姟
+鈹� 鈹斺攢鈹� resources/
+鈹� 鈹溾攢鈹� application.yml # 搴旂敤閰嶇疆鏂囦欢
+鈹� 鈹斺攢鈹� mapper/ # MyBatis XML 鏄犲皠鏂囦欢
+鈹斺攢鈹� test/
+ 鈹斺攢鈹� java/com/gs/dingtalk/DeviceReceivingApplicationTests.java # 娴嬭瘯绫�
+```
+
+## 鏁版嵁搴撻厤缃�
+
+- **鏁版嵁搴�**: Oracle
+- **URL**: jdbc:oracle:thin:@192.168.0.100:1521/orcl
+- **鐢ㄦ埛鍚�**: yc_dev
+- **瀵嗙爜**: ycdev
+- **杩炴帴姹�**: Druid锛屽垵濮嬭繛鎺ユ暟5锛屾渶澶ц繛鎺ユ暟20
+
+## 閽夐拤閰嶇疆
+
+- **AppKey**: dingyfqkfjecy4cjfyxa
+- **AppSecret**: nCwmyBw8K-EqAvkuhrhhqFonbLp455awtMa4D4Q-VRaY8U2EDEVsnYSYYfPvjiAX
+- **CorpId**: ding1dd72cd1d6adf70aa1320dcb25e91351
+- **鏈哄櫒浜篢oken**: c2849e46cb0d91b0721c377742938b8ac5ef57e3c9eeab918e2cd5dd9c3aad2a
+- **鏈哄櫒浜篠ecret**: SEC382027a5c81ea5152b71b687fb2c1ebf26acbde035355da6ab2fb37306454134
+
+## 涓昏鍔熻兘妯″潡
+
+### 1. 鐢ㄦ埛绠$悊
+- `getDingTalkUserId()`: 閫氳繃鎵嬫満鍙疯幏鍙栭拤閽夌敤鎴稩D骞朵繚瀛樺埌鏁版嵁搴�
+- 浣跨敤閽夐拤 `OapiV2UserGetbymobileResponse` API 瀹炵幇
+
+### 2. 娑堟伅鎺ㄩ��
+- `chatSendMessage()`: 鍚戦拤閽夌兢鑱婃満鍣ㄤ汉鍙戦�佹秷鎭�
+- `sendDingTalkFiveMinute()`, `sendDingTalkthirtyMinute()`: 瀹氭椂鍚戠壒瀹氱敤鎴峰彂閫佹秷鎭�
+- 浣跨敤閽夐拤鏈哄櫒浜哄拰鐢ㄦ埛娑堟伅鎺ㄩ�� API 瀹炵幇
+
+### 3. 瀹氭椂浠诲姟
+- `ScheduledTasks.java`: 瀹氫箟浜嗕袱涓畾鏃朵换鍔�
+ - 姣�2鍒嗛挓鎵ц涓�娆�5鍒嗛挓鎻愰啋妫�鏌�
+ - 姣�3鍒嗛挓鎵ц涓�娆�30鍒嗛挓鎻愰啋妫�鏌�
+
+### 4. 鏉冮檺鎺у埗
+- 閫氳繃 `SendDingtalk` 瀹炰綋涓殑 `purview` 瀛楁鎺у埗鐢ㄦ埛娑堟伅鎺ユ敹鏉冮檺
+- 鏍规嵁 `procNo`锛堝伐搴忕紪鍙凤級鍖归厤鐢ㄦ埛鏉冮檺
+
+## 鏋勫缓涓庤繍琛�
+
+### 鏋勫缓
+```bash
+mvn clean package
+```
+
+### 杩愯
+```bash
+java -jar dingtalk.jar
+```
+
+鎴栧湪 IDE 涓繍琛� `DingtalkApplication.java` 鐨� `main` 鏂规硶
+
+### 绔彛
+- 鏈嶅姟鍣ㄧ鍙�: 9096
+
+## 寮�鍙戠害瀹�
+
+- 浣跨敤 Lombok 娉ㄨВ绠�鍖栦唬鐮�
+- 浣跨敤 MyBatis-Plus 杩涜鏁版嵁搴撴搷浣�
+- 浣跨敤缁熶竴鐨勫搷搴旀牸寮� `ResultMessage`
+- 閰嶇疆鏂囦欢浣跨敤 YAML 鏍煎紡
+- 瀹氭椂浠诲姟浣跨敤 Spring 鐨� `@Scheduled` 娉ㄨВ
\ No newline at end of file
diff --git "a/MesQaDingtalkController\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/MesQaDingtalkController\346\216\245\345\217\243\346\226\207\346\241\243.md"
new file mode 100644
index 0000000..047a40d
--- /dev/null
+++ "b/MesQaDingtalkController\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -0,0 +1,154 @@
+# MesQaDingtalkController 鎺ュ彛鏂囨。
+
+## 鎺ュ彛姒傝堪
+- **鍩虹璺緞**: `/MesQaDingtalk`
+- **鍔熻兘**: MES QA 閽夐拤娑堟伅鎺ㄩ�佹帶鍒跺櫒
+- **鎻忚堪**: 鐢ㄤ簬鍙戦�佷笉鍚岀被鍨嬬殑璐ㄩ噺妫�楠屾秷鎭埌閽夐拤
+- **璺ㄥ煙璁剧疆**: 鏀寔璺ㄥ煙璇锋眰锛圕ORS锛�
+
+## 閫氱敤璇锋眰浣撴牸寮� (QaMsgDto)
+
+| 瀛楁鍚� | 绫诲瀷 | 蹇呭~ | 鎻忚堪 |
+|--------|------|------|------|
+| id | Long | 鏄� | 妫�楠岃褰旾D |
+| lineName | String | 鏄� | 绾夸綋鍚嶇О |
+| workshopName | String | 鏄� | 杞﹂棿鍚嶇О |
+| qaType | String | 鏄� | QA绫诲瀷 (棣栦欢棣栨瀹屾垚/宸℃妫�楠屽畬鎴�/鍏ュ簱妫�妫�楠屽畬鎴�) |
+
+## 1. 缁熶竴QA娑堟伅鍙戦�佹帴鍙�
+
+### 璇锋眰淇℃伅
+- **璇锋眰鏂规硶**: `POST`
+- **璇锋眰璺緞**: `/MesQaDingtalk/sendQaMsg`
+- **鍔熻兘鎻忚堪**: 鏍规嵁 `qaType` 鍊肩粺涓�鍙戦�佷笉鍚岀被鍨嬬殑QA娑堟伅
+
+### 璇锋眰鍙傛暟
+- **鍙傛暟绫诲瀷**: RequestBody
+- **鍙傛暟鍚嶇О**: dto
+- **鍙傛暟鏍煎紡**: JSON
+- **鍙傛暟鍐呭**: QaMsgDto瀵硅薄
+
+### 鍝嶅簲淇℃伅
+- **鍝嶅簲鏍煎紡**: JSON
+- **鎴愬姛鍝嶅簲**:
+```json
+{
+ "code": 200,
+ "message": "鎿嶄綔鎴愬姛",
+ "data": null
+}
+```
+
+- **澶辫触鍝嶅簲**:
+```json
+{
+ "code": 500,
+ "message": "閿欒淇℃伅",
+ "data": null
+}
+```
+
+### 涓氬姟閫昏緫
+- 褰� `qaType` 涓� "棣栦欢棣栨瀹屾垚" 鏃讹紝璋冪敤 `sendQaMsgSJ` 鏂规硶
+- 褰� `qaType` 涓� "宸℃妫�楠屽畬鎴�" 鏃讹紝璋冪敤 `sendQaMsgXJ` 鏂规硶
+- 褰� `qaType` 涓� "鍏ュ簱妫�妫�楠屽畬鎴�" 鏃讹紝璋冪敤 `sendQaMsgRKJ` 鏂规硶
+- 瀵逛簬鏈煡绫诲瀷锛岃繑鍥為敊璇俊鎭�
+
+## 2. 棣栦欢妫�楠屾秷鎭彂閫佹帴鍙�
+
+### 璇锋眰淇℃伅
+- **璇锋眰鏂规硶**: `POST`
+- **璇锋眰璺緞**: `/MesQaDingtalk/sendQaMsgSJ`
+- **鍔熻兘鎻忚堪**: 鍙戦�侀浠舵楠屾秷鎭�
+
+### 璇锋眰鍙傛暟
+- **鍙傛暟绫诲瀷**: RequestBody
+- **鍙傛暟鍚嶇О**: dto
+- **鍙傛暟鏍煎紡**: JSON
+- **鍙傛暟鍐呭**: QaMsgDto瀵硅薄
+
+### 鍝嶅簲淇℃伅
+- **鍝嶅簲鏍煎紡**: JSON
+- **鎴愬姛鍝嶅簲**:
+```json
+{
+ "code": 200,
+ "message": "鎿嶄綔鎴愬姛",
+ "data": null
+}
+```
+
+- **澶辫触鍝嶅簲**:
+```json
+{
+ "code": 500,
+ "message": "棣栦欢妫�楠屾秷鎭彂閫佸け璐�: 鍏蜂綋閿欒淇℃伅",
+ "data": null
+}
+```
+
+## 3. 宸℃娑堟伅鍙戦�佹帴鍙�
+
+### 璇锋眰淇℃伅
+- **璇锋眰鏂规硶**: `POST`
+- **璇锋眰璺緞**: `/MesQaDingtalk/sendQaMsgXJ`
+- **鍔熻兘鎻忚堪**: 鍙戦�佸贰妫�娑堟伅
+
+### 璇锋眰鍙傛暟
+- **鍙傛暟绫诲瀷**: RequestBody
+- **鍙傛暟鍚嶇О**: dto
+- **鍙傛暟鏍煎紡**: JSON
+- **鍙傛暟鍐呭**: QaMsgDto瀵硅薄
+
+### 鍝嶅簲淇℃伅
+- **鍝嶅簲鏍煎紡**: JSON
+- **鎴愬姛鍝嶅簲**:
+```json
+{
+ "code": 200,
+ "message": "鎿嶄綔鎴愬姛",
+ "data": null
+}
+```
+
+- **澶辫触鍝嶅簲**:
+```json
+{
+ "code": 500,
+ "message": "宸℃娑堟伅鍙戦�佸け璐�: 鍏蜂綋閿欒淇℃伅",
+ "data": null
+}
+```
+
+## 4. 鍏ュ簱妫�娑堟伅鍙戦�佹帴鍙�
+
+### 璇锋眰淇℃伅
+- **璇锋眰鏂规硶**: `POST`
+- **璇锋眰璺緞**: `/MesQaDingtalk/sendQaMsgRKJ`
+- **鍔熻兘鎻忚堪**: 鍙戦�佸叆搴撴娑堟伅
+
+### 璇锋眰鍙傛暟
+- **鍙傛暟绫诲瀷**: RequestBody
+- **鍙傛暟鍚嶇О**: dto
+- **鍙傛暟鏍煎紡**: JSON
+- **鍙傛暟鍐呭**: QaMsgDto瀵硅薄
+
+### 鍝嶅簲淇℃伅
+- **鍝嶅簲鏍煎紡**: JSON
+- **鎴愬姛鍝嶅簲**:
+```json
+{
+ "code": 200,
+ "message": "鎿嶄綔鎴愬姛",
+ "data": null
+}
+```
+
+- **澶辫触鍝嶅簲**:
+```json
+{
+ "code": 500,
+ "message": "鍏ュ簱妫�娑堟伅鍙戦�佸け璐�: 鍏蜂綋閿欒淇℃伅",
+ "data": null
+}
+```
\ No newline at end of file
diff --git a/logs/mcp-mssqlserver-cli.log b/logs/mcp-mssqlserver-cli.log
new file mode 100644
index 0000000..b5ce04e
--- /dev/null
+++ b/logs/mcp-mssqlserver-cli.log
@@ -0,0 +1,41 @@
+2025-12-02T00:58:55.998Z | INFO | Starting MCP MSSQL Server from: C:\Users\Administrator\AppData\Roaming\npm\node_modules\@liangshanli\mcp-server-mssqlserver\src\server-final.js
+2025-12-02T00:58:56.007Z | INFO | Starting MCP MSSQL Server with environment: | {"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","MSSQL_ENCRYPT":"false","MSSQL_TRUST_SERVER_CERTIFICATE":"true","ALLOW_DDL":"false","ALLOW_DROP":"false","ALLOW_DELETE":"false"}
+2025-12-02T00:58:56.022Z | INFO | MCP MSSQL Server process started with PID: 25636
+2025-12-02T00:58:56.023Z | INFO | Signal handlers registered for SIGINT and SIGTERM
+2025-12-02T00:58:56.024Z | INFO | Press Ctrl+C to gracefully shutdown the server
+2025-12-02T01:40:15.728Z | INFO | Starting MCP MSSQL Server from: C:\Users\Administrator\AppData\Roaming\npm\node_modules\@liangshanli\mcp-server-mssqlserver\src\server-final.js
+2025-12-02T01:40:15.734Z | INFO | Starting MCP MSSQL Server with environment: | {"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","MSSQL_ENCRYPT":"false","MSSQL_TRUST_SERVER_CERTIFICATE":"true","ALLOW_DDL":"false","ALLOW_DROP":"false","ALLOW_DELETE":"false"}
+2025-12-02T01:40:15.747Z | INFO | MCP MSSQL Server process started with PID: 26872
+2025-12-02T01:40:15.748Z | INFO | Signal handlers registered for SIGINT and SIGTERM
+2025-12-02T01:40:15.749Z | INFO | Press Ctrl+C to gracefully shutdown the server
+2025-12-02T02:02:41.087Z | INFO | Starting MCP MSSQL Server from: C:\Users\Administrator\AppData\Roaming\npm\node_modules\@liangshanli\mcp-server-mssqlserver\src\server-final.js
+2025-12-02T02:02:41.094Z | INFO | Starting MCP MSSQL Server with environment: | {"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","MSSQL_ENCRYPT":"false","MSSQL_TRUST_SERVER_CERTIFICATE":"true","ALLOW_DDL":"false","ALLOW_DROP":"false","ALLOW_DELETE":"false"}
+2025-12-02T02:02:41.110Z | INFO | MCP MSSQL Server process started with PID: 7156
+2025-12-02T02:02:41.111Z | INFO | Signal handlers registered for SIGINT and SIGTERM
+2025-12-02T02:02:41.113Z | INFO | Press Ctrl+C to gracefully shutdown the server
+2025-12-02T02:09:57.869Z | INFO | Starting MCP MSSQL Server from: C:\Users\Administrator\AppData\Roaming\npm\node_modules\@liangshanli\mcp-server-mssqlserver\src\server-final.js
+2025-12-02T02:09:57.878Z | INFO | Starting MCP MSSQL Server with environment: | {"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","MSSQL_ENCRYPT":"false","MSSQL_TRUST_SERVER_CERTIFICATE":"true","ALLOW_DDL":"false","ALLOW_DROP":"false","ALLOW_DELETE":"false"}
+2025-12-02T02:09:57.892Z | INFO | MCP MSSQL Server process started with PID: 4868
+2025-12-02T02:09:57.893Z | INFO | Signal handlers registered for SIGINT and SIGTERM
+2025-12-02T02:09:57.895Z | INFO | Press Ctrl+C to gracefully shutdown the server
+2025-12-03T11:26:52.778Z | INFO | Starting MCP MSSQL Server from: C:\Users\Administrator\AppData\Roaming\npm\node_modules\@liangshanli\mcp-server-mssqlserver\src\server-final.js
+2025-12-03T11:26:52.789Z | INFO | Starting MCP MSSQL Server with environment: | {"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","MSSQL_ENCRYPT":"false","MSSQL_TRUST_SERVER_CERTIFICATE":"true","ALLOW_DDL":"false","ALLOW_DROP":"false","ALLOW_DELETE":"false"}
+2025-12-03T11:26:52.812Z | INFO | MCP MSSQL Server process started with PID: 17880
+2025-12-03T11:26:52.814Z | INFO | Signal handlers registered for SIGINT and SIGTERM
+2025-12-03T11:26:52.816Z | INFO | Press Ctrl+C to gracefully shutdown the server
+2025-12-03T11:27:53.929Z | INFO | Starting MCP MSSQL Server from: C:\Users\Administrator\AppData\Roaming\npm\node_modules\@liangshanli\mcp-server-mssqlserver\src\server-final.js
+2025-12-03T11:27:53.936Z | INFO | Starting MCP MSSQL Server with environment: | {"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","MSSQL_ENCRYPT":"false","MSSQL_TRUST_SERVER_CERTIFICATE":"true","ALLOW_DDL":"false","ALLOW_DROP":"false","ALLOW_DELETE":"false"}
+2025-12-03T11:27:53.951Z | INFO | MCP MSSQL Server process started with PID: 10576
+2025-12-03T11:27:53.953Z | INFO | Signal handlers registered for SIGINT and SIGTERM
+2025-12-03T11:27:53.954Z | INFO | Press Ctrl+C to gracefully shutdown the server
+2025-12-03T11:30:03.782Z | INFO | Starting MCP MSSQL Server from: C:\Users\Administrator\AppData\Roaming\npm\node_modules\@liangshanli\mcp-server-mssqlserver\src\server-final.js
+2025-12-03T11:30:03.788Z | INFO | Starting MCP MSSQL Server with environment: | {"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","MSSQL_ENCRYPT":"false","MSSQL_TRUST_SERVER_CERTIFICATE":"true","ALLOW_DDL":"false","ALLOW_DROP":"false","ALLOW_DELETE":"false"}
+2025-12-03T11:30:03.802Z | INFO | MCP MSSQL Server process started with PID: 23872
+2025-12-03T11:30:03.804Z | INFO | Signal handlers registered for SIGINT and SIGTERM
+2025-12-03T11:30:03.805Z | INFO | Press Ctrl+C to gracefully shutdown the server
+2025-12-03T12:35:09.131Z | INFO | MCP MSSQL Server exited with code: 3221225786
+2025-12-04T01:09:06.277Z | INFO | Starting MCP MSSQL Server from: C:\Users\Administrator\AppData\Roaming\npm\node_modules\@liangshanli\mcp-server-mssqlserver\src\server-final.js
+2025-12-04T01:09:06.285Z | INFO | Starting MCP MSSQL Server with environment: | {"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","MSSQL_ENCRYPT":"false","MSSQL_TRUST_SERVER_CERTIFICATE":"true","ALLOW_DDL":"false","ALLOW_DROP":"false","ALLOW_DELETE":"false"}
+2025-12-04T01:09:06.301Z | INFO | MCP MSSQL Server process started with PID: 23152
+2025-12-04T01:09:06.303Z | INFO | Signal handlers registered for SIGINT and SIGTERM
+2025-12-04T01:09:06.305Z | INFO | Press Ctrl+C to gracefully shutdown the server
diff --git a/logs/mcp-mssqlserver.log b/logs/mcp-mssqlserver.log
new file mode 100644
index 0000000..b1cd42d
--- /dev/null
+++ b/logs/mcp-mssqlserver.log
@@ -0,0 +1,96 @@
+2025-12-02T00:58:56.975Z | server_startup | {"time":"2025-12-02T00:58:56.975Z","environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false},"database":"192.168.0.51:1433","user":"sa","databaseName":"GS_MES","schema":"dbo","startedVia":"C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@liangshanli\\mcp-server-mssqlserver\\src\\server-final.js"} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-02T00:58:56.977Z | main | {} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-02T00:58:56.978Z | server_status | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T00:58:56.979Z | log_config | {"logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"configured"}
+2025-12-02T00:58:56.980Z | server_start | {"name":"mssqlserver-mcp-server","version":"1.0.0","logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T00:58:56.981Z | main | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T00:58:56.983Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: null
+2025-12-02T00:58:56.985Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: {"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false},"roots":{"listChanged":false}},"serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}
+2025-12-02T00:58:57.018Z | tools/list | {} | SUCCESS | RESPONSE: {"tools":[{"name":"sql_query","description":"Execute SQL query, supports DDL and DML operations","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"SQL statement to execute"}},"required":["sql"]}},{"name":"get_database_info","description":"Get database information, including database list, table list and configuration information","inputSchema":{"type":"object","properties":{}}},{"name":"get_operation_logs","description":"Get operation logs","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Limit count, default 50"},"offset":{"type":"number","description":"Offset, default 0"}}}},{"name":"check_permissions","description":"Check database permissions for DDL, DROP, DELETE and other operations","inputSchema":{"type":"object","properties":{}}}],"environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false,"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}}
+2025-12-02T00:58:57.072Z | connection_pool | {"action":"created"} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-02T00:58:57.072Z | connection_pool_created | {"server":"192.168.0.51","port":1433,"database":"GS_MES","max":10} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-02T00:58:57.073Z | notifications/initialized | {} | SUCCESS | RESPONSE: null
+2025-12-02T01:40:16.413Z | server_startup | {"time":"2025-12-02T01:40:16.413Z","environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false},"database":"192.168.0.51:1433","user":"sa","databaseName":"GS_MES","schema":"dbo","startedVia":"C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@liangshanli\\mcp-server-mssqlserver\\src\\server-final.js"} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-02T01:40:16.414Z | main | {} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-02T01:40:16.415Z | server_status | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T01:40:16.416Z | log_config | {"logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"configured"}
+2025-12-02T01:40:16.417Z | server_start | {"name":"mssqlserver-mcp-server","version":"1.0.0","logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T01:40:16.418Z | main | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T01:40:16.420Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: null
+2025-12-02T01:40:16.420Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: {"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false},"roots":{"listChanged":false}},"serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}
+2025-12-02T01:40:16.441Z | tools/list | {} | SUCCESS | RESPONSE: {"tools":[{"name":"sql_query","description":"Execute SQL query, supports DDL and DML operations","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"SQL statement to execute"}},"required":["sql"]}},{"name":"get_database_info","description":"Get database information, including database list, table list and configuration information","inputSchema":{"type":"object","properties":{}}},{"name":"get_operation_logs","description":"Get operation logs","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Limit count, default 50"},"offset":{"type":"number","description":"Offset, default 0"}}}},{"name":"check_permissions","description":"Check database permissions for DDL, DROP, DELETE and other operations","inputSchema":{"type":"object","properties":{}}}],"environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false,"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}}
+2025-12-02T01:40:16.506Z | connection_pool | {"action":"created"} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-02T01:40:16.507Z | connection_pool_created | {"server":"192.168.0.51","port":1433,"database":"GS_MES","max":10} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-02T01:40:16.507Z | notifications/initialized | {} | SUCCESS | RESPONSE: null
+2025-12-02T02:02:41.838Z | server_startup | {"time":"2025-12-02T02:02:41.838Z","environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false},"database":"192.168.0.51:1433","user":"sa","databaseName":"GS_MES","schema":"dbo","startedVia":"C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@liangshanli\\mcp-server-mssqlserver\\src\\server-final.js"} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-02T02:02:41.839Z | main | {} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-02T02:02:41.840Z | server_status | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T02:02:41.841Z | log_config | {"logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"configured"}
+2025-12-02T02:02:41.842Z | server_start | {"name":"mssqlserver-mcp-server","version":"1.0.0","logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T02:02:41.844Z | main | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T02:02:41.845Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: null
+2025-12-02T02:02:41.847Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: {"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false},"roots":{"listChanged":false}},"serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}
+2025-12-02T02:02:41.880Z | tools/list | {} | SUCCESS | RESPONSE: {"tools":[{"name":"sql_query","description":"Execute SQL query, supports DDL and DML operations","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"SQL statement to execute"}},"required":["sql"]}},{"name":"get_database_info","description":"Get database information, including database list, table list and configuration information","inputSchema":{"type":"object","properties":{}}},{"name":"get_operation_logs","description":"Get operation logs","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Limit count, default 50"},"offset":{"type":"number","description":"Offset, default 0"}}}},{"name":"check_permissions","description":"Check database permissions for DDL, DROP, DELETE and other operations","inputSchema":{"type":"object","properties":{}}}],"environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false,"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}}
+2025-12-02T02:02:41.932Z | connection_pool | {"action":"created"} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-02T02:02:41.934Z | connection_pool_created | {"server":"192.168.0.51","port":1433,"database":"GS_MES","max":10} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-02T02:02:41.934Z | notifications/initialized | {} | SUCCESS | RESPONSE: null
+2025-12-02T02:09:58.648Z | server_startup | {"time":"2025-12-02T02:09:58.648Z","environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false},"database":"192.168.0.51:1433","user":"sa","databaseName":"GS_MES","schema":"dbo","startedVia":"C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@liangshanli\\mcp-server-mssqlserver\\src\\server-final.js"} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-02T02:09:58.650Z | main | {} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-02T02:09:58.651Z | server_status | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T02:09:58.653Z | log_config | {"logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"configured"}
+2025-12-02T02:09:58.655Z | server_start | {"name":"mssqlserver-mcp-server","version":"1.0.0","logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T02:09:58.657Z | main | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-02T02:09:58.659Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: null
+2025-12-02T02:09:58.661Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: {"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false},"roots":{"listChanged":false}},"serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}
+2025-12-02T02:09:58.737Z | tools/list | {} | SUCCESS | RESPONSE: {"tools":[{"name":"sql_query","description":"Execute SQL query, supports DDL and DML operations","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"SQL statement to execute"}},"required":["sql"]}},{"name":"get_database_info","description":"Get database information, including database list, table list and configuration information","inputSchema":{"type":"object","properties":{}}},{"name":"get_operation_logs","description":"Get operation logs","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Limit count, default 50"},"offset":{"type":"number","description":"Offset, default 0"}}}},{"name":"check_permissions","description":"Check database permissions for DDL, DROP, DELETE and other operations","inputSchema":{"type":"object","properties":{}}}],"environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false,"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}}
+2025-12-02T02:09:58.809Z | connection_pool | {"action":"created"} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-02T02:09:58.810Z | connection_pool_created | {"server":"192.168.0.51","port":1433,"database":"GS_MES","max":10} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-02T02:09:58.811Z | notifications/initialized | {} | SUCCESS | RESPONSE: null
+2025-12-03T11:26:54.572Z | server_startup | {"time":"2025-12-03T11:26:54.572Z","environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false},"database":"192.168.0.51:1433","user":"sa","databaseName":"GS_MES","schema":"dbo","startedVia":"C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@liangshanli\\mcp-server-mssqlserver\\src\\server-final.js"} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-03T11:26:54.573Z | main | {} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-03T11:26:54.575Z | server_status | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:26:54.575Z | log_config | {"logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"configured"}
+2025-12-03T11:26:54.577Z | server_start | {"name":"mssqlserver-mcp-server","version":"1.0.0","logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:26:54.579Z | main | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:26:54.581Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: null
+2025-12-03T11:26:54.582Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: {"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false},"roots":{"listChanged":false}},"serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}
+2025-12-03T11:26:54.753Z | tools/list | {} | SUCCESS | RESPONSE: {"tools":[{"name":"sql_query","description":"Execute SQL query, supports DDL and DML operations","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"SQL statement to execute"}},"required":["sql"]}},{"name":"get_database_info","description":"Get database information, including database list, table list and configuration information","inputSchema":{"type":"object","properties":{}}},{"name":"get_operation_logs","description":"Get operation logs","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Limit count, default 50"},"offset":{"type":"number","description":"Offset, default 0"}}}},{"name":"check_permissions","description":"Check database permissions for DDL, DROP, DELETE and other operations","inputSchema":{"type":"object","properties":{}}}],"environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false,"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}}
+2025-12-03T11:26:54.817Z | connection_pool | {"action":"created"} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-03T11:26:54.818Z | connection_pool_created | {"server":"192.168.0.51","port":1433,"database":"GS_MES","max":10} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-03T11:26:54.820Z | notifications/initialized | {} | SUCCESS | RESPONSE: null
+2025-12-03T11:27:54.781Z | server_startup | {"time":"2025-12-03T11:27:54.781Z","environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false},"database":"192.168.0.51:1433","user":"sa","databaseName":"GS_MES","schema":"dbo","startedVia":"C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@liangshanli\\mcp-server-mssqlserver\\src\\server-final.js"} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-03T11:27:54.783Z | main | {} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-03T11:27:54.785Z | server_status | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:27:54.786Z | log_config | {"logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"configured"}
+2025-12-03T11:27:54.788Z | server_start | {"name":"mssqlserver-mcp-server","version":"1.0.0","logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:27:54.790Z | main | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:27:54.804Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: null
+2025-12-03T11:27:54.808Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: {"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false},"roots":{"listChanged":false}},"serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}
+2025-12-03T11:27:55.027Z | tools/list | {} | SUCCESS | RESPONSE: {"tools":[{"name":"sql_query","description":"Execute SQL query, supports DDL and DML operations","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"SQL statement to execute"}},"required":["sql"]}},{"name":"get_database_info","description":"Get database information, including database list, table list and configuration information","inputSchema":{"type":"object","properties":{}}},{"name":"get_operation_logs","description":"Get operation logs","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Limit count, default 50"},"offset":{"type":"number","description":"Offset, default 0"}}}},{"name":"check_permissions","description":"Check database permissions for DDL, DROP, DELETE and other operations","inputSchema":{"type":"object","properties":{}}}],"environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false,"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}}
+2025-12-03T11:27:55.071Z | connection_pool | {"action":"created"} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-03T11:27:55.072Z | connection_pool_created | {"server":"192.168.0.51","port":1433,"database":"GS_MES","max":10} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-03T11:27:55.074Z | notifications/initialized | {} | SUCCESS | RESPONSE: null
+2025-12-03T11:30:04.565Z | server_startup | {"time":"2025-12-03T11:30:04.565Z","environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false},"database":"192.168.0.51:1433","user":"sa","databaseName":"GS_MES","schema":"dbo","startedVia":"C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@liangshanli\\mcp-server-mssqlserver\\src\\server-final.js"} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-03T11:30:04.566Z | main | {} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-03T11:30:04.567Z | server_status | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:30:04.568Z | log_config | {"logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"configured"}
+2025-12-03T11:30:04.570Z | server_start | {"name":"mssqlserver-mcp-server","version":"1.0.0","logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:30:04.571Z | main | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-03T11:30:04.575Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: null
+2025-12-03T11:30:04.576Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: {"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false},"roots":{"listChanged":false}},"serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}
+2025-12-03T11:30:04.602Z | tools/list | {} | SUCCESS | RESPONSE: {"tools":[{"name":"sql_query","description":"Execute SQL query, supports DDL and DML operations","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"SQL statement to execute"}},"required":["sql"]}},{"name":"get_database_info","description":"Get database information, including database list, table list and configuration information","inputSchema":{"type":"object","properties":{}}},{"name":"get_operation_logs","description":"Get operation logs","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Limit count, default 50"},"offset":{"type":"number","description":"Offset, default 0"}}}},{"name":"check_permissions","description":"Check database permissions for DDL, DROP, DELETE and other operations","inputSchema":{"type":"object","properties":{}}}],"environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false,"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}}
+2025-12-03T11:30:04.650Z | connection_pool | {"action":"created"} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-03T11:30:04.651Z | connection_pool_created | {"server":"192.168.0.51","port":1433,"database":"GS_MES","max":10} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-03T11:30:04.652Z | notifications/initialized | {} | SUCCESS | RESPONSE: null
+2025-12-04T01:09:07.422Z | server_startup | {"time":"2025-12-04T01:09:07.422Z","environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false},"database":"192.168.0.51:1433","user":"sa","databaseName":"GS_MES","schema":"dbo","startedVia":"C:\\Users\\Administrator\\AppData\\Roaming\\npm\\node_modules\\@liangshanli\\mcp-server-mssqlserver\\src\\server-final.js"} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-04T01:09:07.423Z | main | {} | SUCCESS | RESPONSE: {"status":"starting"}
+2025-12-04T01:09:07.424Z | server_status | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-04T01:09:07.425Z | log_config | {"logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"configured"}
+2025-12-04T01:09:07.427Z | server_start | {"name":"mssqlserver-mcp-server","version":"1.0.0","logDir":"./logs","logFile":"logs\\mcp-mssqlserver.log"} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-04T01:09:07.428Z | main | {} | SUCCESS | RESPONSE: {"status":"started"}
+2025-12-04T01:09:07.430Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: null
+2025-12-04T01:09:07.431Z | initialize | {"protocolVersion":"2025-06-18","capabilities":{"roots":{}},"clientInfo":{"name":"iflow-cli-mcp-client-LBMES","version":"0.0.1"}} | SUCCESS | RESPONSE: {"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":false},"roots":{"listChanged":false}},"serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}
+2025-12-04T01:09:07.455Z | tools/list | {} | SUCCESS | RESPONSE: {"tools":[{"name":"sql_query","description":"Execute SQL query, supports DDL and DML operations","inputSchema":{"type":"object","properties":{"sql":{"type":"string","description":"SQL statement to execute"}},"required":["sql"]}},{"name":"get_database_info","description":"Get database information, including database list, table list and configuration information","inputSchema":{"type":"object","properties":{}}},{"name":"get_operation_logs","description":"Get operation logs","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Limit count, default 50"},"offset":{"type":"number","description":"Offset, default 0"}}}},{"name":"check_permissions","description":"Check database permissions for DDL, DROP, DELETE and other operations","inputSchema":{"type":"object","properties":{}}}],"environment":{"ALLOW_DDL":false,"ALLOW_DROP":false,"ALLOW_DELETE":false,"MSSQL_SERVER":"192.168.0.51","MSSQL_PORT":"1433","MSSQL_USER":"sa","MSSQL_DATABASE":"GS_MES","MSSQL_SCHEMA":"dbo","serverInfo":{"name":"mssqlserver-mcp-server","version":"1.0.0"}}}
+2025-12-04T01:09:07.508Z | connection_pool | {"action":"created"} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-04T01:09:07.509Z | connection_pool_created | {"server":"192.168.0.51","port":1433,"database":"GS_MES","max":10} | SUCCESS | RESPONSE: {"status":"success"}
+2025-12-04T01:09:07.510Z | notifications/initialized | {} | SUCCESS | RESPONSE: null
diff --git a/sql/QW_CHECKIN_DATA.sql b/sql/QW_CHECKIN_DATA.sql
new file mode 100644
index 0000000..2fd604e
--- /dev/null
+++ b/sql/QW_CHECKIN_DATA.sql
@@ -0,0 +1,73 @@
+-- =============================================
+-- 浼佷笟寰俊鎵撳崱鏁版嵁琛� - Oracle 11g
+-- =============================================
+
+-- 鍒涘缓搴忓垪
+CREATE SEQUENCE SEQ_QW_CHECKIN_DATA
+ START WITH 1
+ INCREMENT BY 1
+ NOMAXVALUE
+ NOCYCLE
+ CACHE 20;
+
+-- 鍒涘缓琛�
+CREATE TABLE QW_CHECKIN_DATA (
+ ID NUMBER(19) NOT NULL,
+ USERID VARCHAR2(64) NOT NULL,
+ GROUPNAME VARCHAR2(100),
+ CHECKIN_TYPE VARCHAR2(50),
+ EXCEPTION_TYPE VARCHAR2(200),
+ CHECKIN_TIME NUMBER(19),
+ CHECKIN_DATE DATE,
+ LOCATION_TITLE VARCHAR2(200),
+ LOCATION_DETAIL VARCHAR2(500),
+ WIFINAME VARCHAR2(100),
+ NOTES VARCHAR2(500),
+ WIFIMAC VARCHAR2(50),
+ MEDIAIDS VARCHAR2(2000),
+ LAT NUMBER(19),
+ LNG NUMBER(19),
+ DEVICEID VARCHAR2(100),
+ SCH_CHECKIN_TIME NUMBER(19),
+ SCH_CHECKIN_DATE DATE,
+ GROUPID NUMBER(19),
+ SCHEDULE_ID NUMBER(19),
+ TIMELINE_ID NUMBER(19),
+ CREATE_TIME DATE DEFAULT SYSDATE,
+ CONSTRAINT PK_QW_CHECKIN_DATA PRIMARY KEY (ID)
+);
+
+-- 娣诲姞娉ㄩ噴
+COMMENT ON TABLE QW_CHECKIN_DATA IS '浼佷笟寰俊鎵撳崱鏁版嵁琛�';
+COMMENT ON COLUMN QW_CHECKIN_DATA.ID IS '涓婚敭ID';
+COMMENT ON COLUMN QW_CHECKIN_DATA.USERID IS '鐢ㄦ埛id';
+COMMENT ON COLUMN QW_CHECKIN_DATA.GROUPNAME IS '鎵撳崱瑙勫垯鍚嶇О';
+COMMENT ON COLUMN QW_CHECKIN_DATA.CHECKIN_TYPE IS '鎵撳崱绫诲瀷锛氫笂鐝墦鍗★紝涓嬬彮鎵撳崱锛屽鍑烘墦鍗★紝浠呰褰曟墦鍗℃椂闂村拰浣嶇疆';
+COMMENT ON COLUMN QW_CHECKIN_DATA.EXCEPTION_TYPE IS '寮傚父绫诲瀷锛氭椂闂村紓甯革紝鍦扮偣寮傚父锛屾湭鎵撳崱锛寃ifi寮傚父锛岄潪甯哥敤璁惧锛堝涓互鍒嗗彿闂撮殧锛�';
+COMMENT ON COLUMN QW_CHECKIN_DATA.CHECKIN_TIME IS '鎵撳崱鏃堕棿锛圲nix鏃堕棿鎴筹級';
+COMMENT ON COLUMN QW_CHECKIN_DATA.CHECKIN_DATE IS '鎵撳崱鏃堕棿锛堣浆鎹㈠悗鐨勬棩鏈熸椂闂达級';
+COMMENT ON COLUMN QW_CHECKIN_DATA.LOCATION_TITLE IS '鎵撳崱鍦扮偣title';
+COMMENT ON COLUMN QW_CHECKIN_DATA.LOCATION_DETAIL IS '鎵撳崱鍦扮偣璇︽儏';
+COMMENT ON COLUMN QW_CHECKIN_DATA.WIFINAME IS '鎵撳崱wifi鍚嶇О';
+COMMENT ON COLUMN QW_CHECKIN_DATA.NOTES IS '鎵撳崱澶囨敞';
+COMMENT ON COLUMN QW_CHECKIN_DATA.WIFIMAC IS '鎵撳崱鐨凪AC鍦板潃/bssid';
+COMMENT ON COLUMN QW_CHECKIN_DATA.MEDIAIDS IS '鎵撳崱鐨勯檮浠秏edia_id锛堝涓互閫楀彿鍒嗛殧锛�';
+COMMENT ON COLUMN QW_CHECKIN_DATA.LAT IS '浣嶇疆鎵撳崱鍦扮偣绾害锛堝疄闄呯含搴︾殑1000000鍊嶏紝GCJ-02鍧愭爣绯伙級';
+COMMENT ON COLUMN QW_CHECKIN_DATA.LNG IS '浣嶇疆鎵撳崱鍦扮偣缁忓害锛堝疄闄呯粡搴︾殑1000000鍊嶏紝GCJ-02鍧愭爣绯伙級';
+COMMENT ON COLUMN QW_CHECKIN_DATA.DEVICEID IS '鎵撳崱璁惧id';
+COMMENT ON COLUMN QW_CHECKIN_DATA.SCH_CHECKIN_TIME IS '鏍囧噯鎵撳崱鏃堕棿锛圲nix鏃堕棿鎴筹級';
+COMMENT ON COLUMN QW_CHECKIN_DATA.SCH_CHECKIN_DATE IS '鏍囧噯鎵撳崱鏃堕棿锛堣浆鎹㈠悗鐨勬棩鏈熸椂闂达級';
+COMMENT ON COLUMN QW_CHECKIN_DATA.GROUPID IS '瑙勫垯id';
+COMMENT ON COLUMN QW_CHECKIN_DATA.SCHEDULE_ID IS '鐝id';
+COMMENT ON COLUMN QW_CHECKIN_DATA.TIMELINE_ID IS '鏃舵id';
+COMMENT ON COLUMN QW_CHECKIN_DATA.CREATE_TIME IS '鍒涘缓鏃堕棿';
+
+-- 鍒涘缓绱㈠紩
+CREATE INDEX IDX_QW_CHECKIN_USERID ON QW_CHECKIN_DATA(USERID);
+CREATE INDEX IDX_QW_CHECKIN_DATE ON QW_CHECKIN_DATA(CHECKIN_DATE);
+CREATE INDEX IDX_QW_CHECKIN_TIME ON QW_CHECKIN_DATA(CHECKIN_TIME);
+CREATE INDEX IDX_QW_CHECKIN_TYPE ON QW_CHECKIN_DATA(CHECKIN_TYPE);
+CREATE INDEX IDX_QW_CHECKIN_GROUPID ON QW_CHECKIN_DATA(GROUPID);
+
+-- 鍒涘缓鍞竴绱㈠紩锛堥槻姝㈤噸澶嶆暟鎹細鍚屼竴鐢ㄦ埛鍚屼竴鏃堕棿鐨勬墦鍗¤褰曪級
+CREATE UNIQUE INDEX UK_QW_CHECKIN_USER_TIME ON QW_CHECKIN_DATA(USERID, CHECKIN_TIME, CHECKIN_TYPE);
diff --git a/sql/QW_CHECKIN_DAY_DATA.sql b/sql/QW_CHECKIN_DAY_DATA.sql
new file mode 100644
index 0000000..c966354
--- /dev/null
+++ b/sql/QW_CHECKIN_DAY_DATA.sql
@@ -0,0 +1,85 @@
+-- =============================================
+-- 浼佷笟寰俊鎵撳崱鏃ユ姤鏁版嵁琛� (Oracle 11g)
+-- =============================================
+
+-- 鍒涘缓搴忓垪
+CREATE SEQUENCE SEQ_QW_CHECKIN_DAY_DATA
+ START WITH 1
+ INCREMENT BY 1
+ NOMAXVALUE
+ NOCYCLE
+ CACHE 20;
+
+-- 鍒涘缓琛�
+CREATE TABLE QW_CHECKIN_DAY_DATA (
+ ID NUMBER(19) NOT NULL,
+ REPORT_DATE NUMBER(19) NULL, -- 鏃ユ姤鏃ユ湡锛圲nix鏃堕棿鎴筹級
+ REPORT_DATETIME DATE NULL, -- 鏃ユ姤鏃ユ湡锛堣浆鎹㈠悗鐨勬棩鏈燂級
+ ACCTID VARCHAR2(64) NULL, -- 鐢ㄦ埛璐﹀彿(userid)
+ NAME VARCHAR2(100) NULL, -- 鍛樺伐濮撳悕
+ NAME_EX VARCHAR2(100) NULL, -- 鍛樺伐鍒悕
+ DEPARTS_NAME VARCHAR2(500) NULL, -- 鎵�灞為儴闂紙澶氫釜閮ㄩ棬浠ュ垎鍙峰垎闅旓級
+ RECORD_TYPE NUMBER(2) NULL, -- 璁板綍绫诲瀷锛�1-鍥哄畾涓婁笅鐝紱3-鎸夌彮娆′笂涓嬬彮锛�4-鑷敱绛惧埌锛�5-鍔犵彮锛�7-鏃犺鍒�
+ DAY_TYPE NUMBER(2) NULL, -- 鏃ユ姤绫诲瀷锛�0-宸ヤ綔鏃ユ棩鎶ワ紱1-浼戞伅鏃ユ棩鎶�
+ GROUPID NUMBER(10) NULL, -- 瑙勫垯ID
+ GROUPNAME VARCHAR2(100) NULL, -- 瑙勫垯鍚嶇О
+ SCHEDULEID NUMBER(10) NULL, -- 鐝ID
+ SCHEDULENAME VARCHAR2(100) NULL, -- 鐝鍚嶇О
+ CHECKIN_COUNT NUMBER(5) NULL, -- 褰撴棩鎵撳崱娆℃暟
+ REGULAR_WORK_SEC NUMBER(10) NULL, -- 褰撴棩瀹為檯宸ヤ綔鏃堕暱锛堢锛�
+ STANDARD_WORK_SEC NUMBER(10) NULL, -- 褰撴棩鏍囧噯宸ヤ綔鏃堕暱锛堢锛�
+ EARLIEST_TIME NUMBER(10) NULL, -- 褰撴棩鏈�鏃╂墦鍗℃椂闂达紙璺�0鐐圭鏁帮級
+ LASTEST_TIME NUMBER(10) NULL, -- 褰撴棩鏈�鏅氭墦鍗℃椂闂达紙璺�0鐐圭鏁帮級
+ LATE_COUNT NUMBER(5) DEFAULT 0, -- 杩熷埌娆℃暟
+ LATE_DURATION NUMBER(10) DEFAULT 0, -- 杩熷埌鏃堕暱锛堢锛�
+ EARLY_LEAVE_COUNT NUMBER(5) DEFAULT 0, -- 鏃╅��娆℃暟
+ EARLY_LEAVE_DURATION NUMBER(10) DEFAULT 0, -- 鏃╅��鏃堕暱锛堢锛�
+ ABSENT_COUNT NUMBER(5) DEFAULT 0, -- 缂哄崱娆℃暟
+ ABSENTEEISM_COUNT NUMBER(5) DEFAULT 0, -- 鏃峰伐娆℃暟
+ ABSENTEEISM_DURATION NUMBER(10) DEFAULT 0, -- 鏃峰伐鏃堕暱锛堢锛�
+ LOCATION_EX_COUNT NUMBER(5) DEFAULT 0, -- 鍦扮偣寮傚父娆℃暟
+ DEVICE_EX_COUNT NUMBER(5) DEFAULT 0, -- 璁惧寮傚父娆℃暟
+ OT_STATUS NUMBER(2) DEFAULT 0, -- 鍔犵彮鐘舵�侊細0-鏃犲姞鐝紱1-姝e父锛�2-缂烘椂闀�
+ OT_DURATION NUMBER(10) DEFAULT 0, -- 鍔犵彮鏃堕暱锛堢锛�
+ CREATE_TIME DATE DEFAULT SYSDATE,-- 鍒涘缓鏃堕棿
+ CONSTRAINT PK_QW_CHECKIN_DAY_DATA PRIMARY KEY (ID)
+);
+
+-- 鍒涘缓绱㈠紩
+CREATE INDEX IDX_QW_CDD_ACCTID ON QW_CHECKIN_DAY_DATA(ACCTID);
+CREATE INDEX IDX_QW_CDD_REPORT_DATE ON QW_CHECKIN_DAY_DATA(REPORT_DATE);
+CREATE INDEX IDX_QW_CDD_REPORT_DATETIME ON QW_CHECKIN_DAY_DATA(REPORT_DATETIME);
+CREATE UNIQUE INDEX UK_QW_CDD_ACCTID_DATE ON QW_CHECKIN_DAY_DATA(ACCTID, REPORT_DATE);
+
+-- 娣诲姞琛ㄦ敞閲�
+COMMENT ON TABLE QW_CHECKIN_DAY_DATA IS '浼佷笟寰俊鎵撳崱鏃ユ姤鏁版嵁琛�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.ID IS '涓婚敭ID';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.REPORT_DATE IS '鏃ユ姤鏃ユ湡锛圲nix鏃堕棿鎴筹級';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.REPORT_DATETIME IS '鏃ユ姤鏃ユ湡锛堣浆鎹㈠悗鐨勬棩鏈燂級';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.ACCTID IS '鐢ㄦ埛璐﹀彿(userid)';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.NAME IS '鍛樺伐濮撳悕';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.NAME_EX IS '鍛樺伐鍒悕';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.DEPARTS_NAME IS '鎵�灞為儴闂紙澶氫釜閮ㄩ棬浠ュ垎鍙峰垎闅旓級';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.RECORD_TYPE IS '璁板綍绫诲瀷锛�1-鍥哄畾涓婁笅鐝紱3-鎸夌彮娆′笂涓嬬彮锛�4-鑷敱绛惧埌锛�5-鍔犵彮锛�7-鏃犺鍒�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.DAY_TYPE IS '鏃ユ姤绫诲瀷锛�0-宸ヤ綔鏃ユ棩鎶ワ紱1-浼戞伅鏃ユ棩鎶�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.GROUPID IS '瑙勫垯ID';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.GROUPNAME IS '瑙勫垯鍚嶇О';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.SCHEDULEID IS '鐝ID';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.SCHEDULENAME IS '鐝鍚嶇О';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.CHECKIN_COUNT IS '褰撴棩鎵撳崱娆℃暟';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.REGULAR_WORK_SEC IS '褰撴棩瀹為檯宸ヤ綔鏃堕暱锛堢锛�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.STANDARD_WORK_SEC IS '褰撴棩鏍囧噯宸ヤ綔鏃堕暱锛堢锛�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.EARLIEST_TIME IS '褰撴棩鏈�鏃╂墦鍗℃椂闂达紙璺�0鐐圭鏁帮級';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.LASTEST_TIME IS '褰撴棩鏈�鏅氭墦鍗℃椂闂达紙璺�0鐐圭鏁帮級';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.LATE_COUNT IS '杩熷埌娆℃暟';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.LATE_DURATION IS '杩熷埌鏃堕暱锛堢锛�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.EARLY_LEAVE_COUNT IS '鏃╅��娆℃暟';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.EARLY_LEAVE_DURATION IS '鏃╅��鏃堕暱锛堢锛�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.ABSENT_COUNT IS '缂哄崱娆℃暟';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.ABSENTEEISM_COUNT IS '鏃峰伐娆℃暟';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.ABSENTEEISM_DURATION IS '鏃峰伐鏃堕暱锛堢锛�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.LOCATION_EX_COUNT IS '鍦扮偣寮傚父娆℃暟';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.DEVICE_EX_COUNT IS '璁惧寮傚父娆℃暟';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.OT_STATUS IS '鍔犵彮鐘舵�侊細0-鏃犲姞鐝紱1-姝e父锛�2-缂烘椂闀�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.OT_DURATION IS '鍔犵彮鏃堕暱锛堢锛�';
+COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.CREATE_TIME IS '鍒涘缓鏃堕棿';
diff --git a/tasks/todo.md b/tasks/todo.md
new file mode 100644
index 0000000..0068278
--- /dev/null
+++ b/tasks/todo.md
@@ -0,0 +1,45 @@
+# Task: Adjust testGetCheckinDataByQwStaff Test Method
+
+## Plan
+
+- [ ] Add validation for the 30-day time span restriction
+- [ ] Add logging to show batch processing when user count exceeds 100
+- [ ] Add validation to ensure time range doesn't exceed 30 days
+- [ ] Improve comments to clearly document all 5 interface restrictions
+
+## Interface Restrictions (from Enterprise WeChat API)
+1. Time span must not exceed 30 days
+2. User list must not exceed 100 (batch processing required if more)
+3. (Missing #3 in original comments)
+4. Standard check-in time only valid for fixed and custom schedules
+5. API call frequency limit: 600 times/minute
+
+## Current Implementation Status
+- 鉁� Service layer (`getCheckinData`) already implements 100-user batching
+- 鉁� Service layer already has 500ms delay between batches (rate limiting)
+- 鉁� Test method doesn't validate 30-day restriction
+- 鉁� Test method doesn't show batch processing information
+
+## Changes Needed
+1. Add time span validation (ensure endTime - startTime <= 30 days)
+2. Add logging to show total user count and batch information
+3. Update comments to be more complete and clear
+
+## Review
+
+### Changes Made
+1. **Added 30-day time span validation** - The test now validates that the time range doesn't exceed 30 days and exits early if it does
+2. **Added batch processing information** - Shows total user count and calculates how many batches will be processed when users exceed 100
+3. **Improved comments** - Added complete documentation of all 5 interface restrictions with notes about what's already handled in the Service layer
+
+### Key Improvements
+- Time span validation with clear error message
+- User count and batch information displayed before API call
+- Complete interface restriction documentation (added missing #3: max 3000 records)
+- Notes indicating Service layer already handles batching and rate limiting
+
+### Code Impact
+- Minimal changes to test method only
+- No changes to service layer (already correctly implemented)
+- Added validation and logging for better visibility
+- Test now clearly demonstrates compliance with API restrictions
--
Gitblit v1.9.3