gangtise-openapi-cli 0.44.0 → 0.46.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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: gangtise-openapi
3
- version: "0.44.0"
3
+ version: "0.46.0"
4
4
  description: |-
5
5
  通过 gangtise CLI 直接调用 Gangtise OpenAPI,拉取投研原始数据、批量导出、下载文件、调用 AI 能力。
6
6
 
@@ -24,7 +24,7 @@ description: |-
24
24
 
25
25
  1. **`--format json`**:列表/数据类必加。AI 内容生成(`one-pager` / `investment-logic` / `peer-comparison` / `research-outline` / `*-check`)也加 json,但呈现时**直接取 `content` 字段**,不要展示 JSON 包装层。
26
26
  2. **opaque ID**:先读 `references/lookup-ids.md`;找不到再按类型查——行业 / 区域 / 公告分类 / 城市 → `reference constant-list --category <分类>`(分类代码用 `reference constant-category` 查);题材 → `reference concept-search`;板块 → `reference sector-search`;券商 / 牵头 / 观点机构 → `reference institution-search`(按返回的 `usageScopes` 选能喂给目标参数的 ID)。**绝不猜测**。
27
- 3. **公司名 → 证券代码**:先查下方速查表(几只常用大盘股),其余一律 `gangtise reference securities-search --keyword <名> --category stock` 取 `list[0].gtsCode`。
27
+ 3. **公司名 → 证券代码**:先查下方速查表(几只常用大盘股),其余一律 `gangtise reference securities-search --keyword <名> --category stock`,取第一条 `category` 为 `stock` 的 `gtsCode`(按简称查时同名可转债可能排在前面)。
28
28
  4. **时间格式**:datetime `"YYYY-MM-DD HH:mm:ss"`(引号包裹),date `YYYY-MM-DD`(`YYYY/MM/DD`、`YYYYMMDD` 也收,会归一;**年在后写法一律拒绝**);`--indicator-param` 里 `reportDate` / `tradeDate` 等以 `Date` 结尾的值同样适用。
29
29
  5. **多值参数**:优先重复传(最稳、最明确):`--security 600519.SH --security 000858.SZ`。代码 / ID / 字段名类参数也接受半/全角逗号、顿号、分号或空格分隔(语音输入容错),重复值自动去掉;名称类(`--manager` / `--issuer` / `--room-name` / `--knowledge-name`)只按逗号分隔,名称里的空格和顿号原样保留。**只收一个值的参数(如 `--security-code`)重复传会直接报错**,不会只取最后一个。
30
30
  6. **K 线"最近 N 条"**:必须用 `--start-date`/`--end-date` 拉日期范围,从结果按 `tradeDate` 取尾部最近 N 条。**不要只用 `--limit N`**(截取的是窗口开头)。
@@ -38,7 +38,7 @@ description: |-
38
38
  - Token 失效 → 自动换用已刷新的 token 或重新登录,再重发;凭证错 `999011` → **不重试**(AK/SK 不对不会自己好),查环境变量
39
39
  8. **参数命名差异**:`--security-code` 只用于 **Fundamental 全组、AI 单证券生成类**(`one-pager` / `investment-logic` / `peer-comparison` / `earnings-review` / `research-outline` / `management-discuss-*`)**与 `insight qa list`**;`ai security-clue` 用 `--gts-code`;`fund manager-info` 按人名查、用 `--manager`;其余(Insight 其他命令、Quote、Vault、Bond、Fund、Indicator、`ai stock-summary`)一律用 `--security`。
40
40
  9. **调试**:`--verbose` 或 `GANGTISE_VERBOSE=1` 打印每个请求的耗时/字节数到 stderr。
41
- 10. **`--field` 字段名必须核对,不确定就别传**(返回全量最稳)。上游对不存在的字段名有两种处理:`quote` 系(realtime / day-kline / minute-kline / fund-flow)名和值一起丢、不报错——CLI 比对请求与返回的列名,缺列标 `partial` + `missingFields` 并退出 3;`fundamental main-business` / `valuation-analysis` 只丢值、字段名照请求回显——CLI 检测到长度不匹配直接报错退出 1(没有 `--field` 的命令如 `alternative edb-data` 报此错则是上游响应结构异常,报障时带上报错末尾的 `(trace …)`)。多只证券或全市场时,缺的身份列 CLI 会补到最前(日 K 补 `securityCode` / `tradeDate`、分钟 K 补 `securityCode` / `tradeTime`、realtime 补 `securityCode`);单只不补。realtime **无 `close`**(用 `latestPrice`)、**无市值**(总市值走 `indicator cross-section --indicator qte_mkt_cptl`,A/港/美股均有数)。
41
+ 10. **`--field` 字段名必须核对,不确定就别传**(返回全量最稳)。上游对不存在的字段名:`quote` 系(realtime / day-kline / minute-kline / fund-flow)名和值一起丢、不报错——CLI 比对请求与返回的列名,缺列标 `partial` + `missingFields` 并退出 3;`fundamental main-business` / `valuation-analysis` 报 `100005`、`bond` / `fund` 报 `100003`,都会点名写错的名字。CLI 另检查每行的值个数与字段数,对不上直接报错退出 1,报障时带上报错末尾的 `(trace …)`。多只证券或全市场时,缺的身份列 CLI 会补到最前(日 K 补 `securityCode` / `tradeDate`、分钟 K 补 `securityCode` / `tradeTime`、realtime 补 `securityCode`);单只不补。realtime **无 `close`**(用 `latestPrice`)、**无市值**(总市值走 `indicator cross-section --indicator qte_mkt_cptl`,A/港/美股均有数)。
42
42
  11. 🔴 **EDE(`indicator` 截面 / 时序 / 选股)取不到数返 `null` 占位、行列都保留、退出码 0**;代码写错才报 `100003` 并指名。报告期类指标(`is_*` 等)的日期一律落**报告期末**(`03-31` / `06-30` / `09-30` / `12-31`),截面用 `--indicator-param "<指标code>:reportDate=YYYY-MM-DD"`(`screener` 用 `"F1:reportDate=..."`)——日期不在报告期末时整批 `null`,`screener` 筛出空集是**日期用错,不是没有符合条件的标的**。时序按日返回、只有报告期末那几行是真值,**别对整列直接求均值 / 求和**。**`--calendar-type` 默认别传**(CLI 自动选日期轴;显式传 `TD` 会让报告期类指标整行 `null`)。详见 `references/commands/indicator.md`。
43
43
 
44
44
  ## 工作流(3 步)
@@ -77,19 +77,19 @@ description: |-
77
77
 
78
78
  - **免费**:所有 `quote` 行情、`fundamental` 报表/主营/估值/股东(**盈利预测除外**)、`reference`/`constant` 查询(含 `official-account-search`)、`alternative edb-search`、`vault`(record/wechat/股票池/drive/AI云盘,含云盘上传与目录管理)、`insight report-image list`
79
79
  - **0.1/条 list**:research / foreign-report / official-account / announcement(A/港/美) / summary / qa / performance-calendar 的 list、`vault my-conference-list`;`insight report-image download` 0.1/张
80
- - **按条(观点/含详情类 list)**:independent-opinion list 与 `ai security-clue` 5;roadshow/site-visit/strategy/forum list 20;**opinion / foreign-opinion list 1(只含摘要 `brief`)**,要正文用 `detail` 30/条或 `list --with-content` 30/条;`fundamental earning-forecast` 0.5;`ai stock-summary` 3(无看点的证券不返回也不扣);`alternative edb-data` 30
81
- - **各 download(/篇)**:announcement / official-account / research 10;announcement-hk / announcement-us 20;independent-opinion 30;summary / foreign-report / my-conference 50;`performance-calendar download` A 股 10 / 港美股 20
80
+ - **按条(观点/含详情类 list)**:`ai security-clue` 5;roadshow/site-visit/strategy/forum list 10;independent-opinion list 1;**opinion / foreign-opinion list 1(只含摘要 `brief`)**,要正文用 `detail` 30/条或 `list --with-content` 30/条;`fundamental earning-forecast` 0.5;`ai stock-summary` 1(无看点的证券不返回也不扣);`alternative edb-data` 30/指标
81
+ - **各 download(/篇)**:official-account / research 10;announcement 1;announcement-hk / announcement-us 2;independent-opinion / summary / foreign-report / my-conference 30;`performance-calendar download` A 股 1 / 港美股 2
82
82
  - **0.4 的 `bond` 系**:`bond` 全部命令 **0.4/次**(按次,与返回行数无关),三个例外按量计:`rating-overview` 0.4/**条**、`rating-change` 0.4/**只有数据的债券**、`issuer-rating-change` 0.4/**个发行人**
83
83
  - **0.4 的 `fund` 系**:`fund` 全部命令 **0.4/次**(按次,与返回行数、基金只数无关)——多只基金合并成一次调用最省
84
84
  - **`tool web-search` 1/次**(按次,与返回条数、是否带 `--include-content` 无关;零结果与报错不扣)
85
85
  - 🔴 **`insight highlight list` 5/条**——**按返回条数计**,`--size 20` 的一页 = 100 积分。省略 `--size` 时 CLI 先估算,超过 1000 积分(约 200 条)报错退出,要全量须加 `--yes`
86
86
  - **按页**:`tool file-parse` 0.8/页,**提交(`--file`)时按实际页数一次性扣**,取结果(`file-parse-check`)免费——50 页 PDF = 40 积分,别重复提交同一文件
87
- - 🔴 **按次贵**:`ai knowledge-batch` 10、`management-discuss-*` 10;AI Agent(`one-pager` / `investment-logic` / `peer-comparison` / `research-outline` / `earnings-review` / `viewpoint-debate` / `theme-tracking`)**50/次**
88
- - 🔴 **`ai hot-topic` 50/篇,按返回条数计**(不是按调用次数)。📌 **一「篇」= 一整份报告**(一份早报 / 午报 / 盘中快报 / 晚报),**不是报告里的一条话题**——一份报告通常包含多条热点话题。所以 `--size 20` 的一页 = 最多 20 份报告 = 1000 积分,**先用 `--start-date`/`--end-date` + `--category` 收窄再拉**,别省略 `--size` 直接全量。**可查的历史范围跟账号权限走**(试用档是滚动的「当前 −1 个月」,正式/定制档更长)——超出范围的日期返回空结果而不是报错,拿到空先想想是不是撞了权限窗口
87
+ - 🔴 **按次**:`ai knowledge-batch` 10、`management-discuss-earnings-call` 10、`management-discuss-announcement` 5;AI Agent `one-pager` / `investment-logic` / `peer-comparison` / `research-outline` / `theme-tracking` **10/次**,`earnings-review` / `viewpoint-debate` **20/次**
88
+ - 🔴 **`ai hot-topic` 10/篇,按返回条数计**(不是按调用次数)。📌 **一「篇」= 一整份报告**(一份早报 / 午报 / 盘中快报 / 晚报),**不是报告里的一条话题**——一份报告通常包含多条热点话题。所以 `--size 20` 的一页 = 最多 20 份报告 = 200 积分,**先用 `--start-date`/`--end-date` + `--category` 收窄再拉**,别省略 `--size` 直接全量。**可查的历史范围是前溯 3 个月**(各档相同)——超出范围的日期返回空结果而不是报错,拿到空先想想是不是撞了权限窗口
89
89
  - **题材**:`alternative concept-info` / `concept-securities` **50/次**;🔴 加 `--full`(催化事件 / 重点个股标识 / 纳入理由)走旧版 **500/次**,不需要这几列就别加
90
- - ✅ **扣费发生在接口成功返回数据之后**(平台计费规则):没查到内容(空结果)、报错都不扣分——各 download、`ai hot-topic`(50/篇)、`ai stock-summary`(3/条,无看点总结的个股不进返回列表也不计费)、AI 生成类(`one-pager` 等 50/次),以及按次计费的 `ai knowledge-batch`、题材、`tool web-search` 都是这样。**所以「先小范围试探再放大」是安全的**——先用窄条件确认能查到东西,再扩范围。⚠️ **「成功返回」按服务端算**:超时报错时服务端可能已经生成并返回了内容(只是客户端没收到),这次已经扣过,同参数重调会再扣一次;异步的 `earnings-review` / `viewpoint-debate` 在提交成功(拿到任务 ID)时就扣,之后生成失败不退。**单价未公布的** `pamirs-summary`(见下)别据此假定
90
+ - ✅ **扣费发生在接口成功返回数据之后**(平台计费规则):没查到内容(空结果)、报错都不扣分——各 download、`ai hot-topic`(10/篇)、`ai stock-summary`(1/条,无看点总结的个股不进返回列表也不计费)、AI 生成类(`one-pager` 等 10~20/次),以及按次计费的 `ai knowledge-batch`、题材、`tool web-search` 都是这样。**所以「先小范围试探再放大」是安全的**——先用窄条件确认能查到东西,再扩范围。⚠️ **「成功返回」按服务端算**:超时报错时服务端可能已经生成并返回了内容(只是客户端没收到),这次已经扣过,同参数重调会再扣一次;异步的 `earnings-review` / `viewpoint-debate` 在提交成功(拿到任务 ID)时就扣,之后生成失败不退。**单价未公布的** `pamirs-summary`(见下)别据此假定
91
91
  - ⚠️ **同参数重复调用不免费**:按次计费的那批无缓存命中豁免(`one-pager` 等生成类重复调用每次扣分,即使秒回缓存内容);**按篇/按条的也一样**——重拉同一批 `hot-topic` 就是按条数再计一次费。生成类与列表结果拿到后自行留存复用,别为「刷新」重调
92
- - ⚠️ **这些端点超时 / 5xx 不自动重放**(共 64 个,完整清单见下方注释块:按次计费的 AI Agent 那批、`ai knowledge-batch` / `management-discuss-*` / `hot-topic`、题材两接口(含 `--full`)、`bond` 与 `fund` 全部命令、`tool web-search`、`tool file-parse` 提交;50/篇 的几个 download;按条计费的 `insight highlight list`、观点 `detail` / `list --with-content`、`ai stock-summary` 与 `fundamental earning-forecast`;以及不计分但重放有副作用的 `vault stock-pool-create` 与云盘上传 / 新建文件夹 / 复制 / 删除)。仅连接失败、429 与 token 自愈会重试。服务端可能已经执行并计费,重放会重复扣分、多建一份或把成功报成失败——**一次调用给足超时比失败重跑省钱**
92
+ - ⚠️ **这些端点超时 / 5xx 不自动重放**(共 64 个,完整清单见下方注释块:按次计费的 AI Agent 那批、`ai knowledge-batch` / `management-discuss-*` / `hot-topic`、题材两接口(含 `--full`)、`bond` 与 `fund` 全部命令、`tool web-search`、`tool file-parse` 提交;summary / foreign-report / my-conference 三个 download;按条计费的 `insight highlight list`、观点 `detail` / `list --with-content`、`ai stock-summary` 与 `fundamental earning-forecast`;以及不计分但重放有副作用的 `vault stock-pool-create` 与云盘上传 / 新建文件夹 / 复制 / 删除)。仅连接失败、429 与 token 自愈会重试。服务端可能已经执行并计费,重放会重复扣分、多建一份或把成功报成失败——**一次调用给足超时比失败重跑省钱**
93
93
 
94
94
  <!-- no-replay-endpoints
95
95
  上面那句点名的「不重放」端点,完整清单如下(endpoint key,与 `gangtise raw list` 一致):
@@ -158,28 +158,45 @@ vault.drive.upload
158
158
  vault.my-conference.download
159
159
  vault.stock-pool.create
160
160
  -->
161
- - **按单元格**:`indicator cross-section` / `time-series` / `screener`(A股 0.05 / 港股 0.1 / 美股 0.2 积分每 100 单元格;screener 按**筛选前**范围计费,见 `indicator.md`);`ai knowledge-resource-download` 按下游资源计费
161
+ - **按单元格**:`indicator cross-section` / `time-series` / `screener`(A股 0.05 / 港股 0.1 / 美股 0.2 积分每 100 单元格;screener 按**筛选前**范围 × 指标数保守估算,实际以平台账单为准,见 `indicator.md`);`ai knowledge-resource-download` 按下游资源计费
162
162
  - 🔴 截面 / 时序另有**单次 30000 单元格硬上限**(截面 = 证券数 × 指标数,时序 = 序列数 × 日期数),超出报 `100006`、不返回部分结果——按这个乘积拆批。板块 ID 会展开成全部成分股,实际证券数常远超写进命令的条数
163
163
  - **单价未公布**:`insight pamirs-summary list` / `download`——spec 只写了「需购买专家纪要数据库」这个准入门槛,没给单次价格。**别据此假定免费**;大批量拉取前先小量试,或向平台确认
164
164
 
165
165
  ### 数据范围(能查多久)
166
166
 
167
- 正式账号口径(下表为官方公布值;实际可查范围随账号服务等级而定,以自己账号的实际返回为准):
167
+ 官方权限表的正式账号与试用账号口径(Plan 基础版同试用,高级版介于两者之间)。个别账号权限更大,以实际返回为准——**规划查询区间按下表,别自行缩短**:
168
168
 
169
- | 命令组 | 可回溯 |
170
- |--------|--------|
171
- | `quote` 行情 / `fundamental` 财报、主营、估值、股东 / `indicator`(EDE) | 前溯 **5 年** |
172
- | `bond daily-quote` / `bond valuation` / `bond issuance-plan` | 前溯 **5 年**(试用账号 3 年) |
173
- | `bond` 其余命令 | **不限**(返回最新静态资料或全部历史记录) |
174
- | `fund` 净值 / 规模 / 持有人 / 资产配置 / 持仓与分布 / `etf-share-change` | 前溯 **5 年**(试用账号 3 年);两端日期都不传 = 窗口内全部 |
175
- | `fund` 其余命令(`basic-info` / `fee-rate` / 经理两个 / `etf-pcf-*`) | **不限**(返回当前资料或全部任职记录) |
176
- | `insight highlight list` 会议线索 | 前溯 **3 个月**(试用账号 1 个月) |
177
- | `ai security-clue` 投研线索 | 前溯 **1 个月** |
178
- | 主题 / 热点 / QA / 日程(路演·调研·策略会·论坛)/ 纪要 / 观点 / 研报 / 公众号 | 前溯 **3 个月** |
179
- | 管理层讨论 / A·港·美股公告 / `alternative edb-*` 行业指标 | 前溯 **3 年** |
180
- | `insight pamirs-summary` 帕米尔纪要 | **不限**(但需单独购买专家纪要库) |
181
-
182
- ⚠️ **实际窗口按账号配**,换接口绕不过去(`indicator` 与 `quote day-kline` 同界)。整段在界外返回 `110003`(不是空结果),把日期移进范围或联系客户经理。🔴 **区间跨过下界时各接口不同**:`quote` 日 K / 分钟 K / 资金流向与 `fundamental valuation-analysis` 从下界起返回、**不报错**(首行明显晚于起始日时 CLI 在 stderr 提示);`indicator`、`bond` 与 `fund` 整批报 `110003`。**例外**:`quote minute-kline` 窗口短得多,整段在窗外返回空结果、不报错(CLI 在 stderr 提示);`ai hot-topic` 超出账号可查范围时也返回空结果、不报错。
169
+ | 命令 | 正式账号 | 试用账号 |
170
+ |------|------|------|
171
+ | `quote day-kline` / `fund-flow` | **5 年** | 3 年 |
172
+ | `quote minute-kline` | **1 个月**(随日期滚动) | 1 个月 |
173
+ | `quote realtime` | 最新快照 | 最新快照 |
174
+ | `fundamental` 三大报表(A / 港 / 美)/ `main-business` / `valuation-analysis` / `top-holders` | **5 年** | 3 年 |
175
+ | `fundamental earning-forecast` | **1 年** | 1 年 |
176
+ | `indicator cross-section` / `time-series` / `screener` | **5 年** | 3 年 |
177
+ | `indicator search`、`alternative edb-search` / `edb-data` | **不限** | 不限 |
178
+ | `alternative concept-info` / `concept-securities` | 最新截面 | 最新截面 |
179
+ | `bond daily-quote` / `valuation` / `issuance-plan` | **5 年** | 3 年 |
180
+ | `bond` 其余命令 | **不限** | 不限 |
181
+ | `fund` 净值 / 规模 / 持有人 / 资产配置 / 持仓与分布 / `etf-share-change` | **5 年**(两端日期都不传 = 窗口内全部) | 3 年 |
182
+ | `fund` 其余命令(`basic-info` / `fee-rate` / 经理两个 / `etf-pcf-*`) | **不限** | 不限 |
183
+ | `insight research`(内资研报)/ `report-image`(研报图表) | **3 年** | 1 年 |
184
+ | `insight announcement` / `announcement-hk` / `announcement-us`、`performance-calendar`(列表与下载) | **5 年** | 2 年 |
185
+ | `insight opinion` / `foreign-opinion`(列表与详情)/ `independent-opinion` / `summary` 纪要 / `foreign-report` 外资研报 / `official-account` 公众号 | **1 年** | 3 个月 |
186
+ | `insight highlight list` 会议线索 | **1 年** | 3 个月 |
187
+ | `insight roadshow` / `site-visit` / `strategy` / `forum` | **历史 1 年 + 未来日程** | 同正式 |
188
+ | `insight qa` | **1 年** | 1 年 |
189
+ | `insight pamirs-summary` 帕米尔纪要 | **不限**(需单独购买专家纪要库) | — |
190
+ | `ai hot-topic` / `security-clue` | **3 个月** | 3 个月 |
191
+ | `ai theme-tracking` | **1 个月** | 1 个月 |
192
+ | `ai management-discuss-*` | **1 年** | 1 年 |
193
+ | `ai earnings-review` | 最近 6 期财报 | 同正式 |
194
+ | `ai one-pager` / `investment-logic` / `peer-comparison` / `research-outline` / `viewpoint-debate` / `stock-summary` | 最新截面 | 最新截面 |
195
+ | `ai knowledge-batch` | **不限** | 不限 |
196
+ | `vault my-conference-list` / `my-conference-download` | **1 个月** | 1 个月 |
197
+ | `vault` 其余(速记 / 群消息 / 股票池 / 云盘) | **不限** | 不限 |
198
+
199
+ ⚠️ **实际窗口按账号配**,换接口绕不过去(`indicator` 与 `quote day-kline` 同界)。整段在界外返回 `110003`(不是空结果),把日期移进范围或联系客户经理。🔴 **区间跨过下界时各接口不同**:`quote` 日 K / 分钟 K / 资金流向与 `fundamental valuation-analysis` 从下界起返回、**不报错**(首行明显晚于起始日时 CLI 在 stderr 提示);`indicator`、`bond` 与 `fund` 整批报 `110003`;`bond daily-quote` / `bond valuation` 的数据还可能比账号窗口短——区间早于数据起点时返回 `130001`,跨过数据起点时从有数据的那天起返回、不报错,核对首行日期。**例外**:`quote minute-kline` 窗口只有 1 个月且随日期滚动,整段在窗外返回空结果、不报错(CLI 在 stderr 提示);`ai hot-topic` 超出账号可查范围时也返回空结果、不报错。
183
200
 
184
201
  ### 下载规则(`--file-type` / `--content-type`)
185
202
 
@@ -199,7 +216,7 @@ vault.stock-pool.create
199
216
 
200
217
  省略 `--output` 时 CLI 用本地 title-cache 里的真实标题做文件名(`independent-opinion` 与 `report-image` 的下载不在此列,也没有 `--resolve-title`)——**只读缓存**,命中就零额外调用。缓存由同端点的 `list` 写入,所以「先 `list` 再 `download`」这个正常工作流本来就免费拿到正确文件名。
201
218
 
202
- 🔴 **未命中时默认不回查**,退回服务端文件名或 `<type>-<id>.<ext>`。要回查得显式加 `--resolve-title`——它拉最近 200 条(4 次请求),而这些 list 多数按 **0.1 积分/条**计费,约 20 积分,只用于取一个更易读的文件名(下载本身 10–50)。**批量下载或按 ID 下旧文件**时:要么先跑一次 `list` 把标题灌进缓存,要么直接 `--output ./<名>.<ext>` 自己定名;`--resolve-title` 会把取回的 200 条一并写回缓存,同批后续下载不再重复消耗。
219
+ 🔴 **未命中时默认不回查**,退回服务端文件名或 `<type>-<id>.<ext>`。要回查得显式加 `--resolve-title`——它拉最近 200 条(4 次请求),而这些 list 多数按 **0.1 积分/条**计费,约 20 积分,只用于取一个更易读的文件名(下载本身 1–30)。**批量下载或按 ID 下旧文件**时:要么先跑一次 `list` 把标题灌进缓存,要么直接 `--output ./<名>.<ext>` 自己定名;`--resolve-title` 会把取回的 200 条一并写回缓存,同批后续下载不再重复消耗。
203
220
 
204
221
  ## 意图路由表
205
222
 
@@ -255,7 +272,7 @@ vault.stock-pool.create
255
272
  | 评级调整 / 评级变动历史 | `bond rating-change`(债项评级,最多 10 只)、`bond issuer-rating-change`(主体评级,`--security` 或 `--issuer` 二选一) |
256
273
  | 利率债发行计划 / 国债发行安排 | `bond issuance-plan`(**只按日期区间查,不收债券码**) |
257
274
  | 含权债行权 / 回售 / 赎回提示 | `bond exercise-notice` |
258
- | 基金资料 / 基金分类 / 管理人 / 成立日 / 业绩基准 / 跟踪指数 / 风险等级 | `fund basic-info`(`--security` 用 `005827.OF` / `159967.SZ` 这类带后缀代码;`--field` 写错**整批拒绝** `100003`) |
275
+ | 基金资料 / 基金分类 / 管理人 / 成立日 / 业绩基准 / 跟踪指数 / 风险等级 | `fund basic-info`(`--security` 用 `005827.OF` / `159967.SZ` 这类带后缀代码;只知道名称时用 `reference securities-search --keyword <基金简称或 6 位代码> --category fund` 换代码(**只取 `category` 为 `fund` 的行**,结果里可能混有债券、债券代码查基金返回空结果;没有就换更具体的简称;场内场外都能搜到;全称常搜不到;不同份额与场内 / 场外代码会一起返回,按 `gtsName` 区分);`--field` 写错**整批拒绝** `100003`) |
259
276
  | 基金净值 / 复权净值 / 区间收益 / 货币基金七日年化 | `fund nav`(算收益用 `navAdjusted`) |
260
277
  | 基金费率 / 管理费 / 申购赎回费 | `fund fee-rate`(`feeRate` 是字符串) |
261
278
  | 基金经理画像(按人名) | `fund manager-info --manager <姓名>`(精确匹配,同名全返回,用 `currentCompany` 区分) |
@@ -272,7 +289,7 @@ vault.stock-pool.create
272
289
  | 联网搜索 / 查公开信息 / 政策原文 / 传闻核实 | `tool web-search`(1 积分/次;`--site` 定向站点、`--min-tier` 收信源、`--include-content` 取正文〔此时 `--size` ≤5〕) |
273
290
  | 云盘文件 | `vault drive-list / drive-download` |
274
291
  | 云盘目录 / 文件夹里有什么 | `vault drive-folder-list`(`--space-type 1` 我的云盘〔默认〕/ `2` 租户云盘,`--parent-id` 不传即根目录) |
275
- | 云盘上传 / 新建文件夹 / 重命名 / 移动 / 跨空间复制文件 / 删除(会改动账号数据) | `vault drive-upload / drive-create-folder / drive-rename / drive-move-file / drive-move-folder / drive-copy / drive-delete-file / drive-delete-folder`(删除须加 `--yes`;详见 `references/commands/vault.md`) |
292
+ | 云盘上传 / 新建文件夹 / 重命名 / 移动 / 跨空间复制文件或文件夹 / 删除(会改动账号数据) | `vault drive-upload / drive-create-folder / drive-rename / drive-move-file / drive-move-folder / drive-copy / drive-delete-file / drive-delete-folder`(删除须加 `--yes`;详见 `references/commands/vault.md`) |
276
293
  | 录音速记 | `vault record-list / record-download` |
277
294
  | 我的会议(业绩会/策略会/路演内部记录) | `vault my-conference-list / my-conference-download` |
278
295
  | 微信群消息 | `vault wechat-message-list`(先 `vault wechat-chatroom-list` 拿群 ID) |
@@ -306,10 +323,10 @@ vault.stock-pool.create
306
323
  - 单证券 → 优先 `fundamental` 专用命令(多数免费 / 低价);多证券批量取**已实现**指标 → `indicator`(EDE)一次拉取:同一日期 / 报告期横比用 `cross-section`,区间走势用 `time-series`(不能多指标 × 多证券同时)
307
324
  - 始终不走 EDE:盈利预测 / 一致预期 → `fundamental earning-forecast`(EDE 的 EPS 是已实现值,**不能冒充预测**);A 股估值历史分位 → `valuation-analysis`;行情与 K 线 → `quote`;行业 / 宏观指标(无证券维度)→ `alternative edb-*`。**例外:总市值只有 EDE 有**——`indicator cross-section --indicator qte_mkt_cptl`(单位「元」,用 `--scale` 缩放)
308
325
  - 取数前 `indicator search --format json` 核三项:`indicatorName` + `description` 语义对、`scopeList` 覆盖全部目标市场、`parameterList` 必填参数可满足;任一不符就回退专用接口,港 / 美股缺专用能力时如实说不支持。「某市场无数据」这类否定结论以当次 `scopeList` + 抽查一行为准
309
- - 日期参数**只看 `parameterList` 必填哪个**:`tradeDate` → `--date`,`reportDate` → `--indicator-param "code:reportDate=..."`(多数报告期类要后者,但 `_ttm` 整族要 `tradeDate`);两个都必填(如 `div_cash_yld`)就两个都用 `--indicator-param` 显式给,只给 `reportDate` 时 `--date` 不再注入、会报 `100001`。🔴 `parameterList` 要 `fiscalYear` 的(预测类 `frcst_*`、分红类 `div_cash_yr` 等)一律显式给——漏传**不报错**,按一个服务端自定的默认年度取数(不随 `--date` 变):该年度有数就返回它、看着完全正常,没有就是 `null`。日频估值(`finc_pe_ttm` / `finc_pb_mrq`)用最新交易日,用报告期末日期会取到陈值;参数名同样以 `parameterList` 为准(复权是 `adjustType`)
310
- - 结果**按 `security` 字段取值**,别按请求下标对位(证券会按代码升序重排);批量回填加 `--key-by code`
326
+ - 日期参数**只看 `parameterList` 必填哪个**:`tradeDate` → `--date`,`reportDate` → `--indicator-param "code:reportDate=..."`(多数报告期类要后者,但 `_ttm` 整族要 `tradeDate`);两个都必填(如 `div_cash_yld`)就两个都用 `--indicator-param` 显式给,只给 `reportDate` 时 `--date` 不再注入、会报 `100001`。`parameterList` 要 `fiscalYear` 的(预测类 `frcst_*`、分红类 `div_cash_yr` 等)显式给,漏传报 `100001` 并点名。日频估值(`finc_pe_ttm` / `finc_pb_mrq`)用最新交易日,用报告期末日期会取到陈值;参数名同样以 `parameterList` 为准(复权是 `adjustType`)
327
+ - 结果**按 `security` 字段取值**,别按请求下标对位(证券的返回顺序不作保证);批量回填加 `--key-by code`
311
328
  - 估值历史:EDE 与 `valuation-analysis` 的财报口径切换时点与财报版本都不同,做分位 / 回测两边都拉交叉核
312
- - "业绩点评"双义消歧:**检索已有**的业绩点评:研报走 `insight research list --llm-tag earningsReview`(0.1/条;`--llm-tag` 只有 `opinion` / `research` / `foreign-report` 三个列表有),业绩会纪要走 `insight summary list --category earningsCall`;**AI 现生成**一份走 `ai earnings-review`(异步、50/次)。不确定问一句
329
+ - "业绩点评"双义消歧:**检索已有**的业绩点评:研报走 `insight research list --llm-tag earningsReview`(0.1/条;`--llm-tag` 只有 `opinion` / `research` / `foreign-report` 三个列表有),业绩会纪要走 `insight summary list --category earningsCall`;**AI 现生成**一份走 `ai earnings-review`(异步、20/次)。不确定问一句
313
330
 
314
331
  ## 公司名 → 证券代码
315
332
 
@@ -329,7 +346,7 @@ vault.stock-pool.create
329
346
  ```bash
330
347
  gangtise reference securities-search --keyword <公司名> --category stock --top 3 --format json
331
348
  ```
332
- 取 `list[0].gtsCode`(CLI 已剥掉信封,输出顶层就是 `{returnedCount, list}`)。matchScore < 0.5 时让用户从前 3 条选。
349
+ 取第一条 `category` 为 `stock` 的 `gtsCode`(CLI 已剥掉信封,输出顶层就是 `{returnedCount, list}`)——**别直接取 `list[0]`**:按简称查时同名可转债(`category: bond`)可能排第一。matchScore < 0.5 时让用户从前 3 条选。债券代码用 `--category bond` 查。
333
350
 
334
351
  **交易所后缀**:`.SH` 上交所(6 开头)| `.SZ` 深交所(0/3 开头)| `.BJ` 北交所 | `.HK` 港股 | `.O` 纳斯达克 | `.N` 纽交所 | `.A` AMEX | 沪深 ETF 同 `.SH` / `.SZ` | 场外基金 `.OF`(`fund` 命令组) | 全球指数用数据源后缀(`SPX.SPI` `N225.NKI` `HSI.HI` `GDAXI.FRA` …,清单见 `references/commands/quote.md`,**别猜**)。
335
352
 
@@ -49,7 +49,7 @@ gangtise ai investment-logic --security-code <code>
49
49
  gangtise ai peer-comparison --security-code <code>
50
50
  ```
51
51
 
52
- - **积分**:50/次(按次计费,重复调用每次都扣;超时不自动重发)
52
+ - **积分**:10/次(按次计费,重复调用每次都扣;超时不自动重发)
53
53
 
54
54
  - 都支持 A 股 / 港股
55
55
  - 返回 `{content: "markdown"}`(`one-pager` 另带 `date`,即一页通的生成日期;取的是该公司最新一份)— 直接呈现 content
@@ -61,10 +61,10 @@ gangtise ai peer-comparison --security-code <code>
61
61
  gangtise ai stock-summary --security <code> [--security <code2> ...]
62
62
  ```
63
63
 
64
- - `--security`(**必选**,可重复):**只收具体证券代码**,单次最多 6000 个(接口上限,CLI 同值拦截,超过报错并提示分批)——全 A 股可一次提交完,但**按返回条数 3 积分/条计**,数千只就是上万积分,提交前先把估算总价告诉用户
64
+ - `--security`(**必选**,可重复):**只收具体证券代码**,单次最多 6000 个(接口上限,CLI 同值拦截,超过报错并提示分批)——全 A 股可一次提交完,但**按返回条数 1 积分/条计**,数千只就是数千积分,提交前先把估算总价告诉用户
65
65
  - 🔴 **不支持全市场批量**:`aShares` / `hkStocks` 这类市场关键词不被接受,CLI 会本地报错(服务端对它们返 `120001`,读起来像代码写错,容易误判)。需要覆盖一批标的就先用 `reference securities-search` 或自有清单取到代码,再分批传入
66
66
  - **仅支持 A 股和港股**
67
- - **积分**:`3`/条;个股若无看点总结则不在返回列表中,也不扣分——所以**返回行数少于提交数是正常的**,不是丢了数据。超时 / 5xx **不自动重试**(一次最多可扣 18000 积分,重放可能重复扣分):CLI 已给它 120 秒超时下限;失败后先确认再重跑
67
+ - **积分**:`1`/条;个股若无看点总结则不在返回列表中,也不扣分——所以**返回行数少于提交数是正常的**,不是丢了数据。超时 / 5xx **不自动重试**(一次最多可扣 6000 积分,重放可能重复扣分):CLI 已给它 120 秒超时下限;失败后先确认再重跑
68
68
  - 🔴 **整批返 0 行别直接读成「这批都没有看点」**:它与「确实都没有看点」长得一样。挑其中一两只单查确认后再下结论
69
69
  - 返回字段:`securityCode` / `securityName` / `summary`(精炼投研总结)/ `date`(更新日期 `yyyy-MM-dd`)
70
70
 
@@ -79,7 +79,7 @@ gangtise ai stock-summary --security 600519.SH --security 00700.HK --format json
79
79
  gangtise ai research-outline --security-code <code>
80
80
  ```
81
81
 
82
- - **积分**:50/次(按次计费;超时不自动重发)
82
+ - **积分**:10/次(按次计费;超时不自动重发)
83
83
 
84
84
  - 仅 A 股
85
85
  - 返回 `{content: "markdown"}`
@@ -91,7 +91,7 @@ gangtise ai earnings-review --security-code <code> --period <period> [--wait]
91
91
  gangtise ai earnings-review-check --data-id <id>
92
92
  ```
93
93
 
94
- - **积分**:提交 50/次(按次计费;超时不自动重发,重提会再扣一次)
94
+ - **积分**:提交 20/次(按次计费;超时不自动重发,重提会再扣一次)
95
95
 
96
96
  - `--period`:`年份+报告期`,如 `2025q3`(q1/interim/q3/annual),仅 A 股,覆盖最近 6 期
97
97
  - `--wait`(**推荐**):阻塞等待到出结果(最长约 5 分钟:14 次指数退避轮询 5s→30s,累计 ≈316s)——**用它时把工具/命令超时设到 ≥360s**,否则外层先超时
@@ -107,7 +107,7 @@ gangtise ai viewpoint-debate --viewpoint <text> [--wait]
107
107
  gangtise ai viewpoint-debate-check --data-id <id>
108
108
  ```
109
109
 
110
- - **积分**:提交 50/次(按次计费;超时不自动重发,重提会再扣一次)
110
+ - **积分**:提交 20/次(按次计费;超时不自动重发,重提会再扣一次)
111
111
 
112
112
  - `--viewpoint`:观点文本,**上限 1000 字**
113
113
  - 双向逻辑校验:看多→拆解风险,看空→挖反转
@@ -120,7 +120,7 @@ gangtise ai viewpoint-debate-check --data-id <id>
120
120
  gangtise ai theme-tracking --theme-id <id> --date <yyyy-MM-dd> [--type <name>]
121
121
  ```
122
122
 
123
- - **积分**:50/次(按次计费;超时不自动重发)
123
+ - **积分**:10/次(按次计费;超时不自动重发)
124
124
 
125
125
  - `--theme-id`(**必选**):用 `gangtise reference concept-search --keyword <主题名>` 查,取 `conceptId`(题材与主题共用 ID 体系)
126
126
  - `--date`(**必选**):支持近 30 天
@@ -144,8 +144,8 @@ gangtise ai hot-topic [--start-date <date>] [--end-date <date>] [--category <nam
144
144
  - `--category`:`morningBriefing` 早报 | `noonBriefing` 午报 | `afternoonFlash` 盘中快报 | `eveningBriefing` 晚报(可重复,默认全部;其他取值 CLI 在本地拒绝——接口对错值不报错,结果看着像正常查询)
145
145
  - `--with-related-securities` / `--with-close-reading`:默认开启;`--no-with-related-securities` / `--no-with-close-reading` 显式排除(响应里相应字段置空)
146
146
  - 自动翻页,单页最大 20
147
- - 🔴 **计费 50/篇,按返回条数计**(不是按调用次数)。📌 **一「篇」= 一整份报告**(一份早报 / 午报 / 盘中快报 / 晚报),**不是报告里的一条话题**——一份报告通常包含多条热点话题,`--category` 选的也是报告类型而不是话题。所以一页 20 条 = 20 份报告 = 1000 积分:**先用 `--start-date`/`--end-date` + `--category` 把范围收窄,再考虑要不要全量**(省略 `--size` 时 CLI 先取 1 篇拿到总数来估算,超过 1000 积分报错,确认要全量加 `--yes`;结果多于 1 篇时这 1 篇会多计一次,知道要几篇就直接传 `--size`)
148
- - **可查的历史范围跟账号权限走**:试用档是滚动的「当前 −1 个月」,正式/定制档更长。超出范围的日期**返回空结果、不报错**——拿到空先确认是不是撞了本账号的窗口,别当成「那天没有报告」
147
+ - 🔴 **计费 10/篇,按返回条数计**(不是按调用次数)。📌 **一「篇」= 一整份报告**(一份早报 / 午报 / 盘中快报 / 晚报),**不是报告里的一条话题**——一份报告通常包含多条热点话题,`--category` 选的也是报告类型而不是话题。所以一页 20 条 = 20 份报告 = 200 积分:**先用 `--start-date`/`--end-date` + `--category` 把范围收窄,再考虑要不要全量**(省略 `--size` 时 CLI 先取 1 篇拿到总数来估算,超过 1000 积分报错,确认要全量加 `--yes`;结果多于 1 篇时这 1 篇会多计一次,知道要几篇就直接传 `--size`)
148
+ - **可查的历史范围是前溯 3 个月**(各档相同)。超出范围的日期**返回空结果、不报错**——拿到空先确认是不是撞了本账号的窗口,别当成「那天没有报告」
149
149
 
150
150
  ## 管理层讨论-财报 `ai management-discuss-announcement`
151
151
 
@@ -153,7 +153,7 @@ gangtise ai hot-topic [--start-date <date>] [--end-date <date>] [--category <nam
153
153
  gangtise ai management-discuss-announcement --report-date <date> --security-code <code> --dimension <name>
154
154
  ```
155
155
 
156
- - **积分**:10/次(按次计费;超时不自动重发)
156
+ - **积分**:5/次(按次计费;超时不自动重发)
157
157
 
158
158
  - `--report-date`(**严格**):仅接受 `xxxx-06-30`(半年报)/ `xxxx-12-31`(年报)
159
159
  - `--dimension`(**必选**):`businessOperation` 业务经营与行业 | `financialPerformance` 财务与经营成果 | `developmentAndRisk` 发展规划与风险 | `all` 返回报告中完整的管理层讨论内容(内容可能过长,谨慎使用)
@@ -27,6 +27,7 @@ gangtise alternative edb-data --indicator-id <id> [--indicator-id <id2>] --start
27
27
  - `--indicator-id`(**至少 1 个**,最多 10 个——上限由接口校验,CLI 不拦):指标 ID,来自 `edb-search` 返回的 `indicatorId`,可重复传
28
28
  - `--start-date`(**必选**):开始日期,格式 `yyyy-MM-dd`
29
29
  - `--end-date`(**必选**):结束日期,格式 `yyyy-MM-dd`
30
+ - **积分**:30/指标(单次最多 10 个指标,即最多 300)
30
31
  - 返回格式:列表,每行为 `{date, <indicatorId1>: value, <indicatorId2>: value, ...}`
31
32
  - 日期列为字符串(如 `"2010-01-31"`),数值列为字符串数字(如 `"447184.41"`)
32
33
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  **全部计费,0.4 积分起**:多数按次(与返回行数无关);`rating-overview` 按条、`rating-change` 按有数据的债券只数、`issuer-rating-change` 按发行人计,见各命令。
4
4
 
5
- `--security` 收**标准债券代码**——`019742.SH` / `123456.SZ` / `220205.IB`(银行间)。**不接受简称或拼音**,传了按 `120001` 整批拒绝、不会退化成模糊匹配;只有简称时先 `reference securities-search --keyword <简称>` 换代码。可重复,也接受逗号分隔;有单次只数上限的命令按**去重后**的只数计。
5
+ `--security` 收**标准债券代码**——`019742.SH` / `123456.SZ` / `220205.IB`(银行间)。**不接受简称或拼音**,传了按 `120001` 整批拒绝、不会退化成模糊匹配;只有简称时先 `reference securities-search --keyword <简称> --category bond` 换代码。可重复,也接受逗号分隔;有单次只数上限的命令按**去重后**的只数计。
6
6
 
7
7
  ⚠️ **超时 / 5xx 不自动重放**(避免重复扣费),偶发失败自行重跑。
8
8
 
@@ -18,6 +18,8 @@
18
18
 
19
19
  ⚠️ **`--start-date` 早于可回溯下界时整批返回 `110003`「超出时间范围限制」**(这三个命令都是)——即使 `--end-date` 在窗口内,也不会只返回窗口内那一段。把 `--start-date` 移进窗口再查;实际下界随账号服务等级而定,以返回为准。
20
20
 
21
+ ⚠️ **`bond daily-quote` / `bond valuation` 的数据可能比账号窗口短**:区间在窗口内、但早于数据起点时整段返回 `130001`「数据未找到」;跨过数据起点时从有数据的那天起返回、不报错。按年份取长序列时核对返回的首行日期。
22
+
21
23
  ## `basic-info` 债券基本资料
22
24
 
23
25
  ```bash
@@ -113,7 +115,7 @@ gangtise bond announcement (--security <code>... | --start-date <d> --end-date <
113
115
  - 翻过末页返回**空数组**(`--format json` 输出 `[]`,退出码 0)——到这一页就停
114
116
  - 条件下**一条公告都没有**时,任何页码都返回 `404` / `130001`(退出码 1)——第 1 页收到它就是没有数据,不用再翻
115
117
 
116
- ⚠️ **按日期区间查询时,返回的 `securityCode` 不带市场后缀**(如 `012682337`);按 `--security` 查询时带后缀。要把结果接着传给其他 `bond` 命令(它们只收带后缀的代码,否则 `120001`),用该行的 `securityName` 走 `reference securities-search --keyword <简称>` 换回带后缀的 `gtsCode`,并核对它去掉后缀后与原代码一致。**别拿不带后缀的代码本身去搜**——检索按相似度返回,可能给出相邻的其他代码;部分资产支持证券按简称也检索不到。
118
+ 按日期区间查询时,部分行的 `securityCode` 为空(如不对应已上市证券的公告、部分新发行债券的发行文件),这类行无法接着传给其他 `bond` 命令;有代码的行都带市场后缀,可以直接传。
117
119
 
118
120
  其余债券命令一次返回全部匹配行。
119
121
 
@@ -129,4 +131,4 @@ gangtise bond announcement (--security <code>... | --start-date <d> --end-date <
129
131
  ## 相关常量
130
132
 
131
133
  债券字段里的枚举 ID 可通过 `reference constant-list --category <code>` 查全量:
132
- `bondType` 债券类型 | `interestRateType` 利率类型 | `interestFrequency` 付息频率 | `absUnderlyingAssetType` ABS 基础资产类型 | `ratingType` 评级类型 | `exchange` 交易市场。
134
+ `bondType` 债券类型 | `interestRateType` 利率类型 | `interestFrequency` 付息频率 | `absUnderlyingAssetType` ABS 基础资产类型 | `ratingType` 评级类型 | `exchange` 交易市场 | `interestBondSubtype` 利率债子类型。⚠️ 同名字段 `bondType` 两套码:`basic-info` 用 `bondType`,`issuance-plan` 用 `interestBondSubtype`。
@@ -5,11 +5,12 @@
5
5
  `--security` 收**基金交易代码**,后缀大写:场外 `005827.OF`;场内 `159967.SZ` / `510300.SH`。可重复,也接受逗号分隔;重复代码服务端自动去重。
6
6
 
7
7
  - 🔴 **代码不存在、不带后缀(`005827`)、后缀小写(`.of`)、传成股票代码,都返回空结果、不报错**——拿到空先核对代码与后缀
8
+ - **只知道基金名称时**:用 `reference securities-search --keyword <基金简称或 6 位代码> --category fund` 换代码,🔴 **只取返回里 `category` 为 `fund` 的行**——结果里可能混有可转债等债券(关键词含「转债」时前几条可能全是债券),把债券代码传给基金命令会返回空结果、不报错;没有 `category: fund` 的行时,换更具体的基金简称再搜。场内(`.SH` / `.SZ`)与场外(`.OF`)都能搜到(如「易方达蓝筹精选」或 `005827` → `005827.OF`)。基金全称常搜不到,如「华泰柏瑞沪深300ETF」要搜「沪深300ETF」或 `510300`。同一只基金的不同份额与场内 / 场外代码会一起返回(「富国天惠」→ `161005.SZ`、`161005.OF`、`003494.OF` 等),按 `gtsName` 区分后取一个
8
9
  - LOF / ETF 的场内代码(`161005.SZ`)与场外代码(`161005.OF`)都能查,返回的 `fundCode` 与 `fundName` 跟随传入的代码(场内简称 / 场外简称不同);同一只基金别两种代码混着传,会重复
9
10
  - A / C 等份额各有代码,要合并到同一只基金用 `basic-info` 的 `mainFundCode`
10
11
  - 多只基金的结果**按 `fundCode` 字段对应**,别按请求顺序对位
11
12
 
12
- ⚠️ **超时 / 5xx 不自动重放**(避免重复扣费)。偶发 `999999` 系统错误,同参数重跑即可。
13
+ ⚠️ **超时 / 5xx 不自动重放**(避免重复扣费),偶发失败自行重跑。
13
14
 
14
15
  ---
15
16
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  通用:所有命令都需 `--security-code`(如 `600519.SH`,注意是 `--security-code` 不是 `--security`)。`--field` 可重复,可用字段见 `references/fields.md`;A / 港 / 美股三大报表命令都在省略 `--field` 时返回完整报表,指定后只保留基础字段与所选科目。
4
4
 
5
- **`--field` 字段名必须核对**:三大报表遇到不存在的字段名会补 `null`(安全),但 `main-business` / `valuation-analysis` 是**只丢值、字段名照请求回显**,`fieldList` 比行长,按位置拍平会把值贴到错误的字段上。CLI 长度不匹配就直接失败(退出码 1),不输出错位数据。不确定字段名就别传 `--field`。
5
+ **`--field` 字段名必须核对**:三大报表遇到不存在的字段名会补 `null`,`main-business` / `valuation-analysis` 整条报 `100005` 并点名写错的名字。不确定字段名就别传 `--field`。
6
6
 
7
7
  ⚠️ **别把这个行为套到 `quote` 系上**——那边是**字段名和值一起消失**、列数与值数始终对得上,CLI 的处理也不同(标 `partial` + `missingFields`、退出码 3)。两族的完整对照见 `references/fields.md` 顶部。
8
8
 
@@ -95,7 +95,7 @@ gangtise fundamental valuation-analysis --security-code <code> --indicator <name
95
95
  - 🔴 **序列按自然日逐日一行(含周末)**,行数超过 `--limit` 时接口**保留最近的行、丢掉区间开头**。CLI 撞满即标 `partial`、退出码 3 并在 stderr 说明(首行恰好就是 `--start-date` 时说明没丢,不标)。取长区间把 `--limit` 设到不小于区间天数:取 N 年就设 `--limit` ≥ 366 × N(且不早于账号权限窗口的起点)
96
96
  - 🔴 **`--start-date` 早于账号回溯下界时,接口从下界起返回、不报错**(整段都在界外才报 `110003`)。首行晚于 `--start-date` 时 CLI 在 stderr 提示——可能是该证券上市较晚,也可能是撞了权限窗口,看首行日期判断
97
97
  - `--skip-null`:丢弃 `value`/`percentileRank` 为 null 的行(最新交易日可能未入库)
98
- - **返回字段只有 7 个**:`tradeDate` `value` `percentileRank` `average` `median` `upper1Std` `lower1Std`,**没有 `securityCode`**。🔴 `--field` 里**至少要有一个数值列**(`tradeDate` 以外的 6 个):只传 `tradeDate`、只传不存在的名字(含 `securityCode`)时接口返回 0 行、**不报错**,读起来像「这只票没有估值数据」(CLI 会在 stderr 提示原因);数值列与不存在的名字混传时,回显的字段比每行的值多,CLI 直接报错退出 1。`tradeDate` 总在第一列返回,不用写进 `--field`(写了 CLI 会在发请求前去掉;同一字段写两次也只发一次)。**建议不传 `--field`**,证券代码本来就是你自己传进去的
98
+ - **返回字段只有 7 个**:`tradeDate` `value` `percentileRank` `average` `median` `upper1Std` `lower1Std`,**没有 `securityCode`**。🔴 `--field` 里**至少要有一个数值列**(`tradeDate` 以外的 6 个):只传 `tradeDate` 时接口返回 0 行、**不报错**,读起来像「这只票没有估值数据」(CLI 会在 stderr 提示原因);不存在的名字(含 `securityCode`)整条报 `100005` 并点名。`tradeDate` 总在第一列返回,不用写进 `--field`。**建议不传 `--field`**,证券代码本来就是你自己传进去的
99
99
 
100
100
  ## A股盈利预测 `fundamental earning-forecast`
101
101
 
@@ -105,6 +105,7 @@ gangtise fundamental earning-forecast --security-code <code> [--start-date <date
105
105
 
106
106
  - **市场与路由**:本命令仅支持 A 股(港股 / 美股会报 `120001`「非有效A股」)。A股盈利预测 / 一致预期始终走本命令,不走 EDE;EDE 搜索目前没有一致预期语义,搜到的基本 / 稀释 EPS 是已实现值,不能冒充预测 EPS。港 / 美股盈利预测当前 CLI 不支持
107
107
  - `--start-date` / `--end-date`:默认截至北京时间的今天、向前一年
108
+ - **可查范围:前溯 1 年**(各档相同,个别账号更长,以实际返回为准)
108
109
  - `--consensus` 可重复:`netIncome` 归母净利润 | `netIncomeYoy` 同比增速 | `eps` 每股收益 | `pe` 市盈率 | `bps` 每股净资产 | `pb` 市净率 | `peg` PEG | `roe` 净资产收益率 | `ps` 市销率
109
110
  - **`roe` 的单位是百分比(%)**:`35.6` 即 35.6%,**不要再做 ÷100 之类的单位换算**——换算后的数字看着仍像个 ROE,不会报错
110
111
  - 返回结构:`{securityCode, securityName, updateList: [{date, fieldList: [{forecastYear, ...consensus}]}]}` — 每个日期固定返回 3 年预测(如 `2026E` / `2027E` / `2028E`)
@@ -71,7 +71,7 @@ gangtise indicator cross-section --indicator <code> [--indicator <code2>] \
71
71
  - 根级 `--scale` **只作用于支持该参数的指标**:`qte_close` + `qte_mkt_cptl` 混查加 `--scale 8`,收盘价保持原值、总市值按亿缩放,价格类与金额类可以放心混查。要精确控制到单个指标用 `--indicator-param "code:scale=8"`
72
72
  - **支持多指标 × 多证券**(单日横截面)
73
73
  - **输出(宽表)**:每行一只证券,列为 `security / name / <各指标名>…`。**没有 `date` 列**——查询日期挂在每个指标自己的参数上,各列可以是不同日期
74
- - **`--key-by name|code`**(默认 `name`):指标列头用显示名还是 `indicatorCode`。**批量按 code 回填必用 `--key-by code`**——指标名会碰撞(多个指标同显示名,如 `cf_finc_exp`/`_qtr` 都叫「财务费用」),唯有 code 唯一(行轴 `security` 本就是 code,`code` 模式整表可按 code 寻址,免去 raw API 手工回填)。顺序是稳定的,但**两个轴的排法不一样**:`indicatorList` **= 请求顺序**(请求 `qte_vol,qte_close` 就回 `qte_vol,qte_close`);`securityCodeList` **是按代码升序重排的,不是请求顺序**(请求 `000858,600519,000001` → 回 `000001,000858,600519`)。所以**行序绝不能按请求下标对位**,一律按 `security` 字段取值
74
+ - **`--key-by name|code`**(默认 `name`):指标列头用显示名还是 `indicatorCode`。**批量按 code 回填必用 `--key-by code`**——指标名会碰撞(多个指标同显示名,如 `cf_finc_exp`/`_qtr` 都叫「财务费用」),唯有 code 唯一(行轴 `security` 本就是 code,`code` 模式整表可按 code 寻址,免去 raw API 手工回填)。`indicatorList` 的返回顺序 = 请求顺序;`securityCodeList` 的返回顺序**不作保证**(可能与请求顺序不同)。所以**行序不能按请求下标对位**,一律按 `security` 字段取值
75
75
 
76
76
  ```bash
77
77
  # 多证券 × 同一报告期的已实现财务指标(报告期类指标必须显式给 reportDate,只给 --date 会报 100003)
@@ -144,7 +144,7 @@ gangtise indicator screener --indicator <F1:code> [--indicator <F2:code2>] \
144
144
  - `--indicator-param`:格式是 **`F1:key=value`(按变量,不是按 code)**。引用了没绑定的变量会直接报错,不会静默丢弃
145
145
  - `--expression` 里引用未绑定的变量,CLI **本地就拦**(不发请求、不计费);服务端也会报 `100003`
146
146
  - **输出(宽表)**:同 `cross-section`,每行一只**命中**的证券,列为 `security / name / <各指标名>…`;无命中返回空表
147
- - **积分**:与 `cross-section` 同价(按单元格计),但计费基数是**筛选前**的范围 × 指标数,别拿全市场板块随手试
147
+ - **积分**:与 `cross-section` 同价(按单元格计);计费基数按**筛选前**的范围 × 指标数保守估算(实际以平台账单为准),别拿全市场板块随手试
148
148
 
149
149
  ### 同一指标绑多个变量
150
150
 
@@ -275,22 +275,22 @@ gangtise indicator cross-section --indicator qte_close --security 600519.SH \
275
275
 
276
276
  | 错误码 | 实际含义 | 怎么办 |
277
277
  | :--- | :--- | :--- |
278
- | `100001` | **缺少必填参数**:如 `universe` 没传,或指标 `parameterList` 里 `required` 的参数没给(msg 会点名是哪个指标的哪个参数)。⚠️ 漏传 `fiscalYear` **不报这个码**,见下「必填参数」 | 补齐 `--indicator` / `--security`,或用 `--indicator-param` 补上点名的参数 |
278
+ | `100001` | **缺少必填参数**:如 `universe` 没传,或指标 `parameterList` 里 `required` 的参数没给(msg 会点名是哪个指标的哪个参数) | 补齐 `--indicator` / `--security`,或用 `--indicator-param` 补上点名的参数 |
279
279
  | `100003`@400 | 入参/表达式错误:`time-series` 传了「多指标 × 多证券」、`expression` 引用未声明变量、`indicatorParamList` 的 code 不在 `indicatorCodeList` 里 | 按 msg 改;多 × 多改用 `cross-section`。CLI 已在本地拦截「表达式引用未绑定变量」,不会白发一次请求 |
280
280
  | `140002`@500 | **终态参数错**:枚举越界(如「参数 adjustType 的值 99 不在有效范围内 [1,2,3,4]」)、表达式语法错误 | **不重试**(CLI 已把 140002 列为终态码)。读 `search --format json` 的 `parameterList` 改参数名/取值 |
281
- | `999999` | 系统故障。「无数据」不用此码,所以它基本只剩真故障。⚠️ 无数据是占位单元格(统一 `null`);代码或参数名写错报 `100003`、缺必填参数报 `100001`,都会点名(漏传 `fiscalYear` 例外,不报错) | CLI 对 indicator 端点**不重试此码**;确认参数无误仍报错,稍后再试或联系平台支持 |
281
+ | `999999` | 系统故障。「无数据」不用此码,所以它基本只剩真故障。⚠️ 无数据是占位单元格(统一 `null`);代码或参数名写错报 `100003`、缺必填参数报 `100001`,都会点名 | CLI 对 indicator 端点**不重试此码**;确认参数无误仍报错,稍后再试或联系平台支持 |
282
282
  | `110003` | **超出账号数据权限的时间范围**。窗口按**账号**配、不按接口配——`cross-section` / `time-series` / `screener` 同界,区间**跨过**下界也整批报这个码;`quote day-kline` 在同一条界上,但跨界时从下界起返回、不报错 | 把起点移进范围;整段区间都早于下界时缩短窗口无用,**换接口绕不过去**,要更长历史联系客户经理开通 |
283
283
  | `130001` | 数据未找到,或**该指标无权限**(内层信封失败会带具体 msg,如"指标无权限";此码被服务端复用) | 检查查询条件与指标权限;换证券/日期仍失败多为无权限,联系管理员开通 |
284
284
 
285
285
  ### 指标专属参数
286
286
 
287
- 缺必填参数报 `100001` 并点名是哪个指标的哪个参数。🔴 **`fiscalYear` 例外:漏传不报错**——预测类(如 `frcst_pe`)与分红类(`div_cash_yr` / `div_cash_paid_ratio`)都会按一个服务端自定的默认年度取数(不随 `--date` 变):该年度有数就返回它,看着完全正常,但未必是你要的那一年;没有就是 `null`,与「没有数据」无法区分。所以 `parameterList` 里标 `required` 的 `fiscalYear` 一律显式传。**先完成语义 + `scopeList` + `parameterList` 三项校验;其中凡 `required:true` 的参数都用 `--indicator-param "指标code:参数=值"` 补上。** 常见的几个:
287
+ 缺必填参数报 `100001` 并点名是哪个指标的哪个参数(含 `fiscalYear`)。**先完成语义 + `scopeList` + `parameterList` 三项校验;其中凡 `required:true` 的参数都用 `--indicator-param "指标code:参数=值"` 补上。** 常见的几个:
288
288
 
289
289
  | 参数 | 适用指标 | 示例 |
290
290
  | :--- | :--- | :--- |
291
291
  | `periodNum` | N 期统计(N 期均值/最值,如 `finc_roe_avg_avg` 平均ROE N期均值) | `--indicator-param "finc_roe_avg_avg:periodNum=4"`;`finc_roe_avg_avg` 属报告期类,还要补 `--indicator-param "finc_roe_avg_avg:reportDate=2025-12-31"`(只给 `--date` 报 `100003`) |
292
292
  | `sDate` | 区间类的**起始日**(如 `qte_vol_intvl` 区间成交量、`qte_avg_vol` 区间日均成交量),格式 `yyyy-MM-dd` | `--indicator-param "qte_vol_intvl:sDate=2024-01-02"`。⚠️ **`sDate` 不能替代 `tradeDate`**——它是区间起点,`tradeDate`(=区间终点)仍是 required,`--date` 会照常下发。区间起始日的参数名就是 `sDate`,写成 `startDate` 会报 `100003 不支持参数 startDate`。⚠️ **不传 `sDate` 不报错**——它是可选参数,缺了就按默认区间算,所以要的是特定区间就必须显式传。另:`qte_amp_mo`(月振幅)等周期变体只吃 `tradeDate`,没有起始日参数 |
293
- | `fiscalYear` | 年度/报告期类(如 `div_cash_yr` 年度现金分红)、预测类(如 `frcst_pe`,与 `tradeDate` 同时必填)。**漏传不报错**,见上 | `--indicator-param "div_cash_yr:fiscalYear=2025"` |
293
+ | `fiscalYear` | 年度/报告期类(如 `div_cash_yr` 年度现金分红)、预测类(如 `frcst_pe`,与 `tradeDate` 同时必填) | `--indicator-param "div_cash_yr:fiscalYear=2025"` |
294
294
  | `industryType` + `industryLevel` | `scr_indu` 所属行业(两个都 required,缺任一报 `100001`) | `--indicator-param "scr_indu:industryType=1" --indicator-param "scr_indu:industryLevel=0"` |
295
295
 
296
296
  > `paramValue` 一律按**字符串**约定传(`periodNum=4` 内部即 `"4"`,CLI 已处理)。
@@ -384,7 +384,7 @@ gangtise indicator cross-section --indicator scr_indu_citic --indicator scr_indu
384
384
  - **混合日期语义要拆查询**:同时要“某报告期营收 / EPS”和“估值 PE / PB”时,按各自有效日期分别调用 `cross-section` 再按 `security` 合并(财务=报告期末、PE/PB=最新交易日);不要把不同日期语义的指标塞进同一个 `--date`
385
385
  - **探索性取数**:缺值会保留行列并给占位单元格(含 1×1 的最简形态),占位值统一为 `null`;code 写错会直接报 `100003`,不会伪装成缺值。看趋势用 `time-series` + 覆盖报告期的区间,但不能把缺值当成通过语义 / scope 校验。
386
386
  - **名称反查 code 要核对,别取首条**:存在同显示名的兄弟指标——单季 `cf_finc_exp_qtr` 与累计 `cf_finc_exp` 都叫「财务费用」,`bs_fmt`/`cf_fmt`/`is_fmt` 都叫「报表格式」。`search` 按名称模糊匹配,目标 code 高概率在 top1 但不绝对,要看 `indicatorCode` 确认。
387
- - **批量查询出错先读 msg**:缺必填参数报 `100001`、代码或参数名写错报 `100003`,msg 都会点名是哪个指标或证券,照 msg 改即可。漏传 `fiscalYear` 不报错,见「必填参数」。
387
+ - **批量查询出错先读 msg**:缺必填参数报 `100001`、代码或参数名写错报 `100003`,msg 都会点名是哪个指标或证券,照 msg 改即可。
388
388
  - **市值量纲**:`qte_mkt_cptl`(总市值)与 `shr_tot`(总股本)**A/港/美股均有数**;**默认返原始「元」**(大市值公司是 `1e12` 量级,即万亿级),别误当天文数字。用 `scale` 数字码缩放(`0`元 / `3`千 / `4`万 / `6`百万 / `8`亿 / `9`十亿——`scale=8` 即以亿元为单位)、`currency` 换币种(**大写** `DFT`本币 / `CNY` / `HKD` / `USD` …)。**跨证券比市值前先统一 `scale`+`currency`**。
389
389
  - **币种与汇率**:`DFT`(原始币种)按市场识别——A股=CNY、港股行情=HKD、美股=USD;汇率换算自洽(互逆且三角一致)。⚠️ 但**同一只港股,行情类的原始币种是 HKD、财务类可能是 CNY**(如泡泡玛特财报以人民币计),跨市场比财务数据时显式传 `--currency CNY` 别依赖 `DFT`。另:财务类指标的汇率按**报告期**折算、行情类按查询日折算,两者隐含汇率会有细微差异,属正常口径差别。
390
390
  - **EDE 财务指标的 `reportType`**:`enumList` 的 label 与实际取数**一致**,按 label 传即可(取值以 `enumList` 为准):
@@ -419,6 +419,6 @@ gangtise indicator cross-section --indicator scr_indu_citic --indicator scr_indu
419
419
 
420
420
  - **发现流程**:`indicator search --format json` → 核对 `indicatorName` + `description`、`scopeList`(含 `usageRestriction`)、`parameterList`(**参数名以此为准**)→ 三项都通过才用 `cross-section` / `time-series` / `screener`
421
421
  - **积分**:`search` 免费;`cross-section` / `time-series` / `screener` 按请求单元格数量计费,标价为每 100 单元格 A 股 0.05 / 港股 0.1 / 美股 0.2 积分,每次查询不足 100 单元格按 100 计
422
- - **空结果排查顺序**:代码、参数名写错与缺必填参数会直接报错并点名(`100003` / `100001`),不会以空结果出现——已知例外是漏传 `fiscalYear`(按默认年度取数,该年度无数据时返回 `null`)。拿到整批 `null` 或 `screener` 空集时按序排查:① 日期语义对不对(`tradeDate` vs `reportDate`——报告期类指标日期用错会整批返 `null`,看着像「没数据」;`parameterList` 要 `fiscalYear` 的传了没有)② 该指标覆不覆盖这批证券(`scopeList`,单查一行确认)③ 真的没有数据
422
+ - **空结果排查顺序**:代码、参数名写错与缺必填参数会直接报错并点名(`100003` / `100001`),不会以空结果出现。拿到整批 `null` 或 `screener` 空集时按序排查:① 日期语义对不对(`tradeDate` vs `reportDate`——报告期类指标日期用错会整批返 `null`,看着像「没数据」)② 该指标覆不覆盖这批证券(`scopeList`,单查一行确认)③ 真的没有数据
423
423
  - **数据权限**:正式账号行情 / 财务 / 指标类可回溯的年限按服务等级而定,试用账号更短。这个时间窗口按**账号**配、不按接口配——三个 EDE 接口同界,区间跨过下界也整批返 `110003`(`quote day-kline` 在同一条界上,但跨界时从下界起返回、不报错),**换接口绕不过去**;整段区间都早于下界时缩短窗口无用,要更长历史联系客户经理开通
424
424
  - 所有格式(table/json/jsonl/csv/markdown)均可用;导出宽表给 Excel 直接用 `--format csv --output xxx.csv`
@@ -61,7 +61,7 @@ gangtise insight summary list [--search-type <n>] [--rank-type <n>] [--source <n
61
61
  gangtise insight summary download --summary-id <id> [--file-type <n>] [--output <path>]
62
62
  ```
63
63
 
64
- - **积分**:列表 0.1/条;下载 50/篇
64
+ - **积分**:列表 0.1/条;下载 30/篇
65
65
 
66
66
  - `--search-type`:`1` 标题搜索(默认,速度快)| `2` 全文搜索
67
67
  - `--source`:`1` 实时 | `2` 开放来源
@@ -96,7 +96,7 @@ gangtise insight pamirs-summary list [--search-type <n>] [--rank-type <n>] [--re
96
96
  gangtise insight pamirs-summary download --summary-id <id> [--file-type <n>] [--output <path>]
97
97
  ```
98
98
 
99
- 帕米尔(Pamirs)是平台内一个特殊牵头机构的**专家纪要库**,走独立端点,不是 `summary list` 的一个筛选项。⚠️ **需单独购买专家纪要数据库**:未开通时 `list` 直接报 `999004`(不是返回空列表),**整库拿不到**。**不限制历史数据范围**(不受 3 个月窗口约束)。
99
+ 帕米尔(Pamirs)是平台内一个特殊牵头机构的**专家纪要库**,走独立端点,不是 `summary list` 的一个筛选项。⚠️ **需单独购买专家纪要数据库**:未开通时 `list` 直接报 `999004`(不是返回空列表),**整库拿不到**。**不限制历史数据范围**(不受纪要列表的窗口约束)。
100
100
 
101
101
  > 未开通该库时任何查询都直接报 `999004`,不必怀疑参数写错。
102
102
 
@@ -136,7 +136,7 @@ gangtise insight strategy list [--institution <id>] [--location <id>]
136
136
  gangtise insight forum list [--research-area <id>] [--location <id>]
137
137
  ```
138
138
 
139
- - **积分**:列表 **20/条**——务必带 `--size`
139
+ - **积分**:列表 **10/条**——务必带 `--size`
140
140
 
141
141
  - 共用:`--keyword` `--start-time` `--end-time` `--from` `--size` `--location`
142
142
  - `--location`:城市/省份 ID(`reference constant-list --category domesticCity` 查,如 `156440000` 广东省)。传省份 ID 会命中该省
@@ -166,7 +166,7 @@ gangtise insight performance-calendar download --performance-report-id <id> [--o
166
166
  - 返回字段:`performanceReportId`(下载用)/ `securityCodeList[]`(A+H 同时上市会有多个代码)/ `securityName` / `category` / `publishDate` / `title` / `hasAttachment`
167
167
  - `publishDate` 返回的是 `yyyy-MM-dd 00:00:00`,取日期请截前 10 位
168
168
  - download:**只有 `hasAttachment: true` 的记录能下**(先 list 确认);省略 `--output` 用 title-cache 里的真实标题命名,**未命中不自动回查**,退回服务端文件名或 `<type>-<id>`。要回查加 `--resolve-title`——拉 200 条、按 0.1/条 约 20 积分,取回的标题会写回缓存供同批复用
169
- - **积分**:list 0.1/条;download A 股 10/篇、港美股 20/篇
169
+ - **积分**:list 0.1/条;download A 股 1/篇、港美股 2/篇
170
170
 
171
171
  ## 研报 `insight research list/download`
172
172
 
@@ -191,7 +191,7 @@ gangtise insight foreign-report list [--search-type <n>] [--rank-type <n>] [--se
191
191
  gangtise insight foreign-report download --report-id <id> [--file-type <n>] [--output <path>]
192
192
  ```
193
193
 
194
- - **积分**:列表 0.1/条;下载 50/篇
194
+ - **积分**:列表 0.1/条;下载 30/篇
195
195
 
196
196
  - `--region`:`cn` 中国 | `cnHk` 香港 | `us` 美国 | `jp` 日本 | `sea` 东南亚 | `gl` 全球 | `uk` 英国 | `kr` 韩国 | `in` 印度(完整列表见 `references/lookup-ids.md`)。⚠️ 写错区域码不会报错,会返回不按区域筛选的全量结果——传之前核对取值
197
197
  - `--category` / `--llm-tag` / `--rating` / `--rating-change`:同研报
@@ -204,7 +204,7 @@ gangtise insight announcement list [--search-type <n>] [--rank-type <n>] [--secu
204
204
  gangtise insight announcement download --announcement-id <id> [--file-type <n>] [--output <path>]
205
205
  ```
206
206
 
207
- - **积分**:列表 0.1/条;下载 10/篇
207
+ - **积分**:列表 0.1/条;下载 1/篇
208
208
 
209
209
  - `--category`:公告分类 ID,用 `reference constant-list --category aShareAnnouncementCategory` 查。常用:`103910200` 财务报告、`103910700` 股权股本、`103910201` 业绩预告、`103910703` 质押冻结、`103910803` 股权激励、`103910818` 股份增减持、`103910823` 问询函(完整列表见 `references/lookup-ids.md`)
210
210
  - `--file-type`(download):`1` 原始PDF | `2` Markdown
@@ -217,7 +217,7 @@ gangtise insight announcement-hk list [--search-type <n>] [--rank-type <n>] [--s
217
217
  gangtise insight announcement-hk download --announcement-id <id> [--file-type <n>] [--output <path>]
218
218
  ```
219
219
 
220
- - **积分**:列表 0.1/条;下载 20/篇
220
+ - **积分**:列表 0.1/条;下载 2/篇
221
221
 
222
222
  - `--security`:港股代码,如 `01913.HK`(两位数字前缀需补零)
223
223
  - `--category`:港股公告类型 ID(见 `references/lookup-ids.md`)
@@ -233,7 +233,7 @@ gangtise insight announcement-us download --announcement-id <id> [--file-type <n
233
233
  - `--security`:美股代码,如 `TSLA.O`(可重复)
234
234
  - `--category`:美股公告分类 ID,用 `reference constant-list --category usShareAnnouncementCategory` 查(美股独立的 `103980xxx` 段,一级分类:财务报告 / 证券发行 / 重大事项 / 交易提示 / 股本股东 / 股东大会 / 一般公告)
235
235
  - `--file-type`(download):`1` 原始PDF(默认)| `2` Markdown
236
- - **积分**:list 0.1/条;download 20/篇
236
+ - **积分**:list 0.1/条;download 2/篇
237
237
  - `--security TSLA.O` 的 `sourceName` 为「美国证券交易委员会」
238
238
 
239
239
  ## 外资机构观点 `insight foreign-opinion list/detail`
@@ -261,7 +261,7 @@ gangtise insight independent-opinion list [--rank-type <n>] [--security <code>]
261
261
  gangtise insight independent-opinion download --independent-opinion-id <id> --file-type <n> [--output <path>]
262
262
  ```
263
263
 
264
- - **积分**:列表 **5/条**——务必带 `--size`;下载 30/篇
264
+ - **积分**:列表 **1/条**——务必带 `--size`;下载 30/篇
265
265
 
266
266
  - `--security`:境外证券代码,如 `GSK.N`
267
267
  - ⚠️ `--industry`:**只认申万码**(`104xx0000`),中信码报 `100005 枚举值非法`(同 `foreign-opinion`,见上)。返回记录的 `industryList[]` 两套码都带,回查挑申万那条
@@ -2,7 +2,7 @@
2
2
 
3
3
  通用:`--field` 可重复(`--field open --field close`),可用字段见 `references/fields.md`。
4
4
 
5
- **`--field` 字段名必须核对**:上游对不存在的字段名有两套处理——day-kline / minute-kline / fund-flow / realtime 把字段名和值**一起丢掉**(不报错,结果里就是少一列);`fundamental main-business` / `valuation-analysis` 则**只丢值、字段名照请求回显**,按位置拍平就把值贴到了错误的字段上。CLI 对后一种长度不匹配直接失败(退出码 1),不输出错位数据;对前一种比对请求与返回的列名,**缺列就标 `partial` + `missingFields`、退出码 3 并在 stderr 点名是哪几列**(字段名写错或已下线,按 `references/fields.md` 核对)。**不确定字段名就别传 `--field`**(返回全量最稳)。另外 `--field` 只返回点名的列,所以**多只证券或全市场关键字**时 CLI 会补上区分行所需的列并在 stderr 说明:日 K 补 `securityCode` / `tradeDate`、分钟 K 补 `securityCode` / `tradeTime`、实时行情补 `securityCode`(需要时点自己加 `tradeDate` / `tradeTime`);单只证券按点名的列原样返回。`fund-flow` 由服务端自动附带 `securityCode` / `tradeDate`。
5
+ **`--field` 字段名必须核对**:day-kline / minute-kline / fund-flow / realtime 对不存在的字段名把字段名和值**一起丢掉**(不报错,结果里就是少一列)。CLI 比对请求与返回的列名,**缺列就标 `partial` + `missingFields`、退出码 3 并在 stderr 点名是哪几列**(字段名写错或已下线,按 `references/fields.md` 核对)。**不确定字段名就别传 `--field`**(返回全量最稳)。另外 `--field` 只返回点名的列,所以**多只证券或全市场关键字**时 CLI 会补上区分行所需的列并在 stderr 说明:日 K 补 `securityCode` / `tradeDate`、分钟 K 补 `securityCode` / `tradeTime`、实时行情补 `securityCode`(需要时点自己加 `tradeDate` / `tradeTime`);单只证券按点名的列原样返回。`fund-flow` 由服务端自动附带 `securityCode` / `tradeDate`。
6
6
 
7
7
  **关键规则**:查"最近"K线必须显式 `--start-date`/`--end-date` 拉范围,再从 `tradeDate` 取尾部最近 N 条;不要只用 `--limit N`(会截取查询窗口开头)。
8
8
 
@@ -133,6 +133,7 @@ gangtise quote minute-kline --security <code> [--start-time <datetime>] [--end-t
133
133
  - 支持**沪深** A 股个股(`.SH` / `.SZ`,不含北交所)、沪深 ETF(`512800.SH`)、交易所指数(`.SH` / `.SZ`)、概念指数(`.GT`)、行业指数(`.CI` / `.SWI`)、全球指数(`SPX.SPI` / `N225.NKI` / `HSI.HI`…,清单见日 K 一节);**必须传 `--security`**(缺了 CLI 在本地报错)
134
134
  - `--security` 可重复传多只:接口一次只收一只,CLI 逐只并发请求后按传入顺序合并;任一只撞上 `--limit` 时结果标 `partial` + `truncatedSecurities`、退出码 3
135
135
  - `--start-time` / `--end-time`:`yyyy-MM-dd HH:mm:ss`(兼容 `yyyy-MM-dd` 自动补全)
136
+ - **可查范围:最近 1 个月**,随日期滚动(各档相同);整段早于窗口返回空结果、不报错
136
137
  - `--limit` 默认 6000,上限 10000
137
138
  - 常用字段:`securityCode` `tradeTime` `open` `high` `low` `close` `change` `pctChange` `volume` `amount`
138
139
  - **全球指数**:`volume` / `amount` 为 `null`;`tradeTime` 与 `--start-time` / `--end-time` 都按**交易所当地时间**(如日经225 一天的分钟线是 `09:01`–`15:30`,德国 DAX 是 `09:01`–`17:30`)
@@ -8,7 +8,9 @@ gangtise reference securities-search --keyword <text> [--category <type>] [--top
8
8
 
9
9
  - 用途:把公司名/简称/代码/拼音/英文名/曾用名 → `gtsCode`,是 `ai security-clue --gts-code` 等接口的前置查询
10
10
  - `--keyword`(**必选**):支持多维度匹配(中文名/简称/证券代码/拼音首字母/英文名/曾用名)
11
- - `--category`(可重复):`stock` | `dr` 存托凭证 | `index` | `fund`(不传则查所有)
11
+ - `--category`(可重复):`stock` | `dr` 存托凭证 | `index` | `fund` | `bond`(不传则查所有)
12
+ - `bond` 覆盖交易所可转债、国债、地方债、金融债与银行间债券(后缀 `.SH` / `.SZ` / `.IB`),按代码或简称查(如 `113636.SH`、`甬金转债`)。债券代码用于 `bond` 命令组;`quote` 行情、公告等其余命令不收债券代码(传了报 `120001`)
13
+ - 🔴 **可转债在任何 `--category` 下都可能出现**:按公司简称查 `stock` 时,同名可转债常排第一(「甬金」→ `113636.SH 甬金转债` 在 `603995.SH 甬金股份` 之前)。**取第一条 `category` 等于所查类别的行**,别直接取 `list[0]`;用公司全称查时一般只返回正股
12
14
  - `--top`:默认 10,**上限 10**
13
15
  - 返回字段:`gtsCode` / `gtsName` / `category` / `matchScore` / `matchType`
14
16
  - `matchType`:`code` 代码 | `abbr` 简称 | `pinyin` 拼音 | `prev` 曾用名 | `engName` 英文名
@@ -18,6 +20,7 @@ gangtise reference securities-search --keyword <text> [--category <type>] [--top
18
20
  gangtise reference securities-search --keyword 茅台 --category stock --top 3
19
21
  gangtise reference securities-search --keyword 600519
20
22
  gangtise reference securities-search --keyword gzmt
23
+ gangtise reference securities-search --keyword 甬金转债 --category bond
21
24
  ```
22
25
 
23
26
  ## 首席 ID 搜索 `reference chiefs-search`
@@ -91,7 +94,7 @@ gangtise reference constant-category [--format json]
91
94
 
92
95
  - 用途:全量导出常量分类及每个分类适用于哪些接口的哪些参数(无需传参,免积分)
93
96
  - 返回 `{total, list}`,`list[]` 字段:`category`(分类代码)/ `categoryName` / `structureType`(`flat` 平铺 | `tree` 树形)/ `maxLevel` / `usageScopes[]`(`apiName` + `paramName`)
94
- - 分类清单以 `reference constant-category` 的实际返回为准(服务端会随新接口上线增补)。截至 2026-09 的分类:
97
+ - 分类清单以 `reference constant-category` 的实际返回为准(服务端会随新接口上线增补)。截至 2026-10 的分类:
95
98
 
96
99
  | category | 名称 | 结构 | 用于参数 |
97
100
  |----------|------|------|---------|
@@ -112,6 +115,7 @@ gangtise reference constant-category [--format json]
112
115
  | `absUnderlyingAssetType` | ABS 基础资产类型 | flat | `bond basic-info` 的 `absUnderlyingAssetType` |
113
116
  | `ratingType` | 评级类型 | flat | `bond rating-*` 的 `ratingType` |
114
117
  | `exchange` | 交易市场 | flat | `bond` 各命令的 `exchange` |
118
+ | `interestBondSubtype` | 利率债子类型 | flat | `bond issuance-plan` 的 `bondType`(`basic-info` 的 `bondType` 用 `bondType` 这一套) |
115
119
 
116
120
  > **行业 / 研究方向过滤——选哪套 category(⭐ 以此处为准):**
117
121
  >