Files
Jyotisha/docs/operations/varga-style-calibration-export.md
T
Jesse_ChenandCursor fef54b6e42
Independent Staging Quality Gate / validate (push) Successful in 11m54s
Independent Staging Quality Gate / publish (push) Successful in 8m14s
fix(rectification): downgrade yearless personality probes to tie-breakers (BUG-629)
Ask dated dasha probes first; D9/D10 and nakshatra wait until that pool is empty, score at half weight, and never eliminate. Skill 10.0.21.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-10 00:26:58 +08:00

3.4 KiB
Raw Blame History

性格题离线命中率导出(医院记录)

产品负责人在有数据库权限的环境跑。执行方不能替你跑。导出给 scripts/rectification/varga_style_calibration_report.py 用。

只导出哈希后的 case_id。不要导出姓名、出生日期、地点、坐标、邮箱、原话、用户 ID。

筛选在脚本里还会再做一遍:birth_time_source = hospital_record 且前后不确定度都 ≤ 2 分钟。SQL 先收窄,减少体积。

recorded_sign 必须是档案里的记录分钟在该层的分盘星座(或月宿),不是校正后的采用分钟。星座名与选项 sign 用同一套中文名(例如 天秤座)。

-- service_role / schema_owner。输出一行一个 JSON 对象,外层再包成 {"cases":[...]}。
-- 需要 pgcryptoencode(digest(...), 'hex')。

with latest_transition as (
  select distinct on (t.case_id)
    t.case_id,
    t.inference_state
  from public.agentic_rectification_inference_transitions t
  order by t.case_id, t.revision desc
),
hospital_cases as (
  select
    encode(digest(c.id::text, 'sha256'), 'hex') as case_id_hash,
    c.baseline_birth_snapshot->>'birth_time_source' as birth_time_source,
    to_char((c.baseline_birth_snapshot->>'reported_birth_time')::time, 'HH24:MI') as recorded_minute,
    (c.baseline_birth_snapshot->>'uncertainty_before_minutes')::int as uncertainty_before_minutes,
    (c.baseline_birth_snapshot->>'uncertainty_after_minutes')::int as uncertainty_after_minutes,
    lt.inference_state
  from public.agentic_rectification_cases c
  join latest_transition lt on lt.case_id = c.id
  where c.baseline_birth_snapshot->>'birth_time_source' = 'hospital_record'
    and coalesce((c.baseline_birth_snapshot->>'uncertainty_before_minutes')::int, 99) <= 2
    and coalesce((c.baseline_birth_snapshot->>'uncertainty_after_minutes')::int, 99) <= 2
    and nullif(c.baseline_birth_snapshot->>'reported_birth_time', '') is not null
)
select jsonb_build_object(
  'cases',
  coalesce(jsonb_agg(
    jsonb_build_object(
      'case_id_hash', h.case_id_hash,
      'birth_time_source', h.birth_time_source,
      'recorded_minute', h.recorded_minute,
      'uncertainty_before_minutes', h.uncertainty_before_minutes,
      'uncertainty_after_minutes', h.uncertainty_after_minutes,
      'answers', coalesce((
        select jsonb_agg(
          jsonb_build_object(
            'semantic_key', probe->>'semantic_key',
            'answer_class', ans->>'answer_class',
            'recorded_sign', null,  -- 用记录分钟在该层的星座/月宿填上;不要用采用分钟
            'options', coalesce(probe->'style_options', '[]'::jsonb)
          )
        )
        from jsonb_array_elements(coalesce(h.inference_state->'answered_probes', '[]'::jsonb)) ans
        join jsonb_array_elements(coalesce(h.inference_state->'probes', '[]'::jsonb)) probe
          on probe->>'id' = ans->>'probe_id'
          or probe->>'semantic_key' = ans->>'semantic_key'
        where (
          probe->>'choice_kind' = 'varga_style'
          or probe->>'source' = 'nakshatra_boundary'
        )
      ), '[]'::jsonb)
    )
  ), '[]'::jsonb)
) as payload
from hospital_cases h;

把结果存成 JSON 后:

.venv/bin/python scripts/rectification/varga_style_calibration_report.py export.json

只打印 d9 / d10 / nakshatranhit_rate。命中率接近 1/3(三选一随机)时,再由产品决定是否删题。