gangtise-openapi-cli 0.26.0 → 0.28.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.
@@ -0,0 +1,229 @@
1
+ # Reference / Lookup 命令详细参数
2
+
3
+ ## 证券代码搜索 `reference securities-search`
4
+
5
+ ```bash
6
+ gangtise reference securities-search --keyword <text> [--category <type>] [--top <n>]
7
+ ```
8
+
9
+ - 用途:把公司名/简称/代码/拼音/英文名/曾用名 → `gtsCode`,是 `ai security-clue --gts-code` 等接口的前置查询
10
+ - `--keyword`(**必选**):支持多维度匹配(中文名/简称/证券代码/拼音首字母/英文名/曾用名)
11
+ - `--category`(可重复):`stock` | `dr` 存托凭证 | `index` | `fund`(不传则查所有)
12
+ - `--top`:默认 10,**上限 10**
13
+ - 返回字段:`gtsCode` / `gtsName` / `category` / `matchScore` / `matchType`
14
+ - `matchType`:`code` 代码 | `abbr` 简称 | `pinyin` 拼音 | `prev` 曾用名 | `engName` 英文名
15
+
16
+ **示例:**
17
+ ```bash
18
+ gangtise reference securities-search --keyword 茅台 --category stock --top 3
19
+ gangtise reference securities-search --keyword 600519
20
+ gangtise reference securities-search --keyword gzmt
21
+ ```
22
+
23
+ ## 首席 ID 搜索 `reference chiefs-search`
24
+
25
+ ```bash
26
+ gangtise reference chiefs-search --keyword <text> [--top <n>]
27
+ ```
28
+
29
+ - 用途:查首席分析师 ID,拿到的 `chiefId` 用于 `insight opinion list --chief <id>` 按首席筛选内资观点
30
+ - `--keyword`(**必选**):支持中文姓名 / 机构名称 / 所属团队多维匹配
31
+ - `--top`:默认 10,**上限 10**
32
+ - 免费调用
33
+ - 返回字段:`chiefId` / `chiefName` / `institution`(所属证券机构)/ `team`(所属团队)/ `matchScore`(`0~1`)
34
+
35
+ **示例:**
36
+ ```bash
37
+ gangtise reference chiefs-search --keyword 东吴证券 --top 3 --format json # → 周良玖 / 芦哲 / 陈李,chiefId 如 P100005161
38
+ ```
39
+
40
+ ## 机构 ID 搜索 `reference institution-search`
41
+
42
+ ```bash
43
+ gangtise reference institution-search --keyword <text> [--category <name>] [--top <n>]
44
+ ```
45
+
46
+ - 用途:查机构 ID,拿到的 `institutionId` 用于各接口的 `--institution`(牵头机构)/ `--broker`(券商 / 观点机构)入参。**每条结果自带 `usageScopes[{apiName, paramName}]`,服务端直接标明该 ID 用于哪个接口的哪个参数**——拿不准某 ID 该喂给谁时以此为准
47
+ - `--keyword`(**必选**):机构名称 / 简称(如 `招商证券`、`华泰`、`摩根`)
48
+ - `--category`:机构分类,缩小范围(可重复;不传查所有分类)。5 个分类与既有命令参数的对应(均实测有效):
49
+
50
+ | category | CLI 命令 · 参数 | 用途 |
51
+ |----------|----------------|------|
52
+ | `domesticBroker` | `insight research list --broker` | 内资研报 |
53
+ | `foreignInstitution` | `insight foreign-report list --broker` | 外资研报 |
54
+ | `opinionInstitution` | `insight opinion list --broker` | 内资机构观点 |
55
+ | `foreignOpinionInstitution` | `insight foreign-opinion list --broker` | 外资机构观点 |
56
+ | `leadInstitution` | `--institution`(`summary` / `roadshow` / `site-visit` / `strategy` / `vault my-conference` list) | 纪要 / 路演 / 调研 / 线下策略会 / 我的会议的牵头机构 |
57
+
58
+ 注:API 文档 `categoryList` 只列了前 4 类,但 `foreignOpinionInstitution` 同样是有效过滤值(实测确认,服务端接受且返回该类)
59
+ - `--top`:默认 10,**上限 10**;结果按 `matchScore`(`0~1`)降序
60
+ - 免费调用
61
+ - 返回字段:`institutionId` / `institutionName` / `category` / `usageScopes[{apiName, paramName}]`(该机构适用的接口及参数)/ `matchScore`
62
+
63
+ **示例:**
64
+ ```bash
65
+ gangtise reference institution-search --keyword 招商证券 --category domesticBroker --top 3 --format json # → C100000020 招商证券
66
+ ```
67
+
68
+ ## 公众号 ID 搜索 `reference official-account-search`
69
+
70
+ ```bash
71
+ gangtise reference official-account-search --keyword <text> [--category <name>] [--top <n>]
72
+ ```
73
+
74
+ - 用途:查公众号 ID,拿到的 `accountId` 喂给 `insight official-account list --account-id` 拉该公众号资讯
75
+ - `--keyword`(**必选**):公众号名称 / 所属机构 / 关键字(如 `中信证券`、`人民日报`)
76
+ - `--category`:分类过滤,可多选——`listedCompany` 上市公司 | `broker` 券商团队 | `government` 政府官方 | `media` 媒体。⚠️ 部分公众号不属这四类(`category` 返回 `null`);一旦传 `--category` 就会漏掉这些未分类公众号,要全量(含未分类)就**别传** `--category`
77
+ - `--top`:默认 10,**上限 10**;结果按 `matchScore`(`0~1`)降序
78
+ - 免费调用
79
+ - 返回 `{returnedCount, list}`;list 字段:`accountId` / `accountName` / `category`(四类之一或 `null`)/ `matchScore`
80
+
81
+ **示例:**
82
+ ```bash
83
+ gangtise reference official-account-search --keyword 中信证券 --top 3 --format json # → gh_fe1d2be7e8db 中信证券研究
84
+ ```
85
+
86
+ ## 常量分类 `reference constant-category`
87
+
88
+ ```bash
89
+ gangtise reference constant-category [--format json]
90
+ ```
91
+
92
+ - 用途:全量导出常量分类及每个分类适用于哪些接口的哪些参数(无需传参,免积分)
93
+ - 返回 `{total, list}`,`list[]` 字段:`category`(分类代码)/ `categoryName` / `structureType`(`flat` 平铺 | `tree` 树形)/ `maxLevel` / `usageScopes[]`(`apiName` + `paramName`)
94
+ - 当前 8 个分类:
95
+
96
+ | category | 名称 | 结构 | 用于参数 |
97
+ |----------|------|------|---------|
98
+ | `citicIndustry` | 中信一级行业(30,`1008001xx`) | flat | `--industry` 全命令通用首选(见下方说明) |
99
+ | `swIndustry` | 申万一级行业(31,`104xxx`) | flat | `--industry`(仅 6 个 insight list;wechat 静默忽略,见下方说明) |
100
+ | `gangtiseIndustry` | Gangtise 行业(30 行业 `1008001xx` + 6 方向 `122000xxx`) | flat | `--research-area` 首选(含宏观/策略等方向,见下方说明) |
101
+ | `domesticCity` | 国内城市(省级 ID) | flat | `--location`(roadshow / site-visit / strategy / forum)|
102
+ | `aShareAnnouncementCategory` | A股公告分类 | tree(2 级) | `insight announcement --category` |
103
+ | `hkShareAnnouncementCategory` | 港股公告分类 | tree(2 级) | `insight announcement-hk --category` |
104
+ | `usShareAnnouncementCategory` | 美股公告分类(`103980xxx` 段) | tree(2 级) | `insight announcement-us --category` |
105
+ | `regionCategory` | 区域分类 | flat | `insight foreign-report --region` |
106
+
107
+ > **行业 / 研究方向过滤——选哪套 category(⭐ 权威口径,其他文件引用此处、勿重复枚举命令清单以免漂移;实测 + spec,2026-06-15):**
108
+ > - **`--industry`(industryList)→ 用 `citicIndustry`(`1008001xx`)**:opinion / research / foreign-report / foreign-opinion / independent-opinion / official-account / wechat-message 全部正确过滤。`swIndustry`(`104xxx`)在 6 个 insight list(含 official-account)上等效(spec 多数命令写 citic+sw),但 **`vault wechat-message-list` 只认中信码、传申万码会静默返回全量** → 统一用中信码最稳。
109
+ > - **`--research-area`(researchAreaList)→ 用 `gangtiseIndustry`**:完整研究方向分类 = 30 个行业(`1008001xx`,与 citicIndustry 相同)+ 6 个方向(宏观 `122000001` / 策略 `122000002` / 固收 `122000003` / 金工 `122000004` / 海外 `122000005` / 其他 `122000007`)。行业码与方向码均已实测正确过滤(opinion / summary / roadshow / site-visit / forum)。`citicIndustry` 也能用但只含行业、无方向;`swIndustry`(`104xxx`)除 summary / my-conference 外返 0,勿用。
110
+
111
+ ## 常量值 `reference constant-list`
112
+
113
+ ```bash
114
+ gangtise reference constant-list --category <code> [--format json]
115
+ ```
116
+
117
+ - `--category`(**必选**):分类代码,见上表
118
+ - 返回 `{category, structureType, maxLevel, constantCount, list}`(CLI 把 API 的 `constants` 规范化为 `list`)
119
+ - `list[]` 字段:`constantId` / `constantName` / `level`;树形分类的父节点含 `children[]`(结构同父节点,可继续嵌套)
120
+ - 树形分类(公告分类)用 `--format json` 自行递归 `children`;`table` 不会展开子节点
121
+
122
+ **示例:**
123
+ ```bash
124
+ gangtise reference constant-list --category citicIndustry --format json
125
+ gangtise reference constant-list --category aShareAnnouncementCategory --format json # 树形,含 children
126
+ ```
127
+
128
+ ## 题材 ID 搜索 `reference concept-search`
129
+
130
+ ```bash
131
+ gangtise reference concept-search --keyword <text> [--top <n>]
132
+ ```
133
+
134
+ - 用途:查题材 ID,供 `alternative concept-info / concept-securities --concept-id` 和 `ai theme-tracking --theme-id` 使用(三者共用同一套 ID)
135
+ - `--keyword`(**必选**):中文题材名/简称、拼音/首字母(`jqr`)、分组名(如 灵巧手)
136
+ - `--top`:默认 10,**上限 10**;搜索型接口,**非全量导出**
137
+ - 返回 `{returnedCount, list}`,`list[]`:`conceptId` / `conceptName` / `matchScore`(0~1,降序)
138
+
139
+ **示例:**
140
+ ```bash
141
+ gangtise reference concept-search --keyword 机器人 --top 3 --format json # → 121000130
142
+ gangtise reference concept-search --keyword jqr
143
+ ```
144
+
145
+ ## 板块 ID 搜索 `reference sector-search`
146
+
147
+ ```bash
148
+ gangtise reference sector-search [--keyword <text>] [--top <n>]
149
+ ```
150
+
151
+ - 用途:查板块 ID(行业/概念/指数成份等分类树节点),供 `sector-constituents` 使用
152
+ - `--keyword`:中文板块名/简称、拼音/首字母
153
+ - `--top`:默认 10,**上限 10**
154
+ - 返回 `{returnedCount, list}`,`list[]`:`sectorId` / `sectorName` / `hierarchy`(层级路径,如 `中国内地股票-概念类-科技-半导体设备`)/ `matchScore`
155
+ - 同名板块可能出现在多个层级(概念类 vs 指数成份类),用 `hierarchy` 区分
156
+
157
+ ## 板块成分股 `reference sector-constituents`
158
+
159
+ ```bash
160
+ gangtise reference sector-constituents --sector-id <id>
161
+ ```
162
+
163
+ - `--sector-id`(**必选**):板块 ID,**必须来自 `reference sector-search`**
164
+ - 返回 `{total, list}`,`list[]`:`gtsCode` / `gtsName`(全量成分股,纯名单)
165
+ - **返回 0 条** → sectorId 不对:题材 `conceptId` 与板块 `sectorId` 是两套 ID,不通用;先 `sector-search` 确认
166
+ - 与 `alternative concept-securities` 的区别:后者是题材深度 F8(按分组、含 `isKey` / `inclusionReason`),本接口是板块树节点的纯成分股名单
167
+
168
+ **示例:**
169
+ ```bash
170
+ gangtise reference sector-search --keyword 半导体 --top 3 --format json # → 1000001005 半导体设备
171
+ gangtise reference sector-constituents --sector-id 1000001005 --format json
172
+ ```
173
+
174
+ **申万行业代码全量列表**(`ai security-clue --gts-code` 用的 `821xxx.SWI`)也走这两步——申万行业指数板块的成分就是 31 只行业指数本身:
175
+
176
+ ```bash
177
+ gangtise reference sector-search --keyword 申万一级行业指数 --format json
178
+ # 取「指数数据板块-行业指数-申万指数-申万一级行业指数」层级的 sectorId(2000000014)
179
+ # 注意:「中国内地股票-指数成份类」层级下的同名节点查成分返回 0 条
180
+ gangtise reference sector-constituents --sector-id 2000000014 --format json
181
+ # → total 31,gtsCode 即 821xxx.SWI
182
+ ```
183
+
184
+ 单个行业也可以直接 `reference securities-search --keyword 申万银行 --category index` → `821047.SWI`。
185
+
186
+ ## Lookup 本地表(仅剩 2 个)
187
+
188
+ **按名称找机构 ID 优先用 `reference institution-search`**(服务端搜索、覆盖全部 5 类机构、带 usageScopes);本地表主要用于**全量枚举**券商/会议机构(institution-search 为搜索型:top≤10、非全量):
189
+
190
+ ```bash
191
+ gangtise lookup broker-org list # 券商机构全量(--broker 用;180 条静态表)
192
+ gangtise lookup meeting-org list # 会议/牵头机构全量(--institution 用;130 条静态表)
193
+ ```
194
+
195
+ 行业 / 区域 / 公告分类 / 研究方向 / 题材 ID / 申万行业代码已改用 API:`reference constant-list` / `reference concept-search` / `reference sector-constituents`(v0.16.0 起移除对应 lookup 子命令)。
196
+
197
+ ### 常见行业别名映射
198
+
199
+ | 用户说法 | 标准(申万)行业 | 申万码¹ | `--gts-code`(security-clue) |
200
+ |----------|---------|----------------|---------------------------|
201
+ | 新能源 / 光伏 / 风电 / 电新 | 电力设备 | `104630000` | `821052.SWI` |
202
+ | AI / 人工智能 / 算力 | 计算机 | `104710000` | `821055.SWI` |
203
+ | 半导体 / 芯片 | 电子 | `104270000` | `821035.SWI` |
204
+ | 互联网 / 平台 | 传媒 | `104720000` | `821056.SWI` |
205
+ | 白酒 | 食品饮料 | `104340000` | `821038.SWI` |
206
+ | 医药 / 创新药 | 医药生物 | `104370000` | `821041.SWI` |
207
+ | 地产 | 房地产 | `104430000` | `821044.SWI` |
208
+ | 券商 / 券商股 | 非银金融 | `104490000` | `821048.SWI` |
209
+ | 银行 / 银行股 | 银行 | `104480000` | `821047.SWI` |
210
+ | 汽车 / 新车 | 汽车 | `104280000` | `821036.SWI` |
211
+
212
+ > ¹ 第 3 列是**申万码**(`104xxx`),仅在 opinion / research / foreign-report / foreign-opinion / independent-opinion / official-account 这 6 个 insight list 上作 `--industry` 等效;`vault wechat-message-list` 会静默返回全量、`--research-area` 返 0——通用/推荐的**中信码**(`1008001xx`)见 `references/lookup-ids.md` 中信表或 `constant-list --category citicIndustry`。
213
+
214
+ > **参数名选择**:`--industry`(industryList,用 `citicIndustry` 码 `1008001xx`)用于 opinion / research / foreign-report / foreign-opinion / independent-opinion / official-account / wechat-message;`--research-area`(researchAreaList,用 `gangtiseIndustry` 码 = 行业 `1008001xx` + 方向 `122000xxx`)用于 opinion / summary / roadshow / site-visit / forum / my-conference;`--gts-code` 仅用于 `ai security-clue`(需申万格式 `821xxx.SWI`,不是数字 ID)。注意 strategy(线下策略会)无 `--research-area`,只按 `--institution` / `--location` 筛。
215
+
216
+ > **"消费"歧义**:用户说"消费/大消费"覆盖多个子行业(食品饮料 `104340000` / 商贸零售 `104450000` / 社会服务 `104460000` / 家电 `104330000` / 纺织服饰 `104350000` / 美容护理 `104770000`),需向用户确认具体方向,或用 `--keyword 消费` 做宽泛搜索。
217
+
218
+ ## Raw 调用 `gangtise raw call`
219
+
220
+ ```bash
221
+ gangtise raw call <endpoint.key> --body '{"from":0,"size":120}' # JSON 端点(POST,绝大多数)
222
+ gangtise raw call insight.research.download --query reportId=<id> --query fileType=1 --output x.pdf # 仅 kind=download 端点用 --query
223
+ ```
224
+
225
+ - endpoint key 格式:`<命令组>.<子命令>.<操作>`,如:
226
+ - `insight.opinion.list`、`insight.announcement-hk.list`、`insight.foreign-opinion.list`、`insight.independent-opinion.list`
227
+ - `reference.securities-search`、`reference.constant-list`、`quote.day-kline`、`fundamental.income-statement`、`ai.knowledge-batch`
228
+ - **JSON 端点**(绝大多数)用 `--body` 传 JSON;**`kind=download` 端点**(各 `*.download`)用 `--query key=value`(可重复)。传反会被 CLI **直接拒绝**(JSON 端点给 `--query`、或 download 端点给 `--body`,都抛 ValidationError,不发请求)
229
+ - 自动翻页 / 重试 / Agent 复用与封装命令一致
@@ -0,0 +1,79 @@
1
+ # Vault 命令详细参数(私域数据)
2
+
3
+ 通用:`--keyword` `--start-time` `--end-time` `--from` `--size`(list 类)。
4
+
5
+ ---
6
+
7
+ ## AI 云盘 `vault drive-list/download`
8
+
9
+ ```bash
10
+ gangtise vault drive-list [--keyword <text>] [--file-type <n>] [--space-type <n>] [--start-time <datetime>] [--end-time <datetime>] [--from <n>] [--size <n>]
11
+ gangtise vault drive-download --file-id <id> [--output <path>]
12
+ ```
13
+
14
+ - `--file-type`:`1` 文档(含 PDF/Word/PPT)| `2` 图片 | `3` 音视频 | `4` 公众号文章 | `5` 其他
15
+ - `--space-type`:`1` 我的云盘 | `2` 租户云盘
16
+
17
+ ## 录音速记 `vault record-list/download`
18
+
19
+ ```bash
20
+ gangtise vault record-list [--keyword <text>] [--category <name>] [--space-type <n>] [--start-time <datetime>] [--end-time <datetime>] [--from <n>] [--size <n>]
21
+ gangtise vault record-download --record-id <id> --content-type <type> [--output <path>]
22
+ ```
23
+
24
+ - `--category`:`upload` | `link` | `mobile` | `gtNote` | `pc` | `share`(可重复)
25
+ - `--space-type`:`1` 我的速记 | `2` 租户速记
26
+ - `--content-type`(download **必选**):`original` 原始文件 | `asr` 语音识别 | `summary` AI 速记
27
+ - 口语映射:「原始文件/原文件」→`original`、「语音识别/转写文本/ASR」→`asr`、「AI速记/智能摘要/会议纪要」→`summary`
28
+ - 「与我分享」类型录音无法下载原始文件
29
+ - 返回字段:`recordId` / `title` / `createTime` / `category` / `recordDuration`(秒) / `recordSize`(Byte)/ `url` / `spaceType` / `uploader`
30
+
31
+ ## 我的会议 `vault my-conference-list/download`
32
+
33
+ ```bash
34
+ gangtise vault my-conference-list [--keyword <text>] [--research-area <id>] [--security <code>] [--institution <id>] [--category <name>] [--source <n>] [--start-time <datetime>] [--end-time <datetime>] [--from <n>] [--size <n>]
35
+ gangtise vault my-conference-download --conference-id <id> --content-type <type> [--output <path>]
36
+ ```
37
+
38
+ - `--category`:`earningsCall` 业绩会 | `strategyMeeting` 策略会 | `fundRoadshow` 基金路演 | `shareholdersMeeting` 股东大会 | `maMeeting` 并购会议 | `specialMeeting` 特别会议 | `companyAnalysis` 公司分析 | `industryAnalysis` 行业分析 | `other`(可重复)
39
+ - `--source`:录制来源 `1`=企微会议助理 | `2`=会议服务微信群(可重复;不传返回全部)
40
+ - `--keyword` vs `--research-area`:用户说"关于AI的"用 `--keyword AI`;说"电子行业的会议"用 `--research-area 100800126`(research-area 用 `gangtiseIndustry` 码 `1008001xx` + 方向 `122000xxx`,**不要用申万码 `104xxx`**)
41
+ - `--content-type`(download **必选**):`asr` 语音识别 | `summary` AI 速记
42
+ - 返回字段:`conferenceId` / `title` / `publishTime` / `category` / `institution{...}` / `security{...}` / `researchArea{...}` / `guest` / `sourceList`(录制来源,`1`/`2`)
43
+
44
+ ## 群消息 `vault wechat-message-list`
45
+
46
+ ```bash
47
+ gangtise vault wechat-message-list [--keyword <text>] [--security <code>] [--wechat-group-id <id>] [--industry <id>] [--category <type>] [--tag <tag>] [--start-time <datetime>] [--end-time <datetime>] [--from <n>] [--size <n>]
48
+ ```
49
+
50
+ - 数据权限:仅用户已绑定并激活群消息助理、且助理已入群的群消息
51
+ - `--security`:按证券代码过滤(如 `000001.SZ`),可重复
52
+ - `--industry`:行业 ID,**必须用中信码 `citicIndustry`(`1008001xx`)**;实测传申万码 `104xxx` 会被静默忽略、返回全量
53
+ - `--wechat-group-id`:先用 `vault wechat-chatroom-list` 查;可重复
54
+ - `--category`:`text` | `image` | `documents` | `url`(可重复)
55
+ - `--tag`:`roadShow` | `research` | `strategyMeeting` | `meetingSummary` | `industryComment` | `companyComment` | `earningsReview`(可重复)
56
+ - 返回字段:`msgId` / `msgContent` / `contentUrl` / `msgTime` / `wechatGroupId` / `wechatGroupName` / `speakerName` / `category` / `tagList` / `securityList`(含 `securityCode` / `securityName`)
57
+
58
+ ## 群 ID 查询 `vault wechat-chatroom-list`
59
+
60
+ ```bash
61
+ gangtise vault wechat-chatroom-list [--room-name <name>] [--from <n>] [--size <n>]
62
+ ```
63
+
64
+ - `--room-name`:可重复或英文逗号分隔
65
+ - 省略 `--size` 拉全量(接口返回 `total`,CLI 按 total 并发翻页);传 `--size N` 只取前 N 条。单页最大 50
66
+ - 返回字段:`total`(总条数)/ `chatroomName` / `chatroomId`
67
+
68
+ ## 自选股股票池 `vault stock-pool-list / stock-pool-stocks`
69
+
70
+ ```bash
71
+ gangtise vault stock-pool-list
72
+ gangtise vault stock-pool-stocks [--pool-id <id>]
73
+ ```
74
+
75
+ - `stock-pool-list`:查询当前用户的全部股票池,返回 `poolId` / `poolName`
76
+ - `stock-pool-stocks`:查询股票池中的证券明细
77
+ - `--pool-id`:股票池 ID,可重复;不传默认 `all`(返回所有池中的非重复证券)
78
+ - 传入 `--pool-id all` 等同于全量查询,最多返回 10000 只
79
+ - 返回字段:`securityCode` / `securityName`
@@ -0,0 +1,291 @@
1
+ # 典型执行示例
2
+
3
+ 每个示例展示从用户语句到完整命令的全流程。Skill 主文件不再内嵌示例;遇到不确定的场景时来这里查同类。
4
+
5
+ ---
6
+
7
+ ## 例 1:研报检索 + 下载(list→download 多步编排)
8
+
9
+ **用户**:"下载中金最近的宏观策略研报"
10
+
11
+ ```
12
+ 1. 路由 → insight research list + download
13
+ 2. 中金 → C100000026(references/lookup-ids.md 速查)
14
+ "宏观策略" → 研报分类 --category macro + strategy(research list 无 --research-area)
15
+ "最近" → 默认 7 天
16
+ 3. Pre-flight:
17
+ - 认证 OK
18
+ - 结果可能 >200 条 → 🔴 询问"先看前 20 还是导出全量?"
19
+ - 下载格式 → 🔴 询问 PDF 还是 Markdown
20
+ 4. gangtise insight research list \
21
+ --broker C100000026 \
22
+ --category macro --category strategy \
23
+ --start-time "2026-04-08 00:00:00" --end-time "2026-04-15 23:59:59" \
24
+ --rank-type 2 --format json
25
+ (选"导出全量"分支:改 `--format jsonl --output cicc_macro.jsonl` 落盘,再 `wc -l` / `head` 采样,别把全量塞进上下文)
26
+ 5. 提取 reportId + title 展示,让用户选择具体一篇 → 确认 file-type
27
+ 6. gangtise insight research download --report-id <id> --file-type 1
28
+ ```
29
+
30
+ ## 例 2:观点检索(带模糊时间)
31
+
32
+ **用户**:"查一下最近有哪些首席观点提到 AI"
33
+
34
+ ```
35
+ 1. 路由 → insight opinion list
36
+ 2. "最近" → Insight 默认 7 天;"AI" → --keyword AI
37
+ 3. Pre-flight:模糊时间已映射,认证 OK,无歧义
38
+ 4. gangtise insight opinion list \
39
+ --keyword AI \
40
+ --start-time "2026-04-08 00:00:00" --end-time "2026-04-15 23:59:59" \
41
+ --rank-type 2 --format json
42
+ 5. 提取 list[].title / chiefName / publishDate,按时间倒序列表
43
+ ```
44
+
45
+ ## 例 3:AI 内容生成(content 字段直接呈现)
46
+
47
+ **用户**:"比亚迪的一页通"
48
+
49
+ ```
50
+ 1. 路由 → ai one-pager
51
+ 2. 比亚迪 → 002594.SZ(速查表)
52
+ 注意:one-pager 用 --security-code,不是 --security
53
+ 3. Pre-flight:首次生成常 >30s → 前置 `GANGTISE_TIMEOUT_MS=120000` 防超时重试;告知用户"生成中..."
54
+ 4. GANGTISE_TIMEOUT_MS=120000 gangtise ai one-pager --security-code 002594.SZ --format json
55
+ 5. 返回 {content: "markdown"} → 直接呈现 content,不要展示 JSON 包装
56
+ ```
57
+
58
+ ## 例 4:估值分析(默认时间范围)
59
+
60
+ **用户**:"贵州茅台过去一年的 PE 估值"
61
+
62
+ ```
63
+ 1. 路由 → fundamental valuation-analysis
64
+ 2. 贵州茅台 → 600519.SH;"PE" → --indicator peTtm
65
+ "过去一年"对 valuation 来说是命令默认行为,省略 --start-date 自动查近一年
66
+ 3. Pre-flight:认证 OK
67
+ 4. gangtise fundamental valuation-analysis \
68
+ --security-code 600519.SH --indicator peTtm --format json
69
+ 5. 提取 list[].tradeDate / value / percentileRank,表格 + 分位标注
70
+ ```
71
+
72
+ ## 例 5:跨市场 K 线(A 股 + 港股)
73
+
74
+ **用户**:"比亚迪 A 股和港股最近的日 K 线"
75
+
76
+ ```
77
+ 1. 路由 → quote day-kline + quote day-kline-hk(跨市场需分别调用)
78
+ 2. 比亚迪 A 股 002594.SZ,港股 01211.HK
79
+ "最近" → K 线默认今日往前 45 天(保证含最近 10 个交易日)
80
+ 3. Pre-flight:认证 OK
81
+ 4. gangtise quote day-kline --security 002594.SZ --start-date 2026-03-19 --end-date 2026-05-03 --format json
82
+ gangtise quote day-kline-hk --security 01211.HK --start-date 2026-03-19 --end-date 2026-05-03 --format json
83
+ 5. 合并两次结果,按 tradeDate 取尾部最近 10 个交易日
84
+ ```
85
+
86
+ ## 例 6:指数最近值(务必拉范围)
87
+
88
+ **用户**:"查上证综指最近的指数"
89
+
90
+ ```
91
+ 1. 路由 → quote index-day-kline
92
+ 2. 上证综指 → 000001.SH;"最近" → 今日往前 45 天
93
+ 3. Pre-flight:认证 OK;今天若周末 end-date 仍填当天,API 返回最近交易日
94
+ 4. gangtise quote index-day-kline --security 000001.SH --start-date 2026-03-19 --end-date 2026-05-03 --format json
95
+ 5. 按 tradeDate 取尾部最近 10 个交易日。**不要用 --limit 20**(截取的是窗口开头)
96
+ ```
97
+
98
+ ## 例 7:云盘文件下载(list→download,需用户选择)
99
+
100
+ **用户**:"帮我下载云盘里那个 AI 相关的 PDF"
101
+
102
+ ```
103
+ 1. 路由 → vault drive-list → drive-download
104
+ 2. "AI 相关" → --keyword AI;"PDF" → --file-type 1(文档含 PDF)
105
+ 3. Pre-flight:"那个"暗示特定文件 → 🔴 展示结果让用户选择
106
+ 4. gangtise vault drive-list --keyword AI --file-type 1 --format json
107
+ 5. 展示前 10 条让用户挑 → gangtise vault drive-download --file-id <id>
108
+ (省略 --output 自动用真实标题做文件名)
109
+ ```
110
+
111
+ ## 例 8:跨资源类型语义搜索
112
+
113
+ **用户**:"搜索一下新能源相关的研报和纪要"
114
+
115
+ ```
116
+ 1. 路由 → ai knowledge-batch(多类文档统一搜索时优先走 knowledge-batch)
117
+ 2. "新能源" → 行业别名映射 → 电力设备
118
+ "研报和纪要" → resource-type 10(券商研报) + 60(会议平台纪要) + 70(调研纪要公告)
119
+ 3. Pre-flight:意图明确,无歧义
120
+ 4. gangtise ai knowledge-batch \
121
+ --query "新能源" \
122
+ --resource-type 10 --resource-type 60 --resource-type 70 \
123
+ --format json
124
+ 5. 提取 list[].title / resourceType / summary,编号列表呈现
125
+ ```
126
+
127
+ ## 例 9:未知公司名(走 securities-search)
128
+
129
+ **用户**:"查蔚蓝生物的最新研报"
130
+
131
+ ```
132
+ 1. 路由 → insight research list;公司名不在速查表
133
+ 2. 先调 reference securities-search:
134
+ gangtise reference securities-search --keyword 蔚蓝生物 --category stock --top 3 --format json
135
+ 返回 list[0].gtsCode = "603739.SH"
136
+ 3. 拼正式查询:
137
+ gangtise insight research list --security 603739.SH --rank-type 2 \
138
+ --start-time "2026-04-08 00:00:00" --end-time "2026-04-15 23:59:59" --format json
139
+ ```
140
+
141
+ ## 例 10:实时行情(盘中快照,跨市场)
142
+
143
+ **用户**:"茅台、腾讯、苹果现在的最新价"
144
+
145
+ ```
146
+ 1. 路由 → quote realtime(A/港/美都走同一个接口)
147
+ 2. 茅台 600519.SH(速查表)/ 腾讯 00700.HK(速查表)/ 苹果 AAPL.O
148
+ 3. Pre-flight:用户只关心几个核心字段 → 用 --field 精简返回
149
+ 4. gangtise quote realtime \
150
+ --security 600519.SH --security 00700.HK --security AAPL.O \
151
+ --field securityCode --field tradeTime --field latestPrice --field pctChange --field volume \
152
+ --format json
153
+ 5. 返回最新时刻快照;非交易时间返回最近一个交易日的收盘快照
154
+ 注意:日 K 线(day-kline)不返回盘中数据,问"现在/此刻"必须走 realtime
155
+ ```
156
+
157
+ ## 例 11:美股日 K 线(历史)
158
+
159
+ **用户**:"苹果过去一个月的日 K 线"
160
+
161
+ ```
162
+ 1. 路由 → quote day-kline-us(仅历史;盘中数据走 realtime)
163
+ 2. 苹果 AAPL.O;"过去一个月" → 今日往前 30 天
164
+ 3. Pre-flight:认证 OK;当日数据约 07:00(北京时间)入库
165
+ 4. gangtise quote day-kline-us --security AAPL.O \
166
+ --start-date 2026-04-22 --end-date 2026-05-22 \
167
+ --field tradeDate --field open --field close --field volume --field pctChange --format json
168
+ 5. 按 tradeDate 排序展示
169
+ ```
170
+
171
+ ## 例 12:异步任务(业绩点评)
172
+
173
+ **用户**:"给贵州茅台写一份 2025Q3 业绩点评"
174
+
175
+ ```
176
+ 1. 路由 → ai earnings-review(异步)
177
+ 2. 茅台 600519.SH;--period 2025q3
178
+ 3. Pre-flight:异步任务,告知用户"提交后需等待,期间可以做别的"
179
+ 4. gangtise ai earnings-review --security-code 600519.SH --period 2025q3 --format json
180
+ → 返回 {dataId: "xxx"}
181
+ 5. 等 30s-1min 后调 check:
182
+ gangtise ai earnings-review-check --data-id xxx --format json
183
+ - 若 {status: "pending"} → 再等再 check(最多 3 次)
184
+ - 若 {date, content} → 取 content 呈现
185
+ - 若 410111(新码 140002)→ 终态失败,**不要重提同一任务**(会再扣 50 积分且结果相同);改参数后再提交,或直接告知用户该期数据暂不可用
186
+ ```
187
+
188
+ ## 例 13:题材画像 + 成分股(先查 ID 再拉两接口)
189
+
190
+ **用户**:"机器人这个题材现在的逻辑和龙头股"
191
+
192
+ ```
193
+ 1. 路由 → alternative concept-info(投资逻辑/行业空间/竞争格局)
194
+ + alternative concept-securities(成分股,按分组)
195
+ 2. "机器人" → concept-id:题材与主题共用 ID 体系,用 concept-search 查
196
+ gangtise reference concept-search --keyword 机器人 --top 5 --format json
197
+ → list[0].conceptId = 121000130
198
+ 注意:concept-id 不在速查表,**绝不猜测**,必须查 concept-search
199
+ 3. Pre-flight:认证 OK;两接口都仅返回最新截面,无历史回溯
200
+ 4. gangtise alternative concept-info --concept-id 121000130 --format json
201
+ → 单对象 {conceptName, definition, investmentLogic, industrySpace,
202
+ competitiveLandscape, keyEvents:[{date,content}]}
203
+ gangtise alternative concept-securities --concept-id 121000130 --format json
204
+ → 单对象 {securityCount, securityDetail:[{groupName, securityList:[...]}]}
205
+ 5. 呈现:concept-info 各文本字段直接展示(含 null 则跳过);
206
+ 成分股按 groupName 分组列出,isKey=true 标记为「重点」
207
+ ```
208
+
209
+ ## 例 14:板块成分股(sector-search → sector-constituents 两步)
210
+
211
+ **用户**:"半导体设备板块现在有哪些股票"
212
+
213
+ ```
214
+ 1. 路由 → reference sector-search + sector-constituents
215
+ (用户要的是板块名单,不是题材深度 F8 → 不走 alternative concept-securities)
216
+ 2. gangtise reference sector-search --keyword 半导体设备 --top 5 --format json
217
+ → 同名板块可能出现在多个层级,用 hierarchy 区分:
218
+ 中国内地股票-概念类-科技-半导体设备 → sectorId 1000001005
219
+ 3. gangtise reference sector-constituents --sector-id 1000001005 --format json
220
+ → {total: 59, list: [{gtsCode, gtsName}, ...]}
221
+ 4. 陷阱:sectorId 必须来自 sector-search;拿题材 conceptId(如 121000130)来查会返回 0 条
222
+ 5. 呈现:total + 前 20 只列表
223
+ ```
224
+
225
+ ## 例 15:指标取数(search → cross-section / time-series)
226
+
227
+ **用户**:"茅台和泡泡玛特上周的收盘价、成交量对比一下"
228
+
229
+ ```
230
+ 1. 路由 → indicator(证券级指标,需证券代码 → EDE,不是 alternative edb)
231
+ 2. 先拿 indicatorCode(绝不猜):
232
+ gangtise indicator search --keyword 收盘价 --format table → qte_close
233
+ gangtise indicator search --keyword 成交量 --format table → qte_vol
234
+ 3. 取数二选一:
235
+ - 单日横向对比 → cross-section(多指标 × 多证券):
236
+ gangtise indicator cross-section \
237
+ --indicator qte_close --indicator qte_vol \
238
+ --security 600519.SH --security 09992.HK \
239
+ --date 2026-05-22 --format table
240
+ → 每行一只证券,列 = date/security/name/日收盘价/成交量
241
+ - 一段区间走势 → time-series(这里两只证券 → 只能单指标 × 多证券):
242
+ gangtise indicator time-series --indicator qte_close \
243
+ --security 600519.SH --security 09992.HK \
244
+ --start-date 2026-05-18 --end-date 2026-05-22 --format table
245
+ → 每行一个日期,列 = date/贵州茅台/泡泡玛特
246
+ 4. 复权:要前复权收盘价加 --indicator-param "qte_close:adjustmentType=2"
247
+ (参数 key 以 indicator search --format json 的 parameterList 为准)
248
+ 5. 陷阱:time-series 不能多指标 × 多证券同时(报 410001),那种情况用 cross-section
249
+ 6. 必填参数:很多指标默认调用会缺参报错(服务端指明缺哪个,如「必填参数 periodNum 不能为空」)→ 先看 parameterList 的 required,补
250
+ periodNum(N期统计)/startDate(区间周期类,如 qte_amp_mo)/fiscalYear(年度分红):
251
+ gangtise indicator cross-section --indicator finc_roe_avg_avg --security 600519.SH \
252
+ --date 2026-03-31 --indicator-param "finc_roe_avg_avg:periodNum=4"
253
+ 7. 无数据:截面/时序对无此科目的**格**返回 null(不丢行);**整个查询无数据**(节假日/未来日期/未覆盖标的)
254
+ 仍报 999999+HTTP 500,CLI 不重试并提示检查条件 → 财务用报告期末、现金流附注用年报
255
+ 日期(2025-12-31)、行情用交易日;银行/券商/保险科目不同,换对公司类型。详见 commands/indicator.md
256
+ ```
257
+
258
+ ## 例 16:A 股资金流向(个股 vs 全市场按日分片)
259
+
260
+ **用户**:"看下宁德时代最近一个月的主力资金净流入" / "拉今天全 A 股的资金流向"
261
+
262
+ ```
263
+ 1. 路由 → quote fund-flow(A 股日频资金流向,免费;仅历史,约 16:30 入库)
264
+ 2. 个股:宁德时代 300750.SZ;"最近一个月" → 今日往前 30 天
265
+ gangtise quote fund-flow --security 300750.SZ \
266
+ --start-date 2026-06-06 --end-date 2026-07-06 \
267
+ --field tradeDate --field mainNetInflow --field mainInflowRatio --format json
268
+ → 主力 = 大单 + 特大单;字段族 {small|medium|large|xlarge}{Inflow|Outflow|NetInflow|InflowRatio}
269
+ 单只无翻页:撞 --limit(默认 6000/上限 10000)会标 partial + 退出码 3 → 缩小日期区间
270
+ 3. 全市场:--security aShares
271
+ ⚠️ aShares 必须显式传 --start-date/--end-date(缺日期本地报错;否则单请求被服务端 430012 拒)
272
+ 单日约 5500 行,CLI 按日自动分片并发合并、无需手动分批(宽区间落盘再采样):
273
+ gangtise quote fund-flow --security aShares \
274
+ --start-date 2026-07-06 --end-date 2026-07-06 --format jsonl --output aShares_flow.jsonl
275
+ ```
276
+
277
+ ## 例 17:机构 ID 搜索(名称 → institutionId,喂给 --broker/--institution)
278
+
279
+ **用户**:"查渤海证券最近的研报"
280
+
281
+ ```
282
+ 1. 机构名不在速查表、要按机构筛选 → 先 reference institution-search 拿 ID(免费,搜索型 top≤10,绝不猜 ID)
283
+ 2. gangtise reference institution-search --keyword 渤海证券 --format json
284
+ → list[0] = {institutionId: "C100000001", institutionName, usageScopes:[...]}
285
+ usageScopes 直接标明这个 ID 用于哪个命令的哪个参数(省去猜 --broker 还是 --institution)
286
+ 可选 --category 缩类:domesticBroker / foreignInstitution / leadInstitution / opinionInstitution / foreignOpinionInstitution
287
+ 3. 研报按券商筛选走 --broker:
288
+ gangtise insight research list --broker C100000001 --rank-type 2 \
289
+ --start-time "2026-06-06 00:00:00" --end-time "2026-07-06 23:59:59" --format json
290
+ 4. 只有要「全量枚举」券商/机构表时才用本地 lookup broker-org/meeting-org list(institution-search 是搜索、非全量)
291
+ ```