fix(labdb): 902 가 정렬 요약을 통째로 보내게 한다
params 를 화이트리스트로 채우고 있었는데, 그 목록에 없던 두 필드가 조용히 빠져 있었다: · patient_unnamed — 환자명 없이 잰 데이터인가 · selection_verified_against_reference — 앱 판정이 레퍼런스와 대조 완료인가 요약에 필드를 추가할 때마다 여기도 고쳐야 하는데 안 고쳐도 아무 신호가 없다. 이 세션은 "파형이 이상하니 봐 달라"는 진단 요청이라 **덜 보내는 쪽이 위험**하다 — 개발자가 되물어야 하고 그 왕복이 임상에서는 하루다. align_result.json 을 통째로 옮기고, 이미 다른 이름으로 넣은 것(patient→subject, save_name)만 건너뛴다. 요약의 모든 키가 params 에 도달하는지 테스트로 고정했다. 문서도 함께 고쳤다. positions[] 표에서 ch3_hit·ch3_tot·eligible 이 빠져 있었고 (실제로는 올라가고 있었다), params 표에 위 두 필드를 추가했다. 표에 없는 키가 보여도 정상이라는 설명도 넣었다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -124,15 +124,18 @@ object AlignLabdbPayload {
|
||||
put("save_name", saveName)
|
||||
put("positions_measured", files.size)
|
||||
put("cycles_total", records.length())
|
||||
// 판정 근거를 통째로 넣는다. 개발자가 답해야 할 질문이 "왜 이 위치인가"라,
|
||||
// 판정 근거를 **통째로** 넣는다. 개발자가 답해야 할 질문이 "왜 이 위치인가"라,
|
||||
// 지표(nch·ch3·cap_frac)와 선택 결과가 파형과 같이 있어야 한다.
|
||||
//
|
||||
// 고를 키를 나열하지 않는다. 예전에 화이트리스트로 두었더니 `patient_unnamed`
|
||||
// 과 `selection_verified_against_reference` 가 조용히 빠졌다 — 요약에 필드를
|
||||
// 하나 추가할 때마다 여기도 고쳐야 하는데 그걸 알아챌 방법이 없다. 진단용
|
||||
// 페이로드는 **덜 보내는 쪽이 위험**하다.
|
||||
//
|
||||
// 이미 다른 이름으로 넣은 것만 건너뛴다.
|
||||
summary?.let { s ->
|
||||
for (k in listOf(
|
||||
"device", "firmware_version", "hw_preset", "freq_mhz", "freq_option",
|
||||
"cycles_per_position", "probe_cycles", "avg", "delay_us", "samples",
|
||||
"ch3_hit_min", "final_offset_cm", "best_cm", "anchor_cm", "action",
|
||||
"stop_reason", "max_nch", "positions", "lateral",
|
||||
)) if (s.has(k)) put(k, s.get(k))
|
||||
val mapped = setOf("patient", "save_name") // → subject / save_name
|
||||
for (k in s.keys()) if (k !in mapped) put(k, s.get(k))
|
||||
}
|
||||
// 자동이 아니라 사람이 올린 것임을 데이터에 남긴다 — 정상 세션과 섞이면
|
||||
// "왜 이것만 올라와 있나"를 나중에 설명할 수 없다.
|
||||
|
||||
Reference in New Issue
Block a user