用途:指导安全修改 PostHog 的 TaxonomicFilter——用户在选择事件、属性、动作、人群、分组等“PostHog 已知对象”时使用的选择器,是多数分析与录屏配置的入口。代码位于 frontend/src/lib/components/TaxonomicFilter/。
两条硬性规则:一是把用户实际会选的条目降级属于回归,即便测试全部通过;排序、置顶或位置 0 的改动需人工明确签署,不能由智能体单独决定。二是存在三个线上变体、由两个功能开关控制,rebuild 是对旧数据层与分组层的并行重实现,而非简单换皮;行为改动通常需同时落到旧代码与 rebuild,否则实验两支会分叉。
三个变体:legacy-control 与 legacy-pill 由 TAXONOMIC_FILTER_CATEGORY_DROPDOWN 控制(同一份代码 taxonomicFilterLogic.tsx + InfiniteList,两条渲染路径);rebuild-menu 由 TAXONOMIC_FILTER_MENU_REBUILD 控制,是全新实现,基于 headless/ 的 hooks 过滤面板,不经过 taxonomicFilterLogic/infiniteListLogic,有自己的分组定义、抓取与排序。rebuild 仅在 TaxonomicPopover.tsx 与 TaxonomicPropertyFilter.tsx 两个包装器中选择性启用;自行构建弹层的调用点不会进入 rebuild。
跨变体镜像:分组定义、分组排序与 SuggestedFilters 注入、逐标签抓取/分页/最小查询长度、数据仓库配置流、遥测等关注点在旧代码与 rebuild 中各有一份实现,无 lint 或测试强制一致性。共享部分包括 types.ts 枚举、utils/promoteProperties.ts、utils/redistributeTopMatches.ts 及最近/固定逻辑。已记录的刻意分歧(rebuild 总是先给 SuggestedFilters)应保留。
遥测契约:taxonomic_filter_* 事件带 surface 属性区分实验支;共享事件新增属性需同时改两个发送方。
限制与检查清单:改动标签/分组需测三个变体;确认共享遥测载荷一致;排序/置顶需人工签署;向评审标注进行中的实验;运行 hogli test frontend/src/lib/components/TaxonomicFilter/。