/公开落地页
产品介绍、能力说明与数据源声明,首屏统计数字由 /api/stats 实时填充。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lang | en | zh | 否 | 决定 <html lang> 与分享卡片语言;缺省按 Accept-Language,再退回 en。 |
示例
curl -s "$BASE/?lang=en"
亚太统计分析系统的 REST 接口。全部数据来自公开来源(世界银行 Open Data · 中国国家统计局 · 中国海关总署),标识符在服务端按请求语言本地化。
?lang=en|zh 优先;缺省读 Accept-Language,再退回 en(与产品默认语言一致)。页面 <html lang> 与分享卡片语言同源。
数据表里存的是中文规范键,本地化只发生在服务端一处。每条记录同时给出:field(当前语言的展示值)、field_key(中文规范键)、field_slug(ASCII 稳定键)。请求参数接受三者任一,因此英文调用方不必维护任何中文词表。
标签包未收录的词条按原文返回,不抛异常——向前兼容新增数据。反过来,无法解析的维度(如 ?dimension=Atlantis)也原样透传后查不到数据,不会静默替换为默认值。
校验失败返回 {"ok": false, "error": "…"} 并带 400;鉴权失败 403;找不到 404;上游数据源失败 502。错误文案按 lang 本地化。
所有响应带 X-Content-Type-Options: nosniff、X-Frame-Options: SAMEORIGIN、Referrer-Policy: strict-origin-when-cross-origin、Permissions-Policy 与收敛到 'self' 的 CSP;HTTPS 下追加 HSTS。项目零外部 CDN 依赖(字体走系统字体栈)。
世界银行 Open Data(CC BY 4.0 公共许可)、中国国家统计局与中国海关总署公开发布物。本项目仅使用公开数据,不含任何内部或涉密数据。
/公开产品介绍、能力说明与数据源声明,首屏统计数字由 /api/stats 实时填充。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lang | en | zh | 否 | 决定 <html lang> 与分享卡片语言;缺省按 Accept-Language,再退回 en。 |
示例
curl -s "$BASE/?lang=en"
/app公开看板主界面:智能查询、指标总表、自定义分析、统计公报、图表五个工作台。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lang | en | zh | 否 | 界面语言占位符 zh-CN 的取值来源。 |
示例
curl -s "$BASE/app?lang=zh"
/docs公开API 参考。内容按 ?lang= 服务端渲染,无需 JavaScript。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lang | en | zh | 否 | 文档语言。 |
示例
curl -s "$BASE/docs?lang=en" | less
/privacy公开对外分发后最常被问的三件事(收集什么 / 数据从哪来 / AI 会不会把问题发出去)的固定答案。同样服务端渲染、零 JS。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lang | en | zh | 否 | 声明语言。 |
示例
curl -s "$BASE/privacy?lang=en"
/theme.css · /style.css · /landing.css · /app.js · /app.charts.js · /app.palette.js · /app.indicators.js · /app.custom.js · /app.bulletin.js · /i18n.js · /i18n-dict.js · /i18n-dict-landing.js公开十二份前端资源:主题令牌 / 看板样式 / 落地页样式 / 看板逻辑 / 图表分块 / 命令面板分块 / 指标总分块 / 自定义分析分块 / 统计公报分块 / 双语运行时 / 全量词表 / 落地页词表。页面引用时每个资产各带自己的 内容哈希版本号 ?v=<sha256 前 12 位>,因此可以放心长缓存;改一个资产只换它自己的 URL,不会连带把别的资产也顶失效。/app.charts.js、/app.palette.js、/app.indicators.js、/app.custom.js 与 /app.bulletin.js 是 按需加载的分块:core(/app.js)只在首次用到时才动态拉取,首屏不下发。
无请求参数。
示例
curl -sI "$BASE/style.css" | grep -i cache-control
/og-image.png · /favicon.svg · /favicon.ico公开og-image.png 为 1200×630 社交分享卡片(由 scripts/make_og_image.py 生成后 base64 内嵌,见 src/pages.py)。/favicon.ico 301 跳到 /favicon.svg:部分浏览器与爬机不看 <link rel=icon> 声明仍会直接要它,仓库里只有 SVG 图标,不重定向 就等于每次首访白吃一个 404。
无请求参数。
示例
curl -sI "$BASE/og-image.png" | grep -i content-type
/robots.txt · /sitemap.xml公开爬虫协议与站点地图,缓存 1 小时。
无请求参数。
示例
curl -s "$BASE/robots.txt"
/api/stats公开公开只读的聚合计数(记录数、知识条目数、覆盖经济体与年份),供落地页与看板侧栏展示。不含库路径等环境细节——那些在管理端点 /api/db。
无请求参数。
示例
curl -s "$BASE/api/stats"
/api/overview公开按年份 + 维度返回关键指标卡片,每张卡片含本地化展示值、*_key(中文规范键)与 *_slug(ASCII 稳定键);同时返回下拉框可选项。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| year | int | 否 | 年份,缺省 2024。 |
| dimension | str | 否 | 经济体:接受规范键(中国)、英文标签(China)或 slug(china);缺省 亚太 聚合口径。 |
| lang | en | zh | 否 | 本地化语言。 |
示例
curl -s "$BASE/api/overview?year=2024&dimension=china&lang=en"
/api/insights公开从本地公开数据算出可复算的年度变化:该维度同比变化最大的指标、覆盖最广指标上名次变动最大的经济体,以及本年度真实覆盖规模。每条洞察都带两年数值,可用 /api/indicators 复核;上一年缺失或为 0 的指标不进榜单,不给误导性百分比。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| year | int | 否 | 年份,缺省 2024。洞察为「当年 vs 上一年」。 |
| dimension | str | 否 | 经济体:接受规范键、英文标签或 slug;缺省 亚太 聚合口径。 |
| lang | en | zh | 否 | 本地化语言。 |
示例
curl -s "$BASE/api/insights?year=2024&dimension=china&lang=en"
/api/indicators公开面向程序消费的主要数据接口。每行的 category / indicator / dimension / unit 按 lang 本地化,并并列给出 *_key 与 *_slug——英文消费方无需任何中文词表即可使用。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| year | int | 否 | 缺省表示跨年全量。 |
| dimension | str | 否 | 经济体(键 / 标签 / slug 皆可)。 |
| category | str | 否 | 专业分类。 |
| indicator | str | 否 | 指标名(键 / 标签 / slug 皆可)。 |
| q | str | 否 | 模糊搜索:同时匹配原始行与本地化行的全部字段(中英文均命中)。 |
| lang | en | zh | 否 | 本地化语言。 |
示例
curl -s "$BASE/api/indicators?indicator=GDP&year=2024&lang=en" # 或按关键词搜索(中英均可) curl -s "$BASE/api/indicators?q=retail" | head -40
/api/export.csv公开把当前筛选结果导出为 CSV。列固定为 year,category,indicator,dimension,value,unit,note,内容带 BOM(utf-8-sig)以便 Excel 直接打开;文件名含年份、维度 slug 与语言。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| year · dimension · indicator · category · q · lang | — | 否 | 与 /api/indicators 完全一致。 |
示例
curl -s "$BASE/api/export.csv?year=2024&dimension=china&lang=en" \ -o indicators_2024_china_en.csv
/api/indicator_keys公开返回全部可绑定指标的三元组(专业 / 指标 / 维度),供「新建自定义分析」的变量下拉选择使用。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lang | en | zh | 否 | 本地化语言。 |
示例
curl -s "$BASE/api/indicator_keys?lang=en"
/api/custom公开不带 name 时返回分析列表(含中英名称);带 name 时求值并返回结果,compare 为真时附同比 yoy。名称中英皆可命中。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | str | 否 | 分析名称;缺省列出全部。 |
| year | int | 否 | 求值年份,缺省 2024。 |
| lang | en | zh | 否 | 本地化语言。 |
示例
curl -s "$BASE/api/custom?name=GDP&lang=en"
/api/custom公开追加一条分析到配置文件。表达式在占位值上预校验可求值,且不允许重复名称;变量取值失败时返回 error 字段而不抛异常。
无请求参数。
请求体
JSON 请求体:
{
"name": "第三产业占比", // 必填,中文规范名
"name_en": "Tertiary share", // 可选,英文展示名
"unit": "%",
"description": "…",
"description_en": "…",
"variables": { // 必填,变量名 -> [专业, 指标, 维度(可选)]
"x": ["国民经济", "第三产业增加值", "中国"],
"y": ["国民经济", "GDP", "中国"]
},
"expr": "x / y * 100", // 必填,安全求值
"compare": true // 可选,是否计算同比
}示例
curl -s -X POST "$BASE/api/custom" \
-H 'Content-Type: application/json' \
-d '{"name":"Tertiary share","variables":{"x":["国民经济","第三产业增加值","中国"]},"expr":"x"}'/api/report公开按年份 + 维度生成公报。format=json 返回结构化数据(标识符已由服务端本地化,交前端渲染);缺省返回纯文本 Markdown。cloud=1 时附云端 AI 解读。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| year | int | 否 | 缺省 2024。 |
| dimension | str | 否 | 经济体,缺省 亚太。 |
| cloud | 0 | 1 | 否 | 是否请求云端 AI 解读。 |
| format | json | 否 | 出现即为 JSON,否则文本。 |
| lang | en | zh | 否 | 本地化语言。 |
示例
curl -s "$BASE/api/report?year=2024&format=json&lang=en"
/api/ask公开把一句自然语言问题解析为指标查询并返回统计结果。cloud=1 时,本地统计结果先作为事实上下文再交给云端模型(提示词中明确要求只依据给定数字),避免模型编造数据;云端不可用时退回本地统计并在 注 字段说明。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| text | str | 是 | 自然语言问题,如 2024年GDP 或 retail sales。 |
| dimension | str | 否 | 限定经济体。 |
| cloud | 0 | 1 | 否 | 是否调用云端 AI 解读。 |
| lang | en | zh | 否 | 本地化语言(同时决定云端提示词语言)。 |
示例
curl -s "$BASE/api/ask?text=2024%20GDP&lang=en&cloud=0"
/api/infini_skill公开按 agent_infini Skill 规范返回推荐工作流与资源预检结果;只读、不触发任何云端调用,CLI 不可用时优雅降级。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| db | str | 否 | 逗号分隔的数据库标识,用于核验是否已启用。 |
| rag | str | 否 | 逗号分隔的 RAG 知识库标识,用于核验是否已启用。 |
示例
curl -s "$BASE/api/infini_skill"
/api/ai-cache公开AI 解读缓存的运行指标:命中 / 未命中计数、L1 容量、Redis 是否可用。只读、无副作用,用来验证「重复提问真的没有重复打云端」。
无请求参数。
示例
curl -s "$BASE/api/ai-cache"
/api/knowledge公开列出或搜索知识条目;命中结果会作为本地统计的补充上下文出现在问答结果中。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| q | str | 否 | 关键词搜索;缺省列出全部。 |
| category | str | 否 | 按分类过滤。 |
示例
curl -s "$BASE/api/knowledge?q=GDP"
/api/knowledge公开新增一条知识条目,title 与 content 必填。
无请求参数。
请求体
JSON 请求体:{"title": "…", "content": "…", "category": "通用", "tags": "gdp,trade", "source": "…"}示例
curl -s -X POST "$BASE/api/knowledge" \
-H 'Content-Type: application/json' \
-d '{"title":"GDP 口径","content":"…"}'/api/knowledge公开按 id 删除条目。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | int | 是 | 条目 ID。 |
示例
curl -s -X DELETE "$BASE/api/knowledge?id=1"
/api/db需管理令牌返回数据库路径、引擎、体积与各表行数。含环境细节,故列入管理端点。
无请求参数。
示例
curl -s "$BASE/api/db" -H "X-Admin-Token: $ADMIN_TOKEN"
/api/reseed需管理令牌清空指标表后重新载入内嵌的真实公开数据种子集,并清除 KV 旧快照。会覆盖库内数据。
无请求参数。
示例
curl -s -X POST "$BASE/api/reseed" -H "X-Admin-Token: $ADMIN_TOKEN"
/api/kv-status需管理令牌检查 Redis / Vercel KV 持久化连接:环境变量存在性(已脱敏)、写入与回读。
无请求参数。
示例
curl -s "$BASE/api/kv-status" -H "X-Admin-Token: $ADMIN_TOKEN"
/api/collect需管理令牌从世界银行 Open Data 拉取指定指标并入库(公开数据源,无需鉴权)。需要可写磁盘,故线上默认关闭。
无请求参数。
请求体
JSON 请求体:{"source": "worldbank" | "global", "year": 2024, "country": "CN", "indicators": "NY.GDP.MKTP.CD"}示例
curl -s -X POST "$BASE/api/collect" \
-H 'Content-Type: application/json' -H "X-Admin-Token: $ADMIN_TOKEN" \
-d '{"source":"worldbank","year":2024,"indicators":"NY.GDP.MKTP.CD"}'/healthz公开探活端点:始终返回 200,用 status 区分健康与降级。不播种、不鉴权,适合部署平台的存活探针与外部监控;version 用来确认线上跑的是哪一版,uptime_s 则暴露「刚刚重启过」这个排查线索。
无请求参数。
示例
curl -s "$BASE/healthz"
管理端点未配置 QU_STAT_ADMIN_TOKEN 时:本地开发放行,部署到 Vercel 一律 403(无持久盘,重播种 / 抓取也无处落库)。
https://qu-stat-system.vercel.app/sitemap.xml