@jiaoyubaocn/workbuddy-order 0.0.0-stage → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +342 -3
- package/cli.js +415 -0
- package/lib/auth.js +373 -0
- package/lib/dict.js +421 -0
- package/lib/format.js +188 -0
- package/lib/http.js +250 -0
- package/lib/order.js +465 -0
- package/lib/tools.js +373 -0
- package/package.json +38 -4
- package/server.js +236 -0
- package/vendor/mcp.js +309 -0
package/README.md
CHANGED
|
@@ -1,3 +1,342 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# workbuddy-order
|
|
2
|
+
|
|
3
|
+
教育宝**内部订单查询**工具。登录管理后台帐号后,按状态、日期、机构、渠道、关键词等条件查询后台订单/用户列表,并以表格或 JSON 返回;同时提供 MCP 服务形态,可直接接入 WorkBuddy。
|
|
4
|
+
|
|
5
|
+
- 运行时:Node.js 18+,**零第三方依赖**(只用内置 `fetch/fs/crypto/http/readline`)
|
|
6
|
+
- 数据源:`https://apidata-admin.jiaoyubao.cn`
|
|
7
|
+
- 接口:`101000` 登录、`400450` 订单/用户列表、`400456/400457/400458/400459/400460/400461/400462/400463/400472/400130` 字典
|
|
8
|
+
- 不影响 .NET 编译(独立目录,未加入 `datacache.csproj`)
|
|
9
|
+
|
|
10
|
+
## 目录
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
workbuddy-order/
|
|
14
|
+
├── cli.js 命令行入口(login/logout/whoami/orders/count/dict/raw)
|
|
15
|
+
├── server.js MCP 入口(HTTP 或 stdio)
|
|
16
|
+
├── lib/
|
|
17
|
+
│ ├── http.js 接口传输:key 组装、超时重试、POST 回退、错误分类
|
|
18
|
+
│ ├── auth.js 101000 登录、MD5 凭证、本地缓存与自动续登
|
|
19
|
+
│ ├── dict.js 字典拉取、缓存、中文名 → 编号
|
|
20
|
+
│ ├── order.js 400450 参数映射、分页、字段裁剪
|
|
21
|
+
│ ├── format.js 表格/键值渲染(中文按 2 宽对齐)
|
|
22
|
+
│ └── tools.js MCP 工具定义与实现
|
|
23
|
+
├── deploy/ 服务器部署(Windows/IIS 为主,含 Nginx 附录)
|
|
24
|
+
│ ├── README.md 部署手册:https://apidata-admin.jiaoyubao.cn/mcp
|
|
25
|
+
│ ├── iis/ 反向代理 web.config(子应用 / 站点根两种)
|
|
26
|
+
│ └── windows/ NSSM 服务安装脚本
|
|
27
|
+
└── test/
|
|
28
|
+
├── mock-api.js 本地假接口
|
|
29
|
+
└── smoke.js 冒烟测试(29 项)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 发布到 npmjs.com 与员工安装
|
|
33
|
+
|
|
34
|
+
零依赖 Node 18+ 包,装完得到两个全局命令:`jyb-order`(CLI)、`jyb-order-mcp`(MCP stdio 服务)。
|
|
35
|
+
|
|
36
|
+
### 首次发布(维护者,本机执行一次)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm login # 浏览器登录 npmjs.com 账号(邮箱需已验证)
|
|
40
|
+
publish.cmd # 自动取当前登录用户名做 scope → 跑冒烟测试 → 发布
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`publish.cmd` 内部等价于:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm pkg set name=@<你的npm用户名>/workbuddy-order
|
|
47
|
+
npm test
|
|
48
|
+
npm publish --access public # scoped 包不带 --access public 会被拒绝(402)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
发布成功后包页:`https://www.npmjs.com/package/@<你的npm用户名>/workbuddy-order`
|
|
52
|
+
|
|
53
|
+
### 员工安装(一条命令)
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm install -g @<你的npm用户名>/workbuddy-order
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
装完直接可用,无需再配路径:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
jyb-order login --user=zhangsan --password='******'
|
|
63
|
+
jyb-order orders --days=7
|
|
64
|
+
jyb-order whoami
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
WorkBuddy 走 MCP 时填:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
command: jyb-order-mcp
|
|
71
|
+
args: ["--stdio"]
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 发新版本
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm version patch # 或 minor / major;会自动改 version 并打 git tag
|
|
78
|
+
publish.cmd # 同一版本号不能重复发布
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
员工升级:`npm update -g @<scope>/workbuddy-order`,`jyb-order --version` 确认。
|
|
82
|
+
|
|
83
|
+
### 注意事项
|
|
84
|
+
|
|
85
|
+
- **包内容公网可下载**:`lib/` 源码、接口地址(`apidata-admin.jiaoyubao.cn`)、字段语义都会公开。若不希望公开,改用内网 Verdaccio(`npx verdaccio`,发布 `--registry http://内网IP:4873/`)或 tgz 共享分发。
|
|
86
|
+
- **scoped 包名必须全小写**,scope 就是你 npm 账号用户名(个人账号无需建组织即可发布)。
|
|
87
|
+
- 登录凭证存在 `C:\ProgramData\jyb-order-mcp`,与安装/升级/卸载无关。
|
|
88
|
+
- 本机 npm 不认 UNC 路径(`\\host\share` 会被误解析成 `C:\host\share`),所以不要把共享盘路径直接喂给 `npm install -g`;tgz 需先映射盘符再安装。
|
|
89
|
+
|
|
90
|
+
## 快速开始
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
cd datacache/cs/workbuddy-order
|
|
94
|
+
|
|
95
|
+
# 1) 登录(帐号就是后台登录用的帐号,需要互联网出口可访问 apidata-admin)
|
|
96
|
+
node cli.js login --user=zhangsan --password='******' --ip=1.2.3.4
|
|
97
|
+
|
|
98
|
+
# 2) 查最近 7 天订单
|
|
99
|
+
node cli.js orders --days=7
|
|
100
|
+
|
|
101
|
+
# 3) 按状态 + 关键词
|
|
102
|
+
node cli.js orders --state=已报名 --word=13800000000 --word-type=电话 --days=30
|
|
103
|
+
|
|
104
|
+
# 4) 只要总数
|
|
105
|
+
node cli.js count --state=已报名 --days=30
|
|
106
|
+
|
|
107
|
+
# 5) 机器可读
|
|
108
|
+
node cli.js orders --days=7 --json
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
登录成功后 passport 会写入 `~/.jyb-workbuddy/credentials.json`(Windows 为 `%USERPROFILE%\.jyb-workbuddy\credentials.json`),后续命令自动复用;凭证剩余有效期低于 10% 时自动续登,接口返回鉴权失败时自动重登一次并重试。
|
|
112
|
+
|
|
113
|
+
> 只保存密码的 MD5,不保存明文。可用 `--no-save` 完全不落盘。
|
|
114
|
+
> 若已有浏览器中的 `admuserpassport`,可 `node cli.js login --passport=xxxx` 直接保存。
|
|
115
|
+
|
|
116
|
+
## 命令
|
|
117
|
+
|
|
118
|
+
| 命令 | 说明 |
|
|
119
|
+
| --- | --- |
|
|
120
|
+
| `login` | 登录并保存凭证;`--user --password [--ip] [--expires=1440] [--no-save]`,或 `--passport=值` |
|
|
121
|
+
| `logout` | 清除本地 passport(保留帐号,下次自动重登) |
|
|
122
|
+
| `whoami` | 查看登录状态、帐号、passport 脱敏值、剩余时间;`--verify` 调用 101001 校验 |
|
|
123
|
+
| `orders` | 查询订单列表(400450) |
|
|
124
|
+
| `count` | 只取记录总数(400450 `page=0`) |
|
|
125
|
+
| `dict` | 字典查询与中文转编号 |
|
|
126
|
+
| `raw` | 原样调用接口,如 `raw --action=400457`,用于排查或扩展 |
|
|
127
|
+
|
|
128
|
+
### orders 常用参数
|
|
129
|
+
|
|
130
|
+
| 参数 | 说明 |
|
|
131
|
+
| --- | --- |
|
|
132
|
+
| `--state=已报名\|已放弃` | 订单状态,中文或编号,多值用 `\|` |
|
|
133
|
+
| `--sdt=2026-10-01 --edt=2026-11-06` | 日期区间,默认「结束日期前一个月 ~ 今天」 |
|
|
134
|
+
| `--days=30` | 以结束日期为基准往前推 N 天 |
|
|
135
|
+
| `--dttype=报名日期` / `--date-type=1` | 日期类型(对应接口 `dttype`),决定 `--sdt/--edt` 作用在哪种日期上,默认 `0` 订单时间,可传编号或名称,支持唯一前缀简写(如 `结课`→学员结课日期) |
|
|
136
|
+
| `--word=xxx --word-type=电话` | 关键词,类型:电话/微信/QQ/IP/客服日志 |
|
|
137
|
+
| `--comid --memberid --areaid --bigareaid` | 机构、用户、地区 |
|
|
138
|
+
| `--main-class=舞蹈` | 机构主垂直行业(对应 `mainclassid`,只到一级行业):中文名或编号,细分名会自动归到一级;多值用 `\|` |
|
|
139
|
+
| `--course-class=拉丁舞培训` | 课程行业(对应 `classid`,可精确到细分):中文名或编号;传一级行业会自动包含其下所有细分 |
|
|
140
|
+
| `--classid=500016 --mainclassid=500016` | 直接传接口编号(等价写法) |
|
|
141
|
+
| `--source --comtype --usertype --useridentity --channel --channel-group --comstate --dzstate` | 中文名自动转编号 |
|
|
142
|
+
| `--mode=按订单\|按用户` | 默认按订单 |
|
|
143
|
+
| `--matchstate --isbesure --isreview --isimportant --myinvite --alertstate --issystemsync --comfollowupstate` | 枚举条件,支持 `全部/未匹配/已匹配` 等中文 |
|
|
144
|
+
| `--op-cs --adv-cs --user-cs` | 运营客服 / 顾问客服 / 用户顾问客服帐号 |
|
|
145
|
+
| `--page=1 --page-size=10` | 分页,每页最大 100 |
|
|
146
|
+
| `--all --max-pages=5` | 自动翻页拉取多页(默认最多 5 页,硬上限 20) |
|
|
147
|
+
| `--full` | 输出客服日志/订单日志/结算信息原文(默认折叠为摘要) |
|
|
148
|
+
| `--fields=ordercode,username,comname` | 自定义表格列 |
|
|
149
|
+
| `--json` / `--quiet` | 输出 JSON / 只输出数据行 |
|
|
150
|
+
|
|
151
|
+
日期类型(`dttype`)编号对照:
|
|
152
|
+
|
|
153
|
+
| 编号 | 日期类型 | 编号 | 日期类型 |
|
|
154
|
+
| --- | --- | --- | --- |
|
|
155
|
+
| 0 | 订单时间(默认) | 6 | 学员结课日期 |
|
|
156
|
+
| 1 | 报名日期 | 7 | 订单提醒日期 |
|
|
157
|
+
| 2 | 改报名日期 | 8 | 学员联络日期 |
|
|
158
|
+
| 3 | 客服日期 | 9 | 从帐单删除日期 |
|
|
159
|
+
| 4 | 结算日期 | 10 | 对帐单生成日期 |
|
|
160
|
+
| 5 | 机构日志日期 | 11 | 二次回访日期 |
|
|
161
|
+
|
|
162
|
+
### 字典
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
node cli.js dict # 列出所有字典类型
|
|
166
|
+
node cli.js dict --type=state --keyword=报名 # 按关键字过滤
|
|
167
|
+
node cli.js dict --type=state --resolve=已报名 # 中文转编号
|
|
168
|
+
node cli.js dict --type=class --keyword=舞蹈 # 查培训类别(行业),level=2 为一级行业
|
|
169
|
+
node cli.js dict --type=class --resolve=拉丁舞 # 行业名转编号(拉丁舞 → 500016007)
|
|
170
|
+
node cli.js dict --type=useridentity --code=901098004
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
| type | 接口 | 说明 |
|
|
174
|
+
| --- | --- | --- |
|
|
175
|
+
| `state` | 400457 | 订单状态(两级树) |
|
|
176
|
+
| `comtype` | 400456 | 机构类型 |
|
|
177
|
+
| `source` | 400458 | 订单来源 |
|
|
178
|
+
| `usertype` | 400459 | 用户类别(`mtypecode`) |
|
|
179
|
+
| `channel` | 400461 | 渠道(`uid`) |
|
|
180
|
+
| `channelgroup` | 400460 | 渠道分组 |
|
|
181
|
+
| `comstate` | 400462 | 机构合作状态 |
|
|
182
|
+
| `dzstate` | 400463 | 对账状态 |
|
|
183
|
+
| `useridentity` | 400472 | 用户身份(默认前缀 901009,可用 `--code` 覆盖) |
|
|
184
|
+
| `cs` | 400130 | 客服名单 |
|
|
185
|
+
|
|
186
|
+
字典本地缓存 6 小时(客服 1 小时),接口异常时自动降级使用旧缓存。
|
|
187
|
+
|
|
188
|
+
## 接入 WorkBuddy(MCP)
|
|
189
|
+
|
|
190
|
+
### 方式一:HTTP
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
node server.js --port=3100
|
|
194
|
+
# 端点 http://localhost:3100/mcp
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
MCP 客户端配置:
|
|
198
|
+
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"mcpServers": {
|
|
202
|
+
"jyb-order": {
|
|
203
|
+
"type": "http",
|
|
204
|
+
"url": "http://localhost:3100/mcp"
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 方式二:stdio(无需端口,由客户端拉起进程)
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"mcpServers": {
|
|
215
|
+
"jyb-order": {
|
|
216
|
+
"command": "node",
|
|
217
|
+
"args": ["g:/vss/net/Edu/edufront/EduManage.root/EduManage/datacache/cs/workbuddy-order/server.js", "--stdio"],
|
|
218
|
+
"env": {
|
|
219
|
+
"JYB_USERCODE": "zhangsan",
|
|
220
|
+
"JYB_PASSWORD": "******",
|
|
221
|
+
"JYB_IP": "1.2.3.4"
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### 提供的工具
|
|
229
|
+
|
|
230
|
+
| 工具 | 说明 |
|
|
231
|
+
| --- | --- |
|
|
232
|
+
| `login` | 用本人后台帐号登录(HTTP 多用户模式:凭证按用户独立保存,只存密码 MD5,并绑定当前会话) |
|
|
233
|
+
| `logout` | 解除会话绑定并使该用户凭证失效 |
|
|
234
|
+
| `login_status` | 查看当前会话绑定的帐号与凭证剩余时间(`verify:true` 会校验凭证) |
|
|
235
|
+
| `query_orders` | 按状态/日期/机构/渠道/关键词/**机构主垂直行业(`main_class`)**/**课程行业(`course_class`)** 等查询订单,返回人读摘要 + `structuredContent` |
|
|
236
|
+
| `list_order_options` | 查询字典;传 `resolve` 可把中文名转成编号 |
|
|
237
|
+
|
|
238
|
+
工具返回结构:`content[0].text` 为人读文本,`structuredContent` 为机器可读数据;业务错误通过 `isError: true` 返回,便于模型区分"查无数据"与"调用失败"。
|
|
239
|
+
|
|
240
|
+
### 返回字段含义(400450)
|
|
241
|
+
|
|
242
|
+
| 字段 | 含义 | 出现位置 |
|
|
243
|
+
| --- | --- | --- |
|
|
244
|
+
| `commission` | **结算金额**(元) | 响应根节点为本次查询的**结算金额合计**;单条记录若返回则为本单结算金额 |
|
|
245
|
+
| `serviceprice` | **学费金额**(元) | 响应根节点为本次查询的**学费金额合计**;单条记录(`orders[].serviceprice`)为本单学费 |
|
|
246
|
+
| `jkrq` | **结课日期** | 单条记录 |
|
|
247
|
+
| `kkrq` | **开课日期** | 单条记录 |
|
|
248
|
+
| `bmrq` | **报名日期** | 单条记录 |
|
|
249
|
+
|
|
250
|
+
> 根节点合计还包含 `usernum`(用户数)、`comnum`(机构数)、`ordernum`(订单数,按用户模式返回)。
|
|
251
|
+
> 这些合计在 `structuredContent.totals` 中以数值返回,人读摘要显示为「合计:学费金额合计 x 元,结算金额合计 y 元」;表格列头「学费金额」即 `serviceprice`。
|
|
252
|
+
|
|
253
|
+
### 多用户登录(HTTP 服务模式)
|
|
254
|
+
|
|
255
|
+
每个人必须用**本人的后台帐号**登录,查询按登录帐号的权限执行(不同人权限不同,结果不同):
|
|
256
|
+
|
|
257
|
+
1. 员工在对话里说「帮我登录订单查询,帐号 xxx 密码 xxx」,AI 调用 `login` 工具;
|
|
258
|
+
2. 登录成功后凭证按用户独立存放在服务端(只存密码 MD5),并绑定到当前 MCP 会话;
|
|
259
|
+
3. 之后该会话内所有查询都以该帐号权限执行,凭证临近过期自动续登,无需反复登录;
|
|
260
|
+
4. `logout` 可退出;服务重启后会话绑定丢失,重新调用 `login` 即可。
|
|
261
|
+
|
|
262
|
+
也支持无状态方式:客户端在请求头带 `X-Jyb-Passport`(值即浏览器登录后的 `admuserpassport` cookie),可跳过 `login` 直接查询。
|
|
263
|
+
|
|
264
|
+
> HTTP 模式下服务端**不再配置全局帐号**,未登录时所有查询工具直接返回"尚未登录",避免所有人共享同一权限。
|
|
265
|
+
> stdio/CLI 单机模式不受影响:仍使用本机全局凭证(`~/.jyb-workbuddy/credentials.json`)。
|
|
266
|
+
|
|
267
|
+
## 部署到服务器
|
|
268
|
+
|
|
269
|
+
`apidata-admin.jiaoyubao.cn` 就是本项目 `datacache` 站点的域名,直接复用现有 443 与证书:
|
|
270
|
+
|
|
271
|
+
```
|
|
272
|
+
WorkBuddy → https://apidata-admin.jiaoyubao.cn/mcp → IIS 反代 → 127.0.0.1:3100 Node 服务
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
在服务器上(管理员 PowerShell):
|
|
276
|
+
|
|
277
|
+
```powershell
|
|
278
|
+
cd datacache\cs\workbuddy-order\deploy\windows
|
|
279
|
+
.\install-service.ps1 -UserCode 帐号 -Password '密码' -LoginIp <服务器出口IP> -Nssm C:\tools\nssm\nssm.exe
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
之后按 `deploy\iis\mcp-app.web.config` 建 IIS 子应用 `/mcp` 即可。完整步骤、安全加固与排障见 [deploy/README.md](deploy/README.md)。
|
|
283
|
+
|
|
284
|
+
## 环境变量
|
|
285
|
+
|
|
286
|
+
| 变量 | 说明 |
|
|
287
|
+
| --- | --- |
|
|
288
|
+
| `JYB_API_HOST` | 接口地址,默认 `https://apidata-admin.jiaoyubao.cn`(测试时可指向 mock) |
|
|
289
|
+
| `JYB_USERCODE` | 后台帐号 |
|
|
290
|
+
| `JYB_PASSWORD` | 后台密码(自动转 MD5),或用 `JYB_PASSWORD_MD5` 直接给 MD5 |
|
|
291
|
+
| `JYB_PASSPORT` | 直接提供 passport(优先级最高,不触发登录) |
|
|
292
|
+
| `JYB_IP` | 登录时上报的 IP,默认 `127.0.0.1` |
|
|
293
|
+
| `JYB_CONFIG_DIR` | 凭证与缓存目录,默认 `~/.jyb-workbuddy` |
|
|
294
|
+
| `JYB_TIMEOUT` / `JYB_RETRY` | 单次请求超时(毫秒,默认 15000)/ 失败重试次数(默认 1) |
|
|
295
|
+
|
|
296
|
+
优先级:命令行参数 > 环境变量 > 配置文件。
|
|
297
|
+
|
|
298
|
+
## 退出码
|
|
299
|
+
|
|
300
|
+
| 码 | 含义 |
|
|
301
|
+
| --- | --- |
|
|
302
|
+
| 0 | 成功 |
|
|
303
|
+
| 2 | 参数错误(含中文条件匹配不到) |
|
|
304
|
+
| 3 | 认证失败(帐号密码错误、凭证失效且无法自动重登) |
|
|
305
|
+
| 4 | 无权限(帐号分组不在允许名单) |
|
|
306
|
+
| 5 | 网络异常/超时 |
|
|
307
|
+
| 1 | 其他服务端异常 |
|
|
308
|
+
|
|
309
|
+
## 常见问题
|
|
310
|
+
|
|
311
|
+
**1. 返回「无权访问!」**
|
|
312
|
+
服务端要求帐号分组 `admbh` 以 `901011001 / 901011002 / 901011003 / 901011310 / 901011300` 开头。
|
|
313
|
+
|
|
314
|
+
**2. 查询成功但一条数据都没有**
|
|
315
|
+
400450 会强制按 `r_con_users_city`(`manager=当前帐号`、`isactive=1`)过滤城市,帐号没有被分配城市管理权限时查不到任何订单。CLI 在 `rec=0` 时会输出这条提示。
|
|
316
|
+
|
|
317
|
+
**3. 登录报「密码不能为空」/「只支持后台用户」**
|
|
318
|
+
101000 只支持 `usertype=0` 的后台用户,且必须同时提供帐号与密码;扫码登录的管理员需要先用 `login --passport=...` 手工导入凭证。
|
|
319
|
+
|
|
320
|
+
**4. 日志里的 passport**
|
|
321
|
+
所有日志与报错只显示 `前 6 位****后 4 位`,不会打印完整凭证或完整请求 URL。
|
|
322
|
+
|
|
323
|
+
**5. 手机号被脱敏**
|
|
324
|
+
服务端会根据帐号权限对手机号、日志内容做脱敏(`ishiddencodenumber`),CLI 不再二次处理,避免破坏原始数据。
|
|
325
|
+
|
|
326
|
+
## 测试
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
cd datacache/cs/workbuddy-order
|
|
330
|
+
node test/smoke.js
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
使用本地 mock 接口覆盖:未登录状态、自动登录、凭证落盘与复用、状态/多状态/关键词筛选、分页与 `--all`、总数、字典过滤与中文转编号、表格与 `--quiet` 输出、passport 失效自动重登、错误密码退出码、`raw` 调用、MCP HTTP 与 stdio。
|
|
334
|
+
|
|
335
|
+
## 扩展
|
|
336
|
+
|
|
337
|
+
新增接口只需两步:
|
|
338
|
+
|
|
339
|
+
1. 在 `lib/order.js`(或新增模块)里调用 `http.callApi("接口编号", {passport, ip, ...})`;
|
|
340
|
+
2. 在 `lib/tools.js` 的 `TOOLS` 与 `callTool` 中声明工具,并在 `cli.js` 增加命令。
|
|
341
|
+
|
|
342
|
+
例如订单详情 `400451`、订单日志 `400465`、客服日志 `400466` 均可按此方式接入。
|