적재 규격을 A안으로 정했습니다
정어진 님이 09-01에 올려 주신 미결 jin 1번 — 분석 결과를 백엔드에 적재하려는데 metric_definition을 채울 수가 없어서 경로가 통째로 막혀 있던 건입니다. 같은 지표 코드가 여러 종목에 쓰이는데 그 테이블은 code가 기본키라 한 코드를 한 종목으로밖에 정의하지 못합니다.
A안으로 갑니다 — metric_definition에서 sport_code를 없앱니다. 결정과 근거는 fastapi/docs/api-contract.md 3-1절에 적었습니다.
세어 보니 근거가 더 강해졌습니다
권고를 받은 뒤 루브릭을 다시 셌습니다. 09-01 조사는 루브릭 5개였는데 그사이 야구 타격이 들어와 6개가 됐습니다.
| 2026-09-01 (루브릭 5) | 2026-09-08 (루브릭 6) | |
|---|---|---|
| 지표 총수 | 11 | 11 |
| 종목을 넘나드는 것 | 5 | 7 |
늘어난 둘은 야구 타격 루브릭이 기존 코드를 그대로 쓴 결과입니다. support_elbow_angle_at_impact(야구·농구) · plant_knee_angle_at_impact(야구·축구). 새 종목을 열 때마다 공유가 는다는 뜻이고, 그것 자체가 답입니다 — 종목은 지표의 속성이 아니라 루브릭의 속성입니다.
🔴 그런데 항목별 등급은 A안으로도 안 풀립니다
지표 말고 채점 항목(criteria.id) 쪽은 다른 문제였습니다. 18개 중 8개가 여러 루브릭에 겹치는데, 그중 4개는 같은 종목 안에서 겹칩니다.
trunk_lean 축구 인사이드 패스 · 축구 인스텝 슛 ← 임계값이 다릅니다
plant_foot_position 축구 인사이드 패스 · 축구 인스텝 슛
swing_knee_extension 축구 인사이드 패스 · 축구 인스텝 슛
trunk_alignment 농구 점프슛 · 농구 레이업
sport_code를 붙여도 안 갈립니다. 항목의 식별자는 종목이 아니라 루브릭이 정해야 합니다. 지표는 물리량이라 종목과 무관하고, 항목은 기준이라 루브릭에 종속됩니다 — 축이 반대입니다. 이건 「클립의 동작을 담을 자리가 없다」와 같은 문제라 그쪽에서 함께 봅니다.
부록 D.3이 아직 종목별 지표를 전제하고 있어서 수정 요청을 박민호 님께 미결 ho 25번으로 올렸습니다. 스키마는 정어진 님 영역이라 손대지 않았습니다.
큐가 둘이었습니다
같은 날 올라온 미결 jin 20번의 요청입니다 — 영상을 집어 가는 길이 두 갈래로 공존하고 있었습니다.
| 방식 | 큐를 무엇으로 보나 |
|---|---|
analyze_s3.py --skip-analyzed | S3에 reports/가 있나 없나 |
scripts/worker.py | analysis_job 테이블 |
analysis_job 쪽 하나만 남겼습니다. 계약의 정본이라서이기도 하지만, 더 급한 이유가 있습니다 — 두 길은 공존하면 서로를 못 봅니다. reports/는 분석이 끝나야 생깁니다. 그래서 워커가 작업을 집어 running으로 돌려놓은 동안, 스캔은 같은 영상을 여전히 “안 돈 것”으로 봅니다. GPU 시간이 두 배로 나가고 리포트가 둘 생기는데 어느 쪽도 오류로 보이지 않습니다. 사람이 안 보는 동안 도는 것이라 더 그렇습니다.
되살아나지 못하게 tests/test_worker.py::test_there_is_only_one_queue를 뒀습니다. 테스트 248 → 249.
폴더를 통째로 주는 것(analyze_s3.py s3://.../videos/<UUID>/)은 그대로 남깁니다. 그건 큐가 아니라 사람이 범위를 지정하는 배치이고, 평가·재현에 계속 씁니다.
정정 두 건
- 🔴
BUSY_PATTERN에 워커 이름을 넣어 달라고 두 곳에 적었던 것을 정정합니다. 넣으면 큐가 비어 있는 동안에도 폴링 프로세스가 “작업 중”이라 인스턴스가 영영 안 꺼집니다. 지켜야 할 성질(“분석 도중에 안 꺼진다”)은 워커가analyze_s3.py를 자식 프로세스로 부르는 것으로 이미 만족합니다. - 🔴 “별도 스캐너 대신 플래그로 넣었다”고 적었던 것도 정정합니다. 결국 별도 스크립트(
worker.py)로 갔고 플래그는 지웠습니다.
다음
WORKER_TOKEN 값을 받으면 EC2에 워커를 올립니다. 그 뒤로는 “올리면 결과가 나온다”가 시연되고, POST /analyses 적재는 A안 스키마가 반영되는 시점에 붙습니다.