gangtise-openapi-cli 0.40.1 → 0.41.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 CHANGED
@@ -6,13 +6,14 @@
6
6
 
7
7
  README 仅列最近 5 个版本摘要:
8
8
 
9
+ - **v0.41.0 — 2026-09-24**:① **观点列表改走 v2,省积分**:`insight opinion list` / `foreign-opinion list` 默认只返回摘要(`brief`,外资另有 `briefTranslate`,取正文前 200 字),**1 积分/条**;要正文用新增的 `insight opinion detail --chief-opinion-id` / `foreign-opinion detail --foreign-opinion-id`(**30 积分/条**,按返回条数计;ID 可一次传多个,CLI 按 20 个一批自动拆分;没返回正文的 ID 列在 `missingIds`、中途某批失败时未取的 ID 列在 `unfetchedIds`,两种情况都以退出码 3 结束)。想像以前一样列表直接带正文,加 `--with-content`(30 积分/条,返回旧版结构:内资正文在 `contentList.content`;与 `detail` 一样超时不自动重发)。② **题材画像与成分股改走 v2**:`alternative concept-info` / `concept-securities` **50 积分/次**;v2 不含催化事件 `keyEvents`、重点个股标识 `isKey`、纳入理由 `inclusionReason`,需要这几列加 `--full`(500 积分/次)。③ **云盘管理 9 个命令,全部免费**:`vault drive-folder-list`(浏览目录)/ `drive-upload` / `drive-create-folder` / `drive-rename` / `drive-move-file` / `drive-move-folder` / `drive-copy`(把文件复制到另一空间:我的云盘 ↔ 租户云盘)/ `drive-delete-file` / `drive-delete-folder`。两个删除**需 `--yes`**,删文件夹会连同其中全部子文件夹与文件一起删除且不可恢复;云盘允许同名,上传 / 新建 / 复制每跑一次就多一份,这三个与两个删除**超时不自动重发**。④ **新增 `bond` 族 12 个命令,0.4 积分起**:`basic-info`(静态档案)/ `issuer-info` / `daily-quote` / `valuation`(上清所估值)/ `cash-flow` / `announcement` / `issuance-detail` / `rating-overview` / `rating-change`(债项评级变动)/ `issuer-rating-change` / `issuance-plan` / `exercise-notice`。多数按次计费;`rating-overview` 按条、`rating-change` 按有数据的债券只数、`issuer-rating-change` 按发行人计。`--security` **只收标准债券代码**(`019742.SH` / `220205.IB`),简称与拼音整批拒绝(`120001`),先用 `reference securities-search` 换代码;`--field` 写错字段名同样整批拒绝(`100003`),不会静默丢列。**整族超时不自动重发**——计费接口重发会重复扣费,偶发 5xx / 超时请自行重跑。🔴 **`bond announcement` 需手动翻页**:本族唯一分页的接口且**不返回 `total`**,`--page-no` 从 1 起逐页递增直到某页为空。⑤ **`insight highlight list` 会议线索**(会议核心要点信息流;🔴 **5 积分/条,务必带 `--size`**,省略会拉全量;`content` 是 HTML 片段,`--research-area` 不认申万码;按偏移量最多能翻到第 10000 条,超出部分请缩短时间范围分段取)。⑥ **`tool web-search` 联网搜索**(1 积分/次,零结果不扣):`--site` 定向站点、`--min-tier` 收信源等级、`--freshness` 收时效、`--include-content` 取正文(此时 `--size` ≤5)。⚠️ **排序是「信源等级 → 发布日期 → 相关性」,首条不等于最相关**;`publishTime` 判不出时为 `null`,`--freshness` 会把这批一并滤掉,做时点判断别用 `indexTime`。⑦ **常量接口新增 9 个分类**:`fundType` / `fundBondType` / `bondType` / `interestRateType` / `interestFrequency` / `absUnderlyingAssetType` / `ratingType` / `exchange` / `nationalEconomicIndustry`。⑧ **取数前注意几处取值**:`bond issuer-info` 的评级列混合境内外口径,做信用比较一并取 `ratingAgency`;评级值可能带 `sf` / `pi` 后缀;`bond daily-quote` / `valuation` / `issuance-plan` 的 `--start-date` 早于可回溯下界时整批返回 `110003`,把起点移进窗口再查。逐条见 `gangtise-openapi/references/commands/bond.md`。
10
+
9
11
  - **v0.40.1 — 2026-09-19**:**文档修正,无代码变更**。① **字段名写错时两族接口的表现完全不同,现在写明了**:`quote realtime` / `day-kline` / `minute-kline` / `fund-flow` 是**字段名和值一起消失**(列数与值数始终对得上,CLI 标 `partial` + `missingFields`、退出码 3);`fundamental main-business` / `valuation-analysis` 是**字段名照请求回显、行里少一个值**(`fieldList` 比行长,按下标对位会让缺口之后每个值都贴到错误的表头上,CLI 因此直接报错退出 1)。对照表在 `gangtise-openapi/references/fields.md` 顶部。② 订正 `references/commands/fundamental.md` 里一处把这两族说反的类比。**两族都不报错**,所以 `--field` 的字段名要以 `fields.md` 为准,不确定就别传(不传即返回全部字段)。
10
12
 
11
13
  - **v0.40.0 — 2026-09-19**:① **自选股股票池可增删改**:新增 `vault stock-pool-create` / `stock-pool-rename` / `stock-pool-add-stock` / `stock-pool-remove-stock` / `stock-pool-delete` 五个命令,全部免费、只操作本账号数据。**这是本 CLI 仅有的写操作**——`stock-pool-delete` 会连带移除池内全部关注关系且不可恢复,必须显式加 `--yes`(不加则直接报错、不发请求;个股的投资笔记不受影响)。加 / 删自选与删池是**逐条处理**的:单条失败(如证券代码不存在)服务端仍返回成功信封、明细放在 `failList`,CLI 检测到后在 stderr 点名、标 `partial`、**退出码 3**,批量脚本按退出码判断即可。池名上限 10 个字符、不可与已有池重名(分别返回 `230007` / `230006`),每账号最多 30 个池(`230003`);证券代码大小写敏感且要带市场后缀,`600519.sh` / `700.HK` 这类会进 `failList` 而不是报错。**`raw call` 打这些端点时规则完全相同**——`raw call vault.stock-pool.delete` 一样要 `--yes`,逐条失败一样退出 3。② **`indicator time-series` 的日期轴改为自动判定**:不传 `--calendar-type` 时,CLI 先用免费的 `indicator search` 读各指标的 `parameterList`(去重后每个指标码各查一次,并发)——**全部是交易日类指标才按交易日取**(无非交易日空行,单元格也更省),只要有一个报告期类指标就按自然日取。这条很要紧:报告期末常落在非交易日(如 2024-03-31、2024-06-30 均为周日),按交易日取会让报告期类指标**整行全 `null`、退出码 0、不报错**。显式传了 `--calendar-type` 就完全按给的发。③ **`indicator` 截面 / 时序新增单次 30000 单元格上限**(截面 = 证券数 × 指标数,时序 = 序列数 × 日期数),超出报 `100006` 且不返回部分结果——按这个乘积拆批。⚠️ `--security` 传板块 ID 时服务端会展开成全部成分股,实际证券数远大于写进命令的条数。④ 🔴 **Token 缓存绑定签发它的凭证**:同一台机器上换掉 `GANGTISE_ACCESS_KEY` 后,只要上一个账号的 token 还没过期,此前会继续拿它发请求——取到的是**上一个账号**的数据;本版新增的股票池写命令若撞上,改的也会是上一个账号的池。现在凭证一换即重新登录。**`auth login` 报告的是接下来真正会用的身份**(新增 `source` 字段):设了 `GANGTISE_TOKEN` 就报那个注入的 token 并说明未登录,只有走 AK/SK 时才真的登录;返回的 `cache` 描述这次登录本身,缓存落盘失败也不会混进上一个账号。⑤ **`ai knowledge-batch --query` 整段送出**:此前按逗号拆,`--query "比较两家公司毛利率,并解释差异"` 会被拆成两个半句各查一次;多个问题仍用重复 `--query`。⑥ **异步任务的提交与查询都遵守 `--output` / `--format`**:`ai earnings-review` / `viewpoint-debate` 不加 `--wait` 的提交结果,以及 `*-check` 返回「还在生成中」时的 pending 结果,此前都直接打到 stdout——传了 `--output` 却拿到退出 0 加一个不存在的文件,而 pending 恰恰是轮询脚本最需要读的那个。⑦ 错误码:新增 `230003` / `230006` / `230007` 的处置提示;`100006` 的提示补上 EDE 单元格口径。⑧ 文档:分钟线加总对日线的口径更正——**个别历史交易日的分钟数据与日线不一致**,成交量 / 成交额统计一律以日线为准,**别把「Σ分钟 = 日线」写成校验条件**(详见 `gangtise-openapi/references/fields.md`)。
12
14
 
13
15
  - **v0.39.0 — 2026-09-12**:① **导出文件可核验**:`csv` / `jsonl` 的 `<文件>.meta.json` 增加数据文件的字节数 `bytes` 与内容哈希 `sha256`,转交或归档前 `shasum -a 256 <文件>` 比一下,就能确认这份元信息描述的是旁边这份数据。② **并发导出到同一 `--output` 不再互相掺混**:两个进程同时写同一路径时各写各的暂存文件,最终文件是其中某一次的完整产物(此前可能把两次的行混进一个文件、还报成功);收尾时回读比对哈希,文件已被另一次导出替换就在 stderr 说明并**退出码 4**——数据是完整的,只是那个位置上的文件不是本次产物(与退出码 3 同时发生时退出 3)。并发导出请给各自不同的 `--output`。③ **K 线分片合并的缺列护栏**:合并结果的列集取自第一个有数据的分片,只有靠后分片才返回的列放不下——现在标 `partial` + `droppedColumns`、退出码 3 并在 stderr 点名(此前静默丢弃),需要这些列就缩小日期区间单独拉。④ **`fundamental valuation-analysis` 的 `--skip-null` 与 `--field` 同用**:`--skip-null` 判的是 `value` 与 `percentileRank` 两列,`--field` 没点名它们时此前会把每一行都判成空、返回 `{total: 0, list: []}`(读起来像「这只票没有估值历史」);现在自动补取这两列做过滤,输出仍只给 `--field` 点名的列。⑤ `ai stock-summary` 单次上限由 5000 放宽到接口上限 **6000**,全 A 股可一次提交完。⑥ 文档:EDE 指标覆盖按当前实测更新——`finc_pe_ttm` / `finc_pb_mrq` 港股均有数。分钟线加总对日线的口径见 `gangtise-openapi/references/fields.md`。
14
16
  - **v0.38.0 — 2026-09-06**:① `quote realtime` / `day-kline` / `minute-kline` 支持**沪深 ETF**(`512800.SH`)与 **20 个全球指数**(`SPX.SPI` 标普500 / `N225.NKI` 日经225 / `HSI.HI` 恒生…,清单见 `gangtise-openapi/references/commands/quote.md`),代码直接传即可;全市场关键字 `aShares` 不含 ETF;全球指数 realtime 的 `volume` / `amount` / `amplitude` 与分钟 K 的 `volume` / `amount` 为 `null`,日 K 只有 `amount` 为 `null`;`tradeTime` 是交易所当地时间。② `quote realtime` 字段集:新增 `tradeStatus`(仅 A 股 / 港股个股有值),`turnoverRate` / `volumeRatio` 不返回,美股 `amount` 为 `null`。③ **缺列护栏**:`quote` 系带 `--field` 时,请求了但服务端没回的列(字段名写错或已下线,服务端不报错)标 `partial` + `missingFields`、退出码 3 并在 stderr 点名;`--field` 只回点名的列、不自动附带身份列(日 K 要自己写进 `securityCode` / `tradeDate`,分钟 K 是 `securityCode` / `tradeTime`,realtime 是 `securityCode`;`fund-flow` 会自动附带)。④ **列结构护栏**:K 线全市场分片合并按列名对齐各片;响应的 `fieldList` 有重名列、或数组行没有 `fieldList` 时报错退出 1,不按位置拍平;`quote` 单请求收到无 `list` 的载荷报错退出 1;全量翻页从末页起步时同样做 `total` 封顶探测;后续页 / 分片自带的 `partial` 保留到合并结果。⑤ `fundamental earning-forecast` 的 `roe` 单位为百分比(`35.6` = 35.6%)。⑥ ETF 有复权因子:day-kline `adjustFactor` 与 EDE `qte_adj_factor` 都覆盖。⑦ 文档:`SKILL.md` 精简为规则 + 路由 + 引用,错误码全表、不报错的坑、`screener` 缺列判据与困境自救集中在 `references/errors.md`。⑧ `quote minute-kline` 的 `--security` 可重复,逐只并发请求后按传入顺序合并;`quote day-kline` 显式多证券在「证券数 × 交易日数」超过 `--limit` 时自动逐只请求合并,撞上限的证券标 `partial` + `truncatedSecurities`。⑨ **大导出**:`--format jsonl` / `csv` 加 `--output` 时,翻页 / 分片 / 逐只结果按到达顺序逐批写盘,内存不随行数增长(csv 磁盘两遍);落盘时旁边生成 `<文件>.meta.json`(命令、数据行数、列、`complete` 与 `partial` 等完整性标记、抓取时间与时区、CLI 版本;密钥类字段脱敏),文件转交后仍可核验。⑩ `ai stock-summary` 单次最多 5000 只(更大的批次服务端返回空列表,CLI 本地拦截并提示分批)。⑪ A 股公告与 `ai knowledge-batch` 的 `--start-time` / `--end-time` 按**北京时间**换算成毫秒,与运行机器的时区无关。⑫ 省略 `--output` 的自动命名下载并发时各得其名、不互相覆盖;`raw call auth.login` 不需要环境里先有凭证。
15
- - **v0.37.1 — 2026-08-31**:**文档修正,无代码变更**。① `indicator screener` 用静态属性选股的示例补进 README——`pty_*`(经营范围·注册地…)/ `scr_*`(上市板块·ISIN…)两族用 `--indicator-param "F1:"`(冒号后留空)声明该指标不吃查询日期后,可直接用于条件选股。② **数据权限时间范围的说明按实测更正**:这个窗口按**账号**配、不按接口配——`indicator` 的 `cross-section` / `time-series` / `screener` 与 `quote day-kline` 在同一条边界上,**撞到 `110003` 换接口绕不过去**,正确做法是把日期移进权限范围,或联系客户经理开通更长历史。③ EDE 文本筛选示例换成有区分度的条件,避免示例条件把整个板块原样返回、看不出筛选是否生效。
16
17
  ### 历史里程碑
17
18
 
18
19
  - **v0.37.0**:下载的「智能文件命名」改为默认只读缓存,缓存未命中不再自动回查 list 接口(省下按条计费的开销),要中文文件名加 `--resolve-title`。
@@ -148,7 +149,7 @@ cp -r "$SKILL_SRC" ~/.hermes/skills/gangtise-openapi
148
149
  |------|--------|------|
149
150
  | **Auth** | `login` / `status` | 认证登录、状态查询 |
150
151
  | **Lookup** | `broker-org list` / `meeting-org list` | 券商/会议机构本地全量枚举表(按名称找 ID 优先 `reference institution-search`;行业/区域/公告分类/题材/申万码已改用 Reference 接口) |
151
- | **Insight** | `opinion list` | 内资机构观点 |
152
+ | **Insight** | `opinion list` / `detail` | 内资机构观点(列表只含摘要 1 积分/条;`detail` 按 ID 取正文 30 积分/条;`list --with-content` 列表直接带正文 30 积分/条) |
152
153
  | | `summary list` / `download` | 纪要(含下载,支持 `--file-type` 选原始/HTML) |
153
154
  | | `pamirs-summary list` / `download` | 帕米尔专家纪要(需单独购买专家纪要库;筛选项比 `summary` 少,无 `--source`/`--institution`/`--participant-role`) |
154
155
  | | `roadshow list` | 路演 |
@@ -161,11 +162,12 @@ cp -r "$SKILL_SRC" ~/.hermes/skills/gangtise-openapi
161
162
  | | `announcement list` / `download` | A股公告(含 Markdown 下载) |
162
163
  | | `announcement-hk list` / `download` | 港股公告(含 PDF/Markdown 下载) |
163
164
  | | `announcement-us list` / `download` | 美股公告(含 PDF/Markdown 下载) |
164
- | | `foreign-opinion list` | 外资机构观点 |
165
+ | | `foreign-opinion list` / `detail` | 外资机构观点(同上:列表摘要 + `detail` 取原文与译文) |
165
166
  | | `independent-opinion list` / `download` | 外资独立分析师观点(含原文/翻译HTML下载) |
166
167
  | | `official-account list` / `download` | 产业公众号资讯(含 txt/HTML 下载) |
167
168
  | | `qa list` | 投资者问答 QA(互动平台/电话会议/调研纪要,按证券) |
168
169
  | | `report-image list` / `download` | 研报图表搜索(按关键词,含原图 JPEG 下载) |
170
+ | | `highlight list` | 会议线索(会议核心要点信息流,按时间倒序;5 积分/条) |
169
171
  | **Reference** | `securities-search` | GTS Code 搜索(按名称/代码/拼音匹配) |
170
172
  | | `chiefs-search` | 首席分析师 ID 搜索(按姓名/机构/团队匹配) |
171
173
  | | `institution-search` | 机构 ID 搜索(内资券商/外资/牵头/观点机构,按名称匹配) |
@@ -189,6 +191,18 @@ cp -r "$SKILL_SRC" ~/.hermes/skills/gangtise-openapi
189
191
  | | `valuation-analysis` | 估值分析 |
190
192
  | | `earning-forecast` | 盈利预测(一致预期) |
191
193
  | | `top-holders` | 前十大股东/前十大流通股东 |
194
+ | **Bond** | `basic-info` | 债券基本资料(发行、期限、票息、评级、担保、特殊条款、可转债与 ABS 专项) |
195
+ | | `issuer-info` | 发债主体基本信息(`--security` 按债券码 或 `--issuer` 按主体名,二选一) |
196
+ | | `daily-quote` | 债券日收盘行情(全价/净价、YTM、久期、凸性) |
197
+ | | `valuation` | 上清所估值(估值价格、收益率、久期、凸性、PVBP) |
198
+ | | `cash-flow` | 债券付息兑付明细(兑付计划与应付现金流) |
199
+ | | `announcement` | 债券公告(`--security` 或 `--start-date`/`--end-date` 二选一;手动翻页,见下) |
200
+ | | `issuance-detail` | 债券发行增发明细(招标、定价、认购倍数) |
201
+ | | `rating-overview` | 债券评级一览(债项/发行人/担保人评级并列,单次最多 10 只) |
202
+ | | `rating-change` | 债项评级变动历史(单次最多 10 只) |
203
+ | | `issuer-rating-change` | 发债主体评级变动历史(`--security` 或 `--issuer` 二选一) |
204
+ | | `issuance-plan` | 利率债发行计划(按发行日期区间) |
205
+ | | `exercise-notice` | 含权债行权提示(行权安排与行权结果) |
192
206
  | **AI** | `knowledge-batch` | 知识库批量检索 |
193
207
  | | `knowledge-resource-download` | 知识资源下载 |
194
208
  | | `security-clue` | 个股线索 |
@@ -204,6 +218,11 @@ cp -r "$SKILL_SRC" ~/.hermes/skills/gangtise-openapi
204
218
  | | `management-discuss-earnings-call` | 管理层讨论-业绩会 |
205
219
  | | `viewpoint-debate` / `viewpoint-debate-check` | 观点PK(异步) |
206
220
  | **Vault** | `drive-list` / `drive-download` | 云盘文件列表与下载 |
221
+ | | `drive-folder-list` | 云盘目录浏览(某文件夹下的直接子文件夹与文件) |
222
+ | | `drive-upload` / `drive-create-folder` / `drive-rename` | 上传文件、新建文件夹、重命名(均免费) |
223
+ | | `drive-move-file` / `drive-move-folder` | 移动文件与文件夹(同一空间内) |
224
+ | | `drive-copy` | 把文件复制到另一空间(我的云盘 ↔ 租户云盘;目前只支持文件) |
225
+ | | `drive-delete-file` / `drive-delete-folder` | 删除文件 / 文件夹(需 `--yes`;删文件夹连同其中内容一起删除,不可恢复) |
207
226
  | | `record-list` / `record-download` | 录音速记列表与下载 |
208
227
  | | `my-conference-list` / `my-conference-download` | 我的会议列表与下载 |
209
228
  | | `wechat-message-list` / `wechat-chatroom-list` | 群消息列表与群ID查询 |
@@ -216,10 +235,11 @@ cp -r "$SKILL_SRC" ~/.hermes/skills/gangtise-openapi
216
235
  | | `screener` | 条件选股(按指标表达式从证券/板块范围筛股;前置 `search` 拿 code) |
217
236
  | **Alternative** | `edb-search` | 行业指标搜索(按关键词匹配,返回 indicatorId 等元信息) |
218
237
  | | `edb-data` | 行业指标时序数据(批量拉取,最多10个指标) |
219
- | | `concept-info` | 题材指数基本信息(投资逻辑/行业空间/竞争格局/催化事件) |
220
- | | `concept-securities` | 题材指数成分股(题材深度F8,按分组,标记重点个股) |
238
+ | | `concept-info` | 题材指数基本信息(定义/投资逻辑/行业空间/竞争格局;50 积分/次,`--full` 另含催化事件 500 积分/次) |
239
+ | | `concept-securities` | 题材指数成分股(按分组;50 积分/次,`--full` 另含重点个股标识与纳入理由 500 积分/次) |
221
240
  | **Tool** | `file-parse` / `file-parse-check` | PDF 解析为 Markdown + 图片(异步,返回 ZIP) |
222
- | **Raw** | `call` | 原始接口调用(可访问任意 JSON / download endpoint;upload 型如 `tool.file-parse.submit` 需走 `tool file-parse`,raw 带不了文件) |
241
+ | | `web-search` | 联网搜索(公开互联网定向检索,信源分级 T0–T3,可选返回正文;1 积分/次) |
242
+ | **Raw** | `call` | 原始接口调用(可访问任意 JSON / download endpoint;upload 型的 `tool.file-parse.submit` / `vault.drive.upload` 需走 `tool file-parse` / `vault drive-upload`,raw 带不了文件) |
223
243
 
224
244
  ## 命令概览
225
245
 
@@ -228,6 +248,7 @@ cp -r "$SKILL_SRC" ~/.hermes/skills/gangtise-openapi
228
248
  - `gangtise insight ...`
229
249
  - `gangtise quote ...`
230
250
  - `gangtise fundamental ...`
251
+ - `gangtise bond ...`
231
252
  - `gangtise ai ...`
232
253
  - `gangtise vault ...`
233
254
  - `gangtise indicator ...`
@@ -247,6 +268,9 @@ gangtise reference constant-list --category gangtiseIndustry # 研究方向
247
268
  gangtise reference constant-list --category swIndustry # 申万行业
248
269
  gangtise reference constant-list --category regionCategory # 外资研报区域
249
270
  gangtise reference constant-list --category aShareAnnouncementCategory # A股公告分类(树形)
271
+ gangtise reference constant-list --category bondType # 债券类型
272
+ gangtise reference constant-list --category ratingType # 评级类型
273
+ gangtise reference constant-list --category exchange # 交易市场
250
274
  gangtise reference sector-constituents --sector-id 2000000014 # 申万行业代码 821xxx.SWI 全量(security-clue --gts-code 用)
251
275
  gangtise lookup broker-org list # 券商机构(本地表)
252
276
  gangtise lookup meeting-org list # 会议机构(本地表)
@@ -268,7 +292,7 @@ gangtise ai knowledge-batch --query 比亚迪 --query 最近热门概念
268
292
  - **流式下载**:指定 `--output` 时,二进制响应(PDF 等)直接 `pipeline` 到磁盘,不经过内存缓冲;50MB PDF 内存占用近乎为零。
269
293
  - **流式输出**:`--format jsonl` 或 `csv` 加 `--output <file>` 时,翻页 / 全市场分片 / 逐只请求的行**按到达顺序逐批写盘**,取数阶段不再持有整份结果,内存不随行数增长(80 万行导出常驻约 150 MB);csv 先落临时行文件、收尾时按列并集写表头再转成 csv(磁盘两遍、内存不变)。不足 1000 行的结果仍走原来的整体写出,文件字节与之前一致。任一只 / 页 / 片失败,命令退出时后台已无取数与写盘,不留 `.part`。
270
294
  - **导出元信息**:`csv` / `jsonl` 落盘时旁边生成 `<文件>.meta.json`——命令行、数据行数、列名、`complete`(与退出码一致:退出 3 即 `false`)、`total` / `partial` / `failedPages` / `failedShards` / `truncatedShards` / `droppedColumns` / `missingFields` 等全部完整性标记、抓取时间与时区、CLI 版本,以及数据文件的字节数 `bytes` 与内容哈希 `sha256`。命令行与结果里的 key / secret / token 类字段写成 `[redacted]`。元信息在数据文件发布之后才就位,导出失败不会留下新数据配旧元信息。**转交或归档前建议核一次**:`shasum -a 256 <文件>` 与元信息里的 `sha256` 相等,才说明这份元信息描述的就是旁边这份数据——两个进程同时导出到**同一个 `--output`** 时,最终文件一定是其中某一次的完整产物,但旁边的元信息有可能来自另一次,核哈希就能发现。**输的那一次自己也会报**:收尾时回读一次 `--output`,与本次写出的哈希不符就在 stderr 说明「这个文件不是本次命令的产物」并**退出码 4**。这两种格式的文件本身只有数据行,转交之后靠它核验是否完整;`json` 自带标记,不生成。
271
- - **自动重试**:5xx / 429 / `ECONNREFUSED` / `ECONNRESET` / `ETIMEDOUT` / `ENOTFOUND` / `EAI_AGAIN` / `UND_ERR_*`(undici 连接/超时类)/ `999999` 系统错误自动指数退避重试 2 次。**不重放的端点例外**(贵档:one-pager 等生成/提交类 + `tool file-parse` 提交 + 50/篇 的 summary / foreign-report / my-conference 下载 + 单价未公布但保守同档的 pamirs-summary 下载;另加不计分但不可重复执行的 `vault stock-pool-create`,共 19 个):5xx/超时不重放,仅连接失败、429 与 token 自愈重试。**两类端点各有各的理由**:贵档是**重放会重复扣分**——服务端可能已经执行并计费,重发按次计费的再扣一次,重发按篇/按条计费的会把已交付的行再计一次;`stock-pool-create` 是**重放会把成功报成失败**——池名不允许与已有池重复,重发一个其实已经建成的请求,回来的是 `230006 股票池名称重复`。**`indicator`(EDE)端点对 `999999` 不重试**——重放一次已计费的查询没有意义(EDE 无数据不用此码,而是保留行列的占位单元格 `null`;空表另表示整轴 code 未识别或参数名写错)。**终态码 `999011`(凭证无效)/ `140002`(异步生成失败)在任何 HTTP 状态下都不重试**——凭证错不会因重试而变,异步生成失败是终态。
295
+ - **自动重试**:5xx / 429 / `ECONNREFUSED` / `ECONNRESET` / `ETIMEDOUT` / `ENOTFOUND` / `EAI_AGAIN` / `UND_ERR_*`(undici 连接/超时类)/ `999999` 系统错误自动指数退避重试 2 次。**不重放的端点例外**(贵档:one-pager 等生成/提交类 + `tool file-parse` 提交 + 50/篇 的 summary / foreign-report / my-conference 下载 + 单价未公布但保守同档的 pamirs-summary 下载 + 题材 `concept-info` / `concept-securities`(含 `--full`);按次计费的 `bond` 全部 12 个命令与 `tool web-search`;按条计费的 `insight highlight list`、观点 `detail` 与 `list --with-content`;另加不计分但不可重复执行的 `vault stock-pool-create` 与云盘的上传 / 新建文件夹 / 复制 / 两个删除,共 44 个):5xx/超时不重放,仅连接失败、429 与 token 自愈重试。**两类端点各有各的理由**:贵档是**重放会重复扣分**——服务端可能已经执行并计费,重发按次计费的再扣一次,重发按篇/按条计费的会把已交付的行再计一次;不计分的那几个是**重放会造成副作用或把成功报成失败**——股票池名不允许重复,重发一个其实已经建成的请求,回来的是 `230006 股票池名称重复`;云盘允许同名,重发上传 / 新建 / 复制会多出一份;重发一个其实已经删掉的删除,回来的是「文件不存在」或 `130002`。**`indicator`(EDE)端点对 `999999` 不重试**——重放一次已计费的查询没有意义(EDE 无数据不用此码,而是保留行列的占位单元格 `null`;空表另表示整轴 code 未识别或参数名写错)。**终态码 `999011`(凭证无效)/ `140002`(终态失败:异步生成失败、参数错误或业务处理失败)在任何 HTTP 状态下都不重试**——凭证错不会因重试而变,`140002` 立即重发得到的还是同一结果。
272
296
 
273
297
  <!-- no-replay-endpoints
274
298
  上面那句点名的「不重放」端点,完整清单如下(endpoint key,与 `gangtise raw list` 一致):
@@ -284,11 +308,36 @@ ai.research-outline
284
308
  ai.theme-tracking
285
309
  ai.viewpoint-debate.get-id
286
310
  alternative.concept-info
311
+ alternative.concept-info-full
287
312
  alternative.concept-securities
313
+ alternative.concept-securities-full
314
+ bond.announcement
315
+ bond.basic-info
316
+ bond.cash-flow
317
+ bond.daily-quote
318
+ bond.exercise-notice
319
+ bond.issuance-detail
320
+ bond.issuance-plan
321
+ bond.issuer-info
322
+ bond.issuer-rating-change
323
+ bond.rating-change
324
+ bond.rating-overview
325
+ bond.valuation
326
+ insight.foreign-opinion.detail
327
+ insight.foreign-opinion.list-with-content
288
328
  insight.foreign-report.download
329
+ insight.highlight.list
330
+ insight.opinion.detail
331
+ insight.opinion.list-with-content
289
332
  insight.pamirs-summary.download
290
333
  insight.summary.download
291
334
  tool.file-parse.submit
335
+ tool.web-search
336
+ vault.drive.copy
337
+ vault.drive.create-folder
338
+ vault.drive.delete-file
339
+ vault.drive.delete-folder
340
+ vault.drive.upload
292
341
  vault.my-conference.download
293
342
  vault.stock-pool.create
294
343
  -->
@@ -319,6 +368,7 @@ vault.stock-pool.create
319
368
  - `insight independent-opinion list`
320
369
  - `insight official-account list`
321
370
  - `insight qa list`
371
+ - `insight highlight list`
322
372
  - `ai security-clue`
323
373
  - `vault drive-list`
324
374
  - `vault record-list`
@@ -378,7 +428,11 @@ gangtise insight research list --industry 100800126 --category company --llm-tag
378
428
  # 多值 List 模式:一次查多家券商 + 多个行业 + 多个评级
379
429
  gangtise insight research list --broker C100000027 --broker C100000014 --industry 100800119 --industry 100800118 --rating buy --rating overweight --format json
380
430
 
381
- gangtise insight opinion list --keyword AI
431
+ # 观点列表只含摘要(brief,1 积分/条);要正文按 ID 取 detail(30 积分/条,一次可传多个 ID)
432
+ gangtise insight opinion list --keyword AI --size 20
433
+ gangtise insight opinion detail --chief-opinion-id 4047400241800281391 --chief-opinion-id 2581139
434
+ # 想让列表直接带正文(30 积分/条);注意内资旧版结构:标题与正文在 contentList.title / contentList.content
435
+ gangtise insight opinion list --keyword AI --size 20 --with-content
382
436
  gangtise insight summary list --keyword 算力
383
437
 
384
438
  # 帕米尔专家纪要(需单独购买专家纪要库;全文搜索 + 时间倒序)
@@ -419,6 +473,8 @@ gangtise insight announcement-us download --announcement-id 49629029 --file-type
419
473
  # 外资机构观点
420
474
  gangtise insight foreign-opinion list --keyword "自动驾驶" --region us --rank-type 2 --format json
421
475
  gangtise insight foreign-opinion list --security APP.O --rating buy --format json
476
+ # 外资观点原文 + 中文译文(content / contentTranslate)
477
+ gangtise insight foreign-opinion detail --foreign-opinion-id 10911654
422
478
 
423
479
  # 外资独立观点
424
480
  gangtise insight independent-opinion list --keyword "肿瘤" --industry 100800118 --format json
@@ -442,8 +498,16 @@ gangtise insight performance-calendar list --start-date 2026-07-01 --end-date 20
442
498
  --market aShares --category performanceForecast --size 20 --format json
443
499
  # 下载业绩报告原文(仅 hasAttachment: true 的记录;A股 10 积分 / 港美股 20 积分)
444
500
  gangtise insight performance-calendar download --performance-report-id 33753017 --output ./业绩预告.pdf
501
+
502
+ # 会议线索:会议核心要点信息流(按时间倒序;5 积分/条,务必带 --size 控量)
503
+ gangtise insight highlight list --size 20 --format json
504
+ gangtise insight highlight list --security 09992.HK --start-time 2026-09-01 --size 10
505
+ # 按研究方向筛(中信行业码 1008001xx 或 Gangtise 方向码 122000xxx;申万码此处不认)
506
+ gangtise insight highlight list --research-area 100800129 --size 10
445
507
  ```
446
508
 
509
+ > `highlight list` 的 `content` 是 HTML 片段(整体 `<p>` 包裹、小标题 `<strong>`,无其他标签),需要纯文本自行去标签。按偏移量最多能取到第 10000 条(`--from` + 条数不超过 10000),命中更多时 CLI 取到第 10000 条为止并以退出码 3 提示,请缩短时间范围分段取。
510
+
447
511
  ### Reference
448
512
 
449
513
  ```bash
@@ -554,6 +618,46 @@ gangtise fundamental balance-sheet-us --security-code TSLA.O --fiscal-year 2025
554
618
  gangtise fundamental cash-flow-us --security-code TSLA.O --fiscal-year 2024 --fiscal-year 2025 --period annual --field netOpCashFlows
555
619
  ```
556
620
 
621
+ ### Bond(债券)
622
+
623
+ ```bash
624
+ # 基本资料:不传 --field 返回全部字段;字段名写错整批拒绝(100003),不会静默丢列
625
+ gangtise bond basic-info --security 019742.SH --field securityName --field couponRate --field maturityDate --field issueSize
626
+ # 债券代码只接受标准格式;只有简称或拼音时先换代码
627
+ gangtise reference securities-search --keyword 24特国01
628
+
629
+ # 发债主体:--security(按债券码找发行人)与 --issuer(按主体名模糊匹配)二选一
630
+ gangtise bond issuer-info --security 136236.SH
631
+ gangtise bond issuer-info --issuer 国家电网有限公司 --field issuerName --field swIndustry --field latestIssuerRating --field ratingAgency
632
+
633
+ # 行情与估值:日期区间必填
634
+ gangtise bond daily-quote --security 019742.SH --start-date 2026-09-15 --end-date 2026-09-19 --field cleanClose --field ytmClose --field modifiedDuration
635
+ gangtise bond valuation --security 019742.SH --start-date 2026-09-15 --end-date 2026-09-19
636
+
637
+ # 兑付计划、发行明细、行权提示:日期可省略,省略则返回全部历史
638
+ gangtise bond cash-flow --security 019742.SH
639
+ gangtise bond issuance-detail --security 019742.SH --start-date 2024-01-01 --end-date 2024-12-31
640
+ gangtise bond exercise-notice --security 136236.SH
641
+
642
+ # 评级:overview 是债项/发行人/担保人三方评级并列,rating-change 是债项评级变动历史(两者单次最多 10 只)
643
+ gangtise bond rating-overview --security 136236.SH
644
+ gangtise bond rating-change --security 149478.SZ --start-date 2023-01-01 --end-date 2026-09-20
645
+ gangtise bond issuer-rating-change --issuer 国家电网有限公司 --start-date 2026-01-01 --end-date 2026-09-20
646
+
647
+ # 利率债发行计划(按发行日期区间,不按债券码)
648
+ gangtise bond issuance-plan --start-date 2026-09-01 --end-date 2026-09-30
649
+
650
+ # 公告:按债券码 或 按公告日期区间,二选一(同传报 100003)
651
+ gangtise bond announcement --security 019742.SH --page-size 50
652
+ gangtise bond announcement --start-date 2026-09-18 --end-date 2026-09-19 --page-no 2 --page-size 50
653
+ ```
654
+
655
+ > **`bond announcement` 需要手动翻页**:它是本系列唯一分页的接口,且响应**不返回 `total`**,因此不走 CLI 的自动翻页——`--page-no` 从 1 开始逐页递增,翻过末页返回空数组(退出码 0)即停;条件下一条都没有时第 1 页就返回 `130001`(退出码 1)。⚠️ 按日期区间查询时返回的 `securityCode` 不带市场后缀,要接着查其他债券命令,先用该行的 `securityName` 走 `reference securities-search` 换回带后缀的代码。其余债券命令一次返回全部匹配行。
656
+
657
+ > **`bond issuer-info` 的行业有两套**:`swIndustry` 是申万「一级/二级」(如 `食品饮料/白酒Ⅱ`),`nationalIndustry` 是国民经济行业分类。评级列 `latestIssuerRating` 混合了境内与境外口径,做信用比较前一并取 `ratingAgency` 判断。
658
+
659
+ > **债券命令计费**(多数按次,`rating-overview` 按条、`rating-change` 按有数据的债券只数、`issuer-rating-change` 按发行人),且超时 / 5xx 不自动重放(避免重复扣费)——偶发失败请自行重跑。
660
+
557
661
  ### AI
558
662
 
559
663
  ```bash
@@ -597,6 +701,22 @@ gangtise vault drive-list --keyword 部门文档 --space-type 1 --file-type 1
597
701
  gangtise vault drive-download --file-id 62130
598
702
  # → 2028 全球智能危机 一份来自未来的金融史思想实验 .pdf
599
703
 
704
+ # 云盘目录浏览(--space-type 1=我的云盘〔默认〕 2=租户云盘;不传 --parent-id 即根目录)
705
+ gangtise vault drive-folder-list --space-type 1
706
+ gangtise vault drive-folder-list --space-type 1 --parent-id 101
707
+ # 新建文件夹 → 上传到该文件夹(单个文件 ≤100MB;--title 不传则用本地文件名)
708
+ gangtise vault drive-create-folder --name 2026Q3 --parent-id 101
709
+ gangtise vault drive-upload --file ./行业深度报告.pdf --folder-id 103
710
+ # 重命名 / 移动(同一空间内)
711
+ gangtise vault drive-rename --type folder --id 103 --name 2026三季报
712
+ gangtise vault drive-move-file --file-id 49412 --file-id 43319 --target-folder-id 103
713
+ gangtise vault drive-move-folder --folder-id 103 --target-parent-id root
714
+ # 跨空间复制文件:个人云盘的文件复制到租户云盘某文件夹(root = 租户云盘根目录)
715
+ gangtise vault drive-copy --file-id 49412 --file-id 43319 --target-folder-id 201
716
+ # 删除(不可恢复,需 --yes;删文件夹会连同其中全部子文件夹与文件一起删除)
717
+ gangtise vault drive-delete-file --file-id 49412 --yes
718
+ gangtise vault drive-delete-folder --folder-id 103 --yes
719
+
600
720
  # 录音速记列表
601
721
  gangtise vault record-list --keyword 晨会 --category upload --category mobile
602
722
  # 录音速记下载(--content-type: original/asr/summary)
@@ -622,7 +742,7 @@ gangtise vault stock-pool-stocks --pool-id 808477293
622
742
  gangtise vault stock-pool-stocks
623
743
 
624
744
  # 维护股票池:建池 → 批量关注 → 改名 → 取消关注 → 删池
625
- # (这五个命令会改动账号数据,是本 CLI 仅有的写操作)
745
+ # (这五个命令会改动账号数据;云盘的上传 / 新建 / 重命名 / 移动 / 复制 / 删除同样会,见上方 Vault 云盘管理)
626
746
  gangtise vault stock-pool-create --name "AI算力观察"
627
747
  gangtise vault stock-pool-add-stock --pool-id 808477293 --security 600519.SH --security 000858.SZ
628
748
  gangtise vault stock-pool-rename --pool-id 808477293 --name "核心持仓"
@@ -631,6 +751,8 @@ gangtise vault stock-pool-remove-stock --pool-id 808477293 --security 000858.SZ
631
751
  gangtise vault stock-pool-delete --pool-id 808477293 --yes
632
752
  ```
633
753
 
754
+ > 云盘允许同名文件与文件夹(以 ID 区分),上传 / 新建 / 复制每执行一次就多一份,所以这三个命令超时不会自动重发;超时后重试前先用 `drive-folder-list` 看一眼是否已经存入。
755
+
634
756
  ### Indicator(证券级数据指标 EDE)
635
757
 
636
758
  ```bash
@@ -716,12 +838,14 @@ gangtise alternative edb-data \
716
838
 
717
839
  # 题材指数:先查 conceptId(与 theme-id 共用 ID 体系),再拉画像 / 成分股
718
840
  gangtise reference concept-search --keyword 机器人 --format json # → 121000130
841
+ # 画像:定义 / 投资逻辑 / 行业空间 / 竞争格局(50 积分/次);--full 另含催化事件 keyEvents(500 积分/次)
719
842
  gangtise alternative concept-info --concept-id 121000130 --format json
720
- # 题材成分股(题材深度 F8,按分组返回,标记重点个股)
843
+ # 成分股(按分组返回,50 积分/次);--full 另含重点个股标识 isKey 与纳入理由 inclusionReason(500 积分/次)
721
844
  gangtise alternative concept-securities --concept-id 121000130 --format json
845
+ gangtise alternative concept-securities --concept-id 121000130 --full --format json
722
846
  ```
723
847
 
724
- ### Tool(PDF 解析)
848
+ ### Tool(PDF 解析 / 联网搜索)
725
849
 
726
850
  ```bash
727
851
  # 一步到位:上传 → 阻塞等待 → 结果 ZIP 落盘(含 file.md + images/)
@@ -734,6 +858,22 @@ gangtise tool file-parse-check --task-id 829081108954501120 --output ./研报.zi
734
858
 
735
859
  限制:单文件 ≤100MB、≤500 页,同一用户最多 10 个并发任务;未就绪时 `file-parse-check` 输出 `{"status":"pending"}`(退出码 0),重试即可,不会重复扣费。
736
860
 
861
+ ```bash
862
+ # 联网搜索:轻搜,默认 10 条摘要,按信源等级升序 + 发布日期降序
863
+ gangtise tool web-search --query "宁德时代 2026年半年报 营收 净利润" --size 5
864
+
865
+ # 定向站点 + 只要官方与权威媒体(--site 最多 10 个,相互之间是"或")
866
+ gangtise tool web-search --query "减持新规" --site csrc.gov.cn --site sse.com.cn --min-tier T1
867
+
868
+ # 限定时效窗口(无法解析出发布日期的结果在 day/week/month 下不返回)
869
+ gangtise tool web-search --query "券商 合并 传闻 辟谣" --freshness week
870
+
871
+ # 精读:返回网页正文(Markdown),此时 --size 上限降为 5
872
+ gangtise tool web-search --query "上市公司股东减持股份管理暂行办法" --site csrc.gov.cn --include-content --max-content-chars 6000 --size 2 --format json
873
+ ```
874
+
875
+ 检索词原样发送,服务端不做意图推断或改写,限定站点要显式用 `--site`。结果字段里 `publishTime` 是规则判定的发布日期(判不出为 `null`,排序与 `--freshness` 只用它),`indexTime` 是索引记录的网页时间、不保证是发布时间。`tier` 为信源等级 T0–T3,`flags` 标出传闻、转载、免责声明、疑似荐股、付费墙等特征。
876
+
737
877
  ### Raw
738
878
 
739
879
  ```bash
@@ -809,7 +949,7 @@ datetime 参数(`--start-time` / `--end-time`)同理,只归一日期部分
809
949
  | `999012` / `999013` / `999014` | 账号禁用 / 已过期 / 租户失效 |
810
950
  | `999016` | 调用方 IP 不在允许范围 |
811
951
  | `999999` | Gangtise 系统错误,请稍后重试(EDE 无数据不用此码:有效 code 无数据返回占位单元格 `null`,此码基本只剩真故障) |
812
- | `140002` | 终态失败:AI 异步生成失败,或 `indicator` 的参数/表达式错误(枚举越界、语法错)——改参数重提,不重试 |
952
+ | `140002` | 终态失败:AI 异步生成失败、`indicator` 的参数/表达式错误(枚举越界、语法错),或其他接口的「业务处理失败」——参数问题改参数重提;业务处理失败稍后再试;都不自动重试 |
813
953
  | `100003` | 参数值非法——**最宽的兜底码**;msg 通常已指明字段(如「limit 最小为 1,最大为 10000」),先读 msg |
814
954
  | `100001` | 缺必填参数(msg 带字段名,如「缺少必填参数: reportId」) |
815
955
  | `100006` | 查询/下载数量超限(旧码 `430007`) |