shawnxixi-cli 0.3.0 → 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.
Files changed (82) hide show
  1. package/.env.example +8 -2
  2. package/.github/workflows/ci.yml +9 -22
  3. package/.github/workflows/release.yml +30 -0
  4. package/CLAUDE.md +167 -63
  5. package/README.md +345 -65
  6. package/commitlint.config.js +10 -0
  7. package/dist/commands/biz/calendar.d.ts +17 -2
  8. package/dist/commands/biz/calendar.d.ts.map +1 -1
  9. package/dist/commands/biz/calendar.js +47 -9
  10. package/dist/commands/biz/calendar.js.map +1 -1
  11. package/dist/commands/biz/finance.d.ts +32 -1
  12. package/dist/commands/biz/finance.d.ts.map +1 -1
  13. package/dist/commands/biz/finance.js +99 -12
  14. package/dist/commands/biz/finance.js.map +1 -1
  15. package/dist/commands/biz/health.d.ts +32 -0
  16. package/dist/commands/biz/health.d.ts.map +1 -0
  17. package/dist/commands/biz/health.js +92 -0
  18. package/dist/commands/biz/health.js.map +1 -0
  19. package/dist/commands/biz/item.d.ts +41 -0
  20. package/dist/commands/biz/item.d.ts.map +1 -1
  21. package/dist/commands/biz/item.js +89 -5
  22. package/dist/commands/biz/item.js.map +1 -1
  23. package/dist/commands/biz/record.d.ts +0 -8
  24. package/dist/commands/biz/record.d.ts.map +1 -1
  25. package/dist/commands/biz/record.js +29 -8
  26. package/dist/commands/biz/record.js.map +1 -1
  27. package/dist/commands/biz/task.d.ts +38 -0
  28. package/dist/commands/biz/task.d.ts.map +1 -0
  29. package/dist/commands/biz/task.js +110 -0
  30. package/dist/commands/biz/task.js.map +1 -0
  31. package/dist/commands/biz/todo.d.ts +52 -8
  32. package/dist/commands/biz/todo.d.ts.map +1 -1
  33. package/dist/commands/biz/todo.js +167 -17
  34. package/dist/commands/biz/todo.js.map +1 -1
  35. package/dist/commands/sys/health.d.ts.map +1 -1
  36. package/dist/commands/sys/health.js +20 -3
  37. package/dist/commands/sys/health.js.map +1 -1
  38. package/dist/index.d.ts +5 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +281 -42
  41. package/dist/index.js.map +1 -1
  42. package/dist/services/api.d.ts +22 -8
  43. package/dist/services/api.d.ts.map +1 -1
  44. package/dist/services/api.js +108 -28
  45. package/dist/services/api.js.map +1 -1
  46. package/dist/utils/env.d.ts +16 -0
  47. package/dist/utils/env.d.ts.map +1 -0
  48. package/dist/utils/env.js +78 -0
  49. package/dist/utils/env.js.map +1 -0
  50. package/dist/utils/finance.model.d.ts +80 -0
  51. package/dist/utils/finance.model.d.ts.map +1 -0
  52. package/dist/utils/finance.model.js +150 -0
  53. package/dist/utils/finance.model.js.map +1 -0
  54. package/dist/utils/output.d.ts +42 -0
  55. package/dist/utils/output.d.ts.map +1 -0
  56. package/dist/utils/output.js +124 -0
  57. package/dist/utils/output.js.map +1 -0
  58. package/dist/utils/todo.model.d.ts +55 -0
  59. package/dist/utils/todo.model.d.ts.map +1 -0
  60. package/dist/utils/todo.model.js +135 -0
  61. package/dist/utils/todo.model.js.map +1 -0
  62. package/package.json +18 -2
  63. package/src/commands/biz/calendar.ts +61 -10
  64. package/src/commands/biz/finance.ts +112 -13
  65. package/src/commands/biz/health.ts +96 -0
  66. package/src/commands/biz/item.ts +113 -6
  67. package/src/commands/biz/record.ts +32 -8
  68. package/src/commands/biz/task.ts +115 -0
  69. package/src/commands/biz/todo.ts +193 -21
  70. package/src/commands/sys/health.ts +23 -3
  71. package/src/index.ts +311 -54
  72. package/src/services/api.ts +111 -30
  73. package/src/utils/env.ts +85 -0
  74. package/src/utils/finance.model.ts +182 -0
  75. package/src/utils/output.ts +126 -0
  76. package/src/utils/todo.model.ts +167 -0
  77. package/tests/commands/finance.test.ts +281 -0
  78. package/tests/commands/item.test.ts +215 -0
  79. package/tests/commands/todo.test.ts +292 -9
  80. package/tests/services/api.test.ts +292 -20
  81. package/tests/utils/finance.model.test.ts +319 -0
  82. package/tests/utils/todo.model.test.ts +315 -0
package/README.md CHANGED
@@ -1,136 +1,416 @@
1
1
  # shawnxixi-cli
2
2
 
3
- > 肖嘻 CLI 工具 OpenClaw 的执行肢
3
+ 肖嘻 CLI 工具 - 日常业务与系统管理的命令行接口。
4
4
 
5
5
  ## 安装
6
6
 
7
7
  ```bash
8
- # 从源码编译
8
+ # 从源码安装
9
9
  git clone https://github.com/LyuShawn/shawnxixi-cli.git
10
10
  cd shawnxixi-cli
11
11
  npm install
12
12
  npm run build
13
-
14
- # 链接到全局
15
13
  npm link
14
+
15
+ # 或全局安装
16
+ npm install -g shawnxixi-cli
16
17
  ```
17
18
 
18
- ## 配置
19
+ ## 初始化配置
19
20
 
20
21
  ```bash
21
- # 设置后端地址(可选,默认 http://localhost:8080)
22
- export SHAWNXIXI_API_URL=http://localhost:8080
22
+ # 复制配置文件
23
+ cp .env.example .env
23
24
 
24
- # 设置 API Token(可选)
25
- export SHAWNXIXI_API_TOKEN=your-token
25
+ # 编辑配置(可选)
26
+ vim .env
26
27
  ```
27
28
 
28
- ## 命令
29
+ ### 环境变量
30
+
31
+ | 变量 | 默认值 | 说明 |
32
+ |-----|-------|------|
33
+ | `SHAWNXIXI_API_URL` | `http://localhost:8080/api/v1` | API 服务器地址 |
34
+ | `SHAWNXIXI_API_TOKEN` | - | API 认证 Token(可选) |
35
+
36
+ ## 全局参数
37
+
38
+ | 参数 | 说明 |
39
+ |-----|------|
40
+ | `--json` | 输出 JSON 格式 |
41
+ | `--quiet` | 静默模式(只输出关键信息) |
42
+ | `--dry-run` | 预览模式(不实际调用 API) |
43
+
44
+ ## 命令总览
45
+
46
+ ```
47
+ shawnxixi <command>
48
+
49
+ 日常业务命令:
50
+ biz todo 待办管理(对标滴答清单)
51
+ biz task 任务管理(对标系统任务)
52
+ biz record 记录管理
53
+ biz finance 财务管理(对标记账类 App)
54
+ biz item 物品管理
55
+ biz calendar 日程管理(对标日历 App)
56
+ biz health 健康数据管理(对标 Apple Health)
57
+
58
+ 系统命令:
59
+ sys health 健康检查
60
+ ```
61
+
62
+ ---
63
+
64
+ ## biz todo(待办管理)
65
+
66
+ 对标滴答清单的待办管理功能。
67
+
68
+ ### 子命令
69
+
70
+ | 命令 | 说明 |
71
+ |-----|------|
72
+ | `add <title>` | 创建待办 |
73
+ | `list` | 列出待办 |
74
+ | `edit <id>` | 编辑待办 |
75
+ | `done <id>` | 标记待办完成 |
76
+ | `delete <id>` | 删除待办 |
29
77
 
30
- ### 待办 (biz todo)
78
+ ### 选项
79
+
80
+ | 选项 | 说明 |
81
+ |-----|------|
82
+ | `--due <date>` | 截止日期(YYYY-MM-DD) |
83
+ | `--priority <level>` | 优先级(low/medium/high) |
84
+ | `--status <status>` | 状态过滤(pending/done) |
85
+ | `--tags <tags>` | 标签(逗号分隔) |
86
+
87
+ ### 示例
31
88
 
32
89
  ```bash
33
90
  # 创建待办
34
- shawnxixi biz todo create "开会" --due 2026-04-12 --priority high
91
+ shawnxixi biz todo add "完成项目报告" --due 2026-04-15 --priority high --tags work,important
35
92
 
36
93
  # 列出所有待办
37
94
  shawnxixi biz todo list
38
95
 
96
+ # 按状态筛选
97
+ shawnxixi biz todo list --status pending --priority high
98
+
99
+ # 编辑待办
100
+ shawnxixi biz todo edit 123 --title "新标题" --priority low
101
+
39
102
  # 标记完成
40
- shawnxixi biz todo done 1
103
+ shawnxixi biz todo done 123
41
104
 
42
105
  # 删除待办
43
- shawnxixi biz todo delete 1
106
+ shawnxixi biz todo delete 123
44
107
  ```
45
108
 
46
- ### 记录 (biz record)
109
+ ---
110
+
111
+ ## biz task(任务管理)
112
+
113
+ 对标系统任务的功能,支持 OpenClaw 等来源。
114
+
115
+ ### 子命令
116
+
117
+ | 命令 | 说明 |
118
+ |-----|------|
119
+ | `list` | 列出任务 |
120
+ | `create <title>` | 创建任务 |
121
+ | `update <id>` | 更新任务 |
122
+ | `delete <id>` | 删除任务 |
123
+
124
+ ### 选项
125
+
126
+ | 选项 | 说明 |
127
+ |-----|------|
128
+ | `--status <status>` | 状态过滤(pending/running/done) |
129
+ | `--source <source>` | 来源过滤(openclaw/cli) |
130
+ | `--openclaw-id <id>` | OpenClaw ID |
131
+ | `--priority <level>` | 优先级(low/medium/high) |
132
+
133
+ ### 示例
47
134
 
48
135
  ```bash
49
- # 创建记录
50
- shawnxixi biz record create "灵感" --content "想到一个新的app idea" --type idea
136
+ # 列出运行中的任务
137
+ shawnxixi biz task list --status running --source openclaw
51
138
 
52
- # 列出所有记录
53
- shawnxixi biz record list
139
+ # 创建任务
140
+ shawnxixi biz task create "修复登录 bug" --source openclaw --openclaw-id 456
54
141
 
55
- # 宠物记录
56
- shawnxixi biz record create "西西体重" --content "3.2kg" --type pet --tags "体重,西西"
142
+ # 更新任务状态
143
+ shawnxixi biz task update 123 --status done
144
+
145
+ # 删除任务
146
+ shawnxixi biz task delete 123
57
147
  ```
58
148
 
59
- ### 财务 (biz finance)
149
+ ---
150
+
151
+ ## biz finance(财务管理)
152
+
153
+ 对标记账类 App 的财务管理功能。
154
+
155
+ ### 子命令
156
+
157
+ | 命令 | 说明 |
158
+ |-----|------|
159
+ | `add <amount>` | 新增账单 |
160
+ | `list` | 列出账单 |
161
+ | `stats` | 账单统计 |
162
+
163
+ ### 选项
164
+
165
+ | 选项 | 说明 |
166
+ |-----|------|
167
+ | `--type <type>` | 类型(income/expense) |
168
+ | `--category <cat>` | 分类 |
169
+ | `--note <text>` | 备注 |
170
+ | `--month <month>` | 月份过滤(YYYY-MM) |
171
+
172
+ ### 示例
60
173
 
61
174
  ```bash
62
- # 记账(支出)
63
- shawnxixi biz finance create 50 --category food --desc "午饭"
175
+ # 记一笔支出
176
+ shawnxixi biz finance add 100 --type expense --category 餐饮 --note 午饭
64
177
 
65
- # 记账(收入)
66
- shawnxixi biz finance create 15000 --type income --category salary
178
+ # 记一笔收入
179
+ shawnxixi biz finance add 5000 --type income --category 工资 --note 月薪
67
180
 
68
- # 列出财务流水
69
- shawnxixi biz finance list
181
+ # 按月份查看支出
182
+ shawnxixi biz finance list --type expense --month 2026-04
70
183
 
71
- # 按分类查看
72
- shawnxixi biz finance list --category food
184
+ # 查看月度统计
185
+ shawnxixi biz finance stats --month 2026-04
73
186
  ```
74
187
 
75
- ### 物品 (biz item)
188
+ ---
189
+
190
+ ## biz health(健康数据)
191
+
192
+ 对标 Apple Health 的健康数据管理。
193
+
194
+ ### 子命令
195
+
196
+ | 命令 | 说明 |
197
+ |-----|------|
198
+ | `log` | 记录健康数据 |
199
+ | `list` | 查询健康数据 |
200
+ | `sync` | 同步健康数据 |
201
+
202
+ ### 选项
203
+
204
+ | 选项 | 说明 |
205
+ |-----|------|
206
+ | `--type <type>` | 数据类型(heart_rate/steps/weight/...) |
207
+ | `--value <value>` | 数值 |
208
+ | `--unit <unit>` | 单位(bpm/kg/steps/...) |
209
+ | `--date <date>` | 日期(YYYY-MM-DD) |
210
+ | `--from <date>` | 开始日期 |
211
+ | `--to <date>` | 结束日期 |
212
+
213
+ ### 示例
76
214
 
77
215
  ```bash
78
- # 添加物品
79
- shawnxixi biz item create "阿莫西林" --location "药箱" --expire 2026-12-01 --category "药品"
216
+ # 记录心率
217
+ shawnxixi biz health log --type heart_rate --value 72 --unit bpm --date 2026-04-12
80
218
 
81
- # 列出物品
82
- shawnxixi biz item list
219
+ # 记录步数
220
+ shawnxixi biz health log --type steps --value 8000 --unit steps --date 2026-04-12
221
+
222
+ # 查询心率历史
223
+ shawnxixi biz health list --type heart_rate --from 2026-04-01 --to 2026-04-12
224
+
225
+ # 查询体重
226
+ shawnxixi biz health list --type weight --from 2026-04-01 --to 2026-04-12
83
227
  ```
84
228
 
85
- ### 日历 (biz calendar)
229
+ ---
230
+
231
+ ## biz calendar(日程管理)
232
+
233
+ 对标日历 App 的日程管理功能。
234
+
235
+ ### 子命令
236
+
237
+ | 命令 | 说明 |
238
+ |-----|------|
239
+ | `add <title>` | 创建日程 |
240
+ | `list` | 列出日程 |
241
+
242
+ ### 选项
243
+
244
+ | 选项 | 说明 |
245
+ |-----|------|
246
+ | `--from <datetime>` | 开始时间(必需) |
247
+ | `--to <datetime>` | 结束时间(必需) |
248
+ | `--location <loc>` | 地点 |
249
+ | `--color <color>` | 颜色(HEX 如 #ff0000) |
250
+ | `--desc <text>` | 描述 |
251
+
252
+ ### 示例
86
253
 
87
254
  ```bash
88
255
  # 创建日程
89
- shawnxixi biz calendar create "面试" --start "2026-04-15 14:00" --end "2026-04-15 15:30" --desc "技术面试"
256
+ shawnxixi biz calendar add "团队周会" --from "2026-04-15 10:00" --to "2026-04-15 11:00" --location 会议室A --color #4285f4
257
+
258
+ # 查看本月日程
259
+ shawnxixi biz calendar list --from 2026-04-01 --to 2026-04-30
260
+ ```
261
+
262
+ ---
263
+
264
+ ## biz record(记录管理)
265
+
266
+ 通用记录管理(日记/宠物/笔记/灵感)。
90
267
 
91
- # 列出日程
92
- shawnxixi biz calendar list
268
+ ### 子命令
269
+
270
+ | 命令 | 说明 |
271
+ |-----|------|
272
+ | `create <title>` | 创建记录 |
273
+ | `list` | 列出记录 |
274
+
275
+ ### 选项
276
+
277
+ | 选项 | 说明 |
278
+ |-----|------|
279
+ | `--content <text>` | 内容 |
280
+ | `--type <type>` | 类型(diary/pet/note/idea) |
281
+ | `--tags <tags>` | 标签(逗号分隔) |
282
+
283
+ ### 示例
284
+
285
+ ```bash
286
+ # 写日记
287
+ shawnxixi biz record create "今日感想" --content "完成了一个重要功能" --type diary --tags work,daily
288
+
289
+ # 创建灵感
290
+ shawnxixi biz record create "新功能创意" --content "做一个 AI 助手" --type idea --tags ai,innovation
291
+
292
+ # 列出所有笔记
293
+ shawnxixi biz record list --type note
93
294
  ```
94
295
 
95
- ### 健康 (sys health)
296
+ ---
297
+
298
+ ## biz item(物品管理)
299
+
300
+ 物品收纳管理功能。
301
+
302
+ ### 子命令
303
+
304
+ | 命令 | 说明 |
305
+ |-----|------|
306
+ | `create <name>` | 添加物品 |
307
+ | `list` | 列出物品 |
308
+
309
+ ### 选项
310
+
311
+ | 选项 | 说明 |
312
+ |-----|------|
313
+ | `--location <loc>` | 存放位置 |
314
+ | `--expire <date>` | 过期日期(YYYY-MM-DD) |
315
+ | `--category <cat>` | 分类 |
316
+
317
+ ### 示例
96
318
 
97
319
  ```bash
98
- # 同步健康数据
99
- shawnxixi sys health sync
320
+ # 添加物品
321
+ shawnxixi biz item create "牛奶" --location 冰箱 --expire 2026-04-20 --category 食品
100
322
 
101
- # 查询健康数据
102
- shawnxixi sys health query steps --from 2026-04-01 --to 2026-04-11
103
- shawnxixi sys health query heartRate
323
+ # 列出物品
324
+ shawnxixi biz item list --category 食品
104
325
  ```
105
326
 
106
- ## 开发
327
+ ---
328
+
329
+ ## sys(系统命令)
330
+
331
+ ### sys health
332
+
333
+ 健康检查。
107
334
 
108
335
  ```bash
109
- # 编译
110
- npm run build
336
+ shawnxixi sys health
337
+ # 输出: { status: 'ok', timestamp: '2026-04-12T00:00:00.000Z' }
338
+ ```
111
339
 
112
- # 测试
113
- npm test
340
+ ---
341
+
342
+ ## 使用示例
343
+
344
+ ### 完整工作流
345
+
346
+ ```bash
347
+ # 1. 创建待办
348
+ shawnxixi biz todo add "准备周五会议" --due 2026-04-18 --priority high --tags work
349
+
350
+ # 2. 记录一笔支出
351
+ shawnxixi biz finance add 50 --type expense --category 交通 --note打车费
114
352
 
115
- # 发布到 npm(需权限)
116
- npm publish --access public
353
+ # 3. 记录今日心率
354
+ shawnxixi biz health log --type heart_rate --value 75 --unit bpm
355
+
356
+ # 4. 创建会议日程
357
+ shawnxixi biz calendar add "产品评审会" --from "2026-04-15 14:00" --to "2026-04-15 16:00" --location 线上
358
+
359
+ # 5. 查看所有待办
360
+ shawnxixi biz todo list --status pending
361
+ ```
362
+
363
+ ### 全局参数使用
364
+
365
+ ```bash
366
+ # JSON 输出
367
+ shawnxixi biz todo list --json
368
+
369
+ # 静默模式
370
+ shawnxixi biz todo add "测试" --quiet
371
+
372
+ # 预览模式(不实际调用 API)
373
+ shawnxixi biz todo add "测试待办" --due 2026-04-20 --dry-run
117
374
  ```
118
375
 
119
- ## 架构
376
+ ---
377
+
378
+ ## 故障排查
379
+
380
+ ### API 连接失败
381
+
382
+ 1. 检查 `.env` 中的 `SHAWNXIXI_API_URL` 是否正确
383
+ 2. 确认服务器已启动
384
+ 3. 检查网络连接
385
+
386
+ ### 命令不存在
387
+
388
+ ```bash
389
+ # 重新链接
390
+ npm link
120
391
 
392
+ # 或使用 npx
393
+ npx shawnxixi biz todo list
121
394
  ```
122
- src/
123
- ├── commands/ # 命令实现
124
- │ ├── biz/ # 业务命令
125
- │ └── sys/ # 系统命令
126
- ├── services/
127
- │ └── api.ts # HTTP 调用层
128
- └── index.ts # 入口
395
+
396
+ ---
397
+
398
+ ## 开发
399
+
400
+ ```bash
401
+ # 安装依赖
402
+ npm install
403
+
404
+ # 开发模式(监听文件变化)
405
+ npm run build
406
+
407
+ # 运行测试
408
+ npm test
409
+
410
+ # 链接到全局
411
+ npm link
129
412
  ```
130
413
 
131
- ## 相关项目
414
+ ## License
132
415
 
133
- - [shawnxixi-design](https://github.com/LyuShawn/shawnxixi-design) - 设计/需求文档
134
- - [shawnxixi-server](https://github.com/LyuShawn/shawnxixi-server) - 后端服务
135
- - [shawnxixi-skills](https://github.com/LyuShawn/shawnxixi-skills) - Skill 知识库
136
- - [shawnxixi-app](https://github.com/LyuShawn/shawnxixi-app) - iOS 应用
416
+ ISC
@@ -0,0 +1,10 @@
1
+ module.exports = {
2
+ extends: ['@commitlint/config-conventional'],
3
+ rules: {
4
+ 'type-enum': [
5
+ 2,
6
+ 'always',
7
+ ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'build', 'ci', 'chore', 'revert'],
8
+ ],
9
+ },
10
+ };
@@ -1,9 +1,24 @@
1
+ /**
2
+ * biz calendar 命令
3
+ * 日程管理(对标日历 App)
4
+ * 子命令:add / list
5
+ */
1
6
  export declare const calendarCommands: {
7
+ /**
8
+ * 创建日程
9
+ * biz calendar add <title> --from <datetime> --to <datetime> --location <loc> --color #ff0000
10
+ */
2
11
  create: (title: string, options?: {
3
- start?: string;
4
- end?: string;
12
+ from?: string;
13
+ to?: string;
14
+ location?: string;
15
+ color?: string;
5
16
  desc?: string;
6
17
  }) => Promise<void>;
18
+ /**
19
+ * 列出日程
20
+ * biz calendar list --from 2026-04-01 --to 2026-04-30
21
+ */
7
22
  list: (options?: {
8
23
  from?: string;
9
24
  to?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/calendar.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;oBACL,MAAM,YAAW;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;qBAchE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;CASrD,CAAC"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/calendar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,eAAO,MAAM,gBAAgB;IAC3B;;;OAGG;oBACmB,MAAM,YAAW;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAkCvH;;;OAGG;qBACmB;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;CAyBrD,CAAC"}
@@ -1,29 +1,67 @@
1
1
  "use strict";
2
+ /**
3
+ * biz calendar 命令
4
+ * 日程管理(对标日历 App)
5
+ * 子命令:add / list
6
+ */
2
7
  Object.defineProperty(exports, "__esModule", { value: true });
3
8
  exports.calendarCommands = void 0;
4
9
  const api_1 = require("../../services/api");
10
+ const output_1 = require("../../utils/output");
5
11
  exports.calendarCommands = {
12
+ /**
13
+ * 创建日程
14
+ * biz calendar add <title> --from <datetime> --to <datetime> --location <loc> --color #ff0000
15
+ */
6
16
  create: async (title, options = {}) => {
7
- if (!options.start || !options.end) {
8
- console.error('必须指定 --start 和 --end 时间');
9
- process.exit(1);
10
- }
17
+ const loading = (0, output_1.createLoading)('创建日程...');
11
18
  try {
12
- const result = await api_1.apiService.createCalendarEvent(title, options.start, options.end, options.desc);
13
- console.log(JSON.stringify(result, null, 2));
19
+ if (!options.from || !options.to) {
20
+ loading.fail('缺少必需参数 --from 和 --to');
21
+ (0, output_1.outputError)('Usage: biz calendar add <title> --from <datetime> --to <datetime> [--location <loc>] [--color <color>] [--desc <desc>]');
22
+ process.exit(1);
23
+ }
24
+ if ((0, output_1.isDryRun)()) {
25
+ loading.stop();
26
+ (0, output_1.dryRunLog)('创建日程', { title, ...options });
27
+ return;
28
+ }
29
+ loading.start();
30
+ const result = await api_1.apiService.createCalendarEvent(title, options.from, options.to, options.desc, options.location, options.color);
31
+ loading.succeed('日程创建成功');
32
+ (0, output_1.output)(result);
14
33
  }
15
34
  catch (error) {
16
- console.error('创建日程失败:', error.message);
35
+ loading.fail('创建日程失败');
36
+ (0, output_1.outputError)(error.message);
17
37
  process.exit(1);
18
38
  }
19
39
  },
40
+ /**
41
+ * 列出日程
42
+ * biz calendar list --from 2026-04-01 --to 2026-04-30
43
+ */
20
44
  list: async (options = {}) => {
45
+ const loading = (0, output_1.createLoading)('加载日程列表...');
21
46
  try {
47
+ if ((0, output_1.isDryRun)()) {
48
+ loading.stop();
49
+ (0, output_1.dryRunLog)('列出日程', options);
50
+ return;
51
+ }
52
+ loading.start();
22
53
  const result = await api_1.apiService.listCalendarEvents(options.from, options.to);
23
- console.log(JSON.stringify(result, null, 2));
54
+ loading.succeed('日程列表加载成功');
55
+ if (result.data && result.data.length > 0) {
56
+ (0, output_1.output)(result.data);
57
+ }
58
+ else {
59
+ (0, output_1.output)({ message: '暂无日程' });
60
+ }
24
61
  }
25
62
  catch (error) {
26
- console.error('查询日程失败:', error.message);
63
+ loading.fail('加载日程列表失败');
64
+ (0, output_1.outputError)(error.message);
27
65
  process.exit(1);
28
66
  }
29
67
  },
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/commands/biz/calendar.ts"],"names":[],"mappings":";;;AAAA,4CAAgD;AAEnC,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,UAA2D,EAAE,EAAE,EAAE;QAC7F,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAM,EAAE,OAAO,CAAC,GAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACvG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,UAA0C,EAAE,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/commands/biz/calendar.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,4CAAgD;AAChD,+CAA6F;AAEhF,QAAA,gBAAgB,GAAG;IAC9B;;;OAGG;IACH,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,UAA4F,EAAE,EAAE,EAAE;QAC9H,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACrC,IAAA,oBAAW,EAAC,wHAAwH,CAAC,CAAC;gBACtI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,IAAA,iBAAQ,GAAE,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,kBAAS,EAAC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YAED,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,mBAAmB,CACjD,KAAK,EACL,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,KAAK,CACd,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAA,oBAAW,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAI,EAAE,KAAK,EAAE,UAA0C,EAAE,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,WAAW,CAAC,CAAC;QAE3C,IAAI,CAAC;YACH,IAAI,IAAA,iBAAQ,GAAE,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,IAAA,kBAAS,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE5B,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,IAAA,eAAM,EAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzB,IAAA,oBAAW,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -1,12 +1,43 @@
1
+ /**
2
+ * biz finance 命令
3
+ * 财务管理(对标记账类 App)
4
+ * 子命令:add / list / stats / report
5
+ */
1
6
  export declare const financeCommands: {
7
+ /**
8
+ * 新增账单
9
+ * biz finance add --type expense --amount 100 --category 餐饮 --note 午饭 --account cash --date 2026-04-12 --tags food,lunch
10
+ */
2
11
  create: (amount: string, options?: {
3
12
  type?: string;
4
13
  category?: string;
5
- desc?: string;
14
+ note?: string;
15
+ account?: string;
16
+ date?: string;
17
+ tags?: string;
6
18
  }) => Promise<void>;
19
+ /**
20
+ * 列出账单
21
+ * biz finance list --type expense --month 2026-04
22
+ */
7
23
  list: (options?: {
8
24
  type?: string;
9
25
  category?: string;
26
+ month?: string;
27
+ }) => Promise<void>;
28
+ /**
29
+ * 统计账单
30
+ * biz finance stats --month 2026-04
31
+ */
32
+ stats: (options?: {
33
+ month?: string;
34
+ }) => Promise<void>;
35
+ /**
36
+ * 月度报表
37
+ * biz finance report --month 2026-04
38
+ */
39
+ report: (options?: {
40
+ month?: string;
10
41
  }) => Promise<void>;
11
42
  };
12
43
  //# sourceMappingURL=finance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"finance.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/finance.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;qBACH,MAAM,YAAW;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;qBAiBrE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;CAS3D,CAAC"}
1
+ {"version":3,"file":"finance.d.ts","sourceRoot":"","sources":["../../../src/commands/biz/finance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,eAAO,MAAM,eAAe;IAC1B;;;OAGG;qBACoB,MAAM,YAAW;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IA+B3I;;;OAGG;qBACmB;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IA0B1E;;;OAGG;sBACoB;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAuBzC;;;OAGG;uBACqB;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAsB3C,CAAC"}