111
tjx
18 小时以前 71abce9adde605458139df6d52431bb9698f19b7
111
已添加8个文件
624 ■■■■■ 文件已修改
.claude/settings.local.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
IFLOW.md 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MesQaDingtalkController接口文档.md 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
logs/mcp-mssqlserver-cli.log 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
logs/mcp-mssqlserver.log 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/QW_CHECKIN_DATA.sql 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/QW_CHECKIN_DAY_DATA.sql 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
tasks/todo.md 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.claude/settings.local.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
  "permissions": {
    "allow": [
      "Bash(where mvn:*)"
    ]
  }
}
IFLOW.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
# iFlow é¡¹ç›®ä¸Šä¸‹æ–‡æ–‡ä»¶ (IFLOW.md)
## é¡¹ç›®æ¦‚è¿°
这是一个基于 Spring Boot çš„钉钉消息推送系统,名为 `dingtalk`。该系统通过钉钉开放平台 API å®žçŽ°äº†å®šæ—¶æ¶ˆæ¯æŽ¨é€ã€ç”¨æˆ·ç®¡ç†ã€ä»¥åŠè®¾å¤‡æ•°æ®æé†’ç­‰åŠŸèƒ½ã€‚ä¸»è¦åŠŸèƒ½åŒ…æ‹¬ï¼š
1. é€šè¿‡æ‰‹æœºå·èŽ·å–é’‰é’‰ç”¨æˆ·ID
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 # é’‰é’‰åº”用配置(AppKey、AppSecret等)
│   â”‚   â”‚   â”œâ”€â”€ 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
- **机器人Token**: c2849e46cb0d91b0721c377742938b8ac5ef57e3c9eeab918e2cd5dd9c3aad2a
- **机器人Secret**: SEC382027a5c81ea5152b71b687fb2c1ebf26acbde035355da6ab2fb37306454134
## ä¸»è¦åŠŸèƒ½æ¨¡å—
### 1. ç”¨æˆ·ç®¡ç†
- `getDingTalkUserId()`: é€šè¿‡æ‰‹æœºå·èŽ·å–é’‰é’‰ç”¨æˆ·ID并保存到数据库
- ä½¿ç”¨é’‰é’‰ `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` æ³¨è§£
MesQaDingtalkController½Ó¿ÚÎĵµ.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
# MesQaDingtalkController æŽ¥å£æ–‡æ¡£
## æŽ¥å£æ¦‚è¿°
- **基础路径**: `/MesQaDingtalk`
- **功能**: MES QA é’‰é’‰æ¶ˆæ¯æŽ¨é€æŽ§åˆ¶å™¨
- **描述**: ç”¨äºŽå‘送不同类型的质量检验消息到钉钉
- **跨域设置**: æ”¯æŒè·¨åŸŸè¯·æ±‚(CORS)
## é€šç”¨è¯·æ±‚体格式 (QaMsgDto)
| å­—段名 | ç±»åž‹ | å¿…å¡« | æè¿° |
|--------|------|------|------|
| id | Long | æ˜¯ | æ£€éªŒè®°å½•ID |
| 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
}
```
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
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
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 '异常类型:时间异常,地点异常,未打卡,wifi异常,非常用设备(多个以分号间隔)';
COMMENT ON COLUMN QW_CHECKIN_DATA.CHECKIN_TIME IS '打卡时间(Unix时间戳)';
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 '打卡的MAC地址/bssid';
COMMENT ON COLUMN QW_CHECKIN_DATA.MEDIAIDS IS '打卡的附件media_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 '标准打卡时间(Unix时间戳)';
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);
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,           -- æ—¥æŠ¥æ—¥æœŸï¼ˆUnix时间戳)
    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-正常;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 '日报日期(Unix时间戳)';
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-正常;2-缺时长';
COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.OT_DURATION IS '加班时长(秒)';
COMMENT ON COLUMN QW_CHECKIN_DAY_DATA.CREATE_TIME IS '创建时间';
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