咏庆德云数据栈 · 站点地图 / 结构索引

咏庆德云数据栈 · 全站结构树

从一级栏目一路下钻到页面里的最小控件;先看一屏地图,再按层展开

结构 10 个一级栏目 · 1878 个节点 · 52 个页面 · 30 条 URL 路径 · 最深 L5 数据版本 v3 唯一源 content/site-tree.json 校验 scripts/check-site-tree.py

1. 一屏看懂:一级栏目地图

看不懂全站时先看这一屏:每个格子是一级栏目,数字由树现算。点卡片直接跳到树里对应分支。

1878 总节点 10 L1 栏目 52 L2 页面 238 L3 区块 322 L4 模块 1256 L5 控件 30 不同 URL 路径 L5 最深层级

上面每个数字都从树现算,不是手填的。点任意卡片,会跳到下方树里对应的分支并展开到页面层。

当前真实页面清单(自动同步,不是手抄)

这一栏由生成器直接读 router/index.ts、main.py 的 PAGE_ROUTES、prerender.py 的 STATIC_PAGES 与 public/*.html 得出。网站新增或删除页面,重新生成就会自动跟着变,不需要有人记得往树里补节点。

共 32 个真实页面(自动清单)· 32 个在人工树里能匹配到 URL · 0 个匹配不到。匹配只说明树里记过这个地址,不等于逐项核对过当前页面;参数页(含 :)按路由模式列出,不造示例链接。

/SPA 路由树中有 URL
/aboutSPA 路由树中有 URL
/actorsSPA 路由树中有 URL
/admin无后缀短路径树中有 URL
/architecture无后缀短路径树中有 URL
/art/:catSPA 路由树中有 URL
/art/相声sitemap 静态页树中有 URL
/art/评书sitemap 静态页树中有 URL
/art/鼓曲sitemap 静态页树中有 URL
/dataSPA 路由树中有 URL
/discoverSPA 路由树中有 URL
/guide无后缀短路径树中有 URL
/metricsSPA 路由树中有 URL
/networkSPA 路由树中有 URL
/ops无后缀短路径树中有 URL
/partnersSPA 路由树中有 URL
/person/:codeSPA 路由树中有 URL
/person/:code/partner/:otherSPA 路由树中有 URL
/program/:nameSPA 路由树中有 URL
/programsSPA 路由树中有 URL
/quzhong/:nameSPA 路由树中有 URL
/quzhongsSPA 路由树中有 URL
/scheduleSPA 路由树中有 URL
/session/:idSPA 路由树中有 URL
/statsSPA 路由树中有 URL
/team/:nameSPA 路由树中有 URL
/teamsSPA 路由树中有 URL
/tree无后缀短路径树中有 URL
/venue/:venueSPA 路由树中有 URL
/venuesSPA 路由树中有 URL
/wushixiongSPA 路由树中有 URL
/yearbookSPA 路由树中有 URL

2. 六层粒度怎么定义

L4 就是页面里那种「块」,L5 是块里能单独改动的最小单元。全树所有叶子都落在 L5,没有停在半路的浅层叶子。

L0站点咏庆德云数据栈(首页 /)
L1一级栏目首页 · 节目单 · 找人 · 看数据 …
L2页面数据中心 /stats · 人物档案 /person/:code
L3区块章节 00 /stats#ch-0 · 页头 KPI 区
L4模块(块 / 卡片)演出队卡 · 搭档卡 · 榜单 · 筛选器
L5最小控件与字段卡片标题 · 总量数字 · 单位 · 搜索框 · 空态

全站统一 6 层:L0 站点 → L1 一级栏目 → L2 页面 → L3 区块 → L4 模块(块 / 卡片)→ L5 最小控件与字段。这棵树是导航树 / 文档树,不是数据库外键:同一个页面若从两个分支都能抵达,树里照列,但指向同一个 URL。

下面第 3 节的逐层细节来自 2026-11 对站点的一次人工浏览记录,不是自动抓取的当前 DOM:层级与控件位置是实测的,但节点文本里的具体数值、日期、人名和节目单条目是那次页面显示的内容快照,会过期,看当前数字请回站内对应页面。

哪些页面真实存在,以上方「当前真实页面清单」为准 —— 它由生成器直接读路由与页面单一源得出,网站加页面重新生成就自动出现,不依赖这份人工观测。清单里「树中有 URL」只表示人工树记过这个地址,不等于逐项核对过当前页面;匹配不到的会标「树中无 URL」。

3. 全站树:逐层下钻

试改 / 备份 只读中。本页是生成物:试改会自动存本机草稿,正式改动请合入 content/site-tree.json 后重新生成。
节点格式:编号 · 名称 · URL · 层级徽章 · 备注。默认展开到 L2,用上方按钮逐层下钻,或直接筛选。同一个页面从两个分支都能抵达时,树里照列但指向同一 URL。带具体数值的备注是抓取时的快照,只用来标明字段位置,不是定值。

4. 最小控件字典

全树的 L5 控件基本由下面这些类型组合而成。代号只用于归纳,树里逐项写的是实际控件名与字段。

代号最小控件包含的最小字段
M1标题 / 编号章节号、模块名、副标题
M2口径徽章 ⓘ口径 code、悬浮说明文案
M3总量数字数值、千分位、单位、括注
M4搜索框placeholder、共 N 条、aria-label、触发条件
M5列表行名次 / 名称 / 计数 / 单位 / 跳转 URL
M6展开按钮展开全部 N 条 ▼ / 收起 ▲
M7空态没有匹配的 X / 暂无数据 / 加载失败 + 重试
M8切换器时段 / 粒度 / 维度 / 排序 / 视图,含选中态
M9图表标题、数据系列、轴、峰值 / 均值标注、ⓘ、导出 CSV
M10链接「X →」文字、目标 URL、面包屑回指
M11角标 / 标签角色(演·伴·逗·捧)、曲种、状态徽章
M12导航控件上一周 / 下一周 / 回本周 / 上一场 / 下一场 / 分页
M13tab 条页内视角切换,如人物页、节目页、队伍页
M14动作卡生成海报 / 在全站的位置 / 演出报告 / 看详情 →
M15口径提示📏 数据口径 · ⚠ 记录边界警告 · ⓘ 悬浮说明
M16摘要条📌 一句话结论,含多个数值与定性判断
M17章节头 ch-head编号 ch-no、h2 标题、副标题、ⓘ 口径按钮
M18榜单行(细)第 N 名 · 名称 · 年份区间 · 数值 · 环比 · P 码
M19指纹格 / 日历格pos-grid、ch-month、ch-week、色块、少→多色阶
M20口径长文压轴 / 倒二 / 攒底 / 末段怎么分,返场不计入站位
M21登录表单用户名 / 密码 / 登录 / HttpOnly 会话 Cookie 说明
M22报告块年度 KPI、ⓘ 口径、同比、看点海报、章节导航

5. 这棵树怎么维护

本页由 scripts/gen-site-tree.py 从 content/site-tree.json 生成,所有计数按树现算。页面里可以试改节点并导出 JSON 草稿,但正式改动请合入 content/site-tree.json 后重新生成;直接改这个 HTML 会在下一次生成时被覆盖。

树的 URL 会与 router/index.ts 的 SPA 路由、main.py 的 PAGE_ROUTES、prerender.py 的 STATIC_PAGES、以及 web-src/public/*.html 做双向比对:树里写了不存在的地址会红;线上新增了页面却没进树,CI 也会红。确实不该进树的(重定向、跳转壳、验证文件等)要在 route_policy.exempt 里逐条写明理由。