refactor: 重构为单向生成架构,CLI 零参数可用
- 迁移 examples/rules/ 到 src/rules/,resources/devices.json 到 src/devices.json
- 迁移 resources/fetch-devlist.js 到 src/tools/fetch-devlist.ts 并改造为 ESM
- CLI 简化为零参数:bun run pack 自动编译并输出 dist/miot_{timestamp}.bak
- 移除备份合并能力:删除 mergeCompiledRules、RuleReplaceStrategy、dry-run、replace 参数
- 编译器简化为从零生成,不再支持 baseBackup 合并
- 新增 fetch-devices 命令用于从中枢网关更新设备清单
- 新增 bn.js、elliptic 依赖
- 更新测试路径引用,移除依赖合并逻辑的测试用例
- 更新 README.md 反映新项目结构和命令
This commit is contained in:
22
openspec/specs/fetch-devices-tool/spec.md
Normal file
22
openspec/specs/fetch-devices-tool/spec.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Capability: Fetch Devices Tool
|
||||
|
||||
## Purpose
|
||||
|
||||
Provide a standalone CLI tool to fetch device lists from a Mi Home central hub gateway via ECJPAKE-encrypted WebSocket connection and write the result to `src/devices.json`.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: 设备清单抓取工具
|
||||
系统 SHALL 提供独立的 CLI 工具,通过 ECJPAKE 加密连接中枢网关 WebSocket 接口,调用 `getDevList` API 获取设备清单,并将结果直接写入 `src/devices.json`。
|
||||
|
||||
#### Scenario: 通过 IP 和 passcode 抓取设备
|
||||
- **WHEN** 用户执行 `bun run fetch-devices <ip> <passcode>` 命令
|
||||
- **THEN** 系统 SHALL 连接 `ws://<ip>/centrallinkws/`,完成 ECJPAKE 密钥协商和加密通道建立,调用 `getDevList` API,将结果以 `{ fetchedAt, url, count, devList }` 格式写入 `src/devices.json`
|
||||
|
||||
#### Scenario: passcode 格式校验
|
||||
- **WHEN** 用户输入的 passcode 不是 6 位数字
|
||||
- **THEN** 系统 SHALL 报错并退出,不写入文件
|
||||
|
||||
#### Scenario: 连接失败处理
|
||||
- **WHEN** 网关连接超时或 WebSocket 连接失败
|
||||
- **THEN** 系统 SHALL 报错并退出,不写入文件,不修改已有的 `src/devices.json`
|
||||
Reference in New Issue
Block a user