@ricequant2026/rqdata-cli 1.0.0 → 1.0.2

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/CHANGELOG.md CHANGED
@@ -33,199 +33,3 @@
33
33
  - 68 个命令的详细参考文档
34
34
  - Go 构建指南
35
35
 
36
-
37
- ### Added
38
-
39
- #### 核心功能
40
- - ✨ 完整的 RQData HTTP API 支持
41
- - 🚀 CURL 连接复用优化(QPS 提升 44.4%)
42
- - ⚡ Daemon 模式支持(长连接服务)
43
- - 📊 多种输出格式(NDJSON、JSON、CSV)
44
- - 🔒 严格的 Schema 验证
45
- - 🎯 字段过滤功能(`--fields` 参数)
46
-
47
- #### 数据模块
48
- - 📈 **Index(指数)** - 指数列表、行情、成分股、权重
49
- - 📊 **Stock CN(A股)** - 行情、财务、分红、融资融券、北向资金、停牌
50
- - 🇭🇰 **Stock HK(港股)** - 行情、财务、分红
51
- - 📅 **Calendar(交易日历)** - 交易日列表、前后交易日查询
52
- - 📉 **Macro(宏观)** - Shibor、CPI、PPI、GDP
53
-
54
- #### 认证系统
55
- - 🔑 环境变量认证(推荐)
56
- - 🔐 交互式登录
57
- - 💾 Token 缓存机制
58
- - ⏰ 自动 Token 刷新
59
-
60
- #### 性能优化
61
- - 🔄 CURL 连接复用
62
- - 🌐 TCP Keep-Alive
63
- - 📡 HTTP 持久连接
64
- - ⚡ Daemon 模式(批量查询性能提升 25%)
65
-
66
- #### 测试覆盖
67
- - ✅ 74 个功能测试(100% 通过率)
68
- - 📊 5 个性能测试场景
69
- - 🔬 三方性能对比(CLI vs Daemon vs Python)
70
- - 🧪 全模块性能验证
71
-
72
- ### Performance
73
-
74
- #### 性能基准
75
- - **单次请求**: 0.140s(优化前 0.154s,提升 9.1%)
76
- - **连续请求**: 0.150s/次(优化前 0.200s/次,提升 25%)
77
- - **平均 QPS**: 7.22 req/s(优化前 5 req/s,提升 44.4%)
78
- - **大数据吞吐**: 7,652 行/秒
79
-
80
- #### 场景性能
81
- - **1-3次查询**: CLI 直接模式最快(比 Python 快 68-78%)
82
- - **3-10次查询**: CLI Daemon 模式最快(比 Python 快 60-78%)
83
- - **20+次高频**: Python API 最快(比 CLI 快 12倍)
84
- - **大数据量**: Python API 最快(比 CLI 快 2.5倍)
85
-
86
- ### Documentation
87
-
88
- - 📖 完整的 README.md
89
- - 📚 API 文档
90
- - 🔧 开发指南
91
- - 📊 性能测试报告
92
- - 🤝 贡献指南
93
- - 📝 更新日志
94
-
95
- ### Technical Details
96
-
97
- #### 架构
98
- - C++17 标准
99
- - CMake 构建系统
100
- - vcpkg 依赖管理
101
- - 模块化设计
102
-
103
- #### 依赖库
104
- - libcurl - HTTP 客户端
105
- - nlohmann-json - JSON 处理
106
- - CLI11 - 命令行解析
107
- - csv-parser - CSV 解析
108
- - fmt - 格式化输出
109
-
110
- #### 平台支持
111
- - ✅ macOS (Apple Silicon & Intel)
112
- - ✅ Linux (x86_64)
113
- - 🚧 Windows (计划中)
114
-
115
- ### Testing
116
-
117
- #### 功能测试
118
- - Index 模块: 8/8 通过 ✅
119
- - Stock CN 模块: 23/23 通过 ✅
120
- - Stock HK 模块: 8/8 通过 ✅
121
- - Calendar 模块: 5/5 通过 ✅
122
- - Fund 模块: 9/9 通过 ✅
123
- - Futures 模块: 8/8 通过 ✅
124
- - Options 模块: 7/7 通过 ✅
125
- - Macro 模块: 6/6 通过 ✅
126
- - **总计**: 74/74 通过(100%)✅
127
-
128
- #### 性能测试
129
- - 单次请求性能测试 ✅
130
- - 连续请求性能测试 ✅
131
- - 大数据量性能测试 ✅
132
- - 高频请求性能测试 ✅
133
- - 三方对比测试 ✅
134
-
135
- ### Known Issues
136
-
137
- - Stock HK 模块性能相对较慢(QPS 3.17)- 受 API 响应速度限制
138
- - 高频场景(20+次/秒)性能不如 Python API - 受进程启动开销限制
139
-
140
- ### Recommendations
141
-
142
- #### 使用建议
143
- - **临时查询(1-3次)**: 使用 CLI 直接模式
144
- - **批量脚本(3-20次)**: 使用 CLI Daemon 模式
145
- - **高频查询(20+次)**: 使用 Python API
146
- - **大数据量(10K+行)**: 使用 Python API
147
-
148
- ## [1.0.1] - 2026-03-10
149
-
150
- ### Fixed
151
-
152
- #### 财务数据功能修复
153
- - 🐛 **修复 `stock cn financial` 命令 HTTP 400 错误**
154
- - 问题:`get_pit_financials_ex` API 要求 `fields` 必填,但 CLI 在构建请求时把 `fields` 从 payload 中剔除
155
- - 修复:针对 `get_pit_financials_ex` 方法,保留 payload 中的 `fields` 参数传给 API
156
- - 影响:现在可以正常获取三大表财务数据(资产负债表、利润表、现金流量表)
157
-
158
- - 🐛 **修复 `stock cn financial-indicator` 命令 HTTP 400 错误**
159
- - 问题:使用了错误的 method `get_factor`(参数格式不匹配)
160
- - 修复:改用 `get_pit_financials_ex` + 衍生指标字段
161
- - 影响:现在可以正常获取 ROE、毛利率、净利率等财务衍生指标
162
-
163
- #### 认证问题修复
164
- - 🐛 **修复 Token 过期导致的 HTTP 401 错误**
165
- - 问题:缓存的 token 过期后,CLI 继续使用导致认证失败
166
- - 解决方案:删除 `~/.rqdata/token.cache` 后,CLI 自动重新认证获取新 token
167
- - 建议:如遇 401 错误,运行 `rm -f ~/.rqdata/token.cache` 清除过期缓存
168
-
169
- ### Added
170
-
171
- #### 完整的 HALO 策略支持
172
- - ✅ 现在可以用纯 CLI 完成 HALO 策略筛选
173
- - ✅ 支持获取三大表财务数据
174
- - ✅ 支持获取财务衍生指标(ROE、毛利率等)
175
- - ✅ 支持批量查询 20 只股票的财务数据
176
-
177
- ### Documentation
178
-
179
- - 📝 添加财务数据 API 使用说明
180
- - 📝 添加衍生指标字段名参考
181
- - 📝 添加 Token 过期问题排查指南
182
-
183
- ### Technical Details
184
-
185
- #### 代码修改
186
- - `src/commands/stock_cn.cpp` 第 71-84 行:修改 `execute_stock_cn_command` 函数,针对 `get_pit_financials_ex` 保留 `fields` 参数
187
- - `src/commands/stock_cn.cpp` 第 426 行:`financial-indicator` 命令改用 `get_pit_financials_ex` 方法
188
-
189
- #### 测试验证
190
- - ✅ `stock cn financial` 命令测试通过
191
- - ✅ `stock cn financial-indicator` 命令测试通过
192
- - ✅ HALO 策略 20 只股票批量查询测试通过
193
-
194
- ### Notes
195
-
196
- #### 衍生指标字段名
197
- - 使用完整名称:`return_on_equity_weighted_average`(不是 `roe`)
198
- - TTM 字段使用大写:`net_profitTTM`(不是 `net_profit_ttm`)
199
- - Quarter 格式使用小写:`2024q3`(不是 `2024Q3`)
200
-
201
- ## [Unreleased]
202
-
203
- ### Planned Features
204
-
205
- - 🚧 Windows 平台支持
206
- - 🚧 批量 API 支持
207
- - 🚧 并行请求支持
208
- - 🚧 MCP Server 支持
209
- - 🚧 更多输出格式(Parquet、Arrow)
210
-
211
- ### Future Optimizations
212
-
213
- - 🔮 CSV 解析优化
214
- - 🔮 二进制数据格式支持
215
- - 🔮 内存池优化
216
- - 🔮 并发连接池
217
-
218
- ---
219
-
220
- ## Version History
221
-
222
- - **v1.0.1** (2026-03-10) - 财务数据修复
223
- - **v1.0.0** (2026-03-10) - 初始版本发布
224
-
225
- ---
226
-
227
- ## Links
228
-
229
- - [Repository](http://git.ricequant.com/projects/RQAI/repos/rqdata-cli)
230
- - [Documentation](http://git.ricequant.com/projects/RQAI/repos/rqdata-cli/browse/docs)
231
- - [Issues](https://jira.ricequant.com)(RiceQuant 内部 Jira)
package/README.md CHANGED
@@ -1,125 +1,148 @@
1
1
  # RQData CLI
2
2
 
3
- > 高性能的 RQData 命令行工具,为量化研究和 AI Agent 设计
3
+ > 面向投资研究与 AI Agent 的 RQData 命令行工具
4
4
 
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
6
  [![Go Version](https://img.shields.io/badge/Go-1.21%2B-blue.svg)](https://golang.org)
7
7
  [![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey.svg)]()
8
8
 
9
- ---
9
+ RQData CLI 使用 Go 实现,提供单文件可执行程序,并通过统一的 `--payload` 输入和 `ndjson/json/csv` 输出封装 RQData 常用接口。当前仓库覆盖股票、指数、基金、期货、期权、宏观和交易日历 7 大数据域,内置 66 个数据命令,适合终端查询、脚本编排和 Agent 调用。
10
10
 
11
- ## 📖 文档导航
11
+ ## 文档导航
12
12
 
13
- - **[🚀 快速上手指南](docs/QUICKSTART.md)** - 5分钟完成安装和第一次查询
14
- - **[🔧 Go 构建指南](BUILD_GO.md)** - Go 版本编译说明
15
- - **[📝 更新日志](CHANGELOG.md)** - 版本历史和变更记录
16
-
17
- ---
13
+ - [快速上手](docs/QUICKSTART.md)
14
+ - [命令参考](docs/rqdata_cli_commands.md)
15
+ - [Go 构建说明](BUILD_GO.md)
16
+ - [迁移说明](MIGRATION.md)
17
+ - [更新日志](CHANGELOG.md)
18
+ - [测试说明](tests/README.md)
18
19
 
19
- ## 特性
20
+ ## 特性
20
21
 
21
- - 🚀 **高性能** - Go 原生实现,单文件可执行,无依赖
22
- - 🤖 **AI Agent 友好** - NDJSON 流式输出,JSON Payload 输入
23
- - 📊 **全面数据覆盖** - A股、港股、期货、期权、基金、指数、宏观数据
24
- - 🔒 **类型安全** - 严格的 Schema 验证,自动参数类型推断
25
- - 🎯 **字段过滤** - `--fields` 参数精确控制返回数据
26
- - 📖 **自文档化** - `--schema` 标志输出完整 API 文档(含中文描述)
27
- - 🔐 **安全认证** - 系统 Keyring 集成,Token 自动管理
22
+ - 单文件二进制,支持直接分发和脚本调用
23
+ - 统一命令接口:`rqdata <group> <command> --payload '{...}'`
24
+ - 默认输出 NDJSON,适合流式处理和 AI Agent 消费
25
+ - 支持 `--format json|csv` 切换输出格式
26
+ - 支持 `--schema` 查看单命令 schema,`rqdata schema list` 查看命令清单
27
+ - 支持 `--fields` 限制输出字段
28
+ - 自动处理认证、token 缓存和 token 失效重试
29
+ - 同时提供 Go 源码构建和 npm 平台包分发
28
30
 
29
- ## 📦 快速安装
31
+ ## 安装
30
32
 
31
- ### 通过 npm 安装(推荐)
33
+ ### 通过 npm 安装
32
34
 
33
35
  ```bash
34
36
  npm install -g @ricequant2026/rqdata-cli
35
- ```
36
-
37
- 安装完成后即可直接使用:
38
-
39
- ```bash
40
37
  rqdata --version
41
38
  rqdata --help
42
39
  ```
43
40
 
44
- ### 从源码编译
41
+ 说明:
42
+
43
+ - npm 包会通过 `bin/rqdata.js` 自动选择当前平台对应的二进制包
44
+ - 使用 npm 需要 Node.js 18+
45
+
46
+ ### 从源码构建
45
47
 
46
48
  ```bash
47
- # 克隆仓库
48
- git clone http://git.ricequant.com/scm/RQAI/rqdata-cli.git
49
+ git clone https://github.com/ricequant/rqdata-cli.git
49
50
  cd rqdata-cli
50
-
51
- # 编译(需要 Go 1.21+)
52
51
  VERSION=1.0.0 ./build.sh
53
-
54
- # 安装到系统路径
55
- sudo mv rqdata /usr/local/bin/
52
+ ./rqdata --help
56
53
  ```
57
54
 
58
- ### 跨平台构建
55
+ `build.sh` 会在当前平台生成 `./rqdata`,并使用本地 `.cache/go-build` 作为 Go 构建缓存目录。
56
+
57
+ ### 直接交叉编译
59
58
 
60
59
  ```bash
61
- # Linux
62
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="-s -w -X github.com/rqdata/rqdata-cli/cmd.Version=1.0.0" -o rqdata-linux main.go
60
+ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
61
+ go build -trimpath -ldflags="-s -w -X github.com/ricequant/rqdata-cli/cmd.Version=1.0.0" \
62
+ -o rqdata-linux main.go
63
+ ```
63
64
 
64
- # macOS (Intel)
65
- CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -trimpath -ldflags="-s -w -X github.com/rqdata/rqdata-cli/cmd.Version=1.0.0" -o rqdata-macos-amd64 main.go
65
+ 更多构建方式见 [BUILD_GO.md](BUILD_GO.md)
66
66
 
67
- # macOS (Apple Silicon)
68
- CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags="-s -w -X github.com/rqdata/rqdata-cli/cmd.Version=1.0.0" -o rqdata-macos-arm64 main.go
67
+ ## 认证
69
68
 
70
- # Windows
71
- CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-s -w -X github.com/rqdata/rqdata-cli/cmd.Version=1.0.0" -o rqdata.exe main.go
72
- ```
69
+ CLI 会按以下优先级加载凭证:
73
70
 
74
- 详见 [BUILD_GO.md](BUILD_GO.md)
71
+ 1. 环境变量: `RQDATAC_CONF` / `RQDATAC2_CONF`
72
+ 2. 环境变量: `RQDATA_USERNAME` / `RQDATA_PASSWORD`
73
+ 3. 系统 Keyring
74
+ 4. `~/.rqdata/credentials`
75
+ 5. 终端交互输入
75
76
 
76
- ### 验证安装
77
+ 如果您已经是 rqdata 的付费用户,您的系统环境中应该已经配置好了 `RQDATAC_CONF`, 无需更多设置。
78
+
79
+ 使用交互式登录:
77
80
 
78
81
  ```bash
79
- rqdata --version
80
- rqdata --help
82
+ rqdata auth login
83
+ rqdata auth status
84
+ rqdata auth logout
81
85
  ```
82
86
 
83
- ## 🔑 认证配置
87
+ 认证成功后,token 会缓存到 `~/.rqdata/token.cache`。
84
88
 
85
- ### 环境变量(推荐)
89
+ ## 使用方式
86
90
 
87
- ```bash
88
- # 添加到 ~/.zshrc 或 ~/.bashrc
89
- export RQDATA_USERNAME="your_phone_or_email"
90
- export RQDATA_PASSWORD="your_password"
91
+ 所有数据命令都遵循同一套调用约定:
91
92
 
92
- # 重新加载
93
- source ~/.zshrc
93
+ ```bash
94
+ rqdata <group> <subgroup?> <command> --payload '{...}'
94
95
  ```
95
96
 
96
- ### 交互式登录
97
+ 常用参数:
98
+
99
+ - `--payload`:JSON 字符串,请求参数必填
100
+ - `--format`:输出格式,默认 `ndjson`,可选 `json`、`csv`
101
+ - `--fields`:限制返回字段
102
+ - `--schema`:打印当前命令的 schema
103
+
104
+ 查看命令树:
97
105
 
98
106
  ```bash
99
- rqdata auth login
107
+ rqdata --help
108
+ rqdata schema list
100
109
  ```
101
110
 
102
- ### 验证
111
+ 查看单个命令的参数定义:
103
112
 
104
113
  ```bash
105
- rqdata auth status
114
+ rqdata stock cn price --schema
115
+ rqdata futures dominant-price --schema
106
116
  ```
107
117
 
108
- > 💡 没有账号?访问 [ricequant.com](https://www.ricequant.com) 申请试用
118
+ ## 命令覆盖
119
+
120
+ 当前 `internal/configs/commands.json` 中定义了 66 个数据命令:
121
+
122
+ - `stock`:30 个命令,覆盖 A 股与港股基础信息、行情、财务、公告、股东、行业、北向资金等
123
+ - `index`:5 个命令,覆盖指数列表、行情、成分股与权重
124
+ - `fund`:7 个命令,覆盖基金净值、持仓、指标、经理与分红
125
+ - `futures`:5 个命令,覆盖合约列表、行情、主力合约与主力行情
126
+ - `options`:8 个命令,覆盖合约、行情、Greeks、指标与主力月份
127
+ - `macro`:8 个命令,覆盖准备金率、货币供应、CPI、PPI、GDP、PMI、利率和通用宏观查询
128
+ - `calendar`:3 个命令,覆盖交易日列表、前一交易日、后一交易日
109
129
 
110
- ## 🚀 快速开始
130
+ 完整参数说明见 [docs/rqdata_cli_commands.md](docs/rqdata_cli_commands.md)。
111
131
 
112
- ### 示例 1: 获取股票行情
132
+ ## 示例
133
+
134
+ ### A 股行情
113
135
 
114
136
  ```bash
115
137
  rqdata stock cn price --payload '{
116
- "order_book_ids": ["600000.XSHG", "000001.XSHE"],
138
+ "order_book_ids": ["000001.XSHE", "600000.XSHG"],
117
139
  "start_date": "2024-01-01",
118
- "end_date": "2024-01-31"
140
+ "end_date": "2024-01-31",
141
+ "fields": ["open", "high", "low", "close", "volume"]
119
142
  }'
120
143
  ```
121
144
 
122
- ### 示例 2: 获取指数成分股
145
+ ### 指数成分股
123
146
 
124
147
  ```bash
125
148
  rqdata index constituents --payload '{
@@ -128,248 +151,89 @@ rqdata index constituents --payload '{
128
151
  }'
129
152
  ```
130
153
 
131
- ### 示例 3: 获取宏观数据
154
+ ### 主力连续期货行情
132
155
 
133
156
  ```bash
134
- rqdata macro shibor --payload '{
157
+ rqdata futures dominant-price --payload '{
158
+ "underlying_symbols": "IF",
135
159
  "start_date": "2024-01-01",
136
- "end_date": "2024-12-31"
137
- }'
160
+ "end_date": "2024-12-31",
161
+ "fields": ["open", "close", "volume", "open_interest"]
162
+ }' --format json
138
163
  ```
139
164
 
140
- ### 示例 4: 查看命令文档
165
+ ### 基金指标
141
166
 
142
167
  ```bash
143
- # 查看所有命令
144
- rqdata --help
145
-
146
- # 查看特定命令的参数说明
147
- rqdata stock cn price --schema
148
- ```
149
-
150
- > 📖 更多示例请查看 [快速上手指南](docs/QUICKSTART.md)
151
-
152
- ## 📚 支持的命令
153
-
154
- ### 🔐 认证管理
155
- - `rqdata auth login` - 交互式登录
156
- - `rqdata auth status` - 查看认证状态
157
-
158
- ### ⚡ Daemon 模式
159
- - `rqdata daemon start` - 启动 daemon(批量查询性能提升 25%)
160
- - `rqdata daemon stop` - 停止 daemon
161
- - `rqdata daemon status` - 查看状态
162
-
163
- ### 📈 指数数据(4个命令)
164
- - `rqdata index instruments` - 获取指数列表
165
- - `rqdata index price` - 获取指数行情
166
- - `rqdata index constituents` - 获取成分股列表
167
- - `rqdata index weights` - 获取成分股权重
168
-
169
- ### 📊 A股数据(8个命令)
170
- - `rqdata stock cn instruments` - 获取股票列表
171
- - `rqdata stock cn price` - 获取股票行情
172
- - `rqdata stock cn dividends` - 获取分红数据
173
- - `rqdata stock cn financials` - 获取财务数据
174
- - `rqdata stock cn shares` - 获取股本结构
175
- - `rqdata stock cn margin` - 获取融资融券
176
- - `rqdata stock cn suspended` - 获取停牌信息
177
- - `rqdata stock cn northbound` - 获取北向资金
178
-
179
- ### 🇭🇰 港股数据(4个命令)
180
- - `rqdata stock hk instruments` - 获取港股列表
181
- - `rqdata stock hk price` - 获取港股行情
182
- - `rqdata stock hk dividends` - 获取分红数据
183
- - `rqdata stock hk financials` - 获取财务数据
184
-
185
- ### 📅 交易日历(3个命令)
186
- - `rqdata calendar dates` - 获取交易日列表
187
- - `rqdata calendar prev` - 获取前一交易日
188
- - `rqdata calendar next` - 获取后一交易日
189
-
190
- ### 📉 宏观数据(4个命令)
191
- - `rqdata macro shibor` - 获取 Shibor 利率
192
- - `rqdata macro price-cpi` - 获取 CPI 数据
193
- - `rqdata macro price-ppi` - 获取 PPI 数据
194
- - `rqdata macro gdp` - 获取 GDP 数据
195
-
196
- > 📖 **总计 26 个命令**,完整文档请查看 [快速上手指南](docs/QUICKSTART.md)
197
-
198
- ## 🎨 输出格式
199
-
200
- ```bash
201
- # NDJSON(默认,适合流式处理)
202
- rqdata stock cn price --payload '{...}'
203
-
204
- # JSON(结构化数组)
205
- rqdata stock cn price --payload '{...}' --format json
206
-
207
- # CSV(原始格式)
208
- rqdata stock cn price --payload '{...}' --format csv
168
+ rqdata fund indicators --payload '{
169
+ "order_book_ids": ["000001"],
170
+ "start_date": "2024-01-01",
171
+ "end_date": "2024-12-31"
172
+ }' --format json
209
173
  ```
210
174
 
211
- ## 🎨 高级功能
212
-
213
- ### Schema 自动生成
214
-
215
- 使用 Python 脚本从 rqdatac 自动生成参数 schema:
175
+ ### 宏观利率
216
176
 
217
177
  ```bash
218
- # 生成 schema.json(需要 rqdatac 环境)
219
- /home/lhz/.miniconda3/envs/zz1000/bin/python scripts/generate_schema_json.py
220
-
221
- # 查看命令参数说明
222
- rqdata stock cn price --schema
178
+ rqdata macro interest-rate --payload '{
179
+ "start_date": "2024-01-01",
180
+ "end_date": "2024-12-31"
181
+ }'
223
182
  ```
224
183
 
225
- 输出包含完整的中文参数描述和类型信息。
226
-
227
- ### 批量查询示例
184
+ ### 交易日历
228
185
 
229
186
  ```bash
230
- # 批量查询多个股票
231
- for stock in 000001.XSHE 600000.XSHG 600519.XSHG; do
232
- rqdata stock cn price --payload "{
233
- \"order_book_ids\": [\"$stock\"],
234
- \"start_date\": \"2024-01-01\",
235
- \"end_date\": \"2024-01-31\"
236
- }" > "${stock}.ndjson"
237
- done
187
+ rqdata calendar trading-dates --payload '{
188
+ "market": "cn",
189
+ "start_date": "2024-01-01",
190
+ "end_date": "2024-12-31"
191
+ }' --format json
238
192
  ```
239
193
 
240
- ## 🛠️ 开发
241
-
242
- ### 技术栈
194
+ ## 输出格式
243
195
 
244
- - **语言**: Go 1.21+
245
- - **依赖**:
246
- - `github.com/spf13/cobra` - CLI 框架
247
- - `github.com/zalando/go-keyring` - 系统 Keyring 集成
248
- - `golang.org/x/term` - 终端交互
249
- - **配置**:
250
- - `internal/configs/commands.json` - 命令定义
251
- - `internal/configs/schema.json` - 参数 Schema(自动生成)
196
+ ### NDJSON
252
197
 
253
- ### 项目结构
254
-
255
- ```
256
- rqdata-cli/
257
- ├── main.go # 入口文件
258
- ├── cmd/ # 命令定义
259
- ├── internal/ # 内部包
260
- │ ├── auth/ # 认证模块
261
- │ ├── client/ # HTTP 客户端
262
- │ ├── configs/ # 配置文件(commands.json, schema.json)
263
- │ ├── executor/ # 命令执行器
264
- │ ├── formatter/ # 输出格式化
265
- │ └── loader/ # 配置加载器
266
- ├── scripts/ # 工具脚本
267
- │ └── generate_schema_json.py # Schema 生成脚本
268
- ├── tests/ # 测试
269
- └── docs/ # 文档
270
- ```
271
-
272
- ### 构建与测试
198
+ 默认输出格式,每行一个 JSON 对象,适合管道和流式处理:
273
199
 
274
200
  ```bash
275
- # 编译
276
- VERSION=dev ./build.sh
277
-
278
- # 运行
279
- ./rqdata --help
280
-
281
- # 测试
282
- ./rqdata auth status
283
- ./rqdata stock cn price --schema
201
+ rqdata stock cn price --payload '{...}'
284
202
  ```
285
203
 
286
- ## 📖 文档
204
+ ### JSON
287
205
 
288
- - [Go 构建指南](BUILD_GO.md)
289
- - [快速上手](docs/QUICKSTART.md)
290
- - [命令列表](docs/rqdata_cli_commands.md)
291
- - [更新日志](CHANGELOG.md)
292
-
293
- ## 🚢 npm 发布
294
-
295
- 项目现在采用“主包 + 平台包”的发布方式:
296
-
297
- - `@ricequant2026/rqdata-cli`:主包,只包含 JS wrapper 和平台依赖声明
298
- - `@ricequant2026/rqdata-cli-linux-x64`
299
- - `@ricequant2026/rqdata-cli-darwin-x64`
300
- - `@ricequant2026/rqdata-cli-darwin-arm64`
301
- - `@ricequant2026/rqdata-cli-win32-x64`
302
-
303
- 发布时先发平台包,再发主包:
206
+ 返回结构化 JSON:
304
207
 
305
208
  ```bash
306
- npm version patch
307
- npm run publish:all
209
+ rqdata stock cn price --payload '{...}' --format json
308
210
  ```
309
211
 
310
- `publish:all` 内部会对所有 scoped 包使用 `npm publish --access public`。
212
+ ### CSV
311
213
 
312
- 如果只是先测试发布流程,建议先用预发布版本和 `next` tag:
214
+ 返回原始 CSV 文本:
313
215
 
314
216
  ```bash
315
- npm version prerelease --preid rc
316
- npm run publish:next
317
- ```
318
-
319
- 如果只想验证发布命令本身而不真正上传:
320
-
321
- ```bash
322
- npm run publish:dry-run
217
+ rqdata stock cn price --payload '{...}' --format csv
323
218
  ```
324
219
 
325
- 如果只想本地生成所有 tarball:
220
+ ## 仓库内附内容
326
221
 
327
- ```bash
328
- npm run pack:all
329
- ```
222
+ - `examples/`:研究与筛选示例脚本
223
+ - `docs/`:贡献说明、测试计划、命令参考
224
+ - `scripts/generate_cli_docs.py`:根据 `commands.json` / `schema.json` 生成命令文档
225
+ - `scripts/generate_schema_json.py`:从 rqdatac 环境生成 schema
330
226
 
331
- 如果只想本地验证当前平台的主包执行链路:
227
+ ## 开发
332
228
 
333
229
  ```bash
334
- npm run build:npm
335
- npm run link:platform
336
- node bin/rqdata.js --version
230
+ ./build.sh
231
+ ./rqdata --help
232
+ python3 scripts/generate_cli_docs.py
337
233
  ```
338
234
 
339
- ## 📝 更新日志
340
-
341
- ### v2.0.0 (2026-03-27) - Go 重写版本
342
-
343
- - ✨ 使用 Go 完全重写,单文件可执行
344
- - 🔐 系统 Keyring 集成,安全存储凭证
345
- - 📖 Schema 自动生成,支持中文参数描述
346
- - 🚀 静态编译,跨平台分发
347
- - 🔧 修复 HTML 转义问题(`array<string>` 显示正确)
348
- - 📊 完整的数据覆盖(指数、A股、港股、期货、期权、基金、宏观)
349
-
350
- ### v1.0.0 (2026-03-10) - C++ 版本
351
-
352
- - ✨ 初始 C++ 版本发布
353
- - 🚀 CURL 连接复用优化
354
- - 📊 完整的数据覆盖
355
-
356
- 详见 [CHANGELOG.md](CHANGELOG.md)
357
-
358
- ## 📄 许可证
359
-
360
- MIT License - 详见 [LICENSE](LICENSE)
361
-
362
- ## 🙏 致谢
363
-
364
- - [RQData](https://www.ricequant.com) - 提供数据 API
365
- - [CLI11](https://github.com/CLIUtils/CLI11) - 命令行解析
366
- - [nlohmann/json](https://github.com/nlohmann/json) - JSON 处理
367
-
368
- ## 📞 支持
369
-
370
- - 🐛 Issues: [Jira](https://jira.ricequant.com)(RiceQuant 内部)
371
- - 📚 文档: [项目文档](http://git.ricequant.com/projects/RQAI/repos/rqdata-cli/browse/docs)
235
+ 集成测试相关说明见 [tests/README.md](tests/README.md)。
372
236
 
373
- ---
237
+ ## License
374
238
 
375
- **注意**: 使用本工具需要有效的 RQData 账号。访问 [ricequant.com](https://www.ricequant.com) 申请试用或购买。
239
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ricequant2026/rqdata-cli",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "RQData CLI for AI agents and quantitative research",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -14,10 +14,10 @@
14
14
  "CHANGELOG.md"
15
15
  ],
16
16
  "optionalDependencies": {
17
- "@ricequant2026/rqdata-cli-linux-x64": "1.0.0",
18
- "@ricequant2026/rqdata-cli-darwin-x64": "1.0.0",
19
- "@ricequant2026/rqdata-cli-darwin-arm64": "1.0.0",
20
- "@ricequant2026/rqdata-cli-win32-x64": "1.0.0"
17
+ "@ricequant2026/rqdata-cli-linux-x64": "1.0.2",
18
+ "@ricequant2026/rqdata-cli-darwin-x64": "1.0.2",
19
+ "@ricequant2026/rqdata-cli-darwin-arm64": "1.0.2",
20
+ "@ricequant2026/rqdata-cli-win32-x64": "1.0.2"
21
21
  },
22
22
  "scripts": {
23
23
  "build:npm": "node scripts/npm/build-packages.js",
@@ -40,10 +40,10 @@
40
40
  },
41
41
  "repository": {
42
42
  "type": "git",
43
- "url": "https://github.com/rqdata/rqdata-cli.git"
43
+ "url": "https://github.com/ricequant/rqdata-cli.git"
44
44
  },
45
- "homepage": "https://github.com/rqdata/rqdata-cli",
45
+ "homepage": "https://github.com/ricequant/rqdata-cli",
46
46
  "bugs": {
47
- "url": "https://github.com/rqdata/rqdata-cli/issues"
47
+ "url": "https://github.com/ricequant/rqdata-cli/issues"
48
48
  }
49
49
  }
@@ -32,7 +32,7 @@ function buildTargets() {
32
32
 
33
33
  for (const target of PLATFORM_TARGETS) {
34
34
  const outputPath = path.join(DIST_DIR, target.output);
35
- const ldflags = `-s -w -X github.com/rqdata/rqdata-cli/cmd.Version=${VERSION}`;
35
+ const ldflags = `-s -w -X github.com/ricequant/rqdata-cli/cmd.Version=${VERSION}`;
36
36
 
37
37
  console.log(`Building ${target.key} -> ${target.output}`);
38
38
  run('go', ['build', '-trimpath', '-ldflags', ldflags, '-o', outputPath, 'main.go'], {