gangtise-openapi-cli 0.33.0 → 0.34.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 +21 -20
- package/dist/src/cli.js +151 -55
- package/dist/src/core/commandBodies.js +9 -7
- package/dist/src/core/errors.js +6 -3
- package/dist/src/core/quoteSharding.js +11 -11
- package/dist/src/version.js +1 -1
- package/gangtise-openapi/SKILL.md +36 -35
- package/gangtise-openapi/references/commands/ai.md +2 -3
- package/gangtise-openapi/references/commands/fundamental.md +3 -2
- package/gangtise-openapi/references/commands/indicator.md +49 -33
- package/gangtise-openapi/references/commands/insight.md +10 -11
- package/gangtise-openapi/references/commands/quote.md +44 -25
- package/gangtise-openapi/references/commands/reference-and-lookup.md +3 -3
- package/gangtise-openapi/references/commands/vault.md +2 -1
- package/gangtise-openapi/references/examples.md +7 -7
- package/gangtise-openapi/references/fields.md +2 -2
- package/gangtise-openapi/references/lookup-ids.md +2 -2
- package/gangtise-openapi/references/response-schema.md +4 -4
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gangtise-openapi
|
|
3
|
-
version: "0.
|
|
3
|
+
version: "0.34.0"
|
|
4
4
|
description: |-
|
|
5
5
|
通过 gangtise CLI 直接调用 Gangtise OpenAPI,拉取投研原始数据、批量导出、下载文件、调用 AI 能力。
|
|
6
6
|
|
|
@@ -27,11 +27,12 @@ description: |-
|
|
|
27
27
|
4. **时间格式**:datetime `"YYYY-MM-DD HH:mm:ss"`(引号包裹),date `YYYY-MM-DD`。
|
|
28
28
|
5. **多值参数**:优先重复传(最稳、最明确):`--security 600519.SH --security 000858.SZ`。CLI 也支持半/全角逗号分隔(`args.ts` 为语音输入容错),但重复传不易被 shell 吞。
|
|
29
29
|
6. **K 线"最近 N 条"**:必须用 `--start-date`/`--end-date` 拉日期范围,从结果按 `tradeDate` 取尾部最近 N 条。**不要只用 `--limit N`**(截取的是窗口开头)。
|
|
30
|
-
6.1. **日 K 仅历史**:`day-kline`
|
|
31
|
-
6.
|
|
30
|
+
6.1. **日 K 仅历史**:`day-kline` **不返回盘中实时数据**。当日数据入库时间:A 股 ~15:30 / 港股 ~16:30 / 美股 ~07:00(北京时间)。需要盘中快照请走 `quote realtime`。
|
|
31
|
+
6.1.1. 🔴 **`quote day-kline` 一个命令覆盖 A 股 / 港股 / 美股 / 指数**(2026-08-14 合并),可混着传代码。**全市场关键字是 `aShares` / `hkStocks` / `usStocks`,`--security all` 已废弃**(CLI 会报错并提示改用哪个),且关键字**必须单独传**,不能与代码或另一个关键字混填。指数(`.SH`/`.SZ`/`.BJ` 交易所指数、`.GT` 概念、`.CI`/`.SWI` 行业)不支持全市场关键字,须逐个传代码。`day-kline-hk` / `day-kline-us` / `index-day-kline` 已下线(接口仍可调、仍用 `all`),**新代码别用**——它们不校验证券代码,传错返 `total:0` 而不报错。
|
|
32
|
+
6.2. **多标的日 K 不自动分片**:只有全市场关键字才按日切片提额;显式传多个 `--security` 时走单请求(默认 `--limit 6000` / 上限 10000)。**v0.23.0 起:返回行数撞上 `--limit` 时结果会标 `partial`、退出码 3、stderr 警告**(不再静默截断;`--limit` 超 10000 本地直接报错)。仍建议先估 标的数 × 交易日数,接近/超 6000 → 逐只分开拉、或显式 `--limit 10000` 并按日期区间分批。
|
|
32
33
|
7. **CLI 已内置自动化,不要手动复刻**:
|
|
33
34
|
- 翻页 → 首页拿 total 后剩余页并发拉取;🔴 **全量拉取结束会多探一行验证 `total` 是不是服务端封顶**(`opinion` / `foreign-opinion` / `independent-opinion` 的 `total` 恒为 10000 但实际远不止)——探到就标 `partial` + `totalCapped` + 退出 3,**这时导出的是截断结果,要缩小时间范围分片拉**
|
|
34
|
-
- K
|
|
35
|
+
- K 线全市场关键字(`aShares` / `hkStocks` / `usStocks`;旧命令 `all`)跨日期 → 自动按日切片并合并,粒度按各市场单日行数定(A 1 天 / 港 2 天 / 美 1 天)
|
|
35
36
|
- 5xx / `429` / 网络错误 / `999999` → 自动指数退避重试(🔴 贵档端点例外:仅连接失败 / 429 / token 自愈重试,5xx/超时不重放防重复扣分,v0.26.0;`indicator` 端点对 `999999` 不重试,v0.27.0)
|
|
36
37
|
- Token 失效(`0000001008` / `999002`,含已废弃的 `8000014`/`8000015`)→ 自动重新登录并重试一次;凭证错 `999011` → **不重试**(AK/SK 不对不会自己好),查环境变量
|
|
37
38
|
8. **参数命名差异**:Insight/Quote/Vault 用 `--security`,Fundamental/AI 用 `--security-code`(例外:`ai stock-summary` 用 `--security`,`ai security-clue` 用 `--gts-code`)。
|
|
@@ -81,7 +82,7 @@ description: |-
|
|
|
81
82
|
|
|
82
83
|
### 数据范围(能查多久)
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
正式账号口径(下表为官方公布值;实际可查范围随账号服务等级而定,以自己账号实测为准):
|
|
85
86
|
|
|
86
87
|
| 命令组 | 可回溯 |
|
|
87
88
|
|--------|--------|
|
|
@@ -123,7 +124,7 @@ description: |-
|
|
|
123
124
|
| 纪要 / 会议纪要(外部) | `insight summary list` |
|
|
124
125
|
| 帕米尔纪要 / 帕米尔专家纪要 / Pamirs | `insight pamirs-summary list`(专家纪要库,需单独购买;筛选项比 `summary` 少,无 `--source`/`--institution`/`--participant-role`) |
|
|
125
126
|
| 路演 / 调研 / 策略会 / 论坛 | `insight roadshow / site-visit / strategy / forum list` |
|
|
126
|
-
| 财报日历 / 业绩预告 / 业绩快报 / 财报披露排期 | `insight performance-calendar list`(**用 `--start-date`/`--end-date`,不是 `--start-time
|
|
127
|
+
| 财报日历 / 业绩预告 / 业绩快报 / 财报披露排期 | `insight performance-calendar list`(**用 `--start-date`/`--end-date`,不是 `--start-time`**;全表体量很大且按条计费,CLI 强制要求日期范围 / `--security` / `--size` 三者至少其一;只给 `--security` 时另有 1000 行隐式上限,撞上限且 total 还有剩余=筛选可能没生效(标 `partial`、退出码 3),改用日期范围重查。下载原文 `performance-calendar download --performance-report-id`,仅 `hasAttachment: true` 可下) |
|
|
127
128
|
| A 股公告 / 公告 | `insight announcement list` |
|
|
128
129
|
| 港股公告 / HK 公告 | `insight announcement-hk list` |
|
|
129
130
|
| 美股公告 / US 公告 | `insight announcement-us list` |
|
|
@@ -133,7 +134,7 @@ description: |-
|
|
|
133
134
|
| 跨类型语义搜索(研报+纪要+...) | `ai knowledge-batch`(多个 `--resource-type`) |
|
|
134
135
|
| 知识库原文下载(搜到后取全文) | `ai knowledge-resource-download`(前置:`knowledge-batch` 拿 `resourceType`+`sourceId`;`250001`/旧 `433007`=组合不匹配) |
|
|
135
136
|
| 一页通 / 投资逻辑 / 同业对比 / 调研提纲 | `ai one-pager / investment-logic / peer-comparison / research-outline` |
|
|
136
|
-
| 个股看点 / 投研总结 / 公司速览 | `ai stock-summary`(`--security`
|
|
137
|
+
| 个股看点 / 投研总结 / 公司速览 | `ai stock-summary`(`--security` **只收具体代码**,单次最多 6000 个;仅 A 股/港股。⚠️ 2026-08-14 起**不再支持** `aShares`/`hkStocks` 全市场批量) |
|
|
137
138
|
| 业绩点评(异步) | `ai earnings-review` |
|
|
138
139
|
| 观点 PK / 多空辩论(异步) | `ai viewpoint-debate` |
|
|
139
140
|
| 投研线索 | `ai security-clue`(前置:`reference securities-search` 拿 `gts-code`) |
|
|
@@ -141,11 +142,10 @@ description: |-
|
|
|
141
142
|
| 热点话题 / 早午晚报 | `ai hot-topic` |
|
|
142
143
|
| 管理层讨论(财报) | `ai management-discuss-announcement` |
|
|
143
144
|
| 管理层讨论(业绩会) | `ai management-discuss-earnings-call` |
|
|
144
|
-
| A
|
|
145
|
-
|
|
|
146
|
-
| 美股日 K
|
|
147
|
-
|
|
|
148
|
-
| 分钟 K(A 股) | `quote minute-kline` |
|
|
145
|
+
| 日 K(历史,A 股 / 港股 / 美股 / 各类指数,可混查) | `quote day-kline` |
|
|
146
|
+
| 全部沪深京指数日 K / 要指数名称 | `quote index-day-kline`(**旧命令仍有两处 `day-kline` 做不到**:`--security all` 一次拿全部指数;返回 `securityName` 指数名称——`day-kline` 查指数只有代码没有名称) |
|
|
147
|
+
| ~~港股 / 美股日 K~~ | ⚠️ 已下线,用 `quote day-kline`(`day-kline-hk` / `day-kline-us` 仍可调但不校验代码) |
|
|
148
|
+
| 分钟 K(沪深 A 股 + 指数) | `quote minute-kline`(一次一只) |
|
|
149
149
|
| 实时行情(A / 港 / 美) | `quote realtime` |
|
|
150
150
|
| A股资金流向(主力/大单净流入,日频) | `quote fund-flow`(`--security` 或 `aShares` 全市场〔须带 `--start-date`/`--end-date`,按日自动分片〕;免费) |
|
|
151
151
|
| 单证券 A股完整利润表 / 资产负债 / 现金流(累计 / 单季) | `fundamental income-statement[-quarterly] / balance-sheet / cash-flow[-quarterly]` |
|
|
@@ -184,16 +184,16 @@ description: |-
|
|
|
184
184
|
- 港股代码用在 `insight foreign-opinion --security` 还是 `quote day-kline-hk --security`?前者要"境外"格式(`UBER.N`),后者要 `.HK`
|
|
185
185
|
- "成分股" → 题材深度(分组/重点标记/纳入理由)走 `alternative concept-securities`;板块(行业/概念分类树,纯代码名单)走 `reference sector-constituents`
|
|
186
186
|
- **证券基本面 / 指标先按任务形态路由,不是搜到 EDE 就一律走 EDE**:
|
|
187
|
-
- 单证券先优先对应 `fundamental` 专用命令(财务、估值、盈利预测、股东、主营或完整三大报表,多数免费 / 低价)。其中 `valuation-analysis` / `earning-forecast`
|
|
187
|
+
- 单证券先优先对应 `fundamental` 专用命令(财务、估值、盈利预测、股东、主营或完整三大报表,多数免费 / 低价)。其中 `valuation-analysis` / `earning-forecast` 当前仅支持 A 股,港 / 美股的**估值历史分位**与**盈利预测**无可用口径。但**估值指标本身别照抄旧结论**:`finc_pe_ttm` 港股、`qte_mkt_cptl`/`shr_tot` 港美股都已有数。⚠️ **凡「仅 A 股」「无数据」这类否定结论都只是某时点抽查**,数据覆盖在持续扩展;负面结论过期不会报错、只会让你白白拒掉一个能跑的查询。**一律以当次 `scopeList` + 抽查为准**
|
|
188
188
|
- 多证券批量取一组**已实现**财务 / 估值指标 → 优先 `indicator search` 后用 EDE 一次拉取,替代逐只循环;单日或同一报告期横向比较用 `cross-section`,区间走势用 `time-series`(后者不能多指标 × 多证券同时)。**批量按 code 回填加 `--key-by code`**(列头用 `indicatorCode`,防同名指标碰撞)。⚠️ **两个轴的顺序规则不同**:`indicatorList` = 请求顺序,但 **`securityCodeList` 是按代码升序重排的**(请求 `000858,600519,000001` → 回 `000001,000858,600519`)——**行绝不能按请求下标对位**,一律按 `security` 字段取值
|
|
189
|
-
- ⚠️ **估值指标的历史序列:两个接口的财报口径切换时点不同**——`indicator time-series`(EDE)按**正式财报披露日**切,`fundamental valuation-analysis` 按**业绩快报**口径切、通常更早,所以同一天取到的估值指标可能不一样(已验证 `finc_pe_ttm`/`peTtm`;`finc_pb_mrq` 等非 TTM 口径同样在报告期节点变化,规则未单独验证)。做估值分位 / 回测时**两个接口都拉一遍交叉核**,尤其业绩大幅变动的标的(抽查中出现过个别标的在 `valuation-analysis` 侧长期未更新)。分叉时用「总市值 ÷ PE 反推隐含净利润」对照利润表滚动 TTM
|
|
189
|
+
- ⚠️ **估值指标的历史序列:两个接口的财报口径切换时点不同**——`indicator time-series`(EDE)按**正式财报披露日**切,`fundamental valuation-analysis` 按**业绩快报**口径切、通常更早,所以同一天取到的估值指标可能不一样(已验证 `finc_pe_ttm`/`peTtm`;`finc_pb_mrq` 等非 TTM 口径同样在报告期节点变化,规则未单独验证)。做估值分位 / 回测时**两个接口都拉一遍交叉核**,尤其业绩大幅变动的标的(抽查中出现过个别标的在 `valuation-analysis` 侧长期未更新)。分叉时用「总市值 ÷ PE 反推隐含净利润」对照利润表滚动 TTM,即可判出哪侧是陈值。**判断某财报在某日是否已公开,用三大报表返回的 `earliestAnncDate`(首次公告日)**,不要用同一响应里的 `announcementDate`(它在部分证券上各期取值相同);要交叉核实就查 `insight announcement list` 的公告披露日。
|
|
190
190
|
- 始终排除 EDE:A股盈利预测 / 一致预期(含预测 EPS)→ `fundamental earning-forecast`;A股估值历史分位 → `fundamental valuation-analysis`;开高低收 / 成交量等行情与 K 线 → `quote`;单证券完整报表 → 对应三大报表命令。**例外:总市值只有 EDE 有**——`quote realtime` / `day-kline` 都不返回市值,走 `indicator cross-section --indicator qte_mkt_cptl`(2026-08-03 起 A/港/美股均有数,默认单位「元」,用 `--scale` 缩放)。EDE 搜到的基本 / 稀释 EPS 是已实现值,**不能冒充预测 EPS**;港 / 美股缺少上述专用能力时应如实说明不支持,不能用别的语义代替
|
|
191
191
|
- EDE 取数前必须用 `search --format json` 同时核对:`indicatorName` + `description` 语义准确、`scopeList` 覆盖全部目标市场 / 证券类型、`parameterList` 必填参数与枚举可满足;`scopeList` 缺失 / `null` / 空或任一项不符,都视为无法证明覆盖并回退专用接口。专用接口也不覆盖目标市场时,说明当前不可用,不要硬调。`scopeList` 按指标各不相同,不能因 EDE 服务支持 A / 港 / 美股就假定某个指标三市场都覆盖
|
|
192
192
|
- `indicator search` 免费,`cross-section` / `time-series` 按单元格计费;除多证券批量的效率收益外,仍优先免费 / 低价的 `quote` 或 `fundamental`
|
|
193
193
|
- 行业 / 宏观指标(空调销量、社融等,无证券维度)走 `alternative edb-*`(EDB),不要与证券级 EDE 混用
|
|
194
|
-
- **EDE「没数据」和「代码写错」是两回事**(2026-08-
|
|
195
|
-
- **EDE 指标参数名一律以 `indicator search --format json` 的 `parameterList`
|
|
196
|
-
-
|
|
194
|
+
- **EDE「没数据」和「代码写错」是两回事**(2026-08-15 实测):**①代码写错 → 直接报 `100003` 并指名是哪个**(指标写错报「指标 xxx 不存在」,证券写错报「xxx 不是有效证券或者板块ID」,美股用 `.US` 而非 `.O`/`.N` 同理),**无论同批有没有其它正确的 code 都会报**,所以拼写错误现在是一眼可见的、不用再靠对照推断;**②代码有效但无数据 / 无覆盖 / 未来日期 → 行列都保留**(含单指标 × 单证券的 1×1)并给一个占位单元格,**退出码 0**。🔴 **占位值不统一、由指标决定**:多数是 `null`,但个别(最常用的是 `is_dnrpnp` 扣非归母净利润)填 **`0`**,而 `0` 会照常穿过比较与聚合——`screener` 的 `F1 > 0` 因此可能筛出空集、整列求均值可能差几十倍(茅台时序实测差 52 倍)。**别把 `0` 当真值**,无覆盖时它与真值无法区分,**和已知有数的标的一起查做对照仍然必要**,详见 `references/commands/indicator.md`。日期语义按指标分两类:财务报表指标=报告期末(可为非交易日)、`finc_pe_ttm` / `finc_pb_mrq` 等日频估值=最新交易日(⚠️ `finc_pb_mrq` 是日频的,用报告期末日期会取到几个月前的陈值);混合取数按各自有效日期分次 `cross-section` 再按证券合并,别塞进同一个 `--date`。详见 `references/commands/indicator.md`
|
|
195
|
+
- **EDE 指标参数名一律以 `indicator search --format json` 的 `parameterList` 为准**,不要凭记忆或照抄示例。参数名写错会报 `100003` 并指出是哪个指标的哪个参数(如复权参数是 `adjustType`,写成 `adjustmentType` 直接报错),按报错信息改即可。⚠️ **报告期类指标(`is_*` 利润表等)必填 `reportDate`,不吃 `tradeDate`**——只传 `--date` 会报「不支持参数 tradeDate; 缺少必填参数 reportDate」,要补 `--indicator-param "code:reportDate=YYYY-MM-DD"`;行情 / 估值类(`qte_*` / `finc_*`)用 `--date` 即可。`--security` 支持板块 ID(`reference sector-search` 的 10 位 `sectorId`;`--indicator` 只收指标编码)。根级 `--scale` 只作用于声明了 `scale` 的指标,价格与金额可以混查。
|
|
196
|
+
- **新增指标**:融资融券 21 个 `mgn_*`(`mgn_bal` 两融余额 / `mgn_fin_*` 融资 / `mgn_sl_*` 融券 / `mgn_flag` 是否标的,**仅 A 股有数**;区间类的 `changePeriod` 2026-08-14 起改为**可选**);行业分类 `scr_indu`(一个指标覆盖申万/中信/恒生/GICS 四套,**必填** `industryType` 1-4 + `industryLevel` 0-4,A/港/美股均支持,返回字符串),2026-08-14 又加了三个**行业组合指标** `scr_indu_citic` / `scr_indu_sw` / `scr_indu_gics`(体系写进编码,只需可选的 `industryLevel`;单套体系用它们更省事,横比多套仍用 `scr_indu`)
|
|
197
197
|
- "业绩点评"双义消歧:**检索已有**(研报/纪要里的业绩点评内容)走 `insight ... list --llm-tag earningsReview`(0.1/条);**AI 现生成**一份走 `ai earnings-review`(异步、50/次)。不确定问一句
|
|
198
198
|
|
|
199
199
|
## 公司名 → 证券代码
|
|
@@ -265,7 +265,7 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
265
265
|
|
|
266
266
|
日期参数**按参数名判断、不按命令组**(命令组会误导——AI 里既有 `--start-time` 又有 `--date`/`--report-date`;Insight 里 `performance-calendar` 是唯一用 `--start-date`/`--end-date` 的 list):名字带 `-date` 的(`--start-date`/`--end-date`/`--date`/`--report-date`)一律 `YYYY-MM-DD`,覆盖 Quote/Fundamental、`insight performance-calendar`、AI 的 `theme-tracking`(`--date`)/`hot-topic`/`management-discuss-*`(`--report-date`)、Alternative `edb-data`、Indicator `cross-section`(`--date`)/`time-series`;名字带 `-time` 的(`--start-time`/`--end-time`)用 `YYYY-MM-DD[ HH:mm[:ss]]`(秒可省、空格或 `T` 分隔)或 10/13 位时间戳,覆盖 Insight/Vault 各 list、`quote minute-kline`、`ai security-clue`、`ai knowledge-batch`。其中 **A 股公告(`insight announcement list`)与 `knowledge-batch` 会把输入转成 13 位毫秒**(10 位秒自动 ×1000),其余 `-time` 命令(含 `announcement-hk`/`announcement-us`)原样透传字符串;CLI 输入统一接受 10/13 位纯数字或 `YYYY-MM-DD[ HH:mm[:ss]]`(同上:秒可省、空格或 `T` 分隔)。
|
|
267
267
|
|
|
268
|
-
|
|
268
|
+
支持排序切换的命令:opinion / summary / pamirs-summary / research / foreign-report / announcement / announcement-hk / announcement-us / foreign-opinion / independent-opinion / official-account。**要最新的加 `--rank-type 2`(严格按 `publishTime` 倒序);要最相关的用默认 `--rank-type 1` + `--keyword` + `--search-type 2`(综合排序按相关度挑条目)**——两者从同一结果集里取的是**不同的子集**,不是同一批内容换个排法。⚠️ 综合排序**挑完之后仍按时间倒序排列**,所以别用「结果是不是时间倒序」判断它有没有生效,要比条目 ID。没有 `--keyword` 时两者无差异,属正常。详见 `insight.md` 开头。其他 list 命令按 API 默认排序。
|
|
269
269
|
|
|
270
270
|
## 异常处理
|
|
271
271
|
|
|
@@ -287,12 +287,12 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
287
287
|
| ✅ `999999` | 系统错误。**`indicator`(EDE)2026-08-01 前用此码表示查询无数据,之后改为返回数据体**,所以这个码基本只剩真故障。⚠️ 现在「无数据」是保留行列的占位单元格(多为 `null`,个别指标是 `0`,见 `indicator.md`),**不是空表**;空表另有含义(整轴 code 未识别) | 普通端点自动重试 ×2;🔴 贵档与 `indicator` 端点不重试 | 确认参数无误仍报此码即服务端故障 |
|
|
288
288
|
| ✅ `410110` | **异步生成中**(HTTP 400,旧码未切)。新码 `140001`,CLI 两码都认 | 轮询视为 pending | 继续等 |
|
|
289
289
|
| ✅ `410111` | **异步生成失败**(HTTP 400,旧码未切)。新码 `140002`,CLI 两码都认 | 终态 | **不重试**,换参数 |
|
|
290
|
-
| ✅ `130002` |
|
|
290
|
+
| ✅ `130002` | 资源不存在——下载类的常见码:`reportId` 不存在 / 非数字多归此码。另有更具体的 `130003`(资源未生成 / 无附件)与 `130005`(`fileType` 非法) | — | 确认 ID 有效且本账号可见;换 `--file-type` 或换一篇验证 |
|
|
291
291
|
| ✅ `130001` | 数据未找到,或**该指标无权限**(`indicator` 内层失败会带具体 msg 如"指标无权限") | — | 检查查询条件与指标权限 |
|
|
292
292
|
| ✅ `100001` | 缺必填参数——**msg 带字段名**(「缺少必填参数: reportId」) | — | 按 msg 指的字段补上 |
|
|
293
|
-
| ✅ `110001` / `110002` | 日期格式错(msg 带字段名)/
|
|
294
|
-
| ✅ `120001` | 证券代码无效——msg 带原因(「非有效A
|
|
295
|
-
| ✅ `110003` |
|
|
293
|
+
| ✅ `110001` / `110002` | 日期格式错(msg 带字段名)/ 起晚于止。⚠️ **服务端 2026-08-14 起对多种格式做宽松解析**(`2026/07/01`、`20260701`、`07/01/2026` 都能被接受),所以「没报 110001」不等于「格式被按你的意思理解了」 | — | 按参数名:`--*-date` 用 `YYYY-MM-DD`、`--*-time` 用 `YYYY-MM-DD HH:mm:ss`;`ai knowledge-batch` 的 --start-time/--end-time 收时间戳或 datetime,CLI 统一转 13 位毫秒 |
|
|
294
|
+
| ✅ `120001` | 证券代码无效——msg 带原因(「非有效A股」)。Fundamental 系与 `quote day-kline`/`realtime`/`minute-kline`/`fund-flow` 都会报;**旧版 `day-kline-hk`/`day-kline-us`/`index-day-kline` 仍静默返回空** | — | `reference securities-search` 确认代码与后缀(`600519.SH` / `00700.HK`) |
|
|
295
|
+
| ✅ `110003` | **超出账号数据权限的时间范围**。范围按账号等级而定、**不是平台常量**,且**同一账号下按接口还可能不一样**——出现过同日同指标同证券 `cross-section` 取得到、`indicator screener` 却报此码的情况 | — | 把日期移进权限范围内;整个区间都早于下界时缩短窗口无用(`--fiscal-year 2015` 无论怎么缩都报错)。`screener` 撞界改用 `cross-section` 拉数再本地筛,否则联系客户经理开通 |
|
|
296
296
|
| ✅ `100006` | 查询/下载数量超限——**取代旧 `430007`**;实测 `fund-flow` 全市场不传日期即此码 | — | 缩短日期范围或调小 `--size`/`--limit`;全市场场景应已自动分片 |
|
|
297
297
|
| ✅ `240001` | 财报期未披露或超出查询期(`earnings-review` 提交阶段就报,**不扣积分**) | — | 换更早的 `--period`(`2025q3` → `2025interim`) |
|
|
298
298
|
| ✅ `250001` | 不支持的数据源——**取代旧 `433007`** | — | 检查 `resourceType + sourceId` 组合 |
|
|
@@ -304,11 +304,11 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
304
304
|
| ✅ `900002` | **请求方法不正确**(msg「请求类型有误」,HTTP 405) | — | `raw call` 时确认该 endpoint 是 GET 还是 POST |
|
|
305
305
|
| ✅ `140002` | 终态参数错:AI 异步生成失败,或 `indicator` 的指标必填参数缺失 / 枚举越界 / 表达式语法错(实测 2026-08-02) | **不重试**(终态码) | 按 msg 改参数重提;EDE 的参数名与枚举读 `indicator search --format json` 的 `parameterList` |
|
|
306
306
|
|
|
307
|
-
**⚠️
|
|
308
|
-
-
|
|
309
|
-
- **财报接口的日期按「报告期末」过滤**,不是公告日:`fundamental balance-sheet` 等的 `--start-date`/`--end-date` 匹配的是 `endDate` 字段(如 `20200630
|
|
310
|
-
-
|
|
311
|
-
-
|
|
307
|
+
**⚠️ 几类"不报错"的坑(最难发现,逐条都关系到拿没拿到对的数)**
|
|
308
|
+
- **日期只写 `YYYY-MM-DD`、时间只写 `YYYY-MM-DD HH:mm:ss`(或 10/13 位时间戳)**。CLI v0.28.0 起 date 与 datetime 两类(含所有 insight/vault 透传参数)都在发请求前校验,其余写法直接报 `ValidationError`。接口本身能接受多种格式,但**「年在后」写法(`01-07-2026`)存在月/日歧义**——会按月在前读作 1 月 7 日,本意写 7 月 1 日的就拿到差半年的数据且不报错。**CLI 只放行 `YYYY-MM-DD` 就是为了堵掉这个歧义,这是有意的**;绕过 CLI 直连接口时务必自己用标准格式
|
|
309
|
+
- **财报接口的日期按「报告期末」过滤**,不是公告日:`fundamental balance-sheet` 等的 `--start-date`/`--end-date` 匹配的是 `endDate` 字段(如 `20200630`);公告日看 `earliestAnncDate`(首次公告日,做时点对齐用这个)而不是 `announcementDate`。**查某期财报要传季度末日期**(`2020-06-30` / `2020-03-31` / `2020-09-30` / `2020-12-31`);传 `2020-07-01` 这类非报告期日期会返回 0 行,属正常行为,不是没数据
|
|
310
|
+
- **非法证券代码**:`quote day-kline` / `realtime` / `minute-kline` / `fund-flow` 与 Fundamental 系都会报 `120001`,按报错核对后缀即可。⚠️ **三个已下线的旧端点 `quote day-kline-hk` / `day-kline-us` / `index-day-kline` 则返回 `total:0`**,与"该票该区间真无数据"无法区分——**用这三个拿到空结果时先回头核对代码后缀**。它们的能力已并入统一 `day-kline`(支持 A 股 / 港股 / 美股 / 交易所指数 / 概念指数 `.GT` / 申万行业指数 `.SWI`),新代码直接用 `day-kline`
|
|
311
|
+
- **枚举值拼错的后果按端点不同,且部分端点不报错**:纪要 `summary`、三个公告 list、路演 `roadshow`、调研 `site-visit` 的 `--search-type` / `--rank-type` / `--category` / `--market` 等传非法值会报 `100005`;而 `insight research`(内资研报)、`foreign-report`(外资研报)、`official-account`、`opinion` 上非法值被**静默忽略**,该筛选按未传处理。🔴 **最坏的一种**:`research` / `foreign-report` 上非法的 `--search-type` 会**连带吞掉 `--keyword`**——`research list --keyword 茅台 --search-type 99` 拿到的是**未经筛选的全库**,与不传 `--keyword` 的结果一致,而不是搜索结果。**v0.32.0 起 CLI 本地拦截**:全部 `--search-type` / `--rank-type`(19 处)、全部 `--file-type`(9 处下载,`foreign-report` 为 1–4、其余 1–2)、`pamirs-summary` 的 `--category` / `--market`、`--top` 上限、以及 `reference securities-search` / `institution-search` / `official-account-search` 的 `--category`。**仍未覆盖**:`insight research/summary --category`、`--market`、`--source`、`--llm-tag` 等仍是自由字符串,拼错不报错也不生效——这些要自己核对。**拼错的筛选条件会伪装成"结果正常",枚举拼写要自己保证**
|
|
312
312
|
- **`viewpoint-debate` 传敏感内容不会被提前拦截**——实测不返回 `240002`,而是照常受理、扣满 50 积分、生成阶段才以 `410111` 失败。**提交前自己把关措辞**
|
|
313
313
|
- **`ai one-pager` 的非法 `mode` 被静默忽略**,照常生成并扣 50 积分
|
|
314
314
|
|
|
@@ -320,8 +320,8 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
320
320
|
| `999007` / `999008` / `999009` | 方法/媒体类型/请求体不支持 | 实际返回 `900002` / `999999` / `100003` |
|
|
321
321
|
| `999003` / `999005` / `999006` | 无接口权限 / 积分不足 / 限流 | 未构造出(需特定账号状态) |
|
|
322
322
|
| `999012`–`999016` | 账号禁用/过期、租户失效、无长期 token、IP 不合规 | 未构造出 |
|
|
323
|
-
| `100002` / `100004` / `100005` | 类型错 / 分页非法 / 枚举非法 | 类型错归 `100003
|
|
324
|
-
| `
|
|
323
|
+
| `100002` / `100004` / `100005` | 类型错 / 分页非法 / 枚举非法 | 类型错归 `100003`。**`100005` 与 `100006` 2026-08-14 起在部分 list 上真会触发**(枚举非法、`size` 超 50);未覆盖的端点(`research` / `foreign-report` / `opinion` / `official-account`)仍按未传处理,见上方「实测发现的坑」 |
|
|
324
|
+
| `130004` | 下载 ID 非数字 | 多归 `130002` |
|
|
325
325
|
| `140001` / `140002` | 结果生成中 / 处理失败 | 异步端点仍用 `410110` / `410111` |
|
|
326
326
|
| `210001` / `220001` / `230001` | 研报/观点/分享文件不支持下载 | 未构造出 |
|
|
327
327
|
| `230002` | 微信账号未绑定(私域,2026-08-07 新增)。⚠️ **`vault wechat-*` 就在该模块下、够得着**:要求先绑定并激活群消息助理且助理已入群 | 未构造出(本账号已绑定) |
|
|
@@ -338,11 +338,10 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
338
338
|
**其他场景**:
|
|
339
339
|
- CLI 未安装 → `npm install -g gangtise-openapi-cli`
|
|
340
340
|
- **退出码 3 = `partial: true`,结果少了数据**(保留已取到的部分;stderr 有 warning,`--format json` 才看得见标记,table/csv/jsonl 只有数据行、看不出问题):
|
|
341
|
-
- 触发场景:翻页/K线分片有页失败、服务端返回行数与 `total`
|
|
342
|
-
- **EDE
|
|
343
|
-
- **`screener` 的缺列按表达式的布尔结构判**:把缺列的变量当作「无法求值」,看整个表达式**是否还有一条能成立的分支**——`A && B` 要两边都可求值,`A || B` 只要一边。**一条分支都不剩 → 退出码 1、不输出任何结果**(返回的行以「通过了该条件」的名义呈现,而条件根本无法证明被执行过);**还有分支可求值,或缺的只是未参与表达式的辅助变量 → `partial` + 退出码 3**。所以 `F1 || F2` 缺 F1 是降级(行可能靠 F2 正当命中),缺两个则是致命;`F1 && (F2 || F3)` 缺 F1 仍是致命(F1 是必选合取项)。⚠️
|
|
341
|
+
- 触发场景:翻页/K线分片有页失败、服务端返回行数与 `total` 矛盾(提前短页)、`total` 撞服务端上限(`totalCapped`,见 opinion 家族)。附带定位字段:页失败 `failedPages`;分片失败 `failedShards`、分片撞行数上限 `truncatedShards`(均带日期区间可缩窗补拉)。⚠️ EDE 的 `omittedIndicators` / `omittedSecurities` 仍在代码里,但 2026-08-15 起写错的 code 在服务端就被 `100003` 拒了(退出 1),这条路基本收不到样本
|
|
342
|
+
- **EDE 代码写错现在是退出码 1 + `100003`,msg 里直接点名是哪个 code**(美股后缀用 `.O`/`.N`,不是 `.US`),不用再从退出码 3 反推。真的没覆盖仍是占位单元格(多数 `null`、个别指标 `0`)+ 退出码 0
|
|
343
|
+
- **`screener` 的缺列按表达式的布尔结构判**:把缺列的变量当作「无法求值」,看整个表达式**是否还有一条能成立的分支**——`A && B` 要两边都可求值,`A || B` 只要一边。**一条分支都不剩 → 退出码 1、不输出任何结果**(返回的行以「通过了该条件」的名义呈现,而条件根本无法证明被执行过);**还有分支可求值,或缺的只是未参与表达式的辅助变量 → `partial` + 退出码 3**。所以 `F1 || F2` 缺 F1 是降级(行可能靠 F2 正当命中),缺两个则是致命;`F1 && (F2 || F3)` 缺 F1 仍是致命(F1 是必选合取项)。⚠️ **前提是服务端返回了命中行**——零命中时走「nothing matched」+ **退出码 0**。**空集别急着当成「条件成立但无标的符合」**:指标码写错现在会直接报 `100003`(退出 1),所以剩下的头号嫌疑是**占位值 `0`** —— `F1 > 0` 在 `is_dnrpnp` 这类填 `0` 的指标上必然筛出空集
|
|
344
344
|
- 拿到 3 就必须告知用户缺了哪段,不能当成功静默继续
|
|
345
|
-
- (历史:条件选股把同一指标绑到多个变量曾触发 `unreliable: true` + `duplicatedIndicators`,因服务端把所有绑定按最早日期取数。2026-08-08 服务端已修复,该标记**已从 CLI 移除**,这类查询现在正常可用)
|
|
346
345
|
- 空结果(list 为空数组) → 建议扩大时间范围、换关键词、去掉部分筛选
|
|
347
346
|
- 模糊公司名匹配多只("平安" → 中国平安 / 平安银行 / ...) → 列出让用户选
|
|
348
347
|
- 下载文件路径冲突 → 询问覆盖
|
|
@@ -363,7 +362,7 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
363
362
|
3. 行业 ID 用错体系:`--industry`(用 `citicIndustry` 码 `1008001xx`)/ `--research-area`(行业同样用 `citicIndustry` 码 `1008001xx`,方向才用 `gangtiseIndustry` 码 `122000xxx`——`gangtiseIndustry` 里**只有 6 条方向码、没有行业**)/ `--gts-code`(申万 `821xxx.SWI`)。申万数字码 `104xx0000` 用于 `--research-area` 时多数端点返 0,详见 `references/commands/reference-and-lookup.md`
|
|
364
363
|
4. `--rating` / `--category` 等枚举值拼错(参考对应命令的 references 文件)
|
|
365
364
|
|
|
366
|
-
**`999011` 凭证无效**(旧码 `8000014`/`8000015
|
|
365
|
+
**`999011` 凭证无效**(旧码 `8000014`/`8000015`;不区分是 AK 错还是 SK 错,**登录直接失败、CLI 不重试**)
|
|
367
366
|
1. `echo $GANGTISE_ACCESS_KEY` 验环境变量是否 export
|
|
368
367
|
2. AK 和 SK 是否写反
|
|
369
368
|
3. 账号是否到期 / 异常(`gangtise auth status`;对应 `999012`/`999013`)
|
|
@@ -379,7 +378,9 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
379
378
|
|
|
380
379
|
**翻页很慢 / 卡住** → `--verbose` 看哪一页慢;可 `GANGTISE_PAGE_CONCURRENCY=10` 提速,或缩小时间范围。
|
|
381
380
|
|
|
382
|
-
|
|
381
|
+
**全市场 K 线报 `100006`**(旧码 `430007`)→ 单日数据仍超 10K 行(极端情况)→ 临时改用更窄的 `--start-date`/`--end-date`,或改为单只 `--security` 单独拉。
|
|
382
|
+
|
|
383
|
+
**`quote day-kline --security all` 被 CLI 拒**(`'all' is not a whole-market keyword`)→ 服务端 2026-08-14 停止支持该写法 → 换成 `aShares` / `hkStocks` / `usStocks` 之一,单独传。
|
|
383
384
|
|
|
384
385
|
**AI agent 命令(one-pager 等)超时** → 服务端生成耗时长,CLI 默认 30s → `GANGTISE_TIMEOUT_MS=120000` 后重试。
|
|
385
386
|
|
|
@@ -53,10 +53,10 @@ gangtise ai peer-comparison --security-code <code>
|
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
55
|
gangtise ai stock-summary --security <code> [--security <code2> ...]
|
|
56
|
-
gangtise ai stock-summary --security <aShares|hkStocks>
|
|
57
56
|
```
|
|
58
57
|
|
|
59
|
-
- `--security
|
|
58
|
+
- `--security`(**必选**,可重复):**只收具体证券代码**,单次最多 6000 个
|
|
59
|
+
- 🔴 **2026-08-14 起不再支持全市场批量**:`aShares` / `hkStocks` 这类市场关键词已被移除,CLI 会本地报错(服务端对它们返 `120001`,读起来像代码写错,容易误判)。需要覆盖一批标的就先用 `reference securities-search` 或自有清单取到代码,再分批传入
|
|
60
60
|
- **仅支持 A 股和港股**
|
|
61
61
|
- **积分**:`3`/条;个股若无看点总结则不在返回列表中,也不扣分
|
|
62
62
|
- 返回字段:`securityCode` / `securityName` / `summary`(精炼投研总结)/ `date`(更新日期 `yyyy-MM-dd`)
|
|
@@ -64,7 +64,6 @@ gangtise ai stock-summary --security <aShares|hkStocks>
|
|
|
64
64
|
**示例:**
|
|
65
65
|
```bash
|
|
66
66
|
GANGTISE_TIMEOUT_MS=120000 gangtise ai stock-summary --security 600519.SH --security 00700.HK --format json # 茅台 / 腾讯看点
|
|
67
|
-
GANGTISE_TIMEOUT_MS=120000 gangtise ai stock-summary --security hkStocks --format json # 全部港股,total 2662
|
|
68
67
|
```
|
|
69
68
|
|
|
70
69
|
## 调研提纲 `ai research-outline`
|
|
@@ -16,8 +16,9 @@ gangtise fundamental <income-statement|balance-sheet|cash-flow> --security-code
|
|
|
16
16
|
- `--report-type`:`consolidated`(默认)| `consolidatedRestated` | `standalone` | `standaloneRestated`
|
|
17
17
|
- `--fiscal-year` 可重复:`--fiscal-year 2023 --fiscal-year 2024`
|
|
18
18
|
- `--start-date`/`--end-date` 有值时覆盖 `--fiscal-year`
|
|
19
|
-
- **固定返回字段**(无需 `--field` 指定):`securityCode` `companyName` `category` `announcementDate` `endDate` `fiscalYear` `period` `reportType` `companyType` `currency` `unit`
|
|
20
|
-
-
|
|
19
|
+
- **固定返回字段**(无需 `--field` 指定):`securityCode` `companyName` `category` `announcementDate` **`earliestAnncDate`** `endDate` `fiscalYear` `period` `reportType` `companyType` `currency` `unit`
|
|
20
|
+
- 🔴 **做时点对齐(「这份财报在某日是否已公开」)用 `earliestAnncDate`(首次公告日),不要用 `announcementDate`**:`announcementDate` 在部分证券上会把同一财年各期都填成同一个日期,据此判断「某期数据在某日是否已公开」会得出相反的结论;`earliestAnncDate` 是该报告期自身的首次公告日。盘后披露的报告计次日,即**永不早于**真实披露时点,用来做 point-in-time 是安全的方向。要交叉核实披露日可查 `insight announcement list`
|
|
21
|
+
- `companyType` / `currency` 在三张累计口径表上均正确(`companyType=一般企业`/`银行`/`保险公司`/`证券公司`,`currency=人民币`)。⚠️ **仅 A 股 `*-quarterly` 单季表例外**:`companyType` 返回未映射的数字码(如 `102119999`),`currency` 正确——单季表读公司类型时按需自行映射,科目数字本身不受影响
|
|
21
22
|
|
|
22
23
|
**常用字段速查:**
|
|
23
24
|
- 利润表:`totalOpRev` 营收 | `netProfit` 净利润 | `netProfitAttrParent` 归母 | `basicEPS` EPS | `rdExp` 研发
|
|
@@ -31,7 +31,7 @@ gangtise indicator search --keyword <text> [--limit <n>]
|
|
|
31
31
|
- 返回字段:`indicatorCode` / `indicatorName` / `description`(算法与口径)/ `scopeList`(该指标适用的市场 + 证券类型 + `usageRestriction`)/ `parameterList`(可传的 `--indicator-param` 参数名及枚举)/ `score`
|
|
32
32
|
- **市场范围按指标判断**:`scopeList` 会返回实际覆盖范围,且指标之间不同;不能笼统写成每个指标都覆盖 A / 港 / 美股。覆盖面在持续扩,别把抽查结论当常量:截至 **2026-08-03** 实测 `qte_mkt_cptl`/`shr_tot` 已覆盖 A/港/美股,`finc_pe_ttm` 覆盖 A/港股,`finc_pb_mrq` 仍只有 A 股,`is_op_rev_ttm`/`is_shnp_ttm` 覆盖 A/港股。目标列表含任一 scope 外证券时,本批 EDE 校验不通过,应回退专用接口
|
|
33
33
|
- **`scopeList[].usageRestriction`**:该指标在具体接口上的限制,`null` = 无限制。⚠️ **它是提示不是硬约束**——标着「不支持指标时间序列接口」的 `qte_vol_intvl` 实测调时序照样返数据、不会被拦下(2026-08-02)。当成「口径可能不对、结果别当真」看,别指望它会报错
|
|
34
|
-
- ⚠️ **`scopeList` 是声明不是保证**:它可能**超前于数据**——`finc_pb_mrq` 声称覆盖 A股+港股,实测港股仍无数据(复测 2026-08-08)。反过来也发生过:`qte_mkt_cptl`/`shr_tot` 在 08-02 时声称覆盖港/美股却无数据,08-03
|
|
34
|
+
- ⚠️ **`scopeList` 是声明不是保证**:它可能**超前于数据**——`finc_pb_mrq` 声称覆盖 A股+港股,实测港股仍无数据(复测 2026-08-08)。反过来也发生过:`qte_mkt_cptl`/`shr_tot` 在 08-02 时声称覆盖港/美股却无数据,08-03 数据补上了。**判断成本已经很低**:无数据会保留行列、给一个占位单元格,抽查一行就能看出覆盖情况;code 写错则直接报 `100003`,两种情形不会再混淆。⚠️ **但占位值不统一**——多数指标是 `null`,个别是 `0`(详见下方「缺数据 vs 代码写错」)
|
|
35
35
|
- 美股代码用交易所后缀 `.O`(NASDAQ) / `.N`(NYSE):用 `AAPL.O`,`AAPL.US` 取不到数据
|
|
36
36
|
|
|
37
37
|
```bash
|
|
@@ -50,14 +50,14 @@ gangtise indicator cross-section --indicator <code> [--indicator <code2>] \
|
|
|
50
50
|
- `--security`(**至少 1 个**):证券代码,如 `600519.SH`(A股)/ `09992.HK`(港股)/ `AAPL.O`(美股,用 `.O`/`.N` 后缀,非 `.US`),可重复传多个。**也接受板块 ID**(`reference sector-search` 返回的 10 位 `sectorId`,如 `1000000287` 中信白酒 → 19 只成分股),代码与板块可混传,服务端取并集去重。⚠️ 中信行业码那类 9 位 ID(`100800109`)**不是** `sectorId`,传进去返 0 只
|
|
51
51
|
- `--date`(**必选**):数据日期 `yyyy-MM-dd`。**CLI 把它下发为每个指标各自的 `tradeDate`**(2026-08-01 起服务端取消了根级 date)。日期语义按指标分两类——财务报表指标=报告期末(可为非交易日,实测 `2024-03-31` 可取数)、`finc_pe_ttm` / `finc_pb_mrq` 等日频估值=交易日(详见下方「日期路由」)
|
|
52
52
|
- `--date` 必填是 CLI 的**护栏**,不是协议要求:`cross-section` 本身接受 `indicatorParamList: []`(无参指标如 `pty_op_scope` 照常返值,实测 2026-08-02)。但绝大多数指标吃 `tradeDate`,漏传就是一张空表且退出码 0,所以宁可多带一个无害参数。(`screener` 的 `--date` 也必填,同理)
|
|
53
|
-
-
|
|
53
|
+
- 🔴 **吃 `reportDate` 的指标必须显式传 `reportDate`**:`--indicator-param "code:reportDate=2024-12-31"`。**2026-08-15 起服务端不再接受 `tradeDate`**——只给 `--date` 会报 `100003「指标 xxx 不支持参数 tradeDate; 指标 xxx 缺少必填参数 reportDate」`(此前一版会把 `tradeDate` 归一到所在报告期,现已改为报错)。哪些指标属于这一类看 `indicator search` 的 `parameterList`:`reportDate` 标 `required: true` 且列表里没有 `tradeDate` 的就是。利润表 / 资产负债表 / 现金流量表类(`is_*` 等)都在此列;行情与估值类(`qte_*` / `finc_*`)仍用 `--date` 即可。CLI 检测到你已为某指标传了 `tradeDate` 或 `reportDate` 就不再注入 `--date`,所以补上 `--indicator-param` 就能正常取数
|
|
54
54
|
- `sDate`(区间起始日)**不算**替代日期:它和 `tradeDate` 共存(`tradeDate` 是区间终点且 required),传了 `sDate` 后 `--date` 照常下发
|
|
55
55
|
- `--currency`:币种 `DFT`(原始,默认)/`CNY`/`HKD`/`USD`/`EUR`/`GBP`/`JPY`/`TWD`/`MOP`/`AUD`(**大写**,2026-08-01 起服务端枚举已统一大写)
|
|
56
56
|
- `--scale`:量纲 `0`(个,默认)/`3`(千)/`4`(万)/`6`(百万)/`8`(亿)/`9`(十亿)
|
|
57
|
-
-
|
|
57
|
+
- 根级 `--scale` **只作用于支持该参数的指标**:`qte_close` + `qte_mkt_cptl` 混查加 `--scale 8`,收盘价保持原值、总市值按亿缩放,价格类与金额类可以放心混查。要精确控制到单个指标用 `--indicator-param "code:scale=8"`
|
|
58
58
|
- **支持多指标 × 多证券**(单日横截面)
|
|
59
59
|
- **输出(宽表)**:每行一只证券,列为 `security / name / <各指标名>…`。**没有 `date` 列**——查询日期现在挂在每个指标自己的参数上,各列可以是不同日期
|
|
60
|
-
- **`--key-by name|code`**(默认 `name`):指标列头用显示名还是 `indicatorCode`。**批量按 code 回填必用 `--key-by code`**——指标名会碰撞(多个指标同显示名,如 `cf_finc_exp`/`_qtr` 都叫「财务费用」),唯有 code 唯一(行轴 `security` 本就是 code,`code` 模式整表可按 code 寻址,免去 raw API
|
|
60
|
+
- **`--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` 字段取值
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
63
|
# 多证券 × 同一报告期的已实现财务指标
|
|
@@ -79,7 +79,7 @@ gangtise indicator time-series --indicator <code> [--indicator <code2>] \
|
|
|
79
79
|
|
|
80
80
|
- `--indicator` / `--security`:同上,但**只允许「多指标 × 单证券」或「单指标 × 多证券」**,不能两边都多个(要多 × 多用 `cross-section`,否则报 `100003`「仅支持多指标单证券或单指标多证券」)。**单指标时 `--security` 才能传板块 ID**;多指标时只能传一个证券代码、不得传板块 ID
|
|
81
81
|
- `--start-date` / `--end-date`(**均必选**):区间端点 `yyyy-MM-dd`。时序的时间范围由这两个参数统管,**不要**再用 `--indicator-param` 传 `tradeDate` 这类单日期参数
|
|
82
|
-
- ⚠️ **同一 `indicatorCode` 挂多套参数:截面和时序都不支持,这是设计如此,要拆成两次调用**。只有 `screener` 支持(它把指标绑到不同变量 `F1`/`F2` 上,天然可区分)。CLI 也表达不了该请求——`--indicator-param` 按 code 建 Map,同 code
|
|
82
|
+
- ⚠️ **同一 `indicatorCode` 挂多套参数:截面和时序都不支持,这是设计如此,要拆成两次调用**。只有 `screener` 支持(它把指标绑到不同变量 `F1`/`F2` 上,天然可区分)。CLI 也表达不了该请求——`--indicator-param` 按 code 建 Map,同 code 的多组参数会被合并成一组,与服务端设计一致。走 `raw call` 真发出去会报 `100003「指标 xxx 重复配置」`(2026-08-15 实测;此前一版是静默取最后一组)
|
|
83
83
|
- `--calendar-type`:日期类型 `ND`(自然日)/`TD`(交易日,默认)/`WD`(工作日)。`TD` 且跨市场时,`date` 列是各市场交易日的**并集**
|
|
84
84
|
- `--currency` / `--scale`:同 `cross-section`(含根级 `--scale` 的污染坑)
|
|
85
85
|
- **输出(宽表)**:每行一个日期,列为 `date / <各序列名>…`;序列在「单指标」时是各**证券**,在「单证券多指标」时是各**指标**。**板块 ID 算多证券**——传 1 个 `sectorId` 服务端会展开成 N 只成分股,列就是这 N 只(实测中信白酒 → 19 列)
|
|
@@ -128,9 +128,9 @@ gangtise indicator screener --indicator F1:qte_close --indicator F2:qte_close \
|
|
|
128
128
|
# 日收盘价 (F1)=1309.22 / 日收盘价 (F2)=1308.55,与 time-series 对照一致
|
|
129
129
|
```
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
同一指标绑到多个变量(各带不同参数)是 `screener` 支持的用法,结果直接可用;列头会按变量加后缀区分(显示名相同)。
|
|
132
132
|
|
|
133
|
-
>
|
|
133
|
+
> `contains` / `notcontains` 对大小写不敏感(`CONTAINS` / `contains` / 混合写法等价)。
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
136
|
# 文本筛选:白酒板块里经营范围含「酒」的公司
|
|
@@ -162,10 +162,10 @@ gangtise indicator cross-section --indicator qte_close --security 600519.SH \
|
|
|
162
162
|
```
|
|
163
163
|
|
|
164
164
|
- `adjustType`(复权方式):`1`=不复权(默认) `2`=前复权 `3`=后复权 `4`=定点复权(配 `baseDate` 基期)
|
|
165
|
-
- ⚠️ **参数名是 `adjustType`**(不是 `adjustmentType
|
|
165
|
+
- ⚠️ **参数名是 `adjustType`**(不是 `adjustmentType`)。写错名会报 `100003` 并指出是哪个指标的哪个参数,按报错改即可
|
|
166
166
|
- 前复权以最新交易日为基准,所以在**最新交易日上前复权价 == 不复权价**;验证复权是否生效要用历史日期
|
|
167
167
|
- 同一指标多个参数 → 重复 `--indicator-param "code:k1=v1" --indicator-param "code:k2=v2"`
|
|
168
|
-
- **参数名与取值一律以 `indicator search --format json` 的 `parameterList`
|
|
168
|
+
- **参数名与取值一律以 `indicator search --format json` 的 `parameterList` 为准**,不要照抄任何文档里的示例名——参数名会随版本调整。写错会报 `100003` 并指出是哪个指标的哪个参数(2026-08-15 起;此前是静默按默认值取数),按报错改即可。币种枚举**统一大写**(`DFT`/`CNY`/`HKD`…),小写形式不生效
|
|
169
169
|
- `--indicator-param` 与根级 `--currency`/`--scale` 冲突时,以 `--indicator-param` 为准
|
|
170
170
|
|
|
171
171
|
## 必填参数与错误码(取数前必读)
|
|
@@ -194,28 +194,29 @@ gangtise indicator cross-section --indicator qte_close --security 600519.SH \
|
|
|
194
194
|
| 情况 | 服务端怎么返 | CLI |
|
|
195
195
|
| :--- | :--- | :--- |
|
|
196
196
|
| 代码有效、但**无数据 / 无覆盖 / 非交易日 / 未来日期** | 占位单元格(多数 `null`,个别指标 `0`,见上),行列都在 | **退出 0**,不标 partial |
|
|
197
|
-
| **指标码无法解析**(拼错、不存在) |
|
|
198
|
-
| **证券码无法解析**(拼错、后缀错,如 `AAPL.US`) |
|
|
199
|
-
|
|
|
197
|
+
| **指标码无法解析**(拼错、不存在) | `100003「指标 xxx 不存在」` | **退出 1**,报错 |
|
|
198
|
+
| **证券码无法解析**(拼错、后缀错,如 `AAPL.US`) | `100003「xxx 不是有效证券或者板块ID」` | **退出 1**,报错 |
|
|
199
|
+
| **参数名写错 / 同 code 重复配置** | `100003` 并指名参数 / 「重复配置」 | **退出 1**,报错 |
|
|
200
200
|
|
|
201
|
-
2026-08-
|
|
201
|
+
2026-08-15 实测:
|
|
202
202
|
|
|
203
|
-
| 查法 | 服务端返回 |
|
|
204
|
-
| :--- | :--- |
|
|
205
|
-
| `--indicator finc_pb_mrq --security 09992.HK`(港股无 PB 数据) | 1 行,`finc_pb_mrq: null
|
|
206
|
-
| `--indicator
|
|
207
|
-
| `--indicator qte_close --
|
|
208
|
-
| `--indicator
|
|
209
|
-
| `--indicator qte_close --
|
|
210
|
-
|
|
203
|
+
| 查法 | 服务端返回 |
|
|
204
|
+
| :--- | :--- |
|
|
205
|
+
| `--indicator finc_pb_mrq --security 09992.HK`(港股无 PB 数据) | 1 行,`finc_pb_mrq: null`,**退出 0** |
|
|
206
|
+
| `--indicator qte_close --date 2027-01-04`(未来日期) | 1 行,`qte_close: null`,**退出 0** |
|
|
207
|
+
| `--indicator qte_close --indicator not_a_real_code`(有对照物) | `100003 指标 not_a_real_code 不存在` |
|
|
208
|
+
| `--indicator not_a_real_code`(**无对照物**) | `100003 指标 not_a_real_code 不存在` ← 同样报错 |
|
|
209
|
+
| `--indicator qte_close --security 999999.SH` | `100003 999999.SH 不是有效证券或者板块ID` |
|
|
210
|
+
|
|
211
|
+
**代码写错现在一律报错、且消息里带上那个代码**,无论同批有没有别的正确代码——不用再靠「和一个已知有数的标的一起查」推断是哪个写错了。**所以「空表」的含义变干净了:它现在基本只意味着真的没数据**(此前空表既可能是没数据、也可能是整个轴写错)。
|
|
211
212
|
|
|
212
|
-
|
|
213
|
+
⚠️ **唯一还需要对照法的是占位值那一档**:占位**多数是 `null`、个别是 `0`**(见上方 🔴 段),`0` 长得和真值一样。拿 `is_dnrpnp` 这类做筛选或聚合前,仍要和已知有数的标的一起查做对照。
|
|
213
214
|
|
|
214
|
-
|
|
215
|
+
> CLI 侧仍保留 `partial` + `omittedIndicators` / `omittedSecurities` + 退出码 3 的差集检测,但在当前服务端行为下基本收不到样本(错代码在服务端就被拒了)。留着是为了万一服务端回退时还有兜底,不影响正常使用。
|
|
215
216
|
|
|
216
|
-
`screener`
|
|
217
|
+
`screener` 上指标码写错同样直接报 `100003`,不会再走到「缺列」那条路。CLI 的缺列判据(按表达式布尔结构判,整个表达式再无可成立分支 → 退出码 1 且不输出;仍有分支可求值如 `F1 || F2` 只缺 F1 → `partial` + 退出码 3)保留作兜底。
|
|
217
218
|
|
|
218
|
-
⚠️
|
|
219
|
+
⚠️ **`screener` 的空集仍要当心,但原因变了**:现在空集基本只有两种来源——**真的没有标的满足条件**,或者**某个变量的值是占位 `0`**(`F1 > 0` 在 `is_dnrpnp` 全是占位 `0` 时必然筛出空集,见上方 🔴 段)。指标码拼错已不在其列(会直接报错)。
|
|
219
220
|
|
|
220
221
|
标 `partial` 的那档会在 stderr 打印被略过的 code(`--format json` 下 stdout 仍是干净 JSON)。脚本按 `!= 0` 判失败的要注意:3 表示「有数据但不完整」,不是硬失败。
|
|
221
222
|
|
|
@@ -227,7 +228,7 @@ gangtise indicator cross-section --indicator qte_close --security 600519.SH \
|
|
|
227
228
|
| `100003`@400 | 入参/表达式错误:`time-series` 传了「多指标 × 多证券」、`expression` 引用未声明变量、`indicatorParamList` 的 code 不在 `indicatorCodeList` 里 | 按 msg 改;多 × 多改用 `cross-section`。CLI 已在本地拦截「表达式引用未绑定变量」,不会白发一次请求 |
|
|
228
229
|
| `140002`@500 | **终态参数错**:指标必填参数缺失、枚举越界(如「参数 adjustType 的值 99 不在有效范围内 [1,2,3,4]」)、表达式语法错误 | **不重试**(CLI 已把 140002 列为终态码)。读 `search --format json` 的 `parameterList` 改参数名/取值 |
|
|
229
230
|
| `999999` | 系统故障。2026-08-01 起「无数据」不再用此码,所以它基本只剩真故障(2026-07-26 曾出现 EDE 取数端全线 999999,08-01 已恢复)。⚠️ 别把它和空表混为一谈:无数据现在是占位单元格(多数 `null`、个别指标 `0`),空表表示整轴 code 未识别 | CLI 对 indicator 端点**不重试此码**(v0.27.0);确认参数无误仍报错就是服务端问题 |
|
|
230
|
-
| `110003` | **超出账号数据权限的时间范围**。⚠️ EDE
|
|
231
|
+
| `110003` | **超出账号数据权限的时间范围**。⚠️ EDE 三个接口的可查范围可能不一致:出现过同日同指标同证券 `cross-section` 正常出数、而 `screener` 报此码 | 把日期移进范围;`screener` 撞界时先用 `cross-section` 查同一天验证,能取到就改用它拉数再本地筛 |
|
|
231
232
|
| `130001`(旧 `410004`) | 数据未找到,或**该指标无权限**(内层信封失败会带具体 msg,如"指标无权限";此码被服务端复用) | 检查查询条件与指标权限;换证券/日期仍失败多为无权限,联系管理员开通 |
|
|
232
233
|
|
|
233
234
|
### 必填参数(`140002` 的根因)
|
|
@@ -237,7 +238,7 @@ gangtise indicator cross-section --indicator qte_close --security 600519.SH \
|
|
|
237
238
|
| 参数 | 适用指标 | 示例 |
|
|
238
239
|
| :--- | :--- | :--- |
|
|
239
240
|
| `periodNum` | N 期统计(N 期均值/最值,如 `finc_roe_avg_avg` 平均ROE N期均值) | `--indicator-param "finc_roe_avg_avg:periodNum=4"`;部分还需配**年报日期**才出数(实测 `finc_roe_avg_avg`@`2026-03-31` 空、@`2025-12-31` 有) |
|
|
240
|
-
| `sDate` | 区间类的**起始日**(如 `qte_vol_intvl` 区间成交量、`qte_avg_vol` 区间日均成交量),格式 `yyyy-MM-dd` | `--indicator-param "qte_vol_intvl:sDate=2024-01-02"`。⚠️ **`sDate` 不能替代 `tradeDate`**——它是区间起点,`tradeDate`(=区间终点)仍是 required,`--date`
|
|
241
|
+
| `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`(2026-08-15 起;此前是被静默忽略、套用默认区间返回一个合理但错误的数)。⚠️ **不传 `sDate` 不报错**——它是可选参数,缺了就按默认区间算,所以要的是特定区间就必须显式传。另:`qte_amp_mo`(月振幅)等周期变体现在只吃 `tradeDate`,没有起始日参数 |
|
|
241
242
|
| `fiscalYear` | 年度/报告期类(如 `div_cash_yr` 年度现金分红) | `--indicator-param "div_cash_yr:fiscalYear=2025"` |
|
|
242
243
|
| `industryType` + `industryLevel` | `scr_indu` 所属行业(两个都 required,缺任一报 `140002`) | `--indicator-param "scr_indu:industryType=1" --indicator-param "scr_indu:industryLevel=0"` |
|
|
243
244
|
|
|
@@ -275,7 +276,22 @@ gangtise indicator cross-section --indicator scr_indu \
|
|
|
275
276
|
|
|
276
277
|
体系与市场要配对:A 股查恒生 / GICS、美股查申万,都返 `null`(实测茅台 `industryType=3/4` 均为 `null`)。
|
|
277
278
|
|
|
278
|
-
|
|
279
|
+
**行业组合指标(2026-08-14 新增,3 个)**——把体系写进指标编码,省掉 `industryType`:
|
|
280
|
+
|
|
281
|
+
| 指标 | 体系 | 参数 |
|
|
282
|
+
| :-- | :-- | :-- |
|
|
283
|
+
| `scr_indu_citic` | 中信行业 | `tradeDate`(必填)+ `industryLevel`(**可选**) |
|
|
284
|
+
| `scr_indu_sw` | 申万行业 | 同上 |
|
|
285
|
+
| `scr_indu_gics` | GICS 行业 | 同上 |
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
gangtise indicator cross-section --indicator scr_indu_citic --indicator scr_indu_sw \
|
|
289
|
+
--security 600519.SH --date 2026-08-13
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
与 `scr_indu` 的取舍:**只要一套体系就用组合指标**(少一个必填参数,且 `industryLevel` 可省),**要在同一次请求里横比多套体系**才用 `scr_indu`(换 `industryType` 即可,不必记三个编码)。恒生体系没有组合指标,仍走 `scr_indu:industryType=3`。
|
|
293
|
+
|
|
294
|
+
**`finc_pb_mrq`(市净率 MRQ)是日频指标**:每个交易日都有数且逐日变动,别按报告期末取(那会拿到几个月前的陈值)。
|
|
279
295
|
|
|
280
296
|
## 取数最佳实践
|
|
281
297
|
|
|
@@ -288,11 +304,11 @@ gangtise indicator cross-section --indicator scr_indu \
|
|
|
288
304
|
- 现金流量表附注/间接法科目(多数 `cf_`)→ **只在年报/半年报披露**,季报日期取不到,改用年报日期 `2025-12-31`
|
|
289
305
|
- 行情类(`qte_` 等)→ 用**交易日**,但常规行情仍应改走 `quote`
|
|
290
306
|
- **混合日期语义要拆查询**:同时要“某报告期营收 / EPS”和“估值 PE / PB”时,按各自有效日期分别调用 `cross-section` 再按 `security` 合并(财务=报告期末、PE/PB=最新交易日);不要把不同日期语义的指标塞进同一个 `--date`
|
|
291
|
-
-
|
|
307
|
+
- **探索性取数**:缺值会保留行列并给占位单元格(含 1×1 的最简形态),但**占位值不统一**(多数 `null`、个别 `0`,见上);code 写错会直接报 `100003`,不会伪装成缺值。看趋势用 `time-series` + 覆盖报告期的区间,但不能把缺值当成通过语义 / scope 校验。
|
|
292
308
|
- **名称反查 code 要核对,别取首条**:存在同显示名的兄弟指标——单季 `cf_finc_exp_qtr` 与累计 `cf_finc_exp` 都叫「财务费用」,`bs_fmt`/`cf_fmt`/`is_fmt` 都叫「报表格式」。`search` 按名称模糊匹配,目标 code 高概率在 top1 但不绝对,要看 `indicatorCode` 确认。
|
|
293
309
|
- **批量查询做失败拆分**:某指标**缺必填参数**或入参错误时会整批报 `140002`,逐指标单查能定位是哪个指标缺参/不可查。留意 stderr 的「整列/整行被略过」警告——那不是报错,而是**有 code 没被服务端认出来**,先查拼写和证券后缀。
|
|
294
|
-
-
|
|
295
|
-
-
|
|
310
|
+
- **市值量纲**:`qte_mkt_cptl`(总市值)与 `shr_tot`(总股本)**A/港/美股均有数**;**默认返原始「元」**(茅台 ≈ `1.7e12`,即 1.7 万亿),别误当天文数字。用 `scale` 数字码缩放(`0`元 / `3`千 / `4`万 / `6`百万 / `8`亿 / `9`十亿——`scale=8` → `16883` 亿元)、`currency` 换币种(**大写** `DFT`本币 / `CNY` / `HKD` / `USD` …)。**跨证券比市值前先统一 `scale`+`currency`**。
|
|
311
|
+
- **币种与汇率**:`DFT`(原始币种)按市场识别——A股=CNY、港股行情=HKD、美股=USD;汇率换算自洽(互逆且三角一致)。⚠️ 但**同一只港股,行情类的原始币种是 HKD、财务类可能是 CNY**(如泡泡玛特财报以人民币计),跨市场比财务数据时显式传 `--currency CNY` 别依赖 `DFT`。另:财务类指标的汇率按**报告期**折算、行情类按查询日折算,两者隐含汇率会有细微差异,属正常口径差别。
|
|
296
312
|
- **EDE 财务指标的 `reportType`(2026-08-01 裁决)**:`enumList` 的 label 已与实际取数**一致**,按 label 传即可。⚠️ 但同一份 `search` 响应里的 `paramDescription` 仍留着**相反的旧映射文字**——**以 `enumList` 和下方实测值为准,别读 `paramDescription`**:
|
|
297
313
|
|
|
298
314
|
| value | 口径 | 说明 |
|
|
@@ -327,7 +343,7 @@ gangtise indicator cross-section --indicator scr_indu \
|
|
|
327
343
|
|
|
328
344
|
判别方法(**已验证的是 `finc_pe_ttm` / `peTtm`**):用**总市值 ÷ PE 反推隐含净利润**,再对照利润表的滚动 TTM(= 上年全年 − 上年同期累计 + 本年累计),就能判出哪一侧用的是陈值。`finc_pb_mrq` 等非 TTM 口径的指标同样会在报告期节点变化,但分母是净资产(MRQ)不是 TTM,切换规则未单独验证——分叉时按同法反推净资产对照资产负债表。
|
|
329
345
|
|
|
330
|
-
⚠️ **不要用 `fundamental income-statement` 的 `announcementDate`
|
|
346
|
+
⚠️ **不要用 `fundamental income-statement` 的 `announcementDate` 做时点对齐**——它在部分证券上各期取值相同。**改用同一响应里的 `earliestAnncDate`(首次公告日)**;要交叉核实披露日就查 `insight announcement list`。
|
|
331
347
|
|
|
332
348
|
|
|
333
349
|
## 通用说明
|
|
@@ -335,5 +351,5 @@ gangtise indicator cross-section --indicator scr_indu \
|
|
|
335
351
|
- **发现流程**:`indicator search --format json` → 核对 `indicatorName` + `description`、`scopeList`(含 `usageRestriction`)、`parameterList`(**参数名以此为准**)→ 三项都通过才用 `cross-section` / `time-series` / `screener`
|
|
336
352
|
- **积分**:`search` 免费;`cross-section` / `time-series` / `screener` 按请求单元格数量计费,标价为每 100 单元格 A 股 0.05 / 港股 0.1 / 美股 0.2 积分,每次查询不足 100 单元格按 100 计
|
|
337
353
|
- **空结果排查顺序**:2026-08-08 起真无数据会返回占位单元格(多数 `null`、个别指标 `0`)而不是空表,所以**空表基本等于「没有任何 code 被认出来」或参数名写错**。按序排查:① 证券代码与后缀对不对(美股 `.O`/`.N`,不是 `.US`)② 指标 code 拼写对不对 ③ 参数名对不对(`indicator search` 的 `parameterList`)④ 日期语义对不对(`tradeDate` vs `reportDate`)
|
|
338
|
-
-
|
|
354
|
+
- **数据权限**:正式账号行情 / 财务 / 指标类可回溯的年限按服务等级而定,试用账号更短。⚠️ **同一账号下三个 EDE 接口的可查范围可能不一致**:出现过同一天、同一指标、同一证券在 `cross-section` 取得到、而 `screener` 报 `110003`(超出时间范围)的情况。**选股撞到 `110003` 时先别改日期格式**——用 `cross-section` 拉同一天的数据验证一下,能取到就说明是接口间范围差异,改用 `cross-section` 拉数再本地筛即可
|
|
339
355
|
- 所有格式(table/json/jsonl/csv/markdown)均可用;导出宽表给 Excel 直接用 `--format csv --output xxx.csv`
|
|
@@ -6,19 +6,18 @@
|
|
|
6
6
|
|
|
7
7
|
支持 `--rank-type` 的命令:opinion / summary / **pamirs-summary** / research / foreign-report / announcement / announcement-hk / announcement-us / foreign-opinion / independent-opinion / official-account。
|
|
8
8
|
|
|
9
|
-
⚠️ **`--rank-type`
|
|
9
|
+
⚠️ **`--rank-type` 的效果依赖 `--keyword`**:没有关键词时综合排序无从计算,两种取值结果一致,这不是参数失效。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**`--rank-type 1`(综合排序,默认)按相关度挑选条目**,`--rank-type 2` 严格按 `publishTime` 倒序取最新的。两者从同一结果集里取的是**不同的子集**,不是同一批内容换个排法:
|
|
12
12
|
|
|
13
|
-
|
|
|
14
|
-
| :--- | :--- |
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
| `research` | 与 `2` **完全相同** | 有差异,同样只在并列处(4 处并列) |
|
|
13
|
+
| 想要 | 用 |
|
|
14
|
+
| :--- | :--- |
|
|
15
|
+
| 最相关的内容(可以是旧的) | `--rank-type 1` + `--keyword` + `--search-type 2`(全文) |
|
|
16
|
+
| 最新的内容(按时间铺) | `--rank-type 2` |
|
|
18
17
|
|
|
19
|
-
|
|
18
|
+
同一个查询下,`--rank-type 1` 取回的条目时间跨度更宽(每天只挑相关度高的几条),`--rank-type 2` 则集中在最近几天(把最新的逐条铺出来)。
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
⚠️ **别用「返回结果是不是按时间倒序」判断综合排序有没有生效** —— `--rank-type 1` **挑完之后仍按时间倒序排列**,所以两种取值下返回序列都是时间单调的。要看差别就**比条目 ID 集合**,不是比排序。
|
|
22
21
|
**不支持** `--rank-type` 的命令:roadshow / site-visit / strategy / forum(API 无此参数)。
|
|
23
22
|
|
|
24
23
|
`--rank-type`:`1` 综合排序(默认)| `2` 时间倒序
|
|
@@ -63,7 +62,7 @@ gangtise insight pamirs-summary download --summary-id <id> [--file-type <n>] [--
|
|
|
63
62
|
|
|
64
63
|
- **筛选项比 `summary` 少**:没有 `--source` / `--institution` / `--participant-role`。不认识的 body 字段会被丢弃且不报错,所以别照搬 `summary` 的参数,那样只会拿到没过滤的全量
|
|
65
64
|
- `--search-type`:`1` 标题搜索(默认)| `2` 全文搜索。同一关键词全文搜索的命中数明显多于标题搜索
|
|
66
|
-
- `--rank-type`:`1` 综合排序(默认)| `2` 时间倒序。⚠️ 效果依赖 `--keyword
|
|
65
|
+
- `--rank-type`:`1` 综合排序(默认)| `2` 时间倒序。⚠️ 效果依赖 `--keyword`,详见本文开头的公共说明
|
|
67
66
|
- `--category`:`companyAnalysis` 公司分析 | `industryAnalysis` 行业分析(两者过滤均生效,公司分析占绝大多数)
|
|
68
67
|
- `--market`:`aShares` | `hkStocks` | `usChinaConcept` | `usStocks`
|
|
69
68
|
- `--research-area`:**行业码两套都生效**——citic `1008001xx` 和申万 `104xx0000`。申万码这点与多数 insight list 不同(那些只有 summary 认申万码)。⚠️ 反过来,**方向码 `122000xxx` 在本端点返 0**,别在这里传方向
|
|
@@ -196,7 +195,7 @@ gangtise insight foreign-opinion list [--rank-type <n>] [--security <code>] [--r
|
|
|
196
195
|
```
|
|
197
196
|
|
|
198
197
|
- `--security`:境外证券代码,如 `UBER.N`
|
|
199
|
-
- ⚠️ `--region`:`cn` | `cnHk` | `cnTw` | `us` | `jp` | `uk` | `gl
|
|
198
|
+
- ⚠️ `--region`:`cn` | `cnHk` | `cnTw` | `us` | `jp` | `uk` | `gl`——**本端点上该过滤当前取不到数据**:除 `gl` 外的取值返回 `null` payload 而不是报错。需要按区域筛请不带该参数取回后按 `region` 字段本地筛。注意这是本端点的情况,`insight foreign-report` 的 `--region` 可正常收窄结果
|
|
200
199
|
- ⚠️ `--industry`:**当前传任何值都拿不到数据**(中信码 / 申万码 / 乱码一样,不报错、退出码 0)。🔴 **返回的 payload 是字面 `null`,不是 `{total:0,list:[]}`** ——按空列表解析的脚本(`data.list.length`、`for row in data["list"]`)会在这里抛错或静默跳过,务必先判 `null`。需要按行业筛时不带该参数取回后本地按 `industryList[]` 筛
|
|
201
200
|
- `--broker`:外资券商 ID(见 `references/lookup-ids.md`)
|
|
202
201
|
- `--rating` / `--rating-change`:同研报
|