统计页 /insights
一页看“市场和我的进展”。右上角切换 7 / 30 / 90 天(URL 的 ?range=,刷新和分享链接都保留)。“今天”和每天的边界按 schedule.yaml 的 timezone 算,范围包含今天。
配置:insights.yaml
Section titled “配置:insights.yaml”默认值在 data/config/insights.yaml,你自己的那份在 data/config/insights.yaml(见 configuration.zh.md)。
| 键 | 含义 |
|---|---|
ranges_days / default_range_days |
提供哪些时间范围(从短到长)和默认值 |
cities |
城市卡片里单列的城市,写法同 /jobs 的城市筛选(München,不是 Munich);留空(默认)= 画像 preferences 里的 locations |
top_filter_reasons |
“被过滤的原因”列几行 |
score_bucket_width / score_bucket_cap |
排序值直方图的柱宽,和“从多少起归进最后一根” |
salary_bucket / salary_bucket_cap |
年薪直方图的柱宽(市场的基准货币),和最后一根的起点 |
网页每次打开页面重新读取这个文件,不需要重启。
每张卡片怎么算
Section titled “每张卡片怎么算”所有数字都是数据库里的 SQL 聚合,口径是“范围内第一次被看到的岗位”(first_seen_at,和 /jobs 的“首次看到”日期筛选同一个读法)。“通过过滤”= 岗位最新一条打分记录不是 filtered_out(还没有打分记录的岗位 /jobs 默认也显示,这里同样算通过)。
| 卡片 | 口径 | 点击去哪 |
|---|---|---|
| 关键数字 | 新增(全部)、通过过滤、披露薪资占比、平均排序值、已申请 | 新增 → /jobs(含已过滤);通过过滤 → /jobs;披露薪资 → salary=true;已申请 → /pipeline |
| 关键数字的趋势线 | 有数据的日子(新增数 > 0 的日子、有岗位的日子的通过率、有打分岗位的日子的排序值)连成一条连续的台阶线,没数据的日子被跨过,不画成零散的点;有数据的日子少于 2 天就不画线,写“数据不足 2 天”;线的宽度随卡片收缩,不会画到邻卡里(lib/insights/trend.ts) |
— |
| 每日新增 | 每天通过过滤 / 被过滤的岗位数,没有岗位的日子也是一根空柱 | 通过过滤的柱 → 当天 /jobs;被过滤的柱 → 当天 /jobs,只看被过滤的(filteredOnly=true) |
| 来源分布 | 按来源类别(channels.family);一个岗位出现在多个来源时每个来源各算一次;显示其中通过过滤的比例 |
总数 → source= + 含已过滤;通过比例 → source= |
| 城市分布 | 仅通过过滤的岗位。岗位任一地点命中配置里的城市就算(一个岗位可同时在多个城市);远程按办公方式;其他 = 既不远程也不在列出的城市 | 城市 → city=;远程 → workplace=remote;其他没有对应筛选,不可点 |
| 薪资披露 | 仅通过过滤的岗位:写了薪资的占比;年薪直方图只用“可比较的欧元年薪”(和详情页、/me 同一个定义:qualityStatus 不是 review、不是其他地区的薪资;区间取中点,只写一端的取那一端),分桶并给出中位数(标签写明范围和个数,如“中位 · 近 30 天 8 个”;少于 ui.yaml: salary_stats.min_sample 个就不显示) |
占比 → salary=true;直方图柱不可点 |
| 信号 | 仅通过过滤的岗位:每个信号类别(标签类除外,按 /interests 的顺序)至少有一条该类别信号的岗位数及这些岗位的平均排序值;一个都没有的岗位数 |
“高价值信号”数(写明是哪些类别)→ high=true(与 /jobs 的快捷筛选同一口径,含金额类的薪资底线规则);没有高价值类别时不显示 |
| 排序值分布 | 仅通过过滤且已打分的岗位,按排序值分桶;还在等 AI 的单独给个数 | 不可点 |
| 申请漏斗 | 新岗位 = 范围内出现并通过过滤的岗位;之后每一级 = 范围内通过状态变化进入该级(或更后一级)的申请数;被拒 / 已撤回 / 已忽略单列。注意“感兴趣”可能是更早出现的岗位,所以新岗位 → 感兴趣不算转化率,从“感兴趣”起才给上一级的占比 | 新岗位 → /jobs;其余 → /pipeline |
| 被过滤的原因 | 范围内被硬过滤淘汰的岗位,按原因代码(去掉冒号后的细节)统计,一个岗位可有多个原因 | “打开被过滤的岗位” → /jobs,只看被过滤的(filteredOnly=true) |
某个范围内没有任何岗位和申请动作时只显示一个空状态;只是某张卡片没数据时,那张卡片自己显示空状态。
本页同步自产品库 Joevonlong/job-radar@2947f47 的 docs/。Job Radar 与任何招聘网站均无关联。代码采用 AGPL-3.0-only 许可。