跳转至

查询主题概念

HTTP API GET 主题 / 成份股
请求 URL https://stock-data-api.aibot6.cn/v1/api/themes

主题模块用于同步东方财富 BK 概念列表及成份股,并提供只读查询接口,适合文档检索、主题看板和成份联动。

数据表

  • themes_theme
  • themes_theme_member

管理命令

python manage.py sync_bk_themes --full

常见参数:

  • --bk
  • --name
  • --full
  • --sleep
  • --retries
  • --source
  • --enrich-ths
  • --basic-only

请求参数

参数 类型 必填 说明
keyword string 主题名称关键字
bk string 东方财富 BK 编码
page int 默认 1
page_size int 默认 20
with_members boolean 是否返回成份股

同步策略

成份软删除

  • 同步前将主题下旧成份标记为 is_active=false
  • 本轮出现的成份再写回 is_active=true
  • 未再次出现的成份保留为软删除状态

THS 富化

可选补充:

  • 主题简介
  • 成员关联原因
  • 上下游分类
  • 关联度与证据链接
    <div class="api-code-panel" data-code="python" markdown="1">
import requests

url = "https://stock-data-api.aibot6.cn/v1/api/themes"
params = {
    "keyword": "机器人",
    "page": 1,
    "page_size": 20,
    "with_members": "true",
}
headers = {
    "Authorization": "Bearer <token>",
    "api-key": "<api-key>",
}

response = requests.get(url, params=params, headers=headers)
print(response.text)
    </div>
    <div class="api-code-panel" data-code="javascript" markdown="1">
const url = new URL("https://stock-data-api.aibot6.cn/v1/api/themes");
url.searchParams.set("keyword", "机器人");
url.searchParams.set("page", "1");
url.searchParams.set("page_size", "20");
url.searchParams.set("with_members", "true");

const response = await fetch(url, {
  headers: {
    Authorization: "Bearer <token>",
    "api-key": "<api-key>",
  },
});

console.log(await response.json());
    </div>
  </div>
</section>

<section class="api-card status-card">
  <div class="api-card__header">
    <h3 class="api-card__title">返回状态示例</h3>
  </div>
  <div class="api-card__body">
    <div class="api-status-tabs" role="tablist" aria-label="返回状态">
      <button class="api-status-tab is-active" type="button" data-status-target="200">200</button>
      <button class="api-status-tab" type="button" data-status-target="400">400</button>
      <button class="api-status-tab" type="button" data-status-target="401">401</button>
      <button class="api-status-tab" type="button" data-status-target="403">403</button>
      <button class="api-status-tab" type="button" data-status-target="404">404</button>
    </div>
    <div class="api-status-panel is-active" data-status="200" markdown="1">
{
  "code": 1,
  "message": "success",
  "data": {
    "items": [
      {
        "theme_id": 1024,
        "name": "机器人",
        "bk_code": "BK1234",
        "member_count": 37,
        "summary": "主题概念说明",
        "members": [
          {
            "stock_code": "300024",
            "stock_name": "机器人"
          }
        ]
      }
    ],
    "total": 1
  }
}
    </div>
    <div class="api-status-panel" data-status="400" markdown="1">
{
  "code": 0,
  "message": "invalid page_size"
}
    </div>
    <div class="api-status-panel" data-status="401" markdown="1">
{
  "code": 0,
  "message": "unauthorized"
}
    </div>
    <div class="api-status-panel" data-status="403" markdown="1">
{
  "code": 0,
  "message": "forbidden"
}
    </div>
    <div class="api-status-panel" data-status="404" markdown="1">
{
  "code": 0,
  "message": "theme not found"
}
    </div>
  </div>
</section>