오늘 배정된 일이 없습니다. 아래 전원 항목만 보시면 됩니다.
# 08-27 (목) · W2 3일차 · 장우영 일지
**고칠 곳은 맨 아래 [7. 한 결과](#7-한-결과) 한 군데뿐입니다.**
1~6번은 저장소 여기저기에 흩어져 있는 문서를 한자리에 모은 것입니다.
저장소를 따로 열지 않아도 오늘 일을 할 수 있게 하려는 것입니다.
| | |
|---|---|
| 날짜 | 08-27 (목) · W2 3일차 |
| 맡은 사람 | 장우영 |
| 오늘 계획 원문 | [plan/w2/08-27_목/계획.md](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-27_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) |
| 이 파일의 자리 | `plan/역할분담/일지/08-27_장우영.md` |
## 차례
1. 우리가 뭘 만들고 있나
2. 왜 지금 이걸 하고 있나
3. 이번 주에 무슨 일이 있었나
4. 지금까지 만난 문제 전부
5. **오늘 맡은 일**
6. 장우영 님이 8주 동안 맡은 일 전체
7. **한 결과** ← 여기만 채우시면 됩니다
---
## 1. 우리가 뭘 만들고 있나
> 출처 — [`plan/w2/팀목표.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/%ED%8C%80%EB%AA%A9%ED%91%9C.md) 를 그대로 옮긴 것입니다.
*(plan/w2/팀목표.md 를 찾지 못했습니다.)*
---
## 2. 왜 지금 이걸 하고 있나
> 출처 — [`docs/roadmap.md`](https://github.com/ritual1127/naverogq/blob/main/docs/roadmap.md) 를 그대로 옮긴 것입니다.
### CADLens 발전 계획
앞으로 무엇을 어떤 순서로 할지 적어 둔 문서입니다. 기준일은 **2026년 8월 11일**입니다.
지금 무엇이 되고 무엇이 안 되는지는 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)에, 다른 종목으로 넓힐 수
있는지는 [`example/`](https://github.com/ritual1127/naverogq/blob/main/example)에 있습니다.
---
#### 우선순위
번호가 곧 순서입니다. 위에 있는 게 안 되면 아래 것을 해도 의미가 없습니다.
##### 1. 실제 수험생 도면으로 정확도 다시 재기
지금 정확도 100%는 **저희가 직접 만든 연습용 도면 18장** 기준입니다. 도면을 만든 사람과
검사 규칙을 만든 사람이 같아서, 이 숫자만으로는 실제 시험 도면에서도 맞는다고 말할 수
없습니다. **이게 안 되면 나머지가 다 의미 없습니다.**
- [ ] 기계과 학생 도면을 이름 지운 상태로 모으기
- [ ] 같은 방식으로 다시 측정해 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)의 표를 실제 도면 기준으로 교체
- [ ] 자체 제작 도면과 실제 도면의 결과 차이를 그대로 공개
##### 2. AI 점수 안정시키기
투상도 30점은 AI가 매기는데 **같은 도면을 다시 넣으면 점수가 흔들립니다.** 확정 점수가
아니라고 화면에 적어 두긴 했지만, 흔들리는 폭 자체를 줄여야 합니다.
- [x] 같은 도면을 여러 번 돌려 편차가 몇 점인지 먼저 측정 — `variance.py`, 결과는 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)에 있습니다 (2026-08-22)
- [ ] **단위가 mm가 아닌 도면의 백지 렌더 고치기.** 편차를 재다 드러났습니다. 도면 범위를 그대로 밀리미터로 보는 탓에 AI가 백지를 채점하고 있었습니다. 여기부터 고쳐야 아래 항목들이 의미가 있습니다
- [ ] 규칙으로 옮길 수 있는 건 옮기기 — 뷰 개수, 제3각법 배치는 좌표로 계산할 수 있을지 검토
- [ ] 그래도 남는 부분은 여러 번 물어 중앙값을 쓰는 방식 검토 (정확해지지만 비용이 늘어남)
- [ ] AI가 틀린 사례를 모아 두기. "AI를 어떻게 검증했나"에 답할 근거가 됩니다
##### 3. 못 잡는 것 줄이기
[검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)의 약점 표를 하나씩 지웁니다.
- [ ] 선으로만 그린 표면거칠기 기호 (지금은 문자로만 찾음)
- [ ] 직접 그린 기하공차 기입틀 (지금은 TOLERANCE 엔티티와 문자로만 찾음)
- [ ] 이름이 CENTER 계열이 아닌 중심선 레이어
- [ ] 선 4개로 그린 윤곽선 (지금은 닫힌 사각형만 인식)
###### 검사 자체가 없는 항목 (2026-08-27 설문에서)
위 넷은 "있는데 못 찾는" 것이고, 아래는 **검사 코드가 아예 없는** 것입니다.
[폼 응답 1건](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md%23%ED%8F%BC-%EC%9D%91%EB%8B%B5--%EB%8C%80%EB%A9%B4-%EC%9D%B8%ED%84%B0%EB%B7%B0%EC%99%80-%EB%94%B0%EB%A1%9C-%EC%85%89%EB%8B%88%EB%8B%A4)에서 답한 사람이
빠뜨렸다고 고른 9개를 `exam.py`의 검사 24개와 하나씩 대조해 나왔습니다.
**9개 중 우리가 온전히 잡는 것은 3개였습니다.**
| 빠뜨렸다고 한 것 | 지금 | 무엇을 해야 하나 |
|---|---|---|
| 모떼기·필렛 주서 | ✅ `EX_NOTE_ITEM` | — |
| 투상도 하나 통째 빠뜨림 | ✅ `EX_FEW_VIEWS` · `AI_PROJECTION` | — |
| 표면거칠기 기호 | ✅ `DQ_NO_SURFACE_SYMBOL` | — |
| 척도 표기 | 🔺 부분 | `DQ_SCALE`은 **비표준 값**만, `EX_VIEW_NO_SCALE`은 뷰별만 봅니다. 표제란에 척도를 **아예 안 적은** 경우는 안 잡습니다 |
| 재질 기입 | ❌ 없음 | `_material`은 주서의 **열처리 문구만** 봅니다. 부품란의 재료 기호(SM45C, SCM415, GC200)가 있는지는 검사하지 않습니다 |
| 스퍼기어·스프링 요목표 | ❌ 없음 | 요목표 검사가 없습니다. 기어·스프링이 있는 도면에서 요목표는 채점 항목입니다 |
| 표면거칠기 비교표 | ❌ 없음 | 주서 옆 비교표(√w √x √y 대조)가 있는지 안 봅니다. **기호를 넣고도 비교표를 빠뜨리는 것은 따로 감점됩니다** |
| A4로 출력해서 잘림 | ❌ 범위 밖 | 출력 설정은 DXF에 없습니다. 도면 크기(`DQ_SHEET_SIZE`)와는 다른 문제입니다 |
| 파일 날림·저장 실패 | ❌ 범위 밖 | CAD 도구 문제입니다 |
표본이 **1명**입니다. 이것만으로 검사 항목을 늘리지 않고, 08-28 선생님 인터뷰와
나머지 응답에서 같은 말이 나오는지 먼저 봅니다.
##### 4. 지원 형식 넓히기
- [ ] Inventor의 ipt · idw · iam. 3D 파일을 읽으려면 파싱 모듈이 새로 필요합니다
- [ ] 3D 모델 채점은 2D가 안정된 뒤에 합니다
##### 5. 다른 종목으로 넓히기
`exam.py`의 판정 함수와 루브릭이 KS 제도 규칙에 기반해 있어 다른 종목에도 상당 부분
그대로 쓸 수 있습니다. 어디까지 되는지는 미리 조사해 [`example/`](https://github.com/ritual1127/naverogq/blob/main/example)에 남겼습니다.
| 종목 | 규칙 재사용 | 순서 |
|---|---|---|
| 기계설계산업기사 | 약 90% | 1순위 |
| 일반기계기사 | 약 60% | 2순위 (작업형 한정) |
| 사출금형산업기사 | 약 55% | 3순위 |
| 프레스금형산업기사 | 약 50% | 4순위 |
- [ ] **0단계 — 구조 정리.** `exam.py`가 기능사 기준값을 모듈 상수로 박아 두고 있어 두 번째
종목이 들어오면 막힙니다. 값을 종목별로 분리하되 **검사 함수 안에 종목 분기는 넣지
않습니다.** 종목이 늘어나면 분기가 규칙마다 퍼져 손댈 수 없게 됩니다
- [ ] 종목별 공개문제를 3개 회차 이상 확보하기 전에는 코드를 건드리지 않습니다.
확인되지 않은 기준으로 검사 규칙을 만들면 응시자에게 틀린 지적을 하게 됩니다
##### 6. 학교에서 쓸 수 있게 만들기
- [ ] 반 단위 화면 — 선생님이 여러 도면을 한 번에 확인
- [ ] 학교 단위 이용 시 개인정보 처리 안내문 정리
---
#### 얼마나 쓰이는지 재는 방법
지금은 **아무것도 세지 않습니다.** 사람을 모으는 것보다 먼저 고칠 게 남았다고 봤고,
쓰는 사람 대부분이 미성년자라 함부로 붙일 수도 없었습니다.
CADLens는 [공개 고지](https://github.com/ritual1127/naverogq/blob/main/docs/policy.md)에서 **추적 코드가 없고, 회원가입이 없고, 개인을 알아볼 수
있는 정보를 받지 않는다**고 약속했습니다. 지표가 필요하다고 그 약속을 깨면 정직함으로 쌓은
걸 스스로 무너뜨리는 것이라, **약속을 지키면서 셀 수 있는 것만** 세기로 했습니다.
**셀 것**
| 지표 | 어떻게 | 개인 식별 |
|---|---|---|
| 검사 횟수 (일별·월별) | 검사가 끝날 때 숫자만 +1 | 없음 |
| 재방문율 | 브라우저에 이미 있는 `cadcheck.history`로 "2회 이상 검사한 브라우저" 비율 | 없음. 기기 안에서 판단하고 결과 숫자만 보고 |
| 재검사 비율 | 같은 파일 이름을 다시 올린 비율 (= 고치고 다시 온 사람) | 없음 |
| 점수 개선 폭 | 재검사 때 점수가 몇 점 올랐는지 | 없음 |
| 언어·다크모드 분포 | 이미 브라우저에 있는 설정값 집계 | 없음 |
**안 셀 것** — IP, 쿠키, 광고 ID, 도면 내용, 파일 이름 원본, 위치, 기기 지문.
**대표로 삼을 숫자는 방문자 수가 아닙니다.** CADLens에서 의미 있는 건
**"검사 → 고침 → 재검사로 점수가 오른 사람의 비율"** 입니다. "몇 명이 왔다"가 아니라
**"몇 명이 실제로 나아졌다"** 는 뜻이라, 도면을 봐주는 도구로서 훨씬 정확한 숫자입니다.
집계를 시작하면 [임팩트](https://github.com/ritual1127/naverogq/blob/main/docs/impact.md)와 README의 해당 절을 실제 숫자로 바꿉니다.
---
#### 문서를 어떻게 관리할지
숫자가 문서마다 다르면 그 자체로 신뢰를 잃습니다.
- [ ] 정확도를 다시 잴 때마다 README · [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md) · [임팩트](https://github.com/ritual1127/naverogq/blob/main/docs/impact.md)의
숫자를 같이 맞춥니다
- [ ] 응시자 통계는 [`example/96_응시자_통계.md`](https://github.com/ritual1127/naverogq/blob/main/example/96_%EC%9D%91%EC%8B%9C%EC%9E%90_%ED%86%B5%EA%B3%84.md)를 원본으로
두고 다른 문서는 그걸 인용합니다. 아직 1차 출처(통계연보)로 대조하지 않았다는 것도
그 문서에 적어 뒀습니다
- [ ] 문서가 코드의 함수 이름이나 상수를 언급하면, 그게 실제로 있는지 확인하고 씁니다
---
#### 한 줄로 줄이면
**"쓰는 사람이 있고, 그 사람들이 실제로 나아졌다"를 숫자로 만드는 것.**
기술은 어느 정도 됐고, 비어 있는 건 그 숫자입니다.
---
## 3. 이번 주에 무슨 일이 있었나
> 출처 — [`plan/w2/기록.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/%EA%B8%B0%EB%A1%9D.md) 를 그대로 옮긴 것입니다.
*(plan/w2/기록.md 를 찾지 못했습니다.)*
8주 전체 일정은 [`plan/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/README.md) 에 있습니다.
---
## 4. 지금까지 만난 문제 전부
오늘 일이 막히면 **여기 이미 적혀 있는 문제인지 먼저 보세요.** 같은 문제를
두 번 파느라 하루를 날리는 게 제일 아깝습니다. 새 문제면 아래 7번
`막힌 것 · 문제` 칸에 적어 주시면 제가 문제점 폴더로 옮깁니다.
> 출처 — [`plan/문제점/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) 를 그대로 옮긴 것입니다.
### 문제점
일하다 만난 문제를 **그때그때 적어 두는 폴더**입니다. 고쳤든 못 고쳤든 남깁니다.
왜 남기나 — 문제를 고치고 나면 그런 문제가 있었다는 사실 자체를 잊습니다.
8주 뒤 발표에서 "무엇을 어떻게 알아냈는가"를 말할 수 있는 팀과 "잘 됩니다"만
말하는 팀은 여기서 갈립니다. 심사 피드백도 **안 되는 걸 공개하는 것**을 우리 강점으로
꼽았습니다.
#### 원칙 — 없는 문제를 지어내지 않는다
**실제로 겪은 것만 적습니다.** 그날 아무 문제도 없었으면 아무것도 적지 않습니다.
기록을 채우려고 "개선하면 좋을 점" 같은 것을 문제로 올리지 않습니다.
지어낸 문제가 한 건이라도 섞이면 나머지 기록도 같이 못 믿게 됩니다.
빈 주가 있는 게 정상이고, 그게 이 폴더가 진짜라는 증거입니다.
문제인 것 — 실제로 틀린 결과가 나왔다, 하려던 게 안 됐다, 시간이 계획보다 훨씬 더 들었다,
연락이나 자료가 없어서 막혔다.
문제가 아닌 것 — 아직 안 만든 기능, 다음에 하기로 한 일, 잘 됐는데 더 잘하고 싶은 것.
그런 건 [발전 계획](https://github.com/ritual1127/naverogq/blob/main/docs/roadmap.md)이나 그날 계획에 적습니다.
#### 현황
| 번호 | 문제 | 상태 | 처음 본 날 | 영향 |
|---|---|---|---|---|
| [P01](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md) | 단위가 mm가 아닌 도면이 백지로 렌더된다 | ✅ 해결 | 2026-08-22 | AI 채점 30점 전부 |
| [P02](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md) | 같은 도면인데 AI 점수가 매번 달라진다 | 🔴 열림 | 2026-08-22 | AI 채점 30점 |
| [P03](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P03-%EC%A7%80%EC%A0%81%EC%A0%9C%EB%AA%A9%ED%9D%94%EB%93%A4%EB%A6%BC.md) | 같은 판정인데 지적 제목이 매번 다르게 적힌다 | ✅ 해결 | 2026-08-22 | 수험생이 보는 화면 · 재검사 비교 |
| [P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) | 측정에 쓰는 표본이 실제 시험 도면이 아니다 | 🔴 열림 | 2026-08-22 | 정확도 · 편차 측정 전부 |
| [P05](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P05-%EB%A9%98%ED%86%A0%EB%B0%B0%EC%A0%95.md) | 제출처를 잘못 알았다 — 안내 메일을 이틀 늦게 봤다 | ✅ 해결 | 2026-08-22 | 산출물 제출 경로 전체 |
| [P06](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md) | 워크샵 1주차 산출물을 통째로 놓쳤다 | ✅ 해결 | 2026-08-22 | W1 산출물 · 진행 방식 |
| [P07](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P07-%EC%A7%80%ED%91%9C0.md) | 북극성 지표가 0이고 셀 방법이 없다 | 🔴 열림 | 2026-08-22 | W5 · W6 산출물, 최종 KPI 리포트 |
| [P08](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P08-%EB%B2%88%EC%97%AD429.md) | 배포 서버에서 번역 호출만 429로 계속 막힌다 | ✅ 해결 | 2026-08-23 | 화면에 뜨는 영어·일본어·중국어 번역 |
| [P09](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md) | 도면 0장인데 정확도 100%가 나왔다 | ✅ 해결 | 2026-08-26 | 실제 도면 정확도 측정 전체 |
| [P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) | 인터뷰가 이틀째 0건이고 그 뒤 작업이 전부 막혔다 | 🔴 열림 | 2026-08-27 | W2 산출물 · 실제 도면 확보 |
| [P11](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) | 다른 CAD 가 쓴 DXF 하나에서 통째로 터졌다 | ✅ 해결 | 2026-08-27 | 실제 도면 분석 전부 |
**열린 문제 4건 · 해결 7건**
#### 적는 법
1. **새 문제**를 만나면 파일 하나를 만듭니다. 이름은 `P08-짧은이름.md`처럼 번호를 이어 붙입니다.
2. 머리표를 채웁니다 — 상태 · 처음 본 날 · 무엇에 영향을 주나 · 맡은 사람.
3. 본문은 **증상 → 원인 → 조치 → 확인** 순서로 씁니다. 원인을 모르면 모른다고 적습니다.
추측을 원인 칸에 적으면 나중에 그게 사실인 줄 알게 됩니다.
4. **이미 있는 문제가 진전되면 그 파일 맨 아래 `## 기록`에 날짜와 한 줄을 더합니다.**
새 파일을 만들지 않습니다.
5. 고쳤으면 상태를 `해결`로 바꾸고 **확인 절에 무엇으로 확인했는지 숫자나 명령으로** 남깁니다.
"고쳤습니다"만 적힌 건 확인이 아닙니다.
6. 위 현황 표도 같이 고칩니다.
#### 규칙
- **못 고친 문제를 지우지 않습니다.** 열린 채로 두는 게 정상입니다.
- 처음 짐작이 틀렸어도 지우지 않습니다. 무엇을 잘못 짚었는지가 기록입니다.
([P02](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md)가 그런 경우입니다. 백지 때문이라고 봤는데 아니었습니다.)
- 사람 문제(연락이 안 온다 같은 것)도 적습니다. 코드 문제만 문제가 아닙니다.
- **`/today-plan` 을 돌릴 때마다 그날 만난 문제를 여기에 적습니다.**
**그날 아무 문제도 없었으면 아무것도 안 적습니다.**
> 출처 — [`plan/문제점/P01-백지렌더.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md) 를 그대로 옮긴 것입니다.
### P01 · 단위가 mm가 아닌 도면이 백지로 렌더된다
| | |
|---|---|
| 상태 | **해결** (2026-08-22) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | AI 채점 30점 전부 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
선이 6,373개 들어 있는 `sample_075em07z.dwg`를 AI에게 보내면 다섯 번 모두
"투상도가 하나도 없다"고 답했다. AI에게 실제로 보내는 그림을 파일로 저장해 보니
**201바이트짜리 빈 그림**이었다. AI는 도면이 아니라 백지를 채점하고 있었다.
`sample_autocad.dxf`도 같은 상태였다. 이 도면이 다섯 번 모두 18점으로 편차 0을 보인 것은
채점이 안정적이어서가 아니라 **매번 같은 백지를 봤기 때문**이었다.
#### 원인
`ai_review.render_png`가 도면 범위(`$EXTMIN`~`$EXTMAX`)를 그대로 밀리미터로 보고
페이지를 만들었다. 이 파일은 단위가 미터라 범위가 0.12 x 0.12로 잡히는데, 여기에
사방 5mm 여백을 붙이면 페이지가 거의 전부 여백이 되고 그림은 1픽셀 밑으로 짜부라진다.
A3(420 x 297)로 그려진 도면은 멀쩡히 나왔기 때문에 여태 드러나지 않았다.
#### 조치
도면 단위를 밀리미터로 환산해서 그리도록 고쳤다. 단위 판별은 이미 있던
`dwg.detect_mm_per_unit`을 그대로 썼다. 새로 만들지 않았다.
#### 확인
| 도면 | 고치기 전 | 고친 뒤 |
|---|---|---|
| `sample_075em07z.dwg` | 201바이트 | 283,550바이트 |
| `sample_autocad.dxf` | 201바이트 | 283,550바이트 |
| `sample_plate.dxf` | 5,696바이트 (정상) | 5,889바이트 (그대로 정상) |
그림 파일을 실제로 열어서 도면이 보이는 것까지 확인했다. 자동 테스트 15개 통과.
#### 배운 것
**중간 결과물을 눈으로 본 적이 없었다는 게 진짜 문제다.** AI가 뱉은 답이 그럴듯해서
아무도 그림을 열어 볼 생각을 안 했다. 정확도 100%라는 숫자가 이 사실을 가리고 있었다.
#### 기록
- 2026-08-22 — 편차를 재다 발견. 같은 날 고치고 확인.
> 출처 — [`plan/문제점/P02-AI점수편차.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md) 를 그대로 옮긴 것입니다.
### P02 · 같은 도면인데 AI 점수가 매번 달라진다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | AI 채점 30점 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
같은 도면을 다섯 번 채점하면 점수가 흔들린다.
| 도면 | 5회 점수 | 폭 | 표준편차 |
|---|---|---|---|
| `sample_plate.dxf` | 18, 18, 20, 20, 20 | 2점 | 1.10점 |
| `sample_075em07z.dwg` (렌더 고치기 전) | 0, 18, 18, 18, 18 | 18점 | 8.05점 |
| `sample_075em07z.dwg` (렌더 고친 뒤) | 0, 0, 5, 9, 18 | 18점 | 7.50점 |
#### 지금까지 안 것
- [P01](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md)을 고치기 전에는 폭 18점이 **백지를 보고 몇 점 깎을지 고민한 결과**라고 봤다.
- 고친 뒤 다시 재도 **폭은 18점 그대로**였고 중앙값만 18점에서 5점으로 내려갔다.
백지일 때는 지적이 1건으로 일정했는데 진짜 그림을 보자 **지적 개수부터 1~3건으로 흔들린다.**
- 즉 편차의 원인은 렌더가 아니라 **프롬프트와 모델 쪽**이었다. 처음 짐작이 틀렸다.
- 한 지적이 30점을 통째로 깎는 건 `MAX_SINGLE_DEDUCT = 12`로 막았지만,
지적이 세 개 나오면 여전히 0점이 된다.
#### 다음에 해 볼 것
- [ ] **실제 수험생 도면으로 다시 재기.** 지금 표본은 기계 부품 도면이 아니다([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)).
- [ ] 규칙으로 옮길 수 있는 부분 분리 — 뷰 개수와 제3각법 배치는 좌표로 계산되는 값이다.
- [ ] 여러 번 물어 중앙값 쓰기. 정확해지지만 호출이 늘어 무료 할당량이 빨리 마른다.
- [ ] 지적 개수 자체를 프롬프트에서 제한해 보기.
#### 기록
- 2026-08-22 — 처음 측정. 도면 3장 x 5회. 폭 최대 18점.
- 2026-08-22 — 렌더 수정 후 재측정. 편차 안 줄어듦. 원인이 렌더가 아니었음이 드러남.
> 출처 — [`plan/문제점/P03-지적제목흔들림.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P03-%EC%A7%80%EC%A0%81%EC%A0%9C%EB%AA%A9%ED%9D%94%EB%93%A4%EB%A6%BC.md) 를 그대로 옮긴 것입니다.
### P03 · 같은 판정인데 지적 제목이 매번 다르게 적힌다
| | |
|---|---|
| 상태 | **해결** (2026-08-25) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 수험생이 보는 화면 · 재검사 비교 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
같은 판정에 대해 제목이 매번 달라진다.
- "투상도 전체 누락"
- "투상도 완전 누락"
- "투상도 전체 누락 및 형상 표현 불가"
- "기계 부품 투상도 미작성 및 투상 뷰 부재"
뜻은 같지만 **수험생에게는 다른 지적으로 보인다.**
#### 왜 문제인가
CADLens의 핵심 흐름은 `검사 -> 고치기 -> 재검사`다. 재검사에서 지난번과 비교해 주는데,
제목이 매번 달라지면 **비교가 성립하지 않는다.** 북극성 지표(주간 재검사 사용자 수)와 직결된다.
#### 조치 (2026-08-25)
**제목을 AI에게서 뺐다.** AI는 이제 제목을 쓰지 않고 `kind` 를 여섯 개 중에서 고르기만 한다.
제목은 `ai_review.PROJECTION_KINDS` 에 언어별로 박혀 있고 코드가 붙인다.
| kind | 제목 |
|---|---|
| `FRONT_VIEW` | 정면도 선택 부적절 |
| `VIEW_MISSING` | 투상도 누락 |
| `VIEW_EXTRA` | 불필요한 투상도 |
| `THIRD_ANGLE` | 제3각법 배치 위반 |
| `SECTION_DETAIL` | 단면도·상세도 표기 미흡 |
| `LAYOUT` | 투상도 배치 불균형 |
- 응답 스키마에서 `title` 을 빼고 `kind` enum 을 넣었다. 모델이 목록 밖의 값을 못 준다.
- 번역도 제목을 받지 않는다. en·ja·zh 제목이 표에 이미 있어서 번역할 것이 하나 줄었다.
- **지적 코드는 `AI_PROJECTION` 하나로 그대로 뒀다.** 화면(`static/index.html`)의 묶음·라벨 표가
이 코드를 키로 쓰고 있어서, 코드를 쪼개면 그 표까지 다 고쳐야 한다. 재검사 비교에 필요한 것은
제목이 고정되는 것이라 여기서 멈췄다.
- **옛 캐시(`aicache`)에는 `kind` 가 없다.** 그때 화면에 뜬 제목을 그대로 두게 했다.
지난 판의 제목을 바꿔 버리면 그 판으로 잰 편차 기록과 대조가 안 된다.
같이 고친 것 — **`verdict` 가 "FAIL" 한 낱말로 오는 일이 있었다.** 지시문에 verdict 형식이
아예 없었다. 08-25 배포 서버 확인 때 `sample_plate.dxf` 는 한 문장, `sample_autocad.dxf` 는
`FAIL` 이 왔다. 지시문에 "한국어 한 문장으로 쓰고 낱말만 적지 말라"를 넣었다.
#### 확인
- `test_ai_title_is_fixed_by_kind` — 같은 `kind` 에 서로 다른 문장을 넣어도 제목이
`투상도 누락` / `Missing views` 로 같은지, 스키마에 `title` 이 없고 enum 이 여섯 개인지,
`kind` 없는 옛 캐시가 그대로 보존되는지. `python -m pytest test_rules.py -q` → **17개 통과**.
- 로컬에서 실제 호출 1회 — `samples/sample_plate.dxf` 결과가
제목 `투상도 누락`, en `Missing views`, ja `投影図の欠落`, zh `视图缺失`.
verdict 도 한 문장으로 왔다.
- **배포 서버에서도 확인했다** (2026-08-25, 배포 뒤). 예제 두 장을 `POST /api/analyze-sample`
로 돌렸고 나온 제목이 전부 표 안의 것이었다.
| 도면 | 나온 제목 | 번역 |
|---|---|---|
| `sample_plate.dxf` | 투상도 누락 · 투상도 배치 불균형 | en·ja·zh 전부 |
| `sample_autocad.dxf` | 투상도 누락 · 정면도 선택 부적절 · 투상도 배치 불균형 | en·ja·zh 전부, 후속 답변 ko 포함 4개 |
`verdict` 도 둘 다 한 문장으로 왔다(13낱말 · 16낱말). 고치기 전 `sample_autocad.dxf` 는
`FAIL` 한 낱말이었다.
#### 기록
- 2026-08-22 — 편차 측정 중에 눈에 띔.
- 2026-08-25 — 제목을 `kind` enum 으로 고정하고 코드가 붙이게 바꿈. 로컬 확인 완료, 배포 확인 남음. verdict 가 낱말로 오던 것도 같이 막음.
- 2026-08-25 — 배포 뒤 예제 두 장으로 재확인. 제목 다섯 건이 모두 표 안의 것이고 verdict 도 한 문장이었다. 상태를 해결로 바꿈.
> 출처 — [`plan/문제점/P04-표본도면.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) 를 그대로 옮긴 것입니다.
### P04 · 측정에 쓰는 표본이 실제 시험 도면이 아니다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 정확도 · 편차 측정 전부 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
- 정확도 100%는 **우리가 직접 만든 합성 도면 18장** 기준이다. 도면을 만든 사람과
검사 규칙을 만든 사람이 같다.
- 편차 측정에 쓴 `sample_075em07z.dwg`는 렌더를 고치고 그림을 열어 보니
**기계 부품 도면이 아니라 무늬가 반복되는 도면**이었다. "투상도가 없다"는 판정 자체가
틀리지 않았을 수 있다.
**표본이 잘못되면 측정도 잘못된다.** 지금 우리가 가진 숫자는 전부 이 위에 올라가 있다.
#### 왜 급한가
심사 피드백 1번이 이것이다. 발표(W7)에서 "실제 도면 정확도는?"이라는 질문이 반드시 나온다.
합성 도면 100%만 말하면 그 자리에서 반박당한다.
#### 다음에 해 볼 것
- [ ] W2 인터뷰(08-26 ~ 08-28) 때 **이름 지운 실제 도면 받기** — 받을 자리와 라벨 양식은 [`실제도면/`](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/README.md)에 만들어 뒀다
- [ ] 사람이 판단한 정답 라벨 붙이기. CADLens 결과를 정답으로 쓰면 100%가 나오고 아무 의미가 없다
- [ ] `python bench.py labels.json`으로 다시 재고 `docs/accuracy.md` 표를 실제 도면 기준으로 교체
- [ ] 합성 도면과 실제 도면의 차이를 그대로 공개
#### 기록
- 2026-08-22 — 렌더를 고치고 그림을 열어 보다 표본이 기계 도면이 아님을 알게 됨.
- 2026-08-25 — 도면 받을 폴더와 `labels.json` 양식, 코드 24개 표를 만들었다. 도면 파일 자체는 `.gitignore`로 막아 저장소에 올라가지 않는다. 아직 받은 도면은 0장.
- 2026-08-25 — P03 을 배포에서 확인하다 `sample_autocad.dxf` 의 AI 총평이 "기계 부품 도면이 아닌 기하학적 패턴 도안이 제출되어"로 왔다. 08-22 에 눈으로 보고 적어 둔 것(표본이 기계 도면이 아니다)을 모델도 같게 말한다. 표본을 바꿔야 한다는 근거가 하나 늘었다.
- 2026-08-26 — 빈 라벨로 돌려 보다 0장에 100%가 찍히는 것을 발견해 막았다([P09](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md)). 이제 도면 0장이면 `FAIL` 이 뜬다. 받은 도면은 여전히 0장.
- 2026-08-27 — 오늘이 라벨 붙이기로 계획된 날이었는데 **도면이 0장이라 시작 못 했다.** `실제도면/` 에 `.dxf` 없음, `labels.json` 은 `{}` 그대로. 도면을 받는 자리가 인터뷰인데 인터뷰가 이틀째 0건이라 이 문제가 [P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) 에 막혀 있다. 폴더·양식·코드 표·측정 명령은 다 준비돼 있고 **없는 건 도면 하나뿐이다.** 같은 날 [라벨 작업지](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/%EB%9D%BC%EB%B2%A8%EC%9E%91%EC%97%85%EC%A7%80.md)를 만들어, 도면이 오면 사람이 바로 앉아서 붙일 수 있게 해 뒀다 — 코드 23개마다 도면에서 볼 것과 KS 근거, 한 장 체크표. `exam.py` 임계값은 일부러 넣지 않았다. 그걸 보고 판정하면 CADLens 결과를 옮겨 적는 것과 같아져 이 문제가 그대로 남는다.
- 2026-08-27 — **인터넷에서 실기 도면을 받아 표본을 채우는 길을 찾아봤고, 막혔다.** 큐넷 [공개문제](https://www.q-net.or.kr/cst006.do?id=cst00602&gSite=Q&brdId=Q006&code=1204&artlSeq=5198906)는 **PDF 한 장**이고 DXF·DWG 가 없다. 그나마도 부품 배치도(문제)라서 우리가 검사하는 답안 부품도가 아니다. 연습용 DWG 는 학원 카페·유료 강의 안에 있고, 블로그에 도는 것은 한국산업인력공단 저작물의 무단 재배포다. GitHub 코드 검색도 0건. **결론 — 인터뷰로 받는 것 말고 다른 길이 없다([P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md)).** 다만 그 과정에서 남이 만든 DXF 를 처음 넣어 보다 [P11](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) 을 찾았다.
- 2026-08-27 (밤) — 검사를 3번씩 돌려 결과가 매번 같은지 보다가 **`samples/sample_autocad.dxf` 와 `samples/sample_075em07z.dwg` 의 결과 해시가 완전히 같은 것**을 발견했다. `dwg.analyze` 가 뽑은 값을 하나씩 대조하니 파일 경로와 이름만 다르고 **나머지가 전부 같다** — 크기도 367,087 바이트와 1,443,897 바이트로 DWG 를 DXF 로 푼 비율이다. **같은 도면이다.** `samples/` 에 파일은 3개지만 **도면은 2장**이고, 그중 한 장은 08-22 에 무늬 도면으로 확인된 것이다. 즉 실제로 남은 기계 부품 도면은 **우리가 만든 `sample_plate.dxf` 한 장뿐**이다. 표본이 생각보다 더 얇았다.
> 출처 — [`plan/문제점/P05-멘토배정.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P05-%EB%A9%98%ED%86%A0%EB%B0%B0%EC%A0%95.md) 를 그대로 옮긴 것입니다.
### P05 · 전담 멘토가 배정되지 않았고 주간 안내 메일도 안 온다
| | |
|---|---|
| 상태 | **✅ 해결** (2026-08-24) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 산출물 제출 경로 전체 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
- 본선 선발 안내(08-17)에 "매주 화요일 아침에 그 주차 강의 링크를 메일로 보내드립니다"라고
적혀 있는데 **08-18 첫 주 메일이 안 왔다.**
- "1:1 멘토링 세션" 이야기가 있는데 **전담 멘토가 누구인지 모른다.**
- jangsin1004@gmail.com 으로 온 운영진 메일은 08-17이 마지막이다.
#### 왜 문제인가
산출물 제출처가 "그 주 1:1 멘토링 세션 전까지 전담 멘토에게 공유"다.
**멘토를 모르면 제출 자체를 못 한다.** W1 산출물부터 막혀 있다.
#### 원인
**메일이 안 온 게 아니라 우리가 안 봤다.** 08-23 09:20 에 운영진 안내 메일이 도착해 있었는데,
08-22 에 한 번 확인하고 나서 08-24 까지 메일함을 다시 열지 않았다.
"08-17 이후 메일 없음"이라는 08-22 의 기록을 그대로 사실로 두고 이틀을 보냈다.
전제도 틀렸다. **1:1 멘토링은 모든 팀에게 있는 게 아니라 2차 심사를 통과한 5팀만** 받는다.
"1:1 멘토링 세션 전까지 전담 멘토에게 공유"라는 워크샵 문구를 우리 팀에도 해당한다고 읽었다.
#### 조치
- 제출처를 팀 페이지로 바로잡고 [제출 절차](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EC%A0%9C%EC%B6%9C%EC%A0%88%EC%B0%A8.md)에 단계를 적었다.
- [팀 목표 1장](https://github.com/ritual1127/naverogq/blob/main/plan/w1/%ED%8C%80%EB%AA%A9%ED%91%9C.md)의 주간 리듬에서 **있지도 않은 목요일 1:1 멘토링 칸을 뺐다.** PDF도 다시 만들었다.
- W1~W8 주차 계획 여덟 개에 다 적혀 있던 "1:1 멘토링 세션 전까지 전담 멘토에게 공유" 문구를 팀 페이지 제출로 고쳤다.
- **주간 리듬에 메일함 확인을 넣지 않았다.** 대신 화요일 회의 때 그 주 워크샵 페이지와 메일함을 같이 연다([P06](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md)과 같은 재발 방지).
#### 확인
- 08-23 09:20 수신 메일 `[전국마이스터고 스타프로젝트] 산출물은 우리 팀 페이지에 올려주세요 — 제출처·피드백 안내`
- 제출처 https://meister.itshin.com/네이놈 → `주차별 산출물` → `N주차 제출`
- 전담 멘토 NAVER OGQ마켓 신철호 대표 · 데모데이 ① 09-09 17:00~20:00 · ② 10-07 17:00~17:30
- **아직 안 올렸다.** 구글 로그인이 필요해 사람이 해야 한다. 올린 뒤 이 절에 날짜를 적는다.
#### 기록
- 2026-08-22 — 메일함을 뒤져 확인. 08-17 이후 운영진 메일 없음.
- 2026-08-24 — 문의 메일 초안을 만들다가 메일함을 다시 봤고, **08-23 아침에 안내 메일이 이미 와 있었다.**
제출처는 팀 페이지, 전담 멘토는 신철호 대표, 1:1 멘토링은 5팀 전용. 문의할 것이 남지 않아 초안을 버리고
[제출 절차](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EC%A0%9C%EC%B6%9C%EC%A0%88%EC%B0%A8.md)로 바꿔 적었다. **막힌 줄 알았던 제출 경로는 처음부터 열려 있었다.**
이 문제를 해결로 닫는다. 남은 것은 사람이 로그인해서 올리는 일뿐이다.
> 출처 — [`plan/문제점/P06-워크샵놓침.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md) 를 그대로 옮긴 것입니다.
### P06 · 워크샵 1주차 산출물을 통째로 놓쳤다
| | |
|---|---|
| 상태 | **해결** (2026-08-22) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | W1 산출물 · 진행 방식 |
| 맡은 사람 | 전원 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
W1(08-18 ~ 08-24) 산출물인 팀 목표 1장을 08-22까지 아무도 손대지 않았다.
미션 문장 · 북극성 지표 · 역할 분담 · 팀 규칙 · 주간 리듬 다섯 항목 전부였다.
#### 원인
본선 발표 다음 날이라 결과 메일만 보고 **같은 날 워크샵 강의가 열린 걸 몰랐다.**
강의는 08-04에 이미 전체 공개돼 있었고 안내 메일도 왔는데 안 읽었다.
계획을 심사 피드백만 보고 짜서 워크샵 산출물이 계획에 아예 없었다.
#### 조치
- 08-22에 팀 목표 1장을 몰아서 작성.
- `plan/` 규칙에 넣었다 — **계획을 짜기 전에 그 주 워크샵 페이지를 먼저 연다.**
- 주차 폴더마다 그 주 산출물을 미리 적어 두었다(W1 ~ W8 전부).
#### 확인
`plan/w1` ~ `plan/w8` 각 README에 그 주 산출물이 적혀 있다.
08-18 ~ 08-21 계획 파일의 `❌`는 지우지 않는다. 최종 발표에서 "8주간 배운 것"으로 쓸 수 있다.
#### 기록
- 2026-08-22 — 워크샵 1주차 페이지를 처음 열어 보고 알게 됨. 같은 날 산출물 작성.
- 2026-08-25 — 미리 열기는 지켰지만 **요약이 원문 전부가 아니었다.** 08-24에 옮겨 적은 W2 요약에 강의가 반드시 넣으라고 한 마지막 질문("그거 해결하려고 돈이나 시간 써본 적 있어요?")이 빠져서, 08-25 계획 3번에 다른 질문이 마지막으로 적혔다. 08-25에 원문을 다시 읽고 질문지와 [W2 README](https://github.com/ritual1127/naverogq/blob/main/plan/w2/README.md)를 고쳤다. 강한 신호 기준도 "스스로 해결하려 시도"가 아니라 "이미 시간·돈을 씀"으로 더 셌다.
> 출처 — [`plan/문제점/P07-지표0.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P07-%EC%A7%80%ED%91%9C0.md) 를 그대로 옮긴 것입니다.
### P07 · 북극성 지표가 0이고 셀 방법이 없다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | W5 · W6 산출물, 최종 KPI 리포트 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
북극성 지표는 **주간 재검사 사용자 수**인데 지금 값이 0명이다. 사람이 안 써서가 아니라
**세는 기능 자체가 없다.** `docs/impact.md`에도 "아직 사용자가 몇 명인지 세지 않고 있습니다"라고
적어 두었다.
#### 왜 급한가
- W5(09-15 ~ 21) 산출물에 "사용자 기록 — 몇 명이 써 봤고 몇 명이 핵심 행동을 끝냈나"가 있다.
- W6(09-22 ~ 28) 산출물이 통째로 지표다 — 계측 이벤트 · 퍼널 · 리텐션 커브 · 북극성 지표 현황.
- 계측을 09-05에 붙이기로 계획했는데 **그날 못 붙이면 W5 · W6에 낼 숫자가 없다.**
#### 조건
이용자 대부분이 미성년 수험생이다. 개인을 알아볼 수 있는 것은 남기지 않는다.
무엇을 세고 무엇을 안 세는지 `docs/policy.md`에 적기 전에는 배포하지 않는다.
#### 다음에 해 볼 것
- [ ] 09-05 — 이벤트 4가지(방문 · 시작 · 완료 · 재검사) 심기
- [ ] 09-12 — 배포 서버에서 실제로 쌓이는지 확인
- [ ] 시간이 모자라면 **재검사 하나만** 붙인다. 그게 북극성 지표다
#### 기록
- 2026-08-22 — 팀 목표 1장을 쓰면서 현재 값이 0이라는 걸 확인.
> 출처 — [`plan/문제점/P08-번역429.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P08-%EB%B2%88%EC%97%AD429.md) 를 그대로 옮긴 것입니다.
### P08 · 배포 서버에서 번역 호출만 429로 계속 막힌다
| | |
|---|---|
| 상태 | **해결** (2026-08-25) |
| 처음 본 날 | 2026-08-23 |
| 무엇에 영향을 주나 | 화면에 뜨는 영어·일본어·중국어 번역 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
배포 서버에서 도면을 검사하면 채점 결과와 한국어 후속 답변은 나오는데
**세 언어 번역만 계속 비어 있었다.** 로그에 `[ai] 번역 실패` 가 429(할당량 초과)로
찍혔다. 화면은 번역 대신 안내 문구로 넘어가므로 겉보기에는 조용히 실패한다.
#### 원인
도면 한 장을 검사하면 AI를 **세 번** 부른다.
1. 채점 (`JUDGE_SYSTEM`)
2. 후속 답변 (`FOLLOWUP_SYSTEM`)
3. 번역 (`TRANSLATE_SYSTEM`)
무료 할당량이 세 배로 빨리 마르고, 순서상 **마지막인 번역이 먼저 굶는다.**
1·2번이 성공한 뒤라 채점은 멀쩡해 보이고 번역만 사라진다.
#### 조치
후속 답변과 번역을 **한 호출로 합쳤다**(`_enrich()`). 둘 다 채점 결과만 있으면
만들 수 있어서 따로 부를 이유가 없었다. 도면 한 장당 호출이 3회에서 2회로 줄었다.
`TRANSLATE_SYSTEM`·`TRANSLATE_SCHEMA`·`_add_followups`·`_translate` 는 지웠다.
합치면서 같이 고친 것 — 지시문으로 "조·항·장 번호를 쓰지 말라"고 막아도 모델이
`KS B 0001 제3장` 처럼 지어내는 일이 있었다. 받은 뒤 `_drop_clause_numbers()` 로
걷어낸다. 확인할 수 없는 조문 번호를 수험생이 근거로 믿게 되면 안 된다.
#### 확인
- 자동 테스트 16개 통과. `_drop_clause_numbers` 검사를 하나 새로 넣었다
(`test_drop_clause_numbers` — 한국어 `제3장`, 영어 `Section 4`, 일본어 `第3章`을
걷어내고 규격 이름과 치수 숫자는 그대로 두는지).
- **2026-08-25 배포 서버에서 확인했다.** https://naverogq.onrender.com 에 예제 두 장을
`POST /api/analyze-sample` 로 돌렸고 둘 다 200, 번역이 세 언어 모두 채워져 왔다.
| 도면 | HTTP | `ai_verdict_i18n` | AI 지적의 `followups` |
|---|---|---|---|
| `sample_plate.dxf` | 200 | en · ja · zh | ko · en · ja · zh |
| `sample_autocad.dxf` | 200 | en · ja · zh | ko · en · ja · zh |
모델은 `gemini-3.6-flash`. 두 장을 쓴 이유는 캐시 때문이다. 한 장만 보면 예전에
성공한 결과가 `aicache`에서 나온 것인지 구분이 안 된다. `aicache/`는 저장소에
올라가 있지 않아 배포 이미지에는 없고, 서버 캐시는 도면 그림 바이트로 키를 잡으므로
다른 도면 두 장이 모두 번역까지 채워졌다면 실제로 호출이 성공한 것이다.
#### 기록
- 2026-08-23 — 호출을 2회로 합치고 조문 번호 후처리를 넣었다. 배포 재확인은 남았다.
- 2026-08-25 — 배포 서버에서 예제 두 장으로 재확인. 429 없이 세 언어가 다 왔다. 상태를 해결로 바꿈.
> 출처 — [`plan/문제점/P09-빈측정100.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md) 를 그대로 옮긴 것입니다.
### P09 · 도면 0장인데 정확도 100%가 나왔다
| | |
|---|---|
| 상태 | **해결** (2026-08-26) |
| 처음 본 날 | 2026-08-26 |
| 무엇에 영향을 주나 | 실제 도면 정확도 측정 전체 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
08-26 준비물 점검으로 어제 만든 `실제도면/` 폴더가 실제로 쓸 수 있는지 보려고
아직 비어 있는 라벨 파일로 측정을 돌렸다.
```
$ python bench.py 실제도면/labels.json
| 시험 도면 | 잡아야 할 지적 | 결과 |
|---|---|---|
- 기준 도면 0장 중 완전 일치 0장
- 검출률(recall) 100.0% — 실제 결함 0건 중 0건 검출
- 정확도(precision) 100.0% — 지적 0건 중 0건이 실제 결함
```
**도면이 한 장도 없는데 100% / 100% 가 나오고 종료 코드도 0이었다.**
`--check` 를 붙여도 통과한다.
라벨에 이름만 적고 도면 파일이 없을 때도 마찬가지였다. 그 장은 표에
`분석 실패` 로 찍히지만 요약 숫자는 그 장을 조용히 빼고 계산하고, 역시 0으로 끝난다.
#### 원인
`run()` 의 마지막 두 줄이다.
```python
recall = tp / (tp + fn) if tp + fn else 1.0
precision = tp / (tp + fp) if tp + fp else 1.0
```
0으로 나누는 것을 막으려고 분모가 0이면 1.0 을 넣었다. 합성 도면 18장으로만 돌리던
동안에는 분모가 0이 될 일이 없어서 드러나지 않았다. 실제 도면을 받기 시작하면
**"아직 아무것도 없다"와 "다 맞혔다"가 같은 숫자로 나온다.**
#### 조치
`bench.py` 세 군데.
1. 라벨에 도면이 한 장도 없으면 리포트를 찍지 않고 종료 코드 1로 끝낸다.
0장으로는 잴 수 있는 것이 없다.
2. 요약에 **분석 실패 장수**를 한 줄로 적고, 못 연 장은 검출률·정확도 계산에서 **실제로 뺀다**.
(처음에는 "뺀 것이다"라고 적어 놓고 빼지 않아 파일 이름을 틀린 것이 검출률이 낮은 것처럼
보였다. 08-26 검수에서 찾아 고쳤다.) 분석된 도면이 0장이면 퍼센트를 아예 찍지 않는다.
3. 열지 못한 도면이 한 장이라도 있으면 `--check` 없이도 종료 코드 1로 끝낸다.
파일 이름이 틀렸거나 파일이 없는 상태에서 나온 정확도는 쓰면 안 된다.
#### 확인
| 무엇 | 결과 |
|---|---|
| `python bench.py 실제도면/labels.json` (0장) | `FAIL: … 도면이 한 장도 없다` · 종료 코드 1 |
| 없는 파일 이름 한 장짜리 라벨 | 표에 `분석 실패`, 요약에 `기준 도면 1장 중 분석 0장` · `분석 실패 1장` · `분석된 도면이 0장이라 검출률·정확도를 잴 수 없다`, 종료 코드 1 |
| `python bench.py --check` (합성 18장) | 18장 중 분석 18장 · 완전 일치 18장 · 100% / 100% · 종료 코드 0 (그대로) |
| `python -m pytest test_rules.py -q` | 17개 통과 |
내일(08-27) 김승준이 받은 도면에 라벨을 붙이고 이 명령을 돌린다. 파일 이름을
잘못 적으면 이제 100% 대신 실패가 뜬다.
#### 기록
- 2026-08-26 — 0장 100% 를 막고 분석 실패 표시를 넣었다.
- 2026-08-26 (검수) — 실패한 장을 **뺀다고 적어 놓고 빼지 않던 것**을 찾았다. 10장 중 한 장의
파일 이름을 틀리면 그 장의 기대 코드가 전부 놓침으로 잡혀 검출률이 90%대로 떨어졌다.
못 연 장을 tp·fn·fp 와 완전 일치에서 빼고, 분석된 장이 0이면 퍼센트를 찍지 않게 했다.
합성 18장은 18/18 · 100%/100% · 종료 0 그대로, 테스트 17개 통과.
> 출처 — [`plan/문제점/P10-인터뷰0건.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) 를 그대로 옮긴 것입니다.
### P10 · 인터뷰가 이틀째 0건이고 그 뒤 작업이 전부 막혔다
| | |
|---|---|
| 상태 | 🔴 **열림** |
| 처음 본 날 | 2026-08-27 |
| 무엇에 영향을 주나 | W2 산출물(인터뷰 5건 · 문제 정의 한 문장) · 실제 도면 확보([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 전원 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
계획대로면 오늘(08-27) 저녁에 인터뷰가 4건 쌓여 있어야 한다. 0건이다.
| 언제 | 계획 | 실제 |
|---|---|---|
| 08-26 (수) | 인터뷰 1 · 2, 도면 2장 받기 | 0건 · 0장 |
| 08-27 (목) | 인터뷰 3 · 4, 라벨 초안 | 0건 · 라벨 시작 못 함 |
22:50 기준으로 확인한 것.
- [`docs/interviews.md`](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md) — 실제 인터뷰 기록 0건. 있는 것은 08-25에 만든 양식과 "실제 아님"이라고 적힌 시험 기입뿐이다.
- [`실제도면/`](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/README.md) — `.dxf` 0장, `labels.json` 은 `{}` 그대로.
- 인터뷰 폼 — `npx wrangler d1 execute cadlens-interview --remote --command "SELECT COUNT(*) FROM answers"` → **0**.
- [인터뷰 대상표](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EC%9D%B8%ED%84%B0%EB%B7%B0%EB%8C%80%EC%83%81%ED%91%9C.md) — 5칸 중 3칸(박주호 · 박신후 · 손선생님)만 찼고 **약속 시간은 다섯 다 비어 있다.** 08-25에 정하기로 한 것이 사흘째 그대로다.
#### 왜 급한가
**막힌 게 인터뷰 하나가 아니다.** 인터뷰 자리에서 도면을 받고, 그 도면에 라벨을 붙여
실제 정확도를 잰다. 첫 칸이 비면 뒤가 전부 선다.
```
인터뷰 → 도면 받기 → 라벨 붙이기 → bench.py → docs/accuracy.md 실제 도면 숫자
0건 0장 못 함 못 함 합성 18장 숫자 그대로
```
[P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)(합성 도면으로만 잰 100%)가 심사 피드백 1번인데, 그걸 푸는
유일한 경로가 이 인터뷰다.
W2 산출물은 **인터뷰 5건 + 문제 정의 한 문장**이고 마감은 08-31(월)이다.
남은 날은 08-28 · 29 · 30 · 31 **4일**이고, 그 안에 5건을 다 해야 한다.
#### 원인
**모른다.** 약속이 안 잡힌 것인지, 잡혔는데 깨진 것인지, 만났는데 기록을 안 올린
것인지 저장소만 봐서는 구분이 안 된다. 셋은 대응이 서로 다르다.
확실한 것 하나 — **대상표의 약속 시간 칸이 08-25부터 사흘 내내 비어 있다.**
시간이 안 정해졌으니 인터뷰가 열릴 자리 자체가 없었다.
또 하나 — **인터뷰 폼을 만들고 주소를 아무 데도 뿌리지 않았다.** 못 만날 때를 대비해
08-26에 세운 https://cadlens-interview.pages.dev 가 0건인 건 폼이 나빠서가 아니라
아무도 주소를 받지 않았기 때문이다. 만드는 것과 돌리는 것은 다른 일이었다.
#### 조치
**뿌릴 글을 써 뒀다** — [`인터뷰폼/뿌릴글.md`](https://github.com/ritual1127/naverogq/blob/main/%EC%9D%B8%ED%84%B0%EB%B7%B0%ED%8F%BC/%EB%BF%8C%EB%A6%B4%EA%B8%80.md). 단톡용 ·
개인 DM용 · 선생님께 보낼 글 셋. 보내기 전 확인할 것(가족·친한 친구·팀원 제외, 한 반에만
뿌리지 않기, 약속 잡힌 사람은 폼 대신 대면)도 같이 적었다. **글이 없어서 못 뿌린 건
이제 아니다.** 보내는 것은 사람 몫이다.
그 밖에는 확인뿐이다.
08-28에 할 것 — 사람 몫이라 여기에 적어만 둔다.
- [ ] 약속 시간부터 정한다. 대상표의 빈 칸 5개를 시간으로 채운다 (장우영)
- [ ] 인터뷰 폼 주소를 반 단톡·기계과 학생들에게 뿌린다 (전원). 글은 [`뿌릴글.md`](https://github.com/ritual1127/naverogq/blob/main/%EC%9D%B8%ED%84%B0%EB%B7%B0%ED%8F%BC/%EB%BF%8C%EB%A6%B4%EA%B8%80.md) 에 있다. 대면이 밀려도 답은 쌓인다
- [ ] 대면 1건이라도 그날 안에 끝내고 그날 안에 기록한다. 다음 날로 넘기면 인용이 요약이 된다
- [ ] 만나는 자리에서 도면을 받는다. 라벨 작업은 도면이 있어야 시작한다 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md))
**5명을 못 채우면 3명이라도 먼저 만난다.** 약속 잡다가 한 주가 끝나는 게 최악이라고
[대상표](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EC%9D%B8%ED%84%B0%EB%B7%B0%EB%8C%80%EC%83%81%ED%91%9C.md)에 이미 적어 뒀는데, 지금 그렇게 되고 있다.
#### 확인
인터뷰 기록이 `docs/interviews.md` 에 들어오고 대상표 상태가 `✅` 로 바뀌면 다시 본다.
5건이 차고 도면이 들어오면 해결로 돌린다.
#### 기록
- 2026-08-27 — 이틀 연속 0건인 것을 08-27 계획을 돌리다 확인하고 열었다. 대면 0건 · 폼 0건 · 도면 0장 · 약속 시간 0개.
- 2026-08-27 (밤) — **폼에 첫 응답 1건이 들어왔다.** 특성화고 기계과 2학년, 기능사 실기 준비 중. 강한 신호 있음(인강 1~3시간). 대면 인터뷰는 여전히 0건이고 W2 산출물 5건은 그대로 0/5 이라 이 문제는 **열린 채로 둔다.** 응답 내용은 [`docs/interviews.md`](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md) 의 폼 응답 절에. 도면은 "찾아보고 알려 줄게" 라 아직 0장이다 — 이 사람이 지금 유일한 도면 후보이므로 **후속 연락이 필요하다.**
> 출처 — [`plan/문제점/P11-남의DXF크래시.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) 를 그대로 옮긴 것입니다.
### P11 · 다른 CAD 가 쓴 DXF 하나에서 통째로 터졌다
| | |
|---|---|
| 상태 | ✅ **해결** (2026-08-27) |
| 처음 본 날 | 2026-08-27 |
| 무엇에 영향을 주나 | 실제 도면 분석 전부 — 업로드·측정·렌더 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
실제 시험 도면을 인터넷에서 구할 수 있는지 찾다가, 남이 만든 DXF 를 하나 넣어 봤다.
[LibreCAD 이슈 #2109](https://github.com/LibreCAD/LibreCAD/issues/2109) 에 붙어 있는
`gdt-test-qcad-pro-trial.zip` 안의 `gdt-R15.dxf` — **QCAD Professional 이 쓴 파일**이다.
```
ValueError: could not convert string to float: '0.0l'
```
분석이 시작도 못 하고 죽었다. 파일 어딘가에 실수 값이 `0.0l` 로 적혀 있다.
숫자 `0` 이 아니라 알파벳 `l` 이 붙어 있다.
**우리가 만든 도면에서는 한 번도 안 났다.** 합성 18장은 `bench.py` 가 `ezdxf` 로
직접 쓴 것이라 언제나 규격에 맞다. 파일을 만드는 쪽과 읽는 쪽이 같은 라이브러리다.
#### 원인
`ezdxf.readfile()` 은 조금이라도 규격에 어긋나면 예외를 던진다. 같은 파일을
`ezdxf.recover.readfile()` 로 열면 **오류 3건을 잡고 1건을 고쳐서 정상으로 연다.**
AutoCAD 계열도 이런 파일을 그냥 연다. 즉 파일이 못 쓸 정도로 망가진 게 아니라
**우리가 너무 엄격한 문으로 읽고 있었다.**
`dwg.py` 안에 `ezdxf.readfile()` 을 직접 부르는 자리가 **네 군데**였다 —
`dxf_has_content` · `recover_orphaned_paper_views` · `facts_from_dxf` · `render_svg`.
앞의 두 개는 예외를 삼키고 `False` 를 돌려주기 때문에 더 나빴다. **터지지도 않고
"내용이 없는 도면"으로 조용히 취급한다.**
#### 조치
네 자리가 다 지나가는 문 하나를 `dwg.readfile()` 로 만들고, 거기서만 복구 읽기로
넘어가게 했다. 호출부마다 `try` 를 붙이지 않았다 — 네 군데에 같은 코드를 넣으면
다음에 다섯 번째 자리가 생길 때 또 빠진다.
```python
def readfile(path):
try:
return ezdxf.readfile(path)
except Exception:
doc, auditor = recover.readfile(path)
print(f"[dwg] 손상된 DXF 를 복구해서 열었습니다 "
f"(오류 {len(auditor.errors)} · 고침 {len(auditor.fixes)}): ...")
return doc
```
복구해서 열었을 때는 **로그에 남긴다.** 조용히 고치면 나중에 이상한 결과가 나왔을 때
파일이 원래 깨져 있었다는 걸 알 방법이 없다.
#### 확인
- `gdt-R15.dxf` — 전에는 `ValueError`. 지금은 `[dwg] 손상된 DXF 를 복구해서 열었습니다
(오류 3 · 고침 1)` 을 찍고 **지적 7건**(fail 1 · error 3 · warn 3)까지 정상으로 나온다.
- 합성 도면 18장 — `python bench.py` **18/18 · 검출률 100.0% · 정확도 100.0%** 그대로.
- `python -m pytest test_rules.py -q` — **18개 통과** (17개에서 하나 늘었다).
- 새 시험 `test_malformed_dxf_recovers` — 정상 DXF 를 만들어 실수 값 하나를 `120.0l` 로
망가뜨린 뒤, `ezdxf.readfile` 은 반드시 터지고 `dwg.readfile` 은 열리고
`dwg.dxf_has_content` 가 **빈 도면으로 오해하지 않는지**까지 본다.
#### 왜 이게 중요한가
[P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) 가 말하는 "우리가 만든 도면으로만 쟀다" 의 실제 값이 이것이다.
실기 도면은 AutoCAD · Inventor · ZWCAD 가 쓴다. **남이 쓴 파일 한 장을 처음 넣어 본
그 자리에서 터졌다.** 인터뷰로 실제 도면을 받기 시작하면 이 부류가 계속 나온다.
#### 기록
- 2026-08-27 — 인터넷에서 실기 연습 도면을 구할 수 있는지 찾다가, 처음 넣어 본 남의 DXF 에서 발견하고 같은 날 고쳤다.
---
## 5. 오늘 맡은 일
> 출처 — [`plan/w2/08-27_목/계획.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-27_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) 를 그대로 옮긴 것입니다.
오늘 장우영 님에게 배정된 일은 없습니다. 아래 `전원` 항목만 보시면 됩니다.
---
## 6. 장우영 님이 8주 동안 맡은 일 전체
오늘 것만 보면 왜 이 일을 하는지 안 보여서 같이 넣었습니다.
> 출처 — [`plan/역할분담/장우영.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EC%9E%A5%EC%9A%B0%EC%98%81.md) 를 그대로 옮긴 것입니다.
### 장우영
배정 24건. [역할 분담 규칙](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/README.md)
| 날짜 | 주차 | 맡은 일 | 계획 | 달성 | 실제로 한 일 |
|---|---|---|---|---|---|
| 08-23 (일) | W1 | `render_png`가 도면 단위를 반영하게 고치기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-23_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | 🔺 | 박지완이 08-22 밤에 당겨서 함. `detect_mm_per_unit`으로 단위 환산, 201바이트 → 283KB |
| 08-25 (화) | W2 | 인터뷰할 5명 정하기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | 20:00 회의에서 정한다. [빈 대상표](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EC%9D%B8%ED%84%B0%EB%B7%B0%EB%8C%80%EC%83%81%ED%91%9C.md)와 고르는 기준은 준비됨 |
| 08-25 (화) | W2 | 인터뷰 기록 양식 만들기 (박지완과 바꿈) | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | 🔺 | 박지완이 [`docs/interviews.md`](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md) 양식 초안과 시험 기입을 만듦. 회의에서 보고 고칠 것 |
| 08-28 (금) | W2 | 기계제도 담당 선생님 인터뷰 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-28_%EA%B8%88/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 08-31 (월) | W2 | 멘토에게 인터뷰 5건과 문제 정의 공유 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-31_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-03 (목) | W3 | 모델 선택 근거 쓰기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-03_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-04 (금) | W3 | Render 환경변수로만 들어가는지 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-04_%EA%B8%88/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-05 (토) | W3 | 이벤트 4가지 심기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-05_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-06 (일) | W3 | 3분 대본 초안 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-06_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-08 (화) | W4 | 3분 데모 영상 찍기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-08_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-12 (토) | W4 | 09-05에 붙인 계측이 실제로 쌓고 있는지 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-12_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-13 (일) | W4 | 한 줄 소개 초안 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-13_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-13 (일) | W4 | 선생님께 수업에서 써 봐도 되는지 여쭤보기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-13_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-16 (수) | W5 | 올린 뒤 두 시간 지켜보기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-16_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-17 (목) | W5 | 몇 명이 들어왔고 몇 명이 검사를 끝냈는지 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-17_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-20 (일) | W5 | W5 산출물 제출 21:00 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-20_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-22 (화) | W6 | 중복 집계나 누락이 없는지 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-22_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-25 (금) | W6 | 고치기 전 숫자 적기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-25_%EA%B8%88/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-27 (일) | W6 | 주간 재검사 사용자 수 현황 정리 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-27_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-28 (월) | W6 | 멘토에게 지표 현황 공유 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-28_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-04 (일) | W7 | 넘치면 설명을 줄인다 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w7/10-04_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-05 (월) | W7 | 멘토에게 대본 공유하고 질문 받기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w7/10-05_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-07 (수) | W8 | 질의응답 받아 적기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w8/10-07_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-10 (토) | W8 | AI와 외부 도움 내역 명시 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w8/10-10_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
달성: `⬜` 안 함 · `✅` 함 · `🔺` 반쯤 · `❌` 못 함
남과 바꿨으면 **실제로 한 일** 칸에 "○○와 바꿈"이라고 적습니다.
배정을 어떻게 정했는지, 남과 바꿨을 때 어떻게 적는지는 아래에 있습니다.
> 출처 — [`plan/역할분담/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/README.md) 를 그대로 옮긴 것입니다.
### 역할 분담
누가 언제 무엇을 맡았고 실제로 무엇을 했는지 남기는 폴더입니다.
#### 어떻게 정했나
- 담당자는 **무작위로 배정**합니다. 사람마다 잘하는 것만 계속 맡으면 한 사람만 늘고 나머지는 8주 동안 배우는 게 없습니다.
- 네 명을 섞은 묶음을 반복해 쓰기 때문에 **건수는 고르게** 나뉩니다.
- 회의 · 데모데이 참석 · 합의가 필요한 일은 배정하지 않고 `전원`으로 둡니다.
- 배정받은 사람이 도저히 못 하는 일이면 **그날 안에 바꾸고, 누구와 바꿨는지 이 폴더에 적습니다.** 조용히 남이 대신 하면 기록이 거짓이 됩니다.
- 08-18 ~ 08-22 는 이미 지난 날이라 무작위 배정이 아니라 **실제로 한 사람**을 적었습니다.
#### 사람별 기록
| 사람 | 배정 건수 | 기록 |
|---|---|---|
| 박지완 | 30건 | [박지완.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EB%B0%95%EC%A7%80%EC%99%84.md) |
| 장우영 | 24건 | [장우영.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EC%9E%A5%EC%9A%B0%EC%98%81.md) |
| 안대열 | 24건 | [안대열.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EC%95%88%EB%8C%80%EC%97%B4.md) |
| 김승준 | 24건 | [김승준.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EA%B9%80%EC%8A%B9%EC%A4%80.md) |
| 전원 | 39건 | 회의 · 참석 · 합의 |
#### 주차별 배정
| 주차 | 박지완 | 장우영 | 안대열 | 김승준 | 전원 |
|---|---|---|---|---|---|
| W1 | 8 | 1 | 2 | 2 | 6 |
| W2 | 3 | 4 | 3 | 3 | 7 |
| W3 | 5 | 4 | 4 | 4 | 4 |
| W4 | 2 | 4 | 4 | 3 | 4 |
| W5 | 5 | 3 | 3 | 4 | 2 |
| W6 | 2 | 4 | 3 | 4 | 3 |
| W7 | 3 | 2 | 2 | 2 | 5 |
| W8 | 2 | 2 | 3 | 2 | 8 |
#### 적는 법
1. 그날 일이 끝나면 본인 파일에서 그 줄의 달성 칸을 고칩니다 (`⬜` → `✅` · `🔺` · `❌`).
2. **실제로 한 일** 칸에 무엇을 했는지 한 줄 적습니다. 계획과 달라졌으면 달라진 대로 적습니다.
3. 남과 바꿨으면 두 사람 파일 모두에 적습니다.
4. 못 한 것은 지우지 않습니다. `❌`로 남기고 이유를 적습니다. 다 `✅`인 기록은 아무도 믿지 않습니다.
---
## 7. 한 결과
**여기부터 채워 주세요. 위쪽은 건드리지 않으셔도 됩니다.**
| | |
|---|---|
| 달성 | ⬜ |
| 걸린 시간 | |
달성 칸의 `⬜` 를 `✅` 함 · `🔺` 반쯤 함 · `❌` 못 함 중 하나로 바꿔 주세요.
**다 `✅` 로 채우지 마세요.** 못 한 건 `❌` 입니다. 8주 뒤 심사에서 전부
성공한 기록은 아무도 믿지 않습니다.
### 실제로 한 일
*(계획과 달라졌으면 달라진 대로 적어 주세요. 숫자가 나왔으면 숫자를 적어 주세요.
"메일 보냈다" 보다 "08-24 19:10 에 netclaus@gmail.com 으로 보냈다" 가 낫습니다.)*
### 막힌 것 · 문제
*(없으면 "없음" 이라고 적어 주세요. **지어내지 마세요.** 지어낸 문제가 한 건이라도
섞이면 나머지 기록도 같이 못 믿게 됩니다.
문제인 것 — 틀린 결과가 나왔다, 하려던 게 안 됐다, 계획보다 시간이 훨씬 더 들었다,
연락이나 자료가 없어서 막혔다.
문제가 아닌 것 — 아직 안 만든 기능, 다음에 하기로 한 일, 잘 됐는데 더 잘하고 싶은 것.)*
### 남과 바꿨으면
*(누구와 바꿨는지 적어 주세요. 예: "장우영과 바꿈". 조용히 남이 대신 하면
기록이 거짓이 됩니다. 안 바꿨으면 비워 두세요.)*
학생 2명 더 인터뷰
예상 40분 (2명)- 가능하면 다른 학년이나 다른 반에서 찾는다. 같은 반만 하면 같은 선생님한테 배운 얘기만 나온다.
- 어제 인터뷰에서 겹친 말이 있으면 그 부분을 더 캐묻는다.
이렇게 되면 끝인터뷰 4건 누적
흔한 실수어제와 똑같은 질문만 하는 것. 겹친 말은 더 캐물어야 한다
# 08-27 (목) · W2 3일차 · 안대열 일지
**고칠 곳은 맨 아래 [7. 한 결과](#7-한-결과) 한 군데뿐입니다.**
1~6번은 저장소 여기저기에 흩어져 있는 문서를 한자리에 모은 것입니다.
저장소를 따로 열지 않아도 오늘 일을 할 수 있게 하려는 것입니다.
| | |
|---|---|
| 날짜 | 08-27 (목) · W2 3일차 |
| 맡은 사람 | 안대열 |
| 오늘 계획 원문 | [plan/w2/08-27_목/계획.md](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-27_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) |
| 이 파일의 자리 | `plan/역할분담/일지/08-27_안대열.md` |
## 차례
1. 우리가 뭘 만들고 있나
2. 왜 지금 이걸 하고 있나
3. 이번 주에 무슨 일이 있었나
4. 지금까지 만난 문제 전부
5. **오늘 맡은 일**
6. 안대열 님이 8주 동안 맡은 일 전체
7. **한 결과** ← 여기만 채우시면 됩니다
---
## 1. 우리가 뭘 만들고 있나
> 출처 — [`plan/w2/팀목표.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/%ED%8C%80%EB%AA%A9%ED%91%9C.md) 를 그대로 옮긴 것입니다.
*(plan/w2/팀목표.md 를 찾지 못했습니다.)*
---
## 2. 왜 지금 이걸 하고 있나
> 출처 — [`docs/roadmap.md`](https://github.com/ritual1127/naverogq/blob/main/docs/roadmap.md) 를 그대로 옮긴 것입니다.
### CADLens 발전 계획
앞으로 무엇을 어떤 순서로 할지 적어 둔 문서입니다. 기준일은 **2026년 8월 11일**입니다.
지금 무엇이 되고 무엇이 안 되는지는 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)에, 다른 종목으로 넓힐 수
있는지는 [`example/`](https://github.com/ritual1127/naverogq/blob/main/example)에 있습니다.
---
#### 우선순위
번호가 곧 순서입니다. 위에 있는 게 안 되면 아래 것을 해도 의미가 없습니다.
##### 1. 실제 수험생 도면으로 정확도 다시 재기
지금 정확도 100%는 **저희가 직접 만든 연습용 도면 18장** 기준입니다. 도면을 만든 사람과
검사 규칙을 만든 사람이 같아서, 이 숫자만으로는 실제 시험 도면에서도 맞는다고 말할 수
없습니다. **이게 안 되면 나머지가 다 의미 없습니다.**
- [ ] 기계과 학생 도면을 이름 지운 상태로 모으기
- [ ] 같은 방식으로 다시 측정해 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)의 표를 실제 도면 기준으로 교체
- [ ] 자체 제작 도면과 실제 도면의 결과 차이를 그대로 공개
##### 2. AI 점수 안정시키기
투상도 30점은 AI가 매기는데 **같은 도면을 다시 넣으면 점수가 흔들립니다.** 확정 점수가
아니라고 화면에 적어 두긴 했지만, 흔들리는 폭 자체를 줄여야 합니다.
- [x] 같은 도면을 여러 번 돌려 편차가 몇 점인지 먼저 측정 — `variance.py`, 결과는 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)에 있습니다 (2026-08-22)
- [ ] **단위가 mm가 아닌 도면의 백지 렌더 고치기.** 편차를 재다 드러났습니다. 도면 범위를 그대로 밀리미터로 보는 탓에 AI가 백지를 채점하고 있었습니다. 여기부터 고쳐야 아래 항목들이 의미가 있습니다
- [ ] 규칙으로 옮길 수 있는 건 옮기기 — 뷰 개수, 제3각법 배치는 좌표로 계산할 수 있을지 검토
- [ ] 그래도 남는 부분은 여러 번 물어 중앙값을 쓰는 방식 검토 (정확해지지만 비용이 늘어남)
- [ ] AI가 틀린 사례를 모아 두기. "AI를 어떻게 검증했나"에 답할 근거가 됩니다
##### 3. 못 잡는 것 줄이기
[검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)의 약점 표를 하나씩 지웁니다.
- [ ] 선으로만 그린 표면거칠기 기호 (지금은 문자로만 찾음)
- [ ] 직접 그린 기하공차 기입틀 (지금은 TOLERANCE 엔티티와 문자로만 찾음)
- [ ] 이름이 CENTER 계열이 아닌 중심선 레이어
- [ ] 선 4개로 그린 윤곽선 (지금은 닫힌 사각형만 인식)
###### 검사 자체가 없는 항목 (2026-08-27 설문에서)
위 넷은 "있는데 못 찾는" 것이고, 아래는 **검사 코드가 아예 없는** 것입니다.
[폼 응답 1건](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md%23%ED%8F%BC-%EC%9D%91%EB%8B%B5--%EB%8C%80%EB%A9%B4-%EC%9D%B8%ED%84%B0%EB%B7%B0%EC%99%80-%EB%94%B0%EB%A1%9C-%EC%85%89%EB%8B%88%EB%8B%A4)에서 답한 사람이
빠뜨렸다고 고른 9개를 `exam.py`의 검사 24개와 하나씩 대조해 나왔습니다.
**9개 중 우리가 온전히 잡는 것은 3개였습니다.**
| 빠뜨렸다고 한 것 | 지금 | 무엇을 해야 하나 |
|---|---|---|
| 모떼기·필렛 주서 | ✅ `EX_NOTE_ITEM` | — |
| 투상도 하나 통째 빠뜨림 | ✅ `EX_FEW_VIEWS` · `AI_PROJECTION` | — |
| 표면거칠기 기호 | ✅ `DQ_NO_SURFACE_SYMBOL` | — |
| 척도 표기 | 🔺 부분 | `DQ_SCALE`은 **비표준 값**만, `EX_VIEW_NO_SCALE`은 뷰별만 봅니다. 표제란에 척도를 **아예 안 적은** 경우는 안 잡습니다 |
| 재질 기입 | ❌ 없음 | `_material`은 주서의 **열처리 문구만** 봅니다. 부품란의 재료 기호(SM45C, SCM415, GC200)가 있는지는 검사하지 않습니다 |
| 스퍼기어·스프링 요목표 | ❌ 없음 | 요목표 검사가 없습니다. 기어·스프링이 있는 도면에서 요목표는 채점 항목입니다 |
| 표면거칠기 비교표 | ❌ 없음 | 주서 옆 비교표(√w √x √y 대조)가 있는지 안 봅니다. **기호를 넣고도 비교표를 빠뜨리는 것은 따로 감점됩니다** |
| A4로 출력해서 잘림 | ❌ 범위 밖 | 출력 설정은 DXF에 없습니다. 도면 크기(`DQ_SHEET_SIZE`)와는 다른 문제입니다 |
| 파일 날림·저장 실패 | ❌ 범위 밖 | CAD 도구 문제입니다 |
표본이 **1명**입니다. 이것만으로 검사 항목을 늘리지 않고, 08-28 선생님 인터뷰와
나머지 응답에서 같은 말이 나오는지 먼저 봅니다.
##### 4. 지원 형식 넓히기
- [ ] Inventor의 ipt · idw · iam. 3D 파일을 읽으려면 파싱 모듈이 새로 필요합니다
- [ ] 3D 모델 채점은 2D가 안정된 뒤에 합니다
##### 5. 다른 종목으로 넓히기
`exam.py`의 판정 함수와 루브릭이 KS 제도 규칙에 기반해 있어 다른 종목에도 상당 부분
그대로 쓸 수 있습니다. 어디까지 되는지는 미리 조사해 [`example/`](https://github.com/ritual1127/naverogq/blob/main/example)에 남겼습니다.
| 종목 | 규칙 재사용 | 순서 |
|---|---|---|
| 기계설계산업기사 | 약 90% | 1순위 |
| 일반기계기사 | 약 60% | 2순위 (작업형 한정) |
| 사출금형산업기사 | 약 55% | 3순위 |
| 프레스금형산업기사 | 약 50% | 4순위 |
- [ ] **0단계 — 구조 정리.** `exam.py`가 기능사 기준값을 모듈 상수로 박아 두고 있어 두 번째
종목이 들어오면 막힙니다. 값을 종목별로 분리하되 **검사 함수 안에 종목 분기는 넣지
않습니다.** 종목이 늘어나면 분기가 규칙마다 퍼져 손댈 수 없게 됩니다
- [ ] 종목별 공개문제를 3개 회차 이상 확보하기 전에는 코드를 건드리지 않습니다.
확인되지 않은 기준으로 검사 규칙을 만들면 응시자에게 틀린 지적을 하게 됩니다
##### 6. 학교에서 쓸 수 있게 만들기
- [ ] 반 단위 화면 — 선생님이 여러 도면을 한 번에 확인
- [ ] 학교 단위 이용 시 개인정보 처리 안내문 정리
---
#### 얼마나 쓰이는지 재는 방법
지금은 **아무것도 세지 않습니다.** 사람을 모으는 것보다 먼저 고칠 게 남았다고 봤고,
쓰는 사람 대부분이 미성년자라 함부로 붙일 수도 없었습니다.
CADLens는 [공개 고지](https://github.com/ritual1127/naverogq/blob/main/docs/policy.md)에서 **추적 코드가 없고, 회원가입이 없고, 개인을 알아볼 수
있는 정보를 받지 않는다**고 약속했습니다. 지표가 필요하다고 그 약속을 깨면 정직함으로 쌓은
걸 스스로 무너뜨리는 것이라, **약속을 지키면서 셀 수 있는 것만** 세기로 했습니다.
**셀 것**
| 지표 | 어떻게 | 개인 식별 |
|---|---|---|
| 검사 횟수 (일별·월별) | 검사가 끝날 때 숫자만 +1 | 없음 |
| 재방문율 | 브라우저에 이미 있는 `cadcheck.history`로 "2회 이상 검사한 브라우저" 비율 | 없음. 기기 안에서 판단하고 결과 숫자만 보고 |
| 재검사 비율 | 같은 파일 이름을 다시 올린 비율 (= 고치고 다시 온 사람) | 없음 |
| 점수 개선 폭 | 재검사 때 점수가 몇 점 올랐는지 | 없음 |
| 언어·다크모드 분포 | 이미 브라우저에 있는 설정값 집계 | 없음 |
**안 셀 것** — IP, 쿠키, 광고 ID, 도면 내용, 파일 이름 원본, 위치, 기기 지문.
**대표로 삼을 숫자는 방문자 수가 아닙니다.** CADLens에서 의미 있는 건
**"검사 → 고침 → 재검사로 점수가 오른 사람의 비율"** 입니다. "몇 명이 왔다"가 아니라
**"몇 명이 실제로 나아졌다"** 는 뜻이라, 도면을 봐주는 도구로서 훨씬 정확한 숫자입니다.
집계를 시작하면 [임팩트](https://github.com/ritual1127/naverogq/blob/main/docs/impact.md)와 README의 해당 절을 실제 숫자로 바꿉니다.
---
#### 문서를 어떻게 관리할지
숫자가 문서마다 다르면 그 자체로 신뢰를 잃습니다.
- [ ] 정확도를 다시 잴 때마다 README · [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md) · [임팩트](https://github.com/ritual1127/naverogq/blob/main/docs/impact.md)의
숫자를 같이 맞춥니다
- [ ] 응시자 통계는 [`example/96_응시자_통계.md`](https://github.com/ritual1127/naverogq/blob/main/example/96_%EC%9D%91%EC%8B%9C%EC%9E%90_%ED%86%B5%EA%B3%84.md)를 원본으로
두고 다른 문서는 그걸 인용합니다. 아직 1차 출처(통계연보)로 대조하지 않았다는 것도
그 문서에 적어 뒀습니다
- [ ] 문서가 코드의 함수 이름이나 상수를 언급하면, 그게 실제로 있는지 확인하고 씁니다
---
#### 한 줄로 줄이면
**"쓰는 사람이 있고, 그 사람들이 실제로 나아졌다"를 숫자로 만드는 것.**
기술은 어느 정도 됐고, 비어 있는 건 그 숫자입니다.
---
## 3. 이번 주에 무슨 일이 있었나
> 출처 — [`plan/w2/기록.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/%EA%B8%B0%EB%A1%9D.md) 를 그대로 옮긴 것입니다.
*(plan/w2/기록.md 를 찾지 못했습니다.)*
8주 전체 일정은 [`plan/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/README.md) 에 있습니다.
---
## 4. 지금까지 만난 문제 전부
오늘 일이 막히면 **여기 이미 적혀 있는 문제인지 먼저 보세요.** 같은 문제를
두 번 파느라 하루를 날리는 게 제일 아깝습니다. 새 문제면 아래 7번
`막힌 것 · 문제` 칸에 적어 주시면 제가 문제점 폴더로 옮깁니다.
> 출처 — [`plan/문제점/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) 를 그대로 옮긴 것입니다.
### 문제점
일하다 만난 문제를 **그때그때 적어 두는 폴더**입니다. 고쳤든 못 고쳤든 남깁니다.
왜 남기나 — 문제를 고치고 나면 그런 문제가 있었다는 사실 자체를 잊습니다.
8주 뒤 발표에서 "무엇을 어떻게 알아냈는가"를 말할 수 있는 팀과 "잘 됩니다"만
말하는 팀은 여기서 갈립니다. 심사 피드백도 **안 되는 걸 공개하는 것**을 우리 강점으로
꼽았습니다.
#### 원칙 — 없는 문제를 지어내지 않는다
**실제로 겪은 것만 적습니다.** 그날 아무 문제도 없었으면 아무것도 적지 않습니다.
기록을 채우려고 "개선하면 좋을 점" 같은 것을 문제로 올리지 않습니다.
지어낸 문제가 한 건이라도 섞이면 나머지 기록도 같이 못 믿게 됩니다.
빈 주가 있는 게 정상이고, 그게 이 폴더가 진짜라는 증거입니다.
문제인 것 — 실제로 틀린 결과가 나왔다, 하려던 게 안 됐다, 시간이 계획보다 훨씬 더 들었다,
연락이나 자료가 없어서 막혔다.
문제가 아닌 것 — 아직 안 만든 기능, 다음에 하기로 한 일, 잘 됐는데 더 잘하고 싶은 것.
그런 건 [발전 계획](https://github.com/ritual1127/naverogq/blob/main/docs/roadmap.md)이나 그날 계획에 적습니다.
#### 현황
| 번호 | 문제 | 상태 | 처음 본 날 | 영향 |
|---|---|---|---|---|
| [P01](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md) | 단위가 mm가 아닌 도면이 백지로 렌더된다 | ✅ 해결 | 2026-08-22 | AI 채점 30점 전부 |
| [P02](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md) | 같은 도면인데 AI 점수가 매번 달라진다 | 🔴 열림 | 2026-08-22 | AI 채점 30점 |
| [P03](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P03-%EC%A7%80%EC%A0%81%EC%A0%9C%EB%AA%A9%ED%9D%94%EB%93%A4%EB%A6%BC.md) | 같은 판정인데 지적 제목이 매번 다르게 적힌다 | ✅ 해결 | 2026-08-22 | 수험생이 보는 화면 · 재검사 비교 |
| [P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) | 측정에 쓰는 표본이 실제 시험 도면이 아니다 | 🔴 열림 | 2026-08-22 | 정확도 · 편차 측정 전부 |
| [P05](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P05-%EB%A9%98%ED%86%A0%EB%B0%B0%EC%A0%95.md) | 제출처를 잘못 알았다 — 안내 메일을 이틀 늦게 봤다 | ✅ 해결 | 2026-08-22 | 산출물 제출 경로 전체 |
| [P06](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md) | 워크샵 1주차 산출물을 통째로 놓쳤다 | ✅ 해결 | 2026-08-22 | W1 산출물 · 진행 방식 |
| [P07](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P07-%EC%A7%80%ED%91%9C0.md) | 북극성 지표가 0이고 셀 방법이 없다 | 🔴 열림 | 2026-08-22 | W5 · W6 산출물, 최종 KPI 리포트 |
| [P08](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P08-%EB%B2%88%EC%97%AD429.md) | 배포 서버에서 번역 호출만 429로 계속 막힌다 | ✅ 해결 | 2026-08-23 | 화면에 뜨는 영어·일본어·중국어 번역 |
| [P09](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md) | 도면 0장인데 정확도 100%가 나왔다 | ✅ 해결 | 2026-08-26 | 실제 도면 정확도 측정 전체 |
| [P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) | 인터뷰가 이틀째 0건이고 그 뒤 작업이 전부 막혔다 | 🔴 열림 | 2026-08-27 | W2 산출물 · 실제 도면 확보 |
| [P11](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) | 다른 CAD 가 쓴 DXF 하나에서 통째로 터졌다 | ✅ 해결 | 2026-08-27 | 실제 도면 분석 전부 |
**열린 문제 4건 · 해결 7건**
#### 적는 법
1. **새 문제**를 만나면 파일 하나를 만듭니다. 이름은 `P08-짧은이름.md`처럼 번호를 이어 붙입니다.
2. 머리표를 채웁니다 — 상태 · 처음 본 날 · 무엇에 영향을 주나 · 맡은 사람.
3. 본문은 **증상 → 원인 → 조치 → 확인** 순서로 씁니다. 원인을 모르면 모른다고 적습니다.
추측을 원인 칸에 적으면 나중에 그게 사실인 줄 알게 됩니다.
4. **이미 있는 문제가 진전되면 그 파일 맨 아래 `## 기록`에 날짜와 한 줄을 더합니다.**
새 파일을 만들지 않습니다.
5. 고쳤으면 상태를 `해결`로 바꾸고 **확인 절에 무엇으로 확인했는지 숫자나 명령으로** 남깁니다.
"고쳤습니다"만 적힌 건 확인이 아닙니다.
6. 위 현황 표도 같이 고칩니다.
#### 규칙
- **못 고친 문제를 지우지 않습니다.** 열린 채로 두는 게 정상입니다.
- 처음 짐작이 틀렸어도 지우지 않습니다. 무엇을 잘못 짚었는지가 기록입니다.
([P02](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md)가 그런 경우입니다. 백지 때문이라고 봤는데 아니었습니다.)
- 사람 문제(연락이 안 온다 같은 것)도 적습니다. 코드 문제만 문제가 아닙니다.
- **`/today-plan` 을 돌릴 때마다 그날 만난 문제를 여기에 적습니다.**
**그날 아무 문제도 없었으면 아무것도 안 적습니다.**
> 출처 — [`plan/문제점/P01-백지렌더.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md) 를 그대로 옮긴 것입니다.
### P01 · 단위가 mm가 아닌 도면이 백지로 렌더된다
| | |
|---|---|
| 상태 | **해결** (2026-08-22) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | AI 채점 30점 전부 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
선이 6,373개 들어 있는 `sample_075em07z.dwg`를 AI에게 보내면 다섯 번 모두
"투상도가 하나도 없다"고 답했다. AI에게 실제로 보내는 그림을 파일로 저장해 보니
**201바이트짜리 빈 그림**이었다. AI는 도면이 아니라 백지를 채점하고 있었다.
`sample_autocad.dxf`도 같은 상태였다. 이 도면이 다섯 번 모두 18점으로 편차 0을 보인 것은
채점이 안정적이어서가 아니라 **매번 같은 백지를 봤기 때문**이었다.
#### 원인
`ai_review.render_png`가 도면 범위(`$EXTMIN`~`$EXTMAX`)를 그대로 밀리미터로 보고
페이지를 만들었다. 이 파일은 단위가 미터라 범위가 0.12 x 0.12로 잡히는데, 여기에
사방 5mm 여백을 붙이면 페이지가 거의 전부 여백이 되고 그림은 1픽셀 밑으로 짜부라진다.
A3(420 x 297)로 그려진 도면은 멀쩡히 나왔기 때문에 여태 드러나지 않았다.
#### 조치
도면 단위를 밀리미터로 환산해서 그리도록 고쳤다. 단위 판별은 이미 있던
`dwg.detect_mm_per_unit`을 그대로 썼다. 새로 만들지 않았다.
#### 확인
| 도면 | 고치기 전 | 고친 뒤 |
|---|---|---|
| `sample_075em07z.dwg` | 201바이트 | 283,550바이트 |
| `sample_autocad.dxf` | 201바이트 | 283,550바이트 |
| `sample_plate.dxf` | 5,696바이트 (정상) | 5,889바이트 (그대로 정상) |
그림 파일을 실제로 열어서 도면이 보이는 것까지 확인했다. 자동 테스트 15개 통과.
#### 배운 것
**중간 결과물을 눈으로 본 적이 없었다는 게 진짜 문제다.** AI가 뱉은 답이 그럴듯해서
아무도 그림을 열어 볼 생각을 안 했다. 정확도 100%라는 숫자가 이 사실을 가리고 있었다.
#### 기록
- 2026-08-22 — 편차를 재다 발견. 같은 날 고치고 확인.
> 출처 — [`plan/문제점/P02-AI점수편차.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md) 를 그대로 옮긴 것입니다.
### P02 · 같은 도면인데 AI 점수가 매번 달라진다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | AI 채점 30점 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
같은 도면을 다섯 번 채점하면 점수가 흔들린다.
| 도면 | 5회 점수 | 폭 | 표준편차 |
|---|---|---|---|
| `sample_plate.dxf` | 18, 18, 20, 20, 20 | 2점 | 1.10점 |
| `sample_075em07z.dwg` (렌더 고치기 전) | 0, 18, 18, 18, 18 | 18점 | 8.05점 |
| `sample_075em07z.dwg` (렌더 고친 뒤) | 0, 0, 5, 9, 18 | 18점 | 7.50점 |
#### 지금까지 안 것
- [P01](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md)을 고치기 전에는 폭 18점이 **백지를 보고 몇 점 깎을지 고민한 결과**라고 봤다.
- 고친 뒤 다시 재도 **폭은 18점 그대로**였고 중앙값만 18점에서 5점으로 내려갔다.
백지일 때는 지적이 1건으로 일정했는데 진짜 그림을 보자 **지적 개수부터 1~3건으로 흔들린다.**
- 즉 편차의 원인은 렌더가 아니라 **프롬프트와 모델 쪽**이었다. 처음 짐작이 틀렸다.
- 한 지적이 30점을 통째로 깎는 건 `MAX_SINGLE_DEDUCT = 12`로 막았지만,
지적이 세 개 나오면 여전히 0점이 된다.
#### 다음에 해 볼 것
- [ ] **실제 수험생 도면으로 다시 재기.** 지금 표본은 기계 부품 도면이 아니다([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)).
- [ ] 규칙으로 옮길 수 있는 부분 분리 — 뷰 개수와 제3각법 배치는 좌표로 계산되는 값이다.
- [ ] 여러 번 물어 중앙값 쓰기. 정확해지지만 호출이 늘어 무료 할당량이 빨리 마른다.
- [ ] 지적 개수 자체를 프롬프트에서 제한해 보기.
#### 기록
- 2026-08-22 — 처음 측정. 도면 3장 x 5회. 폭 최대 18점.
- 2026-08-22 — 렌더 수정 후 재측정. 편차 안 줄어듦. 원인이 렌더가 아니었음이 드러남.
> 출처 — [`plan/문제점/P03-지적제목흔들림.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P03-%EC%A7%80%EC%A0%81%EC%A0%9C%EB%AA%A9%ED%9D%94%EB%93%A4%EB%A6%BC.md) 를 그대로 옮긴 것입니다.
### P03 · 같은 판정인데 지적 제목이 매번 다르게 적힌다
| | |
|---|---|
| 상태 | **해결** (2026-08-25) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 수험생이 보는 화면 · 재검사 비교 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
같은 판정에 대해 제목이 매번 달라진다.
- "투상도 전체 누락"
- "투상도 완전 누락"
- "투상도 전체 누락 및 형상 표현 불가"
- "기계 부품 투상도 미작성 및 투상 뷰 부재"
뜻은 같지만 **수험생에게는 다른 지적으로 보인다.**
#### 왜 문제인가
CADLens의 핵심 흐름은 `검사 -> 고치기 -> 재검사`다. 재검사에서 지난번과 비교해 주는데,
제목이 매번 달라지면 **비교가 성립하지 않는다.** 북극성 지표(주간 재검사 사용자 수)와 직결된다.
#### 조치 (2026-08-25)
**제목을 AI에게서 뺐다.** AI는 이제 제목을 쓰지 않고 `kind` 를 여섯 개 중에서 고르기만 한다.
제목은 `ai_review.PROJECTION_KINDS` 에 언어별로 박혀 있고 코드가 붙인다.
| kind | 제목 |
|---|---|
| `FRONT_VIEW` | 정면도 선택 부적절 |
| `VIEW_MISSING` | 투상도 누락 |
| `VIEW_EXTRA` | 불필요한 투상도 |
| `THIRD_ANGLE` | 제3각법 배치 위반 |
| `SECTION_DETAIL` | 단면도·상세도 표기 미흡 |
| `LAYOUT` | 투상도 배치 불균형 |
- 응답 스키마에서 `title` 을 빼고 `kind` enum 을 넣었다. 모델이 목록 밖의 값을 못 준다.
- 번역도 제목을 받지 않는다. en·ja·zh 제목이 표에 이미 있어서 번역할 것이 하나 줄었다.
- **지적 코드는 `AI_PROJECTION` 하나로 그대로 뒀다.** 화면(`static/index.html`)의 묶음·라벨 표가
이 코드를 키로 쓰고 있어서, 코드를 쪼개면 그 표까지 다 고쳐야 한다. 재검사 비교에 필요한 것은
제목이 고정되는 것이라 여기서 멈췄다.
- **옛 캐시(`aicache`)에는 `kind` 가 없다.** 그때 화면에 뜬 제목을 그대로 두게 했다.
지난 판의 제목을 바꿔 버리면 그 판으로 잰 편차 기록과 대조가 안 된다.
같이 고친 것 — **`verdict` 가 "FAIL" 한 낱말로 오는 일이 있었다.** 지시문에 verdict 형식이
아예 없었다. 08-25 배포 서버 확인 때 `sample_plate.dxf` 는 한 문장, `sample_autocad.dxf` 는
`FAIL` 이 왔다. 지시문에 "한국어 한 문장으로 쓰고 낱말만 적지 말라"를 넣었다.
#### 확인
- `test_ai_title_is_fixed_by_kind` — 같은 `kind` 에 서로 다른 문장을 넣어도 제목이
`투상도 누락` / `Missing views` 로 같은지, 스키마에 `title` 이 없고 enum 이 여섯 개인지,
`kind` 없는 옛 캐시가 그대로 보존되는지. `python -m pytest test_rules.py -q` → **17개 통과**.
- 로컬에서 실제 호출 1회 — `samples/sample_plate.dxf` 결과가
제목 `투상도 누락`, en `Missing views`, ja `投影図の欠落`, zh `视图缺失`.
verdict 도 한 문장으로 왔다.
- **배포 서버에서도 확인했다** (2026-08-25, 배포 뒤). 예제 두 장을 `POST /api/analyze-sample`
로 돌렸고 나온 제목이 전부 표 안의 것이었다.
| 도면 | 나온 제목 | 번역 |
|---|---|---|
| `sample_plate.dxf` | 투상도 누락 · 투상도 배치 불균형 | en·ja·zh 전부 |
| `sample_autocad.dxf` | 투상도 누락 · 정면도 선택 부적절 · 투상도 배치 불균형 | en·ja·zh 전부, 후속 답변 ko 포함 4개 |
`verdict` 도 둘 다 한 문장으로 왔다(13낱말 · 16낱말). 고치기 전 `sample_autocad.dxf` 는
`FAIL` 한 낱말이었다.
#### 기록
- 2026-08-22 — 편차 측정 중에 눈에 띔.
- 2026-08-25 — 제목을 `kind` enum 으로 고정하고 코드가 붙이게 바꿈. 로컬 확인 완료, 배포 확인 남음. verdict 가 낱말로 오던 것도 같이 막음.
- 2026-08-25 — 배포 뒤 예제 두 장으로 재확인. 제목 다섯 건이 모두 표 안의 것이고 verdict 도 한 문장이었다. 상태를 해결로 바꿈.
> 출처 — [`plan/문제점/P04-표본도면.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) 를 그대로 옮긴 것입니다.
### P04 · 측정에 쓰는 표본이 실제 시험 도면이 아니다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 정확도 · 편차 측정 전부 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
- 정확도 100%는 **우리가 직접 만든 합성 도면 18장** 기준이다. 도면을 만든 사람과
검사 규칙을 만든 사람이 같다.
- 편차 측정에 쓴 `sample_075em07z.dwg`는 렌더를 고치고 그림을 열어 보니
**기계 부품 도면이 아니라 무늬가 반복되는 도면**이었다. "투상도가 없다"는 판정 자체가
틀리지 않았을 수 있다.
**표본이 잘못되면 측정도 잘못된다.** 지금 우리가 가진 숫자는 전부 이 위에 올라가 있다.
#### 왜 급한가
심사 피드백 1번이 이것이다. 발표(W7)에서 "실제 도면 정확도는?"이라는 질문이 반드시 나온다.
합성 도면 100%만 말하면 그 자리에서 반박당한다.
#### 다음에 해 볼 것
- [ ] W2 인터뷰(08-26 ~ 08-28) 때 **이름 지운 실제 도면 받기** — 받을 자리와 라벨 양식은 [`실제도면/`](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/README.md)에 만들어 뒀다
- [ ] 사람이 판단한 정답 라벨 붙이기. CADLens 결과를 정답으로 쓰면 100%가 나오고 아무 의미가 없다
- [ ] `python bench.py labels.json`으로 다시 재고 `docs/accuracy.md` 표를 실제 도면 기준으로 교체
- [ ] 합성 도면과 실제 도면의 차이를 그대로 공개
#### 기록
- 2026-08-22 — 렌더를 고치고 그림을 열어 보다 표본이 기계 도면이 아님을 알게 됨.
- 2026-08-25 — 도면 받을 폴더와 `labels.json` 양식, 코드 24개 표를 만들었다. 도면 파일 자체는 `.gitignore`로 막아 저장소에 올라가지 않는다. 아직 받은 도면은 0장.
- 2026-08-25 — P03 을 배포에서 확인하다 `sample_autocad.dxf` 의 AI 총평이 "기계 부품 도면이 아닌 기하학적 패턴 도안이 제출되어"로 왔다. 08-22 에 눈으로 보고 적어 둔 것(표본이 기계 도면이 아니다)을 모델도 같게 말한다. 표본을 바꿔야 한다는 근거가 하나 늘었다.
- 2026-08-26 — 빈 라벨로 돌려 보다 0장에 100%가 찍히는 것을 발견해 막았다([P09](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md)). 이제 도면 0장이면 `FAIL` 이 뜬다. 받은 도면은 여전히 0장.
- 2026-08-27 — 오늘이 라벨 붙이기로 계획된 날이었는데 **도면이 0장이라 시작 못 했다.** `실제도면/` 에 `.dxf` 없음, `labels.json` 은 `{}` 그대로. 도면을 받는 자리가 인터뷰인데 인터뷰가 이틀째 0건이라 이 문제가 [P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) 에 막혀 있다. 폴더·양식·코드 표·측정 명령은 다 준비돼 있고 **없는 건 도면 하나뿐이다.** 같은 날 [라벨 작업지](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/%EB%9D%BC%EB%B2%A8%EC%9E%91%EC%97%85%EC%A7%80.md)를 만들어, 도면이 오면 사람이 바로 앉아서 붙일 수 있게 해 뒀다 — 코드 23개마다 도면에서 볼 것과 KS 근거, 한 장 체크표. `exam.py` 임계값은 일부러 넣지 않았다. 그걸 보고 판정하면 CADLens 결과를 옮겨 적는 것과 같아져 이 문제가 그대로 남는다.
- 2026-08-27 — **인터넷에서 실기 도면을 받아 표본을 채우는 길을 찾아봤고, 막혔다.** 큐넷 [공개문제](https://www.q-net.or.kr/cst006.do?id=cst00602&gSite=Q&brdId=Q006&code=1204&artlSeq=5198906)는 **PDF 한 장**이고 DXF·DWG 가 없다. 그나마도 부품 배치도(문제)라서 우리가 검사하는 답안 부품도가 아니다. 연습용 DWG 는 학원 카페·유료 강의 안에 있고, 블로그에 도는 것은 한국산업인력공단 저작물의 무단 재배포다. GitHub 코드 검색도 0건. **결론 — 인터뷰로 받는 것 말고 다른 길이 없다([P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md)).** 다만 그 과정에서 남이 만든 DXF 를 처음 넣어 보다 [P11](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) 을 찾았다.
- 2026-08-27 (밤) — 검사를 3번씩 돌려 결과가 매번 같은지 보다가 **`samples/sample_autocad.dxf` 와 `samples/sample_075em07z.dwg` 의 결과 해시가 완전히 같은 것**을 발견했다. `dwg.analyze` 가 뽑은 값을 하나씩 대조하니 파일 경로와 이름만 다르고 **나머지가 전부 같다** — 크기도 367,087 바이트와 1,443,897 바이트로 DWG 를 DXF 로 푼 비율이다. **같은 도면이다.** `samples/` 에 파일은 3개지만 **도면은 2장**이고, 그중 한 장은 08-22 에 무늬 도면으로 확인된 것이다. 즉 실제로 남은 기계 부품 도면은 **우리가 만든 `sample_plate.dxf` 한 장뿐**이다. 표본이 생각보다 더 얇았다.
> 출처 — [`plan/문제점/P05-멘토배정.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P05-%EB%A9%98%ED%86%A0%EB%B0%B0%EC%A0%95.md) 를 그대로 옮긴 것입니다.
### P05 · 전담 멘토가 배정되지 않았고 주간 안내 메일도 안 온다
| | |
|---|---|
| 상태 | **✅ 해결** (2026-08-24) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 산출물 제출 경로 전체 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
- 본선 선발 안내(08-17)에 "매주 화요일 아침에 그 주차 강의 링크를 메일로 보내드립니다"라고
적혀 있는데 **08-18 첫 주 메일이 안 왔다.**
- "1:1 멘토링 세션" 이야기가 있는데 **전담 멘토가 누구인지 모른다.**
- jangsin1004@gmail.com 으로 온 운영진 메일은 08-17이 마지막이다.
#### 왜 문제인가
산출물 제출처가 "그 주 1:1 멘토링 세션 전까지 전담 멘토에게 공유"다.
**멘토를 모르면 제출 자체를 못 한다.** W1 산출물부터 막혀 있다.
#### 원인
**메일이 안 온 게 아니라 우리가 안 봤다.** 08-23 09:20 에 운영진 안내 메일이 도착해 있었는데,
08-22 에 한 번 확인하고 나서 08-24 까지 메일함을 다시 열지 않았다.
"08-17 이후 메일 없음"이라는 08-22 의 기록을 그대로 사실로 두고 이틀을 보냈다.
전제도 틀렸다. **1:1 멘토링은 모든 팀에게 있는 게 아니라 2차 심사를 통과한 5팀만** 받는다.
"1:1 멘토링 세션 전까지 전담 멘토에게 공유"라는 워크샵 문구를 우리 팀에도 해당한다고 읽었다.
#### 조치
- 제출처를 팀 페이지로 바로잡고 [제출 절차](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EC%A0%9C%EC%B6%9C%EC%A0%88%EC%B0%A8.md)에 단계를 적었다.
- [팀 목표 1장](https://github.com/ritual1127/naverogq/blob/main/plan/w1/%ED%8C%80%EB%AA%A9%ED%91%9C.md)의 주간 리듬에서 **있지도 않은 목요일 1:1 멘토링 칸을 뺐다.** PDF도 다시 만들었다.
- W1~W8 주차 계획 여덟 개에 다 적혀 있던 "1:1 멘토링 세션 전까지 전담 멘토에게 공유" 문구를 팀 페이지 제출로 고쳤다.
- **주간 리듬에 메일함 확인을 넣지 않았다.** 대신 화요일 회의 때 그 주 워크샵 페이지와 메일함을 같이 연다([P06](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md)과 같은 재발 방지).
#### 확인
- 08-23 09:20 수신 메일 `[전국마이스터고 스타프로젝트] 산출물은 우리 팀 페이지에 올려주세요 — 제출처·피드백 안내`
- 제출처 https://meister.itshin.com/네이놈 → `주차별 산출물` → `N주차 제출`
- 전담 멘토 NAVER OGQ마켓 신철호 대표 · 데모데이 ① 09-09 17:00~20:00 · ② 10-07 17:00~17:30
- **아직 안 올렸다.** 구글 로그인이 필요해 사람이 해야 한다. 올린 뒤 이 절에 날짜를 적는다.
#### 기록
- 2026-08-22 — 메일함을 뒤져 확인. 08-17 이후 운영진 메일 없음.
- 2026-08-24 — 문의 메일 초안을 만들다가 메일함을 다시 봤고, **08-23 아침에 안내 메일이 이미 와 있었다.**
제출처는 팀 페이지, 전담 멘토는 신철호 대표, 1:1 멘토링은 5팀 전용. 문의할 것이 남지 않아 초안을 버리고
[제출 절차](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EC%A0%9C%EC%B6%9C%EC%A0%88%EC%B0%A8.md)로 바꿔 적었다. **막힌 줄 알았던 제출 경로는 처음부터 열려 있었다.**
이 문제를 해결로 닫는다. 남은 것은 사람이 로그인해서 올리는 일뿐이다.
> 출처 — [`plan/문제점/P06-워크샵놓침.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md) 를 그대로 옮긴 것입니다.
### P06 · 워크샵 1주차 산출물을 통째로 놓쳤다
| | |
|---|---|
| 상태 | **해결** (2026-08-22) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | W1 산출물 · 진행 방식 |
| 맡은 사람 | 전원 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
W1(08-18 ~ 08-24) 산출물인 팀 목표 1장을 08-22까지 아무도 손대지 않았다.
미션 문장 · 북극성 지표 · 역할 분담 · 팀 규칙 · 주간 리듬 다섯 항목 전부였다.
#### 원인
본선 발표 다음 날이라 결과 메일만 보고 **같은 날 워크샵 강의가 열린 걸 몰랐다.**
강의는 08-04에 이미 전체 공개돼 있었고 안내 메일도 왔는데 안 읽었다.
계획을 심사 피드백만 보고 짜서 워크샵 산출물이 계획에 아예 없었다.
#### 조치
- 08-22에 팀 목표 1장을 몰아서 작성.
- `plan/` 규칙에 넣었다 — **계획을 짜기 전에 그 주 워크샵 페이지를 먼저 연다.**
- 주차 폴더마다 그 주 산출물을 미리 적어 두었다(W1 ~ W8 전부).
#### 확인
`plan/w1` ~ `plan/w8` 각 README에 그 주 산출물이 적혀 있다.
08-18 ~ 08-21 계획 파일의 `❌`는 지우지 않는다. 최종 발표에서 "8주간 배운 것"으로 쓸 수 있다.
#### 기록
- 2026-08-22 — 워크샵 1주차 페이지를 처음 열어 보고 알게 됨. 같은 날 산출물 작성.
- 2026-08-25 — 미리 열기는 지켰지만 **요약이 원문 전부가 아니었다.** 08-24에 옮겨 적은 W2 요약에 강의가 반드시 넣으라고 한 마지막 질문("그거 해결하려고 돈이나 시간 써본 적 있어요?")이 빠져서, 08-25 계획 3번에 다른 질문이 마지막으로 적혔다. 08-25에 원문을 다시 읽고 질문지와 [W2 README](https://github.com/ritual1127/naverogq/blob/main/plan/w2/README.md)를 고쳤다. 강한 신호 기준도 "스스로 해결하려 시도"가 아니라 "이미 시간·돈을 씀"으로 더 셌다.
> 출처 — [`plan/문제점/P07-지표0.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P07-%EC%A7%80%ED%91%9C0.md) 를 그대로 옮긴 것입니다.
### P07 · 북극성 지표가 0이고 셀 방법이 없다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | W5 · W6 산출물, 최종 KPI 리포트 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
북극성 지표는 **주간 재검사 사용자 수**인데 지금 값이 0명이다. 사람이 안 써서가 아니라
**세는 기능 자체가 없다.** `docs/impact.md`에도 "아직 사용자가 몇 명인지 세지 않고 있습니다"라고
적어 두었다.
#### 왜 급한가
- W5(09-15 ~ 21) 산출물에 "사용자 기록 — 몇 명이 써 봤고 몇 명이 핵심 행동을 끝냈나"가 있다.
- W6(09-22 ~ 28) 산출물이 통째로 지표다 — 계측 이벤트 · 퍼널 · 리텐션 커브 · 북극성 지표 현황.
- 계측을 09-05에 붙이기로 계획했는데 **그날 못 붙이면 W5 · W6에 낼 숫자가 없다.**
#### 조건
이용자 대부분이 미성년 수험생이다. 개인을 알아볼 수 있는 것은 남기지 않는다.
무엇을 세고 무엇을 안 세는지 `docs/policy.md`에 적기 전에는 배포하지 않는다.
#### 다음에 해 볼 것
- [ ] 09-05 — 이벤트 4가지(방문 · 시작 · 완료 · 재검사) 심기
- [ ] 09-12 — 배포 서버에서 실제로 쌓이는지 확인
- [ ] 시간이 모자라면 **재검사 하나만** 붙인다. 그게 북극성 지표다
#### 기록
- 2026-08-22 — 팀 목표 1장을 쓰면서 현재 값이 0이라는 걸 확인.
> 출처 — [`plan/문제점/P08-번역429.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P08-%EB%B2%88%EC%97%AD429.md) 를 그대로 옮긴 것입니다.
### P08 · 배포 서버에서 번역 호출만 429로 계속 막힌다
| | |
|---|---|
| 상태 | **해결** (2026-08-25) |
| 처음 본 날 | 2026-08-23 |
| 무엇에 영향을 주나 | 화면에 뜨는 영어·일본어·중국어 번역 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
배포 서버에서 도면을 검사하면 채점 결과와 한국어 후속 답변은 나오는데
**세 언어 번역만 계속 비어 있었다.** 로그에 `[ai] 번역 실패` 가 429(할당량 초과)로
찍혔다. 화면은 번역 대신 안내 문구로 넘어가므로 겉보기에는 조용히 실패한다.
#### 원인
도면 한 장을 검사하면 AI를 **세 번** 부른다.
1. 채점 (`JUDGE_SYSTEM`)
2. 후속 답변 (`FOLLOWUP_SYSTEM`)
3. 번역 (`TRANSLATE_SYSTEM`)
무료 할당량이 세 배로 빨리 마르고, 순서상 **마지막인 번역이 먼저 굶는다.**
1·2번이 성공한 뒤라 채점은 멀쩡해 보이고 번역만 사라진다.
#### 조치
후속 답변과 번역을 **한 호출로 합쳤다**(`_enrich()`). 둘 다 채점 결과만 있으면
만들 수 있어서 따로 부를 이유가 없었다. 도면 한 장당 호출이 3회에서 2회로 줄었다.
`TRANSLATE_SYSTEM`·`TRANSLATE_SCHEMA`·`_add_followups`·`_translate` 는 지웠다.
합치면서 같이 고친 것 — 지시문으로 "조·항·장 번호를 쓰지 말라"고 막아도 모델이
`KS B 0001 제3장` 처럼 지어내는 일이 있었다. 받은 뒤 `_drop_clause_numbers()` 로
걷어낸다. 확인할 수 없는 조문 번호를 수험생이 근거로 믿게 되면 안 된다.
#### 확인
- 자동 테스트 16개 통과. `_drop_clause_numbers` 검사를 하나 새로 넣었다
(`test_drop_clause_numbers` — 한국어 `제3장`, 영어 `Section 4`, 일본어 `第3章`을
걷어내고 규격 이름과 치수 숫자는 그대로 두는지).
- **2026-08-25 배포 서버에서 확인했다.** https://naverogq.onrender.com 에 예제 두 장을
`POST /api/analyze-sample` 로 돌렸고 둘 다 200, 번역이 세 언어 모두 채워져 왔다.
| 도면 | HTTP | `ai_verdict_i18n` | AI 지적의 `followups` |
|---|---|---|---|
| `sample_plate.dxf` | 200 | en · ja · zh | ko · en · ja · zh |
| `sample_autocad.dxf` | 200 | en · ja · zh | ko · en · ja · zh |
모델은 `gemini-3.6-flash`. 두 장을 쓴 이유는 캐시 때문이다. 한 장만 보면 예전에
성공한 결과가 `aicache`에서 나온 것인지 구분이 안 된다. `aicache/`는 저장소에
올라가 있지 않아 배포 이미지에는 없고, 서버 캐시는 도면 그림 바이트로 키를 잡으므로
다른 도면 두 장이 모두 번역까지 채워졌다면 실제로 호출이 성공한 것이다.
#### 기록
- 2026-08-23 — 호출을 2회로 합치고 조문 번호 후처리를 넣었다. 배포 재확인은 남았다.
- 2026-08-25 — 배포 서버에서 예제 두 장으로 재확인. 429 없이 세 언어가 다 왔다. 상태를 해결로 바꿈.
> 출처 — [`plan/문제점/P09-빈측정100.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md) 를 그대로 옮긴 것입니다.
### P09 · 도면 0장인데 정확도 100%가 나왔다
| | |
|---|---|
| 상태 | **해결** (2026-08-26) |
| 처음 본 날 | 2026-08-26 |
| 무엇에 영향을 주나 | 실제 도면 정확도 측정 전체 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
08-26 준비물 점검으로 어제 만든 `실제도면/` 폴더가 실제로 쓸 수 있는지 보려고
아직 비어 있는 라벨 파일로 측정을 돌렸다.
```
$ python bench.py 실제도면/labels.json
| 시험 도면 | 잡아야 할 지적 | 결과 |
|---|---|---|
- 기준 도면 0장 중 완전 일치 0장
- 검출률(recall) 100.0% — 실제 결함 0건 중 0건 검출
- 정확도(precision) 100.0% — 지적 0건 중 0건이 실제 결함
```
**도면이 한 장도 없는데 100% / 100% 가 나오고 종료 코드도 0이었다.**
`--check` 를 붙여도 통과한다.
라벨에 이름만 적고 도면 파일이 없을 때도 마찬가지였다. 그 장은 표에
`분석 실패` 로 찍히지만 요약 숫자는 그 장을 조용히 빼고 계산하고, 역시 0으로 끝난다.
#### 원인
`run()` 의 마지막 두 줄이다.
```python
recall = tp / (tp + fn) if tp + fn else 1.0
precision = tp / (tp + fp) if tp + fp else 1.0
```
0으로 나누는 것을 막으려고 분모가 0이면 1.0 을 넣었다. 합성 도면 18장으로만 돌리던
동안에는 분모가 0이 될 일이 없어서 드러나지 않았다. 실제 도면을 받기 시작하면
**"아직 아무것도 없다"와 "다 맞혔다"가 같은 숫자로 나온다.**
#### 조치
`bench.py` 세 군데.
1. 라벨에 도면이 한 장도 없으면 리포트를 찍지 않고 종료 코드 1로 끝낸다.
0장으로는 잴 수 있는 것이 없다.
2. 요약에 **분석 실패 장수**를 한 줄로 적고, 못 연 장은 검출률·정확도 계산에서 **실제로 뺀다**.
(처음에는 "뺀 것이다"라고 적어 놓고 빼지 않아 파일 이름을 틀린 것이 검출률이 낮은 것처럼
보였다. 08-26 검수에서 찾아 고쳤다.) 분석된 도면이 0장이면 퍼센트를 아예 찍지 않는다.
3. 열지 못한 도면이 한 장이라도 있으면 `--check` 없이도 종료 코드 1로 끝낸다.
파일 이름이 틀렸거나 파일이 없는 상태에서 나온 정확도는 쓰면 안 된다.
#### 확인
| 무엇 | 결과 |
|---|---|
| `python bench.py 실제도면/labels.json` (0장) | `FAIL: … 도면이 한 장도 없다` · 종료 코드 1 |
| 없는 파일 이름 한 장짜리 라벨 | 표에 `분석 실패`, 요약에 `기준 도면 1장 중 분석 0장` · `분석 실패 1장` · `분석된 도면이 0장이라 검출률·정확도를 잴 수 없다`, 종료 코드 1 |
| `python bench.py --check` (합성 18장) | 18장 중 분석 18장 · 완전 일치 18장 · 100% / 100% · 종료 코드 0 (그대로) |
| `python -m pytest test_rules.py -q` | 17개 통과 |
내일(08-27) 김승준이 받은 도면에 라벨을 붙이고 이 명령을 돌린다. 파일 이름을
잘못 적으면 이제 100% 대신 실패가 뜬다.
#### 기록
- 2026-08-26 — 0장 100% 를 막고 분석 실패 표시를 넣었다.
- 2026-08-26 (검수) — 실패한 장을 **뺀다고 적어 놓고 빼지 않던 것**을 찾았다. 10장 중 한 장의
파일 이름을 틀리면 그 장의 기대 코드가 전부 놓침으로 잡혀 검출률이 90%대로 떨어졌다.
못 연 장을 tp·fn·fp 와 완전 일치에서 빼고, 분석된 장이 0이면 퍼센트를 찍지 않게 했다.
합성 18장은 18/18 · 100%/100% · 종료 0 그대로, 테스트 17개 통과.
> 출처 — [`plan/문제점/P10-인터뷰0건.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) 를 그대로 옮긴 것입니다.
### P10 · 인터뷰가 이틀째 0건이고 그 뒤 작업이 전부 막혔다
| | |
|---|---|
| 상태 | 🔴 **열림** |
| 처음 본 날 | 2026-08-27 |
| 무엇에 영향을 주나 | W2 산출물(인터뷰 5건 · 문제 정의 한 문장) · 실제 도면 확보([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 전원 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
계획대로면 오늘(08-27) 저녁에 인터뷰가 4건 쌓여 있어야 한다. 0건이다.
| 언제 | 계획 | 실제 |
|---|---|---|
| 08-26 (수) | 인터뷰 1 · 2, 도면 2장 받기 | 0건 · 0장 |
| 08-27 (목) | 인터뷰 3 · 4, 라벨 초안 | 0건 · 라벨 시작 못 함 |
22:50 기준으로 확인한 것.
- [`docs/interviews.md`](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md) — 실제 인터뷰 기록 0건. 있는 것은 08-25에 만든 양식과 "실제 아님"이라고 적힌 시험 기입뿐이다.
- [`실제도면/`](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/README.md) — `.dxf` 0장, `labels.json` 은 `{}` 그대로.
- 인터뷰 폼 — `npx wrangler d1 execute cadlens-interview --remote --command "SELECT COUNT(*) FROM answers"` → **0**.
- [인터뷰 대상표](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EC%9D%B8%ED%84%B0%EB%B7%B0%EB%8C%80%EC%83%81%ED%91%9C.md) — 5칸 중 3칸(박주호 · 박신후 · 손선생님)만 찼고 **약속 시간은 다섯 다 비어 있다.** 08-25에 정하기로 한 것이 사흘째 그대로다.
#### 왜 급한가
**막힌 게 인터뷰 하나가 아니다.** 인터뷰 자리에서 도면을 받고, 그 도면에 라벨을 붙여
실제 정확도를 잰다. 첫 칸이 비면 뒤가 전부 선다.
```
인터뷰 → 도면 받기 → 라벨 붙이기 → bench.py → docs/accuracy.md 실제 도면 숫자
0건 0장 못 함 못 함 합성 18장 숫자 그대로
```
[P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)(합성 도면으로만 잰 100%)가 심사 피드백 1번인데, 그걸 푸는
유일한 경로가 이 인터뷰다.
W2 산출물은 **인터뷰 5건 + 문제 정의 한 문장**이고 마감은 08-31(월)이다.
남은 날은 08-28 · 29 · 30 · 31 **4일**이고, 그 안에 5건을 다 해야 한다.
#### 원인
**모른다.** 약속이 안 잡힌 것인지, 잡혔는데 깨진 것인지, 만났는데 기록을 안 올린
것인지 저장소만 봐서는 구분이 안 된다. 셋은 대응이 서로 다르다.
확실한 것 하나 — **대상표의 약속 시간 칸이 08-25부터 사흘 내내 비어 있다.**
시간이 안 정해졌으니 인터뷰가 열릴 자리 자체가 없었다.
또 하나 — **인터뷰 폼을 만들고 주소를 아무 데도 뿌리지 않았다.** 못 만날 때를 대비해
08-26에 세운 https://cadlens-interview.pages.dev 가 0건인 건 폼이 나빠서가 아니라
아무도 주소를 받지 않았기 때문이다. 만드는 것과 돌리는 것은 다른 일이었다.
#### 조치
**뿌릴 글을 써 뒀다** — [`인터뷰폼/뿌릴글.md`](https://github.com/ritual1127/naverogq/blob/main/%EC%9D%B8%ED%84%B0%EB%B7%B0%ED%8F%BC/%EB%BF%8C%EB%A6%B4%EA%B8%80.md). 단톡용 ·
개인 DM용 · 선생님께 보낼 글 셋. 보내기 전 확인할 것(가족·친한 친구·팀원 제외, 한 반에만
뿌리지 않기, 약속 잡힌 사람은 폼 대신 대면)도 같이 적었다. **글이 없어서 못 뿌린 건
이제 아니다.** 보내는 것은 사람 몫이다.
그 밖에는 확인뿐이다.
08-28에 할 것 — 사람 몫이라 여기에 적어만 둔다.
- [ ] 약속 시간부터 정한다. 대상표의 빈 칸 5개를 시간으로 채운다 (장우영)
- [ ] 인터뷰 폼 주소를 반 단톡·기계과 학생들에게 뿌린다 (전원). 글은 [`뿌릴글.md`](https://github.com/ritual1127/naverogq/blob/main/%EC%9D%B8%ED%84%B0%EB%B7%B0%ED%8F%BC/%EB%BF%8C%EB%A6%B4%EA%B8%80.md) 에 있다. 대면이 밀려도 답은 쌓인다
- [ ] 대면 1건이라도 그날 안에 끝내고 그날 안에 기록한다. 다음 날로 넘기면 인용이 요약이 된다
- [ ] 만나는 자리에서 도면을 받는다. 라벨 작업은 도면이 있어야 시작한다 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md))
**5명을 못 채우면 3명이라도 먼저 만난다.** 약속 잡다가 한 주가 끝나는 게 최악이라고
[대상표](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EC%9D%B8%ED%84%B0%EB%B7%B0%EB%8C%80%EC%83%81%ED%91%9C.md)에 이미 적어 뒀는데, 지금 그렇게 되고 있다.
#### 확인
인터뷰 기록이 `docs/interviews.md` 에 들어오고 대상표 상태가 `✅` 로 바뀌면 다시 본다.
5건이 차고 도면이 들어오면 해결로 돌린다.
#### 기록
- 2026-08-27 — 이틀 연속 0건인 것을 08-27 계획을 돌리다 확인하고 열었다. 대면 0건 · 폼 0건 · 도면 0장 · 약속 시간 0개.
- 2026-08-27 (밤) — **폼에 첫 응답 1건이 들어왔다.** 특성화고 기계과 2학년, 기능사 실기 준비 중. 강한 신호 있음(인강 1~3시간). 대면 인터뷰는 여전히 0건이고 W2 산출물 5건은 그대로 0/5 이라 이 문제는 **열린 채로 둔다.** 응답 내용은 [`docs/interviews.md`](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md) 의 폼 응답 절에. 도면은 "찾아보고 알려 줄게" 라 아직 0장이다 — 이 사람이 지금 유일한 도면 후보이므로 **후속 연락이 필요하다.**
> 출처 — [`plan/문제점/P11-남의DXF크래시.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) 를 그대로 옮긴 것입니다.
### P11 · 다른 CAD 가 쓴 DXF 하나에서 통째로 터졌다
| | |
|---|---|
| 상태 | ✅ **해결** (2026-08-27) |
| 처음 본 날 | 2026-08-27 |
| 무엇에 영향을 주나 | 실제 도면 분석 전부 — 업로드·측정·렌더 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
실제 시험 도면을 인터넷에서 구할 수 있는지 찾다가, 남이 만든 DXF 를 하나 넣어 봤다.
[LibreCAD 이슈 #2109](https://github.com/LibreCAD/LibreCAD/issues/2109) 에 붙어 있는
`gdt-test-qcad-pro-trial.zip` 안의 `gdt-R15.dxf` — **QCAD Professional 이 쓴 파일**이다.
```
ValueError: could not convert string to float: '0.0l'
```
분석이 시작도 못 하고 죽었다. 파일 어딘가에 실수 값이 `0.0l` 로 적혀 있다.
숫자 `0` 이 아니라 알파벳 `l` 이 붙어 있다.
**우리가 만든 도면에서는 한 번도 안 났다.** 합성 18장은 `bench.py` 가 `ezdxf` 로
직접 쓴 것이라 언제나 규격에 맞다. 파일을 만드는 쪽과 읽는 쪽이 같은 라이브러리다.
#### 원인
`ezdxf.readfile()` 은 조금이라도 규격에 어긋나면 예외를 던진다. 같은 파일을
`ezdxf.recover.readfile()` 로 열면 **오류 3건을 잡고 1건을 고쳐서 정상으로 연다.**
AutoCAD 계열도 이런 파일을 그냥 연다. 즉 파일이 못 쓸 정도로 망가진 게 아니라
**우리가 너무 엄격한 문으로 읽고 있었다.**
`dwg.py` 안에 `ezdxf.readfile()` 을 직접 부르는 자리가 **네 군데**였다 —
`dxf_has_content` · `recover_orphaned_paper_views` · `facts_from_dxf` · `render_svg`.
앞의 두 개는 예외를 삼키고 `False` 를 돌려주기 때문에 더 나빴다. **터지지도 않고
"내용이 없는 도면"으로 조용히 취급한다.**
#### 조치
네 자리가 다 지나가는 문 하나를 `dwg.readfile()` 로 만들고, 거기서만 복구 읽기로
넘어가게 했다. 호출부마다 `try` 를 붙이지 않았다 — 네 군데에 같은 코드를 넣으면
다음에 다섯 번째 자리가 생길 때 또 빠진다.
```python
def readfile(path):
try:
return ezdxf.readfile(path)
except Exception:
doc, auditor = recover.readfile(path)
print(f"[dwg] 손상된 DXF 를 복구해서 열었습니다 "
f"(오류 {len(auditor.errors)} · 고침 {len(auditor.fixes)}): ...")
return doc
```
복구해서 열었을 때는 **로그에 남긴다.** 조용히 고치면 나중에 이상한 결과가 나왔을 때
파일이 원래 깨져 있었다는 걸 알 방법이 없다.
#### 확인
- `gdt-R15.dxf` — 전에는 `ValueError`. 지금은 `[dwg] 손상된 DXF 를 복구해서 열었습니다
(오류 3 · 고침 1)` 을 찍고 **지적 7건**(fail 1 · error 3 · warn 3)까지 정상으로 나온다.
- 합성 도면 18장 — `python bench.py` **18/18 · 검출률 100.0% · 정확도 100.0%** 그대로.
- `python -m pytest test_rules.py -q` — **18개 통과** (17개에서 하나 늘었다).
- 새 시험 `test_malformed_dxf_recovers` — 정상 DXF 를 만들어 실수 값 하나를 `120.0l` 로
망가뜨린 뒤, `ezdxf.readfile` 은 반드시 터지고 `dwg.readfile` 은 열리고
`dwg.dxf_has_content` 가 **빈 도면으로 오해하지 않는지**까지 본다.
#### 왜 이게 중요한가
[P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) 가 말하는 "우리가 만든 도면으로만 쟀다" 의 실제 값이 이것이다.
실기 도면은 AutoCAD · Inventor · ZWCAD 가 쓴다. **남이 쓴 파일 한 장을 처음 넣어 본
그 자리에서 터졌다.** 인터뷰로 실제 도면을 받기 시작하면 이 부류가 계속 나온다.
#### 기록
- 2026-08-27 — 인터넷에서 실기 연습 도면을 구할 수 있는지 찾다가, 처음 넣어 본 남의 DXF 에서 발견하고 같은 날 고쳤다.
---
## 5. 오늘 맡은 일
> 출처 — [`plan/w2/08-27_목/계획.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-27_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) 를 그대로 옮긴 것입니다.
### 학생 2명 더 인터뷰 · 예상 40분 (2명)
- 가능하면 다른 학년이나 다른 반에서 찾는다. 같은 반만 하면 같은 선생님한테 배운 얘기만 나온다.
- 어제 인터뷰에서 겹친 말이 있으면 **그 부분을 더 캐묻는다.**
**이렇게 되면 끝** — 인터뷰 4건 누적
**흔한 실수** — 어제와 똑같은 질문만 하는 것. 겹친 말은 더 캐물어야 한다
---
## 6. 안대열 님이 8주 동안 맡은 일 전체
오늘 것만 보면 왜 이 일을 하는지 안 보여서 같이 넣었습니다.
> 출처 — [`plan/역할분담/안대열.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EC%95%88%EB%8C%80%EC%97%B4.md) 를 그대로 옮긴 것입니다.
### 안대열
배정 24건. [역할 분담 규칙](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/README.md)
| 날짜 | 주차 | 맡은 일 | 계획 | 달성 | 실제로 한 일 |
|---|---|---|---|---|---|
| 08-23 (일) | W1 | 고친 그림을 저장해 눈으로 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-23_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ✅ | 박지완이 당겨서 함. 그림을 열어 도면이 보이는 것 확인. 무늬 도면이라 표본이 부적절하다는 것도 이때 알았다 |
| 08-24 (월) | W1 | 멘토에게 팀 목표 1장 보내기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | 보낼 필요가 없어졌다. 08-23 안내 메일대로 제출처는 팀 페이지다([제출 절차](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EC%A0%9C%EC%B6%9C%EC%A0%88%EC%B0%A8.md)). 팀 페이지 로그인·업로드로 바뀌었고 아직 안 함 |
| 08-26 (수) | W2 | 도면 파일 받기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-26_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | 사람 몫. `실제도면/` 에 들어온 파일 없음 |
| 08-27 (목) | W2 | 학생 2명 더 인터뷰 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-27_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ❌ | 사람 몫. [`docs/interviews.md`](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md) 에 들어온 인터뷰 0건. 08-28 로 넘김 ([P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md)) |
| 08-31 (월) | W2 | 실제 도면으로 정확도 재 보기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-31_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-03 (목) | W3 | 어디에 어떤 AI를 왜 썼는지 정리 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-03_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-03 (목) | W3 | `vendor/` 라이브러리 라이선스 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-03_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-04 (금) | W3 | 업로드 도면 삭제가 실제로 도는지 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-04_%EA%B8%88/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-06 (일) | W3 | 시연에 쓸 도면 고르기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-06_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-08 (화) | W4 | 소리와 화면 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-08_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-09 (수) | W4 | 영상 제출 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-09_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-12 (토) | W4 | 지금까지 쌓인 값 기록 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-12_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-14 (월) | W4 | 멘토에게 데모데이 피드백과 대응 공유 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-14_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-16 (수) | W5 | 첫날 숫자 기록 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-16_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-18 (금) | W5 | 퍼널에서 가장 크게 빠지는 칸 찾기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-18_%EA%B8%88/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-21 (월) | W5 | 멘토에게 런칭 결과 공유 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-21_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-23 (수) | W6 | 단계별 이탈률 계산 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-23_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-24 (목) | W6 | 1주차에 쓴 사람 중 2주차에 다시 온 비율 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-24_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-26 (토) | W6 | 전후 숫자 나란히 놓기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-26_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-29 (화) | W7 | 대본 뼈대 잡기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w7/09-29_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-01 (목) | W7 | **실제 수험생 도면 기준 정확도를 넣기** | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w7/10-01_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-06 (화) | W8 | 10분 발표 영상 찍기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w8/10-06_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-10 (토) | W8 | README에 다 있는지 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w8/10-10_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-11 (일) | W8 | W8 산출물 제출 21:00 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w8/10-11_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
달성: `⬜` 안 함 · `✅` 함 · `🔺` 반쯤 · `❌` 못 함
남과 바꿨으면 **실제로 한 일** 칸에 "○○와 바꿈"이라고 적습니다.
배정을 어떻게 정했는지, 남과 바꿨을 때 어떻게 적는지는 아래에 있습니다.
> 출처 — [`plan/역할분담/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/README.md) 를 그대로 옮긴 것입니다.
### 역할 분담
누가 언제 무엇을 맡았고 실제로 무엇을 했는지 남기는 폴더입니다.
#### 어떻게 정했나
- 담당자는 **무작위로 배정**합니다. 사람마다 잘하는 것만 계속 맡으면 한 사람만 늘고 나머지는 8주 동안 배우는 게 없습니다.
- 네 명을 섞은 묶음을 반복해 쓰기 때문에 **건수는 고르게** 나뉩니다.
- 회의 · 데모데이 참석 · 합의가 필요한 일은 배정하지 않고 `전원`으로 둡니다.
- 배정받은 사람이 도저히 못 하는 일이면 **그날 안에 바꾸고, 누구와 바꿨는지 이 폴더에 적습니다.** 조용히 남이 대신 하면 기록이 거짓이 됩니다.
- 08-18 ~ 08-22 는 이미 지난 날이라 무작위 배정이 아니라 **실제로 한 사람**을 적었습니다.
#### 사람별 기록
| 사람 | 배정 건수 | 기록 |
|---|---|---|
| 박지완 | 30건 | [박지완.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EB%B0%95%EC%A7%80%EC%99%84.md) |
| 장우영 | 24건 | [장우영.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EC%9E%A5%EC%9A%B0%EC%98%81.md) |
| 안대열 | 24건 | [안대열.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EC%95%88%EB%8C%80%EC%97%B4.md) |
| 김승준 | 24건 | [김승준.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EA%B9%80%EC%8A%B9%EC%A4%80.md) |
| 전원 | 39건 | 회의 · 참석 · 합의 |
#### 주차별 배정
| 주차 | 박지완 | 장우영 | 안대열 | 김승준 | 전원 |
|---|---|---|---|---|---|
| W1 | 8 | 1 | 2 | 2 | 6 |
| W2 | 3 | 4 | 3 | 3 | 7 |
| W3 | 5 | 4 | 4 | 4 | 4 |
| W4 | 2 | 4 | 4 | 3 | 4 |
| W5 | 5 | 3 | 3 | 4 | 2 |
| W6 | 2 | 4 | 3 | 4 | 3 |
| W7 | 3 | 2 | 2 | 2 | 5 |
| W8 | 2 | 2 | 3 | 2 | 8 |
#### 적는 법
1. 그날 일이 끝나면 본인 파일에서 그 줄의 달성 칸을 고칩니다 (`⬜` → `✅` · `🔺` · `❌`).
2. **실제로 한 일** 칸에 무엇을 했는지 한 줄 적습니다. 계획과 달라졌으면 달라진 대로 적습니다.
3. 남과 바꿨으면 두 사람 파일 모두에 적습니다.
4. 못 한 것은 지우지 않습니다. `❌`로 남기고 이유를 적습니다. 다 `✅`인 기록은 아무도 믿지 않습니다.
---
## 7. 한 결과
**여기부터 채워 주세요. 위쪽은 건드리지 않으셔도 됩니다.**
| | |
|---|---|
| 달성 | ⬜ |
| 걸린 시간 | |
달성 칸의 `⬜` 를 `✅` 함 · `🔺` 반쯤 함 · `❌` 못 함 중 하나로 바꿔 주세요.
**다 `✅` 로 채우지 마세요.** 못 한 건 `❌` 입니다. 8주 뒤 심사에서 전부
성공한 기록은 아무도 믿지 않습니다.
### 실제로 한 일
*(계획과 달라졌으면 달라진 대로 적어 주세요. 숫자가 나왔으면 숫자를 적어 주세요.
"메일 보냈다" 보다 "08-24 19:10 에 netclaus@gmail.com 으로 보냈다" 가 낫습니다.)*
### 막힌 것 · 문제
*(없으면 "없음" 이라고 적어 주세요. **지어내지 마세요.** 지어낸 문제가 한 건이라도
섞이면 나머지 기록도 같이 못 믿게 됩니다.
문제인 것 — 틀린 결과가 나왔다, 하려던 게 안 됐다, 계획보다 시간이 훨씬 더 들었다,
연락이나 자료가 없어서 막혔다.
문제가 아닌 것 — 아직 안 만든 기능, 다음에 하기로 한 일, 잘 됐는데 더 잘하고 싶은 것.)*
### 남과 바꿨으면
*(누구와 바꿨는지 적어 주세요. 예: "장우영과 바꿈". 조용히 남이 대신 하면
기록이 거짓이 됩니다. 안 바꿨으면 비워 두세요.)*
받은 도면을 라벨 형식으로 정리 시작
예상 1시간bench.py가 읽는 JSON 형식: {"파일명.dxf": ["EX_DIM_MISSING", "EX_NO_FIT"]}- 지적 코드는
exam.py의 CHECKS에서 확인한다. - 정답 라벨은 사람이 판단해서 적는다. CADLens가 뱉은 결과를 그대로 정답으로 쓰면 측정이 자기 자신을 채점하는 꼴이 된다.
- 헷갈리는 항목은 선생님께 여쭤볼 목록으로 따로 뺀다 — 내일 인터뷰에서 물어본다.
이렇게 되면 끝labels.json이 bench.py에서 읽힌다
흔한 실수CADLens 결과를 그대로 정답으로 적는 것. 그러면 100%가 나오고 아무 의미가 없다
# 08-27 (목) · W2 3일차 · 김승준 일지
**고칠 곳은 맨 아래 [7. 한 결과](#7-한-결과) 한 군데뿐입니다.**
1~6번은 저장소 여기저기에 흩어져 있는 문서를 한자리에 모은 것입니다.
저장소를 따로 열지 않아도 오늘 일을 할 수 있게 하려는 것입니다.
| | |
|---|---|
| 날짜 | 08-27 (목) · W2 3일차 |
| 맡은 사람 | 김승준 |
| 오늘 계획 원문 | [plan/w2/08-27_목/계획.md](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-27_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) |
| 이 파일의 자리 | `plan/역할분담/일지/08-27_김승준.md` |
## 차례
1. 우리가 뭘 만들고 있나
2. 왜 지금 이걸 하고 있나
3. 이번 주에 무슨 일이 있었나
4. 지금까지 만난 문제 전부
5. **오늘 맡은 일**
6. 김승준 님이 8주 동안 맡은 일 전체
7. **한 결과** ← 여기만 채우시면 됩니다
---
## 1. 우리가 뭘 만들고 있나
> 출처 — [`plan/w2/팀목표.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/%ED%8C%80%EB%AA%A9%ED%91%9C.md) 를 그대로 옮긴 것입니다.
*(plan/w2/팀목표.md 를 찾지 못했습니다.)*
---
## 2. 왜 지금 이걸 하고 있나
> 출처 — [`docs/roadmap.md`](https://github.com/ritual1127/naverogq/blob/main/docs/roadmap.md) 를 그대로 옮긴 것입니다.
### CADLens 발전 계획
앞으로 무엇을 어떤 순서로 할지 적어 둔 문서입니다. 기준일은 **2026년 8월 11일**입니다.
지금 무엇이 되고 무엇이 안 되는지는 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)에, 다른 종목으로 넓힐 수
있는지는 [`example/`](https://github.com/ritual1127/naverogq/blob/main/example)에 있습니다.
---
#### 우선순위
번호가 곧 순서입니다. 위에 있는 게 안 되면 아래 것을 해도 의미가 없습니다.
##### 1. 실제 수험생 도면으로 정확도 다시 재기
지금 정확도 100%는 **저희가 직접 만든 연습용 도면 18장** 기준입니다. 도면을 만든 사람과
검사 규칙을 만든 사람이 같아서, 이 숫자만으로는 실제 시험 도면에서도 맞는다고 말할 수
없습니다. **이게 안 되면 나머지가 다 의미 없습니다.**
- [ ] 기계과 학생 도면을 이름 지운 상태로 모으기
- [ ] 같은 방식으로 다시 측정해 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)의 표를 실제 도면 기준으로 교체
- [ ] 자체 제작 도면과 실제 도면의 결과 차이를 그대로 공개
##### 2. AI 점수 안정시키기
투상도 30점은 AI가 매기는데 **같은 도면을 다시 넣으면 점수가 흔들립니다.** 확정 점수가
아니라고 화면에 적어 두긴 했지만, 흔들리는 폭 자체를 줄여야 합니다.
- [x] 같은 도면을 여러 번 돌려 편차가 몇 점인지 먼저 측정 — `variance.py`, 결과는 [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)에 있습니다 (2026-08-22)
- [ ] **단위가 mm가 아닌 도면의 백지 렌더 고치기.** 편차를 재다 드러났습니다. 도면 범위를 그대로 밀리미터로 보는 탓에 AI가 백지를 채점하고 있었습니다. 여기부터 고쳐야 아래 항목들이 의미가 있습니다
- [ ] 규칙으로 옮길 수 있는 건 옮기기 — 뷰 개수, 제3각법 배치는 좌표로 계산할 수 있을지 검토
- [ ] 그래도 남는 부분은 여러 번 물어 중앙값을 쓰는 방식 검토 (정확해지지만 비용이 늘어남)
- [ ] AI가 틀린 사례를 모아 두기. "AI를 어떻게 검증했나"에 답할 근거가 됩니다
##### 3. 못 잡는 것 줄이기
[검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md)의 약점 표를 하나씩 지웁니다.
- [ ] 선으로만 그린 표면거칠기 기호 (지금은 문자로만 찾음)
- [ ] 직접 그린 기하공차 기입틀 (지금은 TOLERANCE 엔티티와 문자로만 찾음)
- [ ] 이름이 CENTER 계열이 아닌 중심선 레이어
- [ ] 선 4개로 그린 윤곽선 (지금은 닫힌 사각형만 인식)
###### 검사 자체가 없는 항목 (2026-08-27 설문에서)
위 넷은 "있는데 못 찾는" 것이고, 아래는 **검사 코드가 아예 없는** 것입니다.
[폼 응답 1건](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md%23%ED%8F%BC-%EC%9D%91%EB%8B%B5--%EB%8C%80%EB%A9%B4-%EC%9D%B8%ED%84%B0%EB%B7%B0%EC%99%80-%EB%94%B0%EB%A1%9C-%EC%85%89%EB%8B%88%EB%8B%A4)에서 답한 사람이
빠뜨렸다고 고른 9개를 `exam.py`의 검사 24개와 하나씩 대조해 나왔습니다.
**9개 중 우리가 온전히 잡는 것은 3개였습니다.**
| 빠뜨렸다고 한 것 | 지금 | 무엇을 해야 하나 |
|---|---|---|
| 모떼기·필렛 주서 | ✅ `EX_NOTE_ITEM` | — |
| 투상도 하나 통째 빠뜨림 | ✅ `EX_FEW_VIEWS` · `AI_PROJECTION` | — |
| 표면거칠기 기호 | ✅ `DQ_NO_SURFACE_SYMBOL` | — |
| 척도 표기 | 🔺 부분 | `DQ_SCALE`은 **비표준 값**만, `EX_VIEW_NO_SCALE`은 뷰별만 봅니다. 표제란에 척도를 **아예 안 적은** 경우는 안 잡습니다 |
| 재질 기입 | ❌ 없음 | `_material`은 주서의 **열처리 문구만** 봅니다. 부품란의 재료 기호(SM45C, SCM415, GC200)가 있는지는 검사하지 않습니다 |
| 스퍼기어·스프링 요목표 | ❌ 없음 | 요목표 검사가 없습니다. 기어·스프링이 있는 도면에서 요목표는 채점 항목입니다 |
| 표면거칠기 비교표 | ❌ 없음 | 주서 옆 비교표(√w √x √y 대조)가 있는지 안 봅니다. **기호를 넣고도 비교표를 빠뜨리는 것은 따로 감점됩니다** |
| A4로 출력해서 잘림 | ❌ 범위 밖 | 출력 설정은 DXF에 없습니다. 도면 크기(`DQ_SHEET_SIZE`)와는 다른 문제입니다 |
| 파일 날림·저장 실패 | ❌ 범위 밖 | CAD 도구 문제입니다 |
표본이 **1명**입니다. 이것만으로 검사 항목을 늘리지 않고, 08-28 선생님 인터뷰와
나머지 응답에서 같은 말이 나오는지 먼저 봅니다.
##### 4. 지원 형식 넓히기
- [ ] Inventor의 ipt · idw · iam. 3D 파일을 읽으려면 파싱 모듈이 새로 필요합니다
- [ ] 3D 모델 채점은 2D가 안정된 뒤에 합니다
##### 5. 다른 종목으로 넓히기
`exam.py`의 판정 함수와 루브릭이 KS 제도 규칙에 기반해 있어 다른 종목에도 상당 부분
그대로 쓸 수 있습니다. 어디까지 되는지는 미리 조사해 [`example/`](https://github.com/ritual1127/naverogq/blob/main/example)에 남겼습니다.
| 종목 | 규칙 재사용 | 순서 |
|---|---|---|
| 기계설계산업기사 | 약 90% | 1순위 |
| 일반기계기사 | 약 60% | 2순위 (작업형 한정) |
| 사출금형산업기사 | 약 55% | 3순위 |
| 프레스금형산업기사 | 약 50% | 4순위 |
- [ ] **0단계 — 구조 정리.** `exam.py`가 기능사 기준값을 모듈 상수로 박아 두고 있어 두 번째
종목이 들어오면 막힙니다. 값을 종목별로 분리하되 **검사 함수 안에 종목 분기는 넣지
않습니다.** 종목이 늘어나면 분기가 규칙마다 퍼져 손댈 수 없게 됩니다
- [ ] 종목별 공개문제를 3개 회차 이상 확보하기 전에는 코드를 건드리지 않습니다.
확인되지 않은 기준으로 검사 규칙을 만들면 응시자에게 틀린 지적을 하게 됩니다
##### 6. 학교에서 쓸 수 있게 만들기
- [ ] 반 단위 화면 — 선생님이 여러 도면을 한 번에 확인
- [ ] 학교 단위 이용 시 개인정보 처리 안내문 정리
---
#### 얼마나 쓰이는지 재는 방법
지금은 **아무것도 세지 않습니다.** 사람을 모으는 것보다 먼저 고칠 게 남았다고 봤고,
쓰는 사람 대부분이 미성년자라 함부로 붙일 수도 없었습니다.
CADLens는 [공개 고지](https://github.com/ritual1127/naverogq/blob/main/docs/policy.md)에서 **추적 코드가 없고, 회원가입이 없고, 개인을 알아볼 수
있는 정보를 받지 않는다**고 약속했습니다. 지표가 필요하다고 그 약속을 깨면 정직함으로 쌓은
걸 스스로 무너뜨리는 것이라, **약속을 지키면서 셀 수 있는 것만** 세기로 했습니다.
**셀 것**
| 지표 | 어떻게 | 개인 식별 |
|---|---|---|
| 검사 횟수 (일별·월별) | 검사가 끝날 때 숫자만 +1 | 없음 |
| 재방문율 | 브라우저에 이미 있는 `cadcheck.history`로 "2회 이상 검사한 브라우저" 비율 | 없음. 기기 안에서 판단하고 결과 숫자만 보고 |
| 재검사 비율 | 같은 파일 이름을 다시 올린 비율 (= 고치고 다시 온 사람) | 없음 |
| 점수 개선 폭 | 재검사 때 점수가 몇 점 올랐는지 | 없음 |
| 언어·다크모드 분포 | 이미 브라우저에 있는 설정값 집계 | 없음 |
**안 셀 것** — IP, 쿠키, 광고 ID, 도면 내용, 파일 이름 원본, 위치, 기기 지문.
**대표로 삼을 숫자는 방문자 수가 아닙니다.** CADLens에서 의미 있는 건
**"검사 → 고침 → 재검사로 점수가 오른 사람의 비율"** 입니다. "몇 명이 왔다"가 아니라
**"몇 명이 실제로 나아졌다"** 는 뜻이라, 도면을 봐주는 도구로서 훨씬 정확한 숫자입니다.
집계를 시작하면 [임팩트](https://github.com/ritual1127/naverogq/blob/main/docs/impact.md)와 README의 해당 절을 실제 숫자로 바꿉니다.
---
#### 문서를 어떻게 관리할지
숫자가 문서마다 다르면 그 자체로 신뢰를 잃습니다.
- [ ] 정확도를 다시 잴 때마다 README · [검사 정확도](https://github.com/ritual1127/naverogq/blob/main/docs/accuracy.md) · [임팩트](https://github.com/ritual1127/naverogq/blob/main/docs/impact.md)의
숫자를 같이 맞춥니다
- [ ] 응시자 통계는 [`example/96_응시자_통계.md`](https://github.com/ritual1127/naverogq/blob/main/example/96_%EC%9D%91%EC%8B%9C%EC%9E%90_%ED%86%B5%EA%B3%84.md)를 원본으로
두고 다른 문서는 그걸 인용합니다. 아직 1차 출처(통계연보)로 대조하지 않았다는 것도
그 문서에 적어 뒀습니다
- [ ] 문서가 코드의 함수 이름이나 상수를 언급하면, 그게 실제로 있는지 확인하고 씁니다
---
#### 한 줄로 줄이면
**"쓰는 사람이 있고, 그 사람들이 실제로 나아졌다"를 숫자로 만드는 것.**
기술은 어느 정도 됐고, 비어 있는 건 그 숫자입니다.
---
## 3. 이번 주에 무슨 일이 있었나
> 출처 — [`plan/w2/기록.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/%EA%B8%B0%EB%A1%9D.md) 를 그대로 옮긴 것입니다.
*(plan/w2/기록.md 를 찾지 못했습니다.)*
8주 전체 일정은 [`plan/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/README.md) 에 있습니다.
---
## 4. 지금까지 만난 문제 전부
오늘 일이 막히면 **여기 이미 적혀 있는 문제인지 먼저 보세요.** 같은 문제를
두 번 파느라 하루를 날리는 게 제일 아깝습니다. 새 문제면 아래 7번
`막힌 것 · 문제` 칸에 적어 주시면 제가 문제점 폴더로 옮깁니다.
> 출처 — [`plan/문제점/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) 를 그대로 옮긴 것입니다.
### 문제점
일하다 만난 문제를 **그때그때 적어 두는 폴더**입니다. 고쳤든 못 고쳤든 남깁니다.
왜 남기나 — 문제를 고치고 나면 그런 문제가 있었다는 사실 자체를 잊습니다.
8주 뒤 발표에서 "무엇을 어떻게 알아냈는가"를 말할 수 있는 팀과 "잘 됩니다"만
말하는 팀은 여기서 갈립니다. 심사 피드백도 **안 되는 걸 공개하는 것**을 우리 강점으로
꼽았습니다.
#### 원칙 — 없는 문제를 지어내지 않는다
**실제로 겪은 것만 적습니다.** 그날 아무 문제도 없었으면 아무것도 적지 않습니다.
기록을 채우려고 "개선하면 좋을 점" 같은 것을 문제로 올리지 않습니다.
지어낸 문제가 한 건이라도 섞이면 나머지 기록도 같이 못 믿게 됩니다.
빈 주가 있는 게 정상이고, 그게 이 폴더가 진짜라는 증거입니다.
문제인 것 — 실제로 틀린 결과가 나왔다, 하려던 게 안 됐다, 시간이 계획보다 훨씬 더 들었다,
연락이나 자료가 없어서 막혔다.
문제가 아닌 것 — 아직 안 만든 기능, 다음에 하기로 한 일, 잘 됐는데 더 잘하고 싶은 것.
그런 건 [발전 계획](https://github.com/ritual1127/naverogq/blob/main/docs/roadmap.md)이나 그날 계획에 적습니다.
#### 현황
| 번호 | 문제 | 상태 | 처음 본 날 | 영향 |
|---|---|---|---|---|
| [P01](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md) | 단위가 mm가 아닌 도면이 백지로 렌더된다 | ✅ 해결 | 2026-08-22 | AI 채점 30점 전부 |
| [P02](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md) | 같은 도면인데 AI 점수가 매번 달라진다 | 🔴 열림 | 2026-08-22 | AI 채점 30점 |
| [P03](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P03-%EC%A7%80%EC%A0%81%EC%A0%9C%EB%AA%A9%ED%9D%94%EB%93%A4%EB%A6%BC.md) | 같은 판정인데 지적 제목이 매번 다르게 적힌다 | ✅ 해결 | 2026-08-22 | 수험생이 보는 화면 · 재검사 비교 |
| [P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) | 측정에 쓰는 표본이 실제 시험 도면이 아니다 | 🔴 열림 | 2026-08-22 | 정확도 · 편차 측정 전부 |
| [P05](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P05-%EB%A9%98%ED%86%A0%EB%B0%B0%EC%A0%95.md) | 제출처를 잘못 알았다 — 안내 메일을 이틀 늦게 봤다 | ✅ 해결 | 2026-08-22 | 산출물 제출 경로 전체 |
| [P06](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md) | 워크샵 1주차 산출물을 통째로 놓쳤다 | ✅ 해결 | 2026-08-22 | W1 산출물 · 진행 방식 |
| [P07](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P07-%EC%A7%80%ED%91%9C0.md) | 북극성 지표가 0이고 셀 방법이 없다 | 🔴 열림 | 2026-08-22 | W5 · W6 산출물, 최종 KPI 리포트 |
| [P08](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P08-%EB%B2%88%EC%97%AD429.md) | 배포 서버에서 번역 호출만 429로 계속 막힌다 | ✅ 해결 | 2026-08-23 | 화면에 뜨는 영어·일본어·중국어 번역 |
| [P09](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md) | 도면 0장인데 정확도 100%가 나왔다 | ✅ 해결 | 2026-08-26 | 실제 도면 정확도 측정 전체 |
| [P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) | 인터뷰가 이틀째 0건이고 그 뒤 작업이 전부 막혔다 | 🔴 열림 | 2026-08-27 | W2 산출물 · 실제 도면 확보 |
| [P11](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) | 다른 CAD 가 쓴 DXF 하나에서 통째로 터졌다 | ✅ 해결 | 2026-08-27 | 실제 도면 분석 전부 |
**열린 문제 4건 · 해결 7건**
#### 적는 법
1. **새 문제**를 만나면 파일 하나를 만듭니다. 이름은 `P08-짧은이름.md`처럼 번호를 이어 붙입니다.
2. 머리표를 채웁니다 — 상태 · 처음 본 날 · 무엇에 영향을 주나 · 맡은 사람.
3. 본문은 **증상 → 원인 → 조치 → 확인** 순서로 씁니다. 원인을 모르면 모른다고 적습니다.
추측을 원인 칸에 적으면 나중에 그게 사실인 줄 알게 됩니다.
4. **이미 있는 문제가 진전되면 그 파일 맨 아래 `## 기록`에 날짜와 한 줄을 더합니다.**
새 파일을 만들지 않습니다.
5. 고쳤으면 상태를 `해결`로 바꾸고 **확인 절에 무엇으로 확인했는지 숫자나 명령으로** 남깁니다.
"고쳤습니다"만 적힌 건 확인이 아닙니다.
6. 위 현황 표도 같이 고칩니다.
#### 규칙
- **못 고친 문제를 지우지 않습니다.** 열린 채로 두는 게 정상입니다.
- 처음 짐작이 틀렸어도 지우지 않습니다. 무엇을 잘못 짚었는지가 기록입니다.
([P02](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md)가 그런 경우입니다. 백지 때문이라고 봤는데 아니었습니다.)
- 사람 문제(연락이 안 온다 같은 것)도 적습니다. 코드 문제만 문제가 아닙니다.
- **`/today-plan` 을 돌릴 때마다 그날 만난 문제를 여기에 적습니다.**
**그날 아무 문제도 없었으면 아무것도 안 적습니다.**
> 출처 — [`plan/문제점/P01-백지렌더.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md) 를 그대로 옮긴 것입니다.
### P01 · 단위가 mm가 아닌 도면이 백지로 렌더된다
| | |
|---|---|
| 상태 | **해결** (2026-08-22) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | AI 채점 30점 전부 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
선이 6,373개 들어 있는 `sample_075em07z.dwg`를 AI에게 보내면 다섯 번 모두
"투상도가 하나도 없다"고 답했다. AI에게 실제로 보내는 그림을 파일로 저장해 보니
**201바이트짜리 빈 그림**이었다. AI는 도면이 아니라 백지를 채점하고 있었다.
`sample_autocad.dxf`도 같은 상태였다. 이 도면이 다섯 번 모두 18점으로 편차 0을 보인 것은
채점이 안정적이어서가 아니라 **매번 같은 백지를 봤기 때문**이었다.
#### 원인
`ai_review.render_png`가 도면 범위(`$EXTMIN`~`$EXTMAX`)를 그대로 밀리미터로 보고
페이지를 만들었다. 이 파일은 단위가 미터라 범위가 0.12 x 0.12로 잡히는데, 여기에
사방 5mm 여백을 붙이면 페이지가 거의 전부 여백이 되고 그림은 1픽셀 밑으로 짜부라진다.
A3(420 x 297)로 그려진 도면은 멀쩡히 나왔기 때문에 여태 드러나지 않았다.
#### 조치
도면 단위를 밀리미터로 환산해서 그리도록 고쳤다. 단위 판별은 이미 있던
`dwg.detect_mm_per_unit`을 그대로 썼다. 새로 만들지 않았다.
#### 확인
| 도면 | 고치기 전 | 고친 뒤 |
|---|---|---|
| `sample_075em07z.dwg` | 201바이트 | 283,550바이트 |
| `sample_autocad.dxf` | 201바이트 | 283,550바이트 |
| `sample_plate.dxf` | 5,696바이트 (정상) | 5,889바이트 (그대로 정상) |
그림 파일을 실제로 열어서 도면이 보이는 것까지 확인했다. 자동 테스트 15개 통과.
#### 배운 것
**중간 결과물을 눈으로 본 적이 없었다는 게 진짜 문제다.** AI가 뱉은 답이 그럴듯해서
아무도 그림을 열어 볼 생각을 안 했다. 정확도 100%라는 숫자가 이 사실을 가리고 있었다.
#### 기록
- 2026-08-22 — 편차를 재다 발견. 같은 날 고치고 확인.
> 출처 — [`plan/문제점/P02-AI점수편차.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P02-AI%EC%A0%90%EC%88%98%ED%8E%B8%EC%B0%A8.md) 를 그대로 옮긴 것입니다.
### P02 · 같은 도면인데 AI 점수가 매번 달라진다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | AI 채점 30점 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
같은 도면을 다섯 번 채점하면 점수가 흔들린다.
| 도면 | 5회 점수 | 폭 | 표준편차 |
|---|---|---|---|
| `sample_plate.dxf` | 18, 18, 20, 20, 20 | 2점 | 1.10점 |
| `sample_075em07z.dwg` (렌더 고치기 전) | 0, 18, 18, 18, 18 | 18점 | 8.05점 |
| `sample_075em07z.dwg` (렌더 고친 뒤) | 0, 0, 5, 9, 18 | 18점 | 7.50점 |
#### 지금까지 안 것
- [P01](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P01-%EB%B0%B1%EC%A7%80%EB%A0%8C%EB%8D%94.md)을 고치기 전에는 폭 18점이 **백지를 보고 몇 점 깎을지 고민한 결과**라고 봤다.
- 고친 뒤 다시 재도 **폭은 18점 그대로**였고 중앙값만 18점에서 5점으로 내려갔다.
백지일 때는 지적이 1건으로 일정했는데 진짜 그림을 보자 **지적 개수부터 1~3건으로 흔들린다.**
- 즉 편차의 원인은 렌더가 아니라 **프롬프트와 모델 쪽**이었다. 처음 짐작이 틀렸다.
- 한 지적이 30점을 통째로 깎는 건 `MAX_SINGLE_DEDUCT = 12`로 막았지만,
지적이 세 개 나오면 여전히 0점이 된다.
#### 다음에 해 볼 것
- [ ] **실제 수험생 도면으로 다시 재기.** 지금 표본은 기계 부품 도면이 아니다([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)).
- [ ] 규칙으로 옮길 수 있는 부분 분리 — 뷰 개수와 제3각법 배치는 좌표로 계산되는 값이다.
- [ ] 여러 번 물어 중앙값 쓰기. 정확해지지만 호출이 늘어 무료 할당량이 빨리 마른다.
- [ ] 지적 개수 자체를 프롬프트에서 제한해 보기.
#### 기록
- 2026-08-22 — 처음 측정. 도면 3장 x 5회. 폭 최대 18점.
- 2026-08-22 — 렌더 수정 후 재측정. 편차 안 줄어듦. 원인이 렌더가 아니었음이 드러남.
> 출처 — [`plan/문제점/P03-지적제목흔들림.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P03-%EC%A7%80%EC%A0%81%EC%A0%9C%EB%AA%A9%ED%9D%94%EB%93%A4%EB%A6%BC.md) 를 그대로 옮긴 것입니다.
### P03 · 같은 판정인데 지적 제목이 매번 다르게 적힌다
| | |
|---|---|
| 상태 | **해결** (2026-08-25) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 수험생이 보는 화면 · 재검사 비교 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
같은 판정에 대해 제목이 매번 달라진다.
- "투상도 전체 누락"
- "투상도 완전 누락"
- "투상도 전체 누락 및 형상 표현 불가"
- "기계 부품 투상도 미작성 및 투상 뷰 부재"
뜻은 같지만 **수험생에게는 다른 지적으로 보인다.**
#### 왜 문제인가
CADLens의 핵심 흐름은 `검사 -> 고치기 -> 재검사`다. 재검사에서 지난번과 비교해 주는데,
제목이 매번 달라지면 **비교가 성립하지 않는다.** 북극성 지표(주간 재검사 사용자 수)와 직결된다.
#### 조치 (2026-08-25)
**제목을 AI에게서 뺐다.** AI는 이제 제목을 쓰지 않고 `kind` 를 여섯 개 중에서 고르기만 한다.
제목은 `ai_review.PROJECTION_KINDS` 에 언어별로 박혀 있고 코드가 붙인다.
| kind | 제목 |
|---|---|
| `FRONT_VIEW` | 정면도 선택 부적절 |
| `VIEW_MISSING` | 투상도 누락 |
| `VIEW_EXTRA` | 불필요한 투상도 |
| `THIRD_ANGLE` | 제3각법 배치 위반 |
| `SECTION_DETAIL` | 단면도·상세도 표기 미흡 |
| `LAYOUT` | 투상도 배치 불균형 |
- 응답 스키마에서 `title` 을 빼고 `kind` enum 을 넣었다. 모델이 목록 밖의 값을 못 준다.
- 번역도 제목을 받지 않는다. en·ja·zh 제목이 표에 이미 있어서 번역할 것이 하나 줄었다.
- **지적 코드는 `AI_PROJECTION` 하나로 그대로 뒀다.** 화면(`static/index.html`)의 묶음·라벨 표가
이 코드를 키로 쓰고 있어서, 코드를 쪼개면 그 표까지 다 고쳐야 한다. 재검사 비교에 필요한 것은
제목이 고정되는 것이라 여기서 멈췄다.
- **옛 캐시(`aicache`)에는 `kind` 가 없다.** 그때 화면에 뜬 제목을 그대로 두게 했다.
지난 판의 제목을 바꿔 버리면 그 판으로 잰 편차 기록과 대조가 안 된다.
같이 고친 것 — **`verdict` 가 "FAIL" 한 낱말로 오는 일이 있었다.** 지시문에 verdict 형식이
아예 없었다. 08-25 배포 서버 확인 때 `sample_plate.dxf` 는 한 문장, `sample_autocad.dxf` 는
`FAIL` 이 왔다. 지시문에 "한국어 한 문장으로 쓰고 낱말만 적지 말라"를 넣었다.
#### 확인
- `test_ai_title_is_fixed_by_kind` — 같은 `kind` 에 서로 다른 문장을 넣어도 제목이
`투상도 누락` / `Missing views` 로 같은지, 스키마에 `title` 이 없고 enum 이 여섯 개인지,
`kind` 없는 옛 캐시가 그대로 보존되는지. `python -m pytest test_rules.py -q` → **17개 통과**.
- 로컬에서 실제 호출 1회 — `samples/sample_plate.dxf` 결과가
제목 `투상도 누락`, en `Missing views`, ja `投影図の欠落`, zh `视图缺失`.
verdict 도 한 문장으로 왔다.
- **배포 서버에서도 확인했다** (2026-08-25, 배포 뒤). 예제 두 장을 `POST /api/analyze-sample`
로 돌렸고 나온 제목이 전부 표 안의 것이었다.
| 도면 | 나온 제목 | 번역 |
|---|---|---|
| `sample_plate.dxf` | 투상도 누락 · 투상도 배치 불균형 | en·ja·zh 전부 |
| `sample_autocad.dxf` | 투상도 누락 · 정면도 선택 부적절 · 투상도 배치 불균형 | en·ja·zh 전부, 후속 답변 ko 포함 4개 |
`verdict` 도 둘 다 한 문장으로 왔다(13낱말 · 16낱말). 고치기 전 `sample_autocad.dxf` 는
`FAIL` 한 낱말이었다.
#### 기록
- 2026-08-22 — 편차 측정 중에 눈에 띔.
- 2026-08-25 — 제목을 `kind` enum 으로 고정하고 코드가 붙이게 바꿈. 로컬 확인 완료, 배포 확인 남음. verdict 가 낱말로 오던 것도 같이 막음.
- 2026-08-25 — 배포 뒤 예제 두 장으로 재확인. 제목 다섯 건이 모두 표 안의 것이고 verdict 도 한 문장이었다. 상태를 해결로 바꿈.
> 출처 — [`plan/문제점/P04-표본도면.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) 를 그대로 옮긴 것입니다.
### P04 · 측정에 쓰는 표본이 실제 시험 도면이 아니다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 정확도 · 편차 측정 전부 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
- 정확도 100%는 **우리가 직접 만든 합성 도면 18장** 기준이다. 도면을 만든 사람과
검사 규칙을 만든 사람이 같다.
- 편차 측정에 쓴 `sample_075em07z.dwg`는 렌더를 고치고 그림을 열어 보니
**기계 부품 도면이 아니라 무늬가 반복되는 도면**이었다. "투상도가 없다"는 판정 자체가
틀리지 않았을 수 있다.
**표본이 잘못되면 측정도 잘못된다.** 지금 우리가 가진 숫자는 전부 이 위에 올라가 있다.
#### 왜 급한가
심사 피드백 1번이 이것이다. 발표(W7)에서 "실제 도면 정확도는?"이라는 질문이 반드시 나온다.
합성 도면 100%만 말하면 그 자리에서 반박당한다.
#### 다음에 해 볼 것
- [ ] W2 인터뷰(08-26 ~ 08-28) 때 **이름 지운 실제 도면 받기** — 받을 자리와 라벨 양식은 [`실제도면/`](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/README.md)에 만들어 뒀다
- [ ] 사람이 판단한 정답 라벨 붙이기. CADLens 결과를 정답으로 쓰면 100%가 나오고 아무 의미가 없다
- [ ] `python bench.py labels.json`으로 다시 재고 `docs/accuracy.md` 표를 실제 도면 기준으로 교체
- [ ] 합성 도면과 실제 도면의 차이를 그대로 공개
#### 기록
- 2026-08-22 — 렌더를 고치고 그림을 열어 보다 표본이 기계 도면이 아님을 알게 됨.
- 2026-08-25 — 도면 받을 폴더와 `labels.json` 양식, 코드 24개 표를 만들었다. 도면 파일 자체는 `.gitignore`로 막아 저장소에 올라가지 않는다. 아직 받은 도면은 0장.
- 2026-08-25 — P03 을 배포에서 확인하다 `sample_autocad.dxf` 의 AI 총평이 "기계 부품 도면이 아닌 기하학적 패턴 도안이 제출되어"로 왔다. 08-22 에 눈으로 보고 적어 둔 것(표본이 기계 도면이 아니다)을 모델도 같게 말한다. 표본을 바꿔야 한다는 근거가 하나 늘었다.
- 2026-08-26 — 빈 라벨로 돌려 보다 0장에 100%가 찍히는 것을 발견해 막았다([P09](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md)). 이제 도면 0장이면 `FAIL` 이 뜬다. 받은 도면은 여전히 0장.
- 2026-08-27 — 오늘이 라벨 붙이기로 계획된 날이었는데 **도면이 0장이라 시작 못 했다.** `실제도면/` 에 `.dxf` 없음, `labels.json` 은 `{}` 그대로. 도면을 받는 자리가 인터뷰인데 인터뷰가 이틀째 0건이라 이 문제가 [P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) 에 막혀 있다. 폴더·양식·코드 표·측정 명령은 다 준비돼 있고 **없는 건 도면 하나뿐이다.** 같은 날 [라벨 작업지](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/%EB%9D%BC%EB%B2%A8%EC%9E%91%EC%97%85%EC%A7%80.md)를 만들어, 도면이 오면 사람이 바로 앉아서 붙일 수 있게 해 뒀다 — 코드 23개마다 도면에서 볼 것과 KS 근거, 한 장 체크표. `exam.py` 임계값은 일부러 넣지 않았다. 그걸 보고 판정하면 CADLens 결과를 옮겨 적는 것과 같아져 이 문제가 그대로 남는다.
- 2026-08-27 — **인터넷에서 실기 도면을 받아 표본을 채우는 길을 찾아봤고, 막혔다.** 큐넷 [공개문제](https://www.q-net.or.kr/cst006.do?id=cst00602&gSite=Q&brdId=Q006&code=1204&artlSeq=5198906)는 **PDF 한 장**이고 DXF·DWG 가 없다. 그나마도 부품 배치도(문제)라서 우리가 검사하는 답안 부품도가 아니다. 연습용 DWG 는 학원 카페·유료 강의 안에 있고, 블로그에 도는 것은 한국산업인력공단 저작물의 무단 재배포다. GitHub 코드 검색도 0건. **결론 — 인터뷰로 받는 것 말고 다른 길이 없다([P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md)).** 다만 그 과정에서 남이 만든 DXF 를 처음 넣어 보다 [P11](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) 을 찾았다.
- 2026-08-27 (밤) — 검사를 3번씩 돌려 결과가 매번 같은지 보다가 **`samples/sample_autocad.dxf` 와 `samples/sample_075em07z.dwg` 의 결과 해시가 완전히 같은 것**을 발견했다. `dwg.analyze` 가 뽑은 값을 하나씩 대조하니 파일 경로와 이름만 다르고 **나머지가 전부 같다** — 크기도 367,087 바이트와 1,443,897 바이트로 DWG 를 DXF 로 푼 비율이다. **같은 도면이다.** `samples/` 에 파일은 3개지만 **도면은 2장**이고, 그중 한 장은 08-22 에 무늬 도면으로 확인된 것이다. 즉 실제로 남은 기계 부품 도면은 **우리가 만든 `sample_plate.dxf` 한 장뿐**이다. 표본이 생각보다 더 얇았다.
> 출처 — [`plan/문제점/P05-멘토배정.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P05-%EB%A9%98%ED%86%A0%EB%B0%B0%EC%A0%95.md) 를 그대로 옮긴 것입니다.
### P05 · 전담 멘토가 배정되지 않았고 주간 안내 메일도 안 온다
| | |
|---|---|
| 상태 | **✅ 해결** (2026-08-24) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | 산출물 제출 경로 전체 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
- 본선 선발 안내(08-17)에 "매주 화요일 아침에 그 주차 강의 링크를 메일로 보내드립니다"라고
적혀 있는데 **08-18 첫 주 메일이 안 왔다.**
- "1:1 멘토링 세션" 이야기가 있는데 **전담 멘토가 누구인지 모른다.**
- jangsin1004@gmail.com 으로 온 운영진 메일은 08-17이 마지막이다.
#### 왜 문제인가
산출물 제출처가 "그 주 1:1 멘토링 세션 전까지 전담 멘토에게 공유"다.
**멘토를 모르면 제출 자체를 못 한다.** W1 산출물부터 막혀 있다.
#### 원인
**메일이 안 온 게 아니라 우리가 안 봤다.** 08-23 09:20 에 운영진 안내 메일이 도착해 있었는데,
08-22 에 한 번 확인하고 나서 08-24 까지 메일함을 다시 열지 않았다.
"08-17 이후 메일 없음"이라는 08-22 의 기록을 그대로 사실로 두고 이틀을 보냈다.
전제도 틀렸다. **1:1 멘토링은 모든 팀에게 있는 게 아니라 2차 심사를 통과한 5팀만** 받는다.
"1:1 멘토링 세션 전까지 전담 멘토에게 공유"라는 워크샵 문구를 우리 팀에도 해당한다고 읽었다.
#### 조치
- 제출처를 팀 페이지로 바로잡고 [제출 절차](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EC%A0%9C%EC%B6%9C%EC%A0%88%EC%B0%A8.md)에 단계를 적었다.
- [팀 목표 1장](https://github.com/ritual1127/naverogq/blob/main/plan/w1/%ED%8C%80%EB%AA%A9%ED%91%9C.md)의 주간 리듬에서 **있지도 않은 목요일 1:1 멘토링 칸을 뺐다.** PDF도 다시 만들었다.
- W1~W8 주차 계획 여덟 개에 다 적혀 있던 "1:1 멘토링 세션 전까지 전담 멘토에게 공유" 문구를 팀 페이지 제출로 고쳤다.
- **주간 리듬에 메일함 확인을 넣지 않았다.** 대신 화요일 회의 때 그 주 워크샵 페이지와 메일함을 같이 연다([P06](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md)과 같은 재발 방지).
#### 확인
- 08-23 09:20 수신 메일 `[전국마이스터고 스타프로젝트] 산출물은 우리 팀 페이지에 올려주세요 — 제출처·피드백 안내`
- 제출처 https://meister.itshin.com/네이놈 → `주차별 산출물` → `N주차 제출`
- 전담 멘토 NAVER OGQ마켓 신철호 대표 · 데모데이 ① 09-09 17:00~20:00 · ② 10-07 17:00~17:30
- **아직 안 올렸다.** 구글 로그인이 필요해 사람이 해야 한다. 올린 뒤 이 절에 날짜를 적는다.
#### 기록
- 2026-08-22 — 메일함을 뒤져 확인. 08-17 이후 운영진 메일 없음.
- 2026-08-24 — 문의 메일 초안을 만들다가 메일함을 다시 봤고, **08-23 아침에 안내 메일이 이미 와 있었다.**
제출처는 팀 페이지, 전담 멘토는 신철호 대표, 1:1 멘토링은 5팀 전용. 문의할 것이 남지 않아 초안을 버리고
[제출 절차](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EC%A0%9C%EC%B6%9C%EC%A0%88%EC%B0%A8.md)로 바꿔 적었다. **막힌 줄 알았던 제출 경로는 처음부터 열려 있었다.**
이 문제를 해결로 닫는다. 남은 것은 사람이 로그인해서 올리는 일뿐이다.
> 출처 — [`plan/문제점/P06-워크샵놓침.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P06-%EC%9B%8C%ED%81%AC%EC%83%B5%EB%86%93%EC%B9%A8.md) 를 그대로 옮긴 것입니다.
### P06 · 워크샵 1주차 산출물을 통째로 놓쳤다
| | |
|---|---|
| 상태 | **해결** (2026-08-22) |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | W1 산출물 · 진행 방식 |
| 맡은 사람 | 전원 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
W1(08-18 ~ 08-24) 산출물인 팀 목표 1장을 08-22까지 아무도 손대지 않았다.
미션 문장 · 북극성 지표 · 역할 분담 · 팀 규칙 · 주간 리듬 다섯 항목 전부였다.
#### 원인
본선 발표 다음 날이라 결과 메일만 보고 **같은 날 워크샵 강의가 열린 걸 몰랐다.**
강의는 08-04에 이미 전체 공개돼 있었고 안내 메일도 왔는데 안 읽었다.
계획을 심사 피드백만 보고 짜서 워크샵 산출물이 계획에 아예 없었다.
#### 조치
- 08-22에 팀 목표 1장을 몰아서 작성.
- `plan/` 규칙에 넣었다 — **계획을 짜기 전에 그 주 워크샵 페이지를 먼저 연다.**
- 주차 폴더마다 그 주 산출물을 미리 적어 두었다(W1 ~ W8 전부).
#### 확인
`plan/w1` ~ `plan/w8` 각 README에 그 주 산출물이 적혀 있다.
08-18 ~ 08-21 계획 파일의 `❌`는 지우지 않는다. 최종 발표에서 "8주간 배운 것"으로 쓸 수 있다.
#### 기록
- 2026-08-22 — 워크샵 1주차 페이지를 처음 열어 보고 알게 됨. 같은 날 산출물 작성.
- 2026-08-25 — 미리 열기는 지켰지만 **요약이 원문 전부가 아니었다.** 08-24에 옮겨 적은 W2 요약에 강의가 반드시 넣으라고 한 마지막 질문("그거 해결하려고 돈이나 시간 써본 적 있어요?")이 빠져서, 08-25 계획 3번에 다른 질문이 마지막으로 적혔다. 08-25에 원문을 다시 읽고 질문지와 [W2 README](https://github.com/ritual1127/naverogq/blob/main/plan/w2/README.md)를 고쳤다. 강한 신호 기준도 "스스로 해결하려 시도"가 아니라 "이미 시간·돈을 씀"으로 더 셌다.
> 출처 — [`plan/문제점/P07-지표0.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P07-%EC%A7%80%ED%91%9C0.md) 를 그대로 옮긴 것입니다.
### P07 · 북극성 지표가 0이고 셀 방법이 없다
| | |
|---|---|
| 상태 | **열림** |
| 처음 본 날 | 2026-08-22 |
| 무엇에 영향을 주나 | W5 · W6 산출물, 최종 KPI 리포트 |
| 맡은 사람 | 미정 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
북극성 지표는 **주간 재검사 사용자 수**인데 지금 값이 0명이다. 사람이 안 써서가 아니라
**세는 기능 자체가 없다.** `docs/impact.md`에도 "아직 사용자가 몇 명인지 세지 않고 있습니다"라고
적어 두었다.
#### 왜 급한가
- W5(09-15 ~ 21) 산출물에 "사용자 기록 — 몇 명이 써 봤고 몇 명이 핵심 행동을 끝냈나"가 있다.
- W6(09-22 ~ 28) 산출물이 통째로 지표다 — 계측 이벤트 · 퍼널 · 리텐션 커브 · 북극성 지표 현황.
- 계측을 09-05에 붙이기로 계획했는데 **그날 못 붙이면 W5 · W6에 낼 숫자가 없다.**
#### 조건
이용자 대부분이 미성년 수험생이다. 개인을 알아볼 수 있는 것은 남기지 않는다.
무엇을 세고 무엇을 안 세는지 `docs/policy.md`에 적기 전에는 배포하지 않는다.
#### 다음에 해 볼 것
- [ ] 09-05 — 이벤트 4가지(방문 · 시작 · 완료 · 재검사) 심기
- [ ] 09-12 — 배포 서버에서 실제로 쌓이는지 확인
- [ ] 시간이 모자라면 **재검사 하나만** 붙인다. 그게 북극성 지표다
#### 기록
- 2026-08-22 — 팀 목표 1장을 쓰면서 현재 값이 0이라는 걸 확인.
> 출처 — [`plan/문제점/P08-번역429.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P08-%EB%B2%88%EC%97%AD429.md) 를 그대로 옮긴 것입니다.
### P08 · 배포 서버에서 번역 호출만 429로 계속 막힌다
| | |
|---|---|
| 상태 | **해결** (2026-08-25) |
| 처음 본 날 | 2026-08-23 |
| 무엇에 영향을 주나 | 화면에 뜨는 영어·일본어·중국어 번역 |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
배포 서버에서 도면을 검사하면 채점 결과와 한국어 후속 답변은 나오는데
**세 언어 번역만 계속 비어 있었다.** 로그에 `[ai] 번역 실패` 가 429(할당량 초과)로
찍혔다. 화면은 번역 대신 안내 문구로 넘어가므로 겉보기에는 조용히 실패한다.
#### 원인
도면 한 장을 검사하면 AI를 **세 번** 부른다.
1. 채점 (`JUDGE_SYSTEM`)
2. 후속 답변 (`FOLLOWUP_SYSTEM`)
3. 번역 (`TRANSLATE_SYSTEM`)
무료 할당량이 세 배로 빨리 마르고, 순서상 **마지막인 번역이 먼저 굶는다.**
1·2번이 성공한 뒤라 채점은 멀쩡해 보이고 번역만 사라진다.
#### 조치
후속 답변과 번역을 **한 호출로 합쳤다**(`_enrich()`). 둘 다 채점 결과만 있으면
만들 수 있어서 따로 부를 이유가 없었다. 도면 한 장당 호출이 3회에서 2회로 줄었다.
`TRANSLATE_SYSTEM`·`TRANSLATE_SCHEMA`·`_add_followups`·`_translate` 는 지웠다.
합치면서 같이 고친 것 — 지시문으로 "조·항·장 번호를 쓰지 말라"고 막아도 모델이
`KS B 0001 제3장` 처럼 지어내는 일이 있었다. 받은 뒤 `_drop_clause_numbers()` 로
걷어낸다. 확인할 수 없는 조문 번호를 수험생이 근거로 믿게 되면 안 된다.
#### 확인
- 자동 테스트 16개 통과. `_drop_clause_numbers` 검사를 하나 새로 넣었다
(`test_drop_clause_numbers` — 한국어 `제3장`, 영어 `Section 4`, 일본어 `第3章`을
걷어내고 규격 이름과 치수 숫자는 그대로 두는지).
- **2026-08-25 배포 서버에서 확인했다.** https://naverogq.onrender.com 에 예제 두 장을
`POST /api/analyze-sample` 로 돌렸고 둘 다 200, 번역이 세 언어 모두 채워져 왔다.
| 도면 | HTTP | `ai_verdict_i18n` | AI 지적의 `followups` |
|---|---|---|---|
| `sample_plate.dxf` | 200 | en · ja · zh | ko · en · ja · zh |
| `sample_autocad.dxf` | 200 | en · ja · zh | ko · en · ja · zh |
모델은 `gemini-3.6-flash`. 두 장을 쓴 이유는 캐시 때문이다. 한 장만 보면 예전에
성공한 결과가 `aicache`에서 나온 것인지 구분이 안 된다. `aicache/`는 저장소에
올라가 있지 않아 배포 이미지에는 없고, 서버 캐시는 도면 그림 바이트로 키를 잡으므로
다른 도면 두 장이 모두 번역까지 채워졌다면 실제로 호출이 성공한 것이다.
#### 기록
- 2026-08-23 — 호출을 2회로 합치고 조문 번호 후처리를 넣었다. 배포 재확인은 남았다.
- 2026-08-25 — 배포 서버에서 예제 두 장으로 재확인. 429 없이 세 언어가 다 왔다. 상태를 해결로 바꿈.
> 출처 — [`plan/문제점/P09-빈측정100.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P09-%EB%B9%88%EC%B8%A1%EC%A0%95100.md) 를 그대로 옮긴 것입니다.
### P09 · 도면 0장인데 정확도 100%가 나왔다
| | |
|---|---|
| 상태 | **해결** (2026-08-26) |
| 처음 본 날 | 2026-08-26 |
| 무엇에 영향을 주나 | 실제 도면 정확도 측정 전체 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
08-26 준비물 점검으로 어제 만든 `실제도면/` 폴더가 실제로 쓸 수 있는지 보려고
아직 비어 있는 라벨 파일로 측정을 돌렸다.
```
$ python bench.py 실제도면/labels.json
| 시험 도면 | 잡아야 할 지적 | 결과 |
|---|---|---|
- 기준 도면 0장 중 완전 일치 0장
- 검출률(recall) 100.0% — 실제 결함 0건 중 0건 검출
- 정확도(precision) 100.0% — 지적 0건 중 0건이 실제 결함
```
**도면이 한 장도 없는데 100% / 100% 가 나오고 종료 코드도 0이었다.**
`--check` 를 붙여도 통과한다.
라벨에 이름만 적고 도면 파일이 없을 때도 마찬가지였다. 그 장은 표에
`분석 실패` 로 찍히지만 요약 숫자는 그 장을 조용히 빼고 계산하고, 역시 0으로 끝난다.
#### 원인
`run()` 의 마지막 두 줄이다.
```python
recall = tp / (tp + fn) if tp + fn else 1.0
precision = tp / (tp + fp) if tp + fp else 1.0
```
0으로 나누는 것을 막으려고 분모가 0이면 1.0 을 넣었다. 합성 도면 18장으로만 돌리던
동안에는 분모가 0이 될 일이 없어서 드러나지 않았다. 실제 도면을 받기 시작하면
**"아직 아무것도 없다"와 "다 맞혔다"가 같은 숫자로 나온다.**
#### 조치
`bench.py` 세 군데.
1. 라벨에 도면이 한 장도 없으면 리포트를 찍지 않고 종료 코드 1로 끝낸다.
0장으로는 잴 수 있는 것이 없다.
2. 요약에 **분석 실패 장수**를 한 줄로 적고, 못 연 장은 검출률·정확도 계산에서 **실제로 뺀다**.
(처음에는 "뺀 것이다"라고 적어 놓고 빼지 않아 파일 이름을 틀린 것이 검출률이 낮은 것처럼
보였다. 08-26 검수에서 찾아 고쳤다.) 분석된 도면이 0장이면 퍼센트를 아예 찍지 않는다.
3. 열지 못한 도면이 한 장이라도 있으면 `--check` 없이도 종료 코드 1로 끝낸다.
파일 이름이 틀렸거나 파일이 없는 상태에서 나온 정확도는 쓰면 안 된다.
#### 확인
| 무엇 | 결과 |
|---|---|
| `python bench.py 실제도면/labels.json` (0장) | `FAIL: … 도면이 한 장도 없다` · 종료 코드 1 |
| 없는 파일 이름 한 장짜리 라벨 | 표에 `분석 실패`, 요약에 `기준 도면 1장 중 분석 0장` · `분석 실패 1장` · `분석된 도면이 0장이라 검출률·정확도를 잴 수 없다`, 종료 코드 1 |
| `python bench.py --check` (합성 18장) | 18장 중 분석 18장 · 완전 일치 18장 · 100% / 100% · 종료 코드 0 (그대로) |
| `python -m pytest test_rules.py -q` | 17개 통과 |
내일(08-27) 김승준이 받은 도면에 라벨을 붙이고 이 명령을 돌린다. 파일 이름을
잘못 적으면 이제 100% 대신 실패가 뜬다.
#### 기록
- 2026-08-26 — 0장 100% 를 막고 분석 실패 표시를 넣었다.
- 2026-08-26 (검수) — 실패한 장을 **뺀다고 적어 놓고 빼지 않던 것**을 찾았다. 10장 중 한 장의
파일 이름을 틀리면 그 장의 기대 코드가 전부 놓침으로 잡혀 검출률이 90%대로 떨어졌다.
못 연 장을 tp·fn·fp 와 완전 일치에서 빼고, 분석된 장이 0이면 퍼센트를 찍지 않게 했다.
합성 18장은 18/18 · 100%/100% · 종료 0 그대로, 테스트 17개 통과.
> 출처 — [`plan/문제점/P10-인터뷰0건.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md) 를 그대로 옮긴 것입니다.
### P10 · 인터뷰가 이틀째 0건이고 그 뒤 작업이 전부 막혔다
| | |
|---|---|
| 상태 | 🔴 **열림** |
| 처음 본 날 | 2026-08-27 |
| 무엇에 영향을 주나 | W2 산출물(인터뷰 5건 · 문제 정의 한 문장) · 실제 도면 확보([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 전원 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
계획대로면 오늘(08-27) 저녁에 인터뷰가 4건 쌓여 있어야 한다. 0건이다.
| 언제 | 계획 | 실제 |
|---|---|---|
| 08-26 (수) | 인터뷰 1 · 2, 도면 2장 받기 | 0건 · 0장 |
| 08-27 (목) | 인터뷰 3 · 4, 라벨 초안 | 0건 · 라벨 시작 못 함 |
22:50 기준으로 확인한 것.
- [`docs/interviews.md`](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md) — 실제 인터뷰 기록 0건. 있는 것은 08-25에 만든 양식과 "실제 아님"이라고 적힌 시험 기입뿐이다.
- [`실제도면/`](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/README.md) — `.dxf` 0장, `labels.json` 은 `{}` 그대로.
- 인터뷰 폼 — `npx wrangler d1 execute cadlens-interview --remote --command "SELECT COUNT(*) FROM answers"` → **0**.
- [인터뷰 대상표](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EC%9D%B8%ED%84%B0%EB%B7%B0%EB%8C%80%EC%83%81%ED%91%9C.md) — 5칸 중 3칸(박주호 · 박신후 · 손선생님)만 찼고 **약속 시간은 다섯 다 비어 있다.** 08-25에 정하기로 한 것이 사흘째 그대로다.
#### 왜 급한가
**막힌 게 인터뷰 하나가 아니다.** 인터뷰 자리에서 도면을 받고, 그 도면에 라벨을 붙여
실제 정확도를 잰다. 첫 칸이 비면 뒤가 전부 선다.
```
인터뷰 → 도면 받기 → 라벨 붙이기 → bench.py → docs/accuracy.md 실제 도면 숫자
0건 0장 못 함 못 함 합성 18장 숫자 그대로
```
[P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)(합성 도면으로만 잰 100%)가 심사 피드백 1번인데, 그걸 푸는
유일한 경로가 이 인터뷰다.
W2 산출물은 **인터뷰 5건 + 문제 정의 한 문장**이고 마감은 08-31(월)이다.
남은 날은 08-28 · 29 · 30 · 31 **4일**이고, 그 안에 5건을 다 해야 한다.
#### 원인
**모른다.** 약속이 안 잡힌 것인지, 잡혔는데 깨진 것인지, 만났는데 기록을 안 올린
것인지 저장소만 봐서는 구분이 안 된다. 셋은 대응이 서로 다르다.
확실한 것 하나 — **대상표의 약속 시간 칸이 08-25부터 사흘 내내 비어 있다.**
시간이 안 정해졌으니 인터뷰가 열릴 자리 자체가 없었다.
또 하나 — **인터뷰 폼을 만들고 주소를 아무 데도 뿌리지 않았다.** 못 만날 때를 대비해
08-26에 세운 https://cadlens-interview.pages.dev 가 0건인 건 폼이 나빠서가 아니라
아무도 주소를 받지 않았기 때문이다. 만드는 것과 돌리는 것은 다른 일이었다.
#### 조치
**뿌릴 글을 써 뒀다** — [`인터뷰폼/뿌릴글.md`](https://github.com/ritual1127/naverogq/blob/main/%EC%9D%B8%ED%84%B0%EB%B7%B0%ED%8F%BC/%EB%BF%8C%EB%A6%B4%EA%B8%80.md). 단톡용 ·
개인 DM용 · 선생님께 보낼 글 셋. 보내기 전 확인할 것(가족·친한 친구·팀원 제외, 한 반에만
뿌리지 않기, 약속 잡힌 사람은 폼 대신 대면)도 같이 적었다. **글이 없어서 못 뿌린 건
이제 아니다.** 보내는 것은 사람 몫이다.
그 밖에는 확인뿐이다.
08-28에 할 것 — 사람 몫이라 여기에 적어만 둔다.
- [ ] 약속 시간부터 정한다. 대상표의 빈 칸 5개를 시간으로 채운다 (장우영)
- [ ] 인터뷰 폼 주소를 반 단톡·기계과 학생들에게 뿌린다 (전원). 글은 [`뿌릴글.md`](https://github.com/ritual1127/naverogq/blob/main/%EC%9D%B8%ED%84%B0%EB%B7%B0%ED%8F%BC/%EB%BF%8C%EB%A6%B4%EA%B8%80.md) 에 있다. 대면이 밀려도 답은 쌓인다
- [ ] 대면 1건이라도 그날 안에 끝내고 그날 안에 기록한다. 다음 날로 넘기면 인용이 요약이 된다
- [ ] 만나는 자리에서 도면을 받는다. 라벨 작업은 도면이 있어야 시작한다 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md))
**5명을 못 채우면 3명이라도 먼저 만난다.** 약속 잡다가 한 주가 끝나는 게 최악이라고
[대상표](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-25_%ED%99%94/%EC%9D%B8%ED%84%B0%EB%B7%B0%EB%8C%80%EC%83%81%ED%91%9C.md)에 이미 적어 뒀는데, 지금 그렇게 되고 있다.
#### 확인
인터뷰 기록이 `docs/interviews.md` 에 들어오고 대상표 상태가 `✅` 로 바뀌면 다시 본다.
5건이 차고 도면이 들어오면 해결로 돌린다.
#### 기록
- 2026-08-27 — 이틀 연속 0건인 것을 08-27 계획을 돌리다 확인하고 열었다. 대면 0건 · 폼 0건 · 도면 0장 · 약속 시간 0개.
- 2026-08-27 (밤) — **폼에 첫 응답 1건이 들어왔다.** 특성화고 기계과 2학년, 기능사 실기 준비 중. 강한 신호 있음(인강 1~3시간). 대면 인터뷰는 여전히 0건이고 W2 산출물 5건은 그대로 0/5 이라 이 문제는 **열린 채로 둔다.** 응답 내용은 [`docs/interviews.md`](https://github.com/ritual1127/naverogq/blob/main/docs/interviews.md) 의 폼 응답 절에. 도면은 "찾아보고 알려 줄게" 라 아직 0장이다 — 이 사람이 지금 유일한 도면 후보이므로 **후속 연락이 필요하다.**
> 출처 — [`plan/문제점/P11-남의DXF크래시.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P11-%EB%82%A8%EC%9D%98DXF%ED%81%AC%EB%9E%98%EC%8B%9C.md) 를 그대로 옮긴 것입니다.
### P11 · 다른 CAD 가 쓴 DXF 하나에서 통째로 터졌다
| | |
|---|---|
| 상태 | ✅ **해결** (2026-08-27) |
| 처음 본 날 | 2026-08-27 |
| 무엇에 영향을 주나 | 실제 도면 분석 전부 — 업로드·측정·렌더 ([P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md)) |
| 맡은 사람 | 박지완 |
| 목록 | [문제점 전체](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/README.md) |
#### 증상
실제 시험 도면을 인터넷에서 구할 수 있는지 찾다가, 남이 만든 DXF 를 하나 넣어 봤다.
[LibreCAD 이슈 #2109](https://github.com/LibreCAD/LibreCAD/issues/2109) 에 붙어 있는
`gdt-test-qcad-pro-trial.zip` 안의 `gdt-R15.dxf` — **QCAD Professional 이 쓴 파일**이다.
```
ValueError: could not convert string to float: '0.0l'
```
분석이 시작도 못 하고 죽었다. 파일 어딘가에 실수 값이 `0.0l` 로 적혀 있다.
숫자 `0` 이 아니라 알파벳 `l` 이 붙어 있다.
**우리가 만든 도면에서는 한 번도 안 났다.** 합성 18장은 `bench.py` 가 `ezdxf` 로
직접 쓴 것이라 언제나 규격에 맞다. 파일을 만드는 쪽과 읽는 쪽이 같은 라이브러리다.
#### 원인
`ezdxf.readfile()` 은 조금이라도 규격에 어긋나면 예외를 던진다. 같은 파일을
`ezdxf.recover.readfile()` 로 열면 **오류 3건을 잡고 1건을 고쳐서 정상으로 연다.**
AutoCAD 계열도 이런 파일을 그냥 연다. 즉 파일이 못 쓸 정도로 망가진 게 아니라
**우리가 너무 엄격한 문으로 읽고 있었다.**
`dwg.py` 안에 `ezdxf.readfile()` 을 직접 부르는 자리가 **네 군데**였다 —
`dxf_has_content` · `recover_orphaned_paper_views` · `facts_from_dxf` · `render_svg`.
앞의 두 개는 예외를 삼키고 `False` 를 돌려주기 때문에 더 나빴다. **터지지도 않고
"내용이 없는 도면"으로 조용히 취급한다.**
#### 조치
네 자리가 다 지나가는 문 하나를 `dwg.readfile()` 로 만들고, 거기서만 복구 읽기로
넘어가게 했다. 호출부마다 `try` 를 붙이지 않았다 — 네 군데에 같은 코드를 넣으면
다음에 다섯 번째 자리가 생길 때 또 빠진다.
```python
def readfile(path):
try:
return ezdxf.readfile(path)
except Exception:
doc, auditor = recover.readfile(path)
print(f"[dwg] 손상된 DXF 를 복구해서 열었습니다 "
f"(오류 {len(auditor.errors)} · 고침 {len(auditor.fixes)}): ...")
return doc
```
복구해서 열었을 때는 **로그에 남긴다.** 조용히 고치면 나중에 이상한 결과가 나왔을 때
파일이 원래 깨져 있었다는 걸 알 방법이 없다.
#### 확인
- `gdt-R15.dxf` — 전에는 `ValueError`. 지금은 `[dwg] 손상된 DXF 를 복구해서 열었습니다
(오류 3 · 고침 1)` 을 찍고 **지적 7건**(fail 1 · error 3 · warn 3)까지 정상으로 나온다.
- 합성 도면 18장 — `python bench.py` **18/18 · 검출률 100.0% · 정확도 100.0%** 그대로.
- `python -m pytest test_rules.py -q` — **18개 통과** (17개에서 하나 늘었다).
- 새 시험 `test_malformed_dxf_recovers` — 정상 DXF 를 만들어 실수 값 하나를 `120.0l` 로
망가뜨린 뒤, `ezdxf.readfile` 은 반드시 터지고 `dwg.readfile` 은 열리고
`dwg.dxf_has_content` 가 **빈 도면으로 오해하지 않는지**까지 본다.
#### 왜 이게 중요한가
[P04](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P04-%ED%91%9C%EB%B3%B8%EB%8F%84%EB%A9%B4.md) 가 말하는 "우리가 만든 도면으로만 쟀다" 의 실제 값이 이것이다.
실기 도면은 AutoCAD · Inventor · ZWCAD 가 쓴다. **남이 쓴 파일 한 장을 처음 넣어 본
그 자리에서 터졌다.** 인터뷰로 실제 도면을 받기 시작하면 이 부류가 계속 나온다.
#### 기록
- 2026-08-27 — 인터넷에서 실기 연습 도면을 구할 수 있는지 찾다가, 처음 넣어 본 남의 DXF 에서 발견하고 같은 날 고쳤다.
---
## 5. 오늘 맡은 일
> 출처 — [`plan/w2/08-27_목/계획.md`](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-27_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) 를 그대로 옮긴 것입니다.
### 받은 도면을 라벨 형식으로 정리 시작 · 예상 1시간
- `bench.py`가 읽는 JSON 형식: `{"파일명.dxf": ["EX_DIM_MISSING", "EX_NO_FIT"]}`
- 지적 코드는 `exam.py`의 `CHECKS`에서 확인한다.
- 정답 라벨은 **사람이 판단해서** 적는다. CADLens가 뱉은 결과를 그대로 정답으로 쓰면 측정이 자기 자신을 채점하는 꼴이 된다.
- 헷갈리는 항목은 선생님께 여쭤볼 목록으로 따로 뺀다 — 내일 인터뷰에서 물어본다.
**이렇게 되면 끝** — `labels.json`이 `bench.py`에서 읽힌다
**흔한 실수** — CADLens 결과를 그대로 정답으로 적는 것. 그러면 100%가 나오고 아무 의미가 없다
---
## 6. 김승준 님이 8주 동안 맡은 일 전체
오늘 것만 보면 왜 이 일을 하는지 안 보여서 같이 넣었습니다.
> 출처 — [`plan/역할분담/김승준.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EA%B9%80%EC%8A%B9%EC%A4%80.md) 를 그대로 옮긴 것입니다.
### 김승준
배정 24건. [역할 분담 규칙](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/README.md)
| 날짜 | 주차 | 맡은 일 | 계획 | 달성 | 실제로 한 일 |
|---|---|---|---|---|---|
| 08-23 (일) | W1 | `variance.py`로 다시 재기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-23_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | 🔺 | 박지완이 당겨서 함. 0, 0, 5, 9, 18 — 폭 18점 그대로. 편차 안 줄었다 |
| 08-24 (월) | W1 | 08-18 주간 안내 메일이 왜 안 왔는지 같이 묻기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w1/08-24_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ✅ | 박지완이 대신 메일함을 확인함. 08-23 09:20 에 안내 메일이 이미 와 있었다 — 물을 것이 없어져 문의 취소 |
| 08-26 (수) | W2 | 말한 그대로 받아 적기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-26_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | 사람 몫. 인터뷰 기록이 안 들어와 적을 것이 없음 |
| 08-27 (목) | W2 | 받은 도면을 라벨 형식으로 정리 시작 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-27_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ❌ | 붙일 도면이 없다. `실제도면/` 에 `.dxf` 0장, `labels.json` 은 `{}` 그대로. 도면이 들어오는 날로 넘김 ([P10](https://github.com/ritual1127/naverogq/blob/main/plan/%EB%AC%B8%EC%A0%9C%EC%A0%90/P10-%EC%9D%B8%ED%84%B0%EB%B7%B00%EA%B1%B4.md)). 붙일 때 쓸 [라벨 작업지](https://github.com/ritual1127/naverogq/blob/main/%EC%8B%A4%EC%A0%9C%EB%8F%84%EB%A9%B4/%EB%9D%BC%EB%B2%A8%EC%9E%91%EC%97%85%EC%A7%80.md)는 준비돼 있음 |
| 08-29 (토) | W2 | 5건 기록을 한 문서로 정리 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w2/08-29_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-02 (수) | W3 | 도면 파일이 어디에 얼마나 남는지 그림에 적기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-02_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-04 (금) | W3 | 키가 코드에 박혀 있지 않은지 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-04_%EA%B8%88/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-05 (토) | W3 | 숫자가 쌓이는지 직접 해 보기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-05_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-06 (일) | W3 | W3 산출물 제출 21:00 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w3/09-06_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-08 (화) | W4 | 시연은 재검사까지 보여주기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-08_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-11 (금) | W4 | 가장 자주 나온 지적 하나만 고치기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-11_%EA%B8%88/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-12 (토) | W4 | 재검사 수가 잡히는지 다시 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w4/09-12_%ED%86%A0/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-15 (화) | W5 | 올릴 글 본문 쓰기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-15_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-16 (수) | W5 | 정한 곳에 올리기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-16_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-17 (목) | W5 | 써 본 사람 2~3명에게 직접 묻기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-17_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-20 (일) | W5 | 링크를 봤는데 안 써 본 사람 3명에게 이유 묻기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w5/09-20_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-22 (화) | W6 | 이벤트 4가지가 다 잡히는지 확인 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-22_%ED%99%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-23 (수) | W6 | 제일 크게 빠지는 칸 표시 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-23_%EC%88%98/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-27 (일) | W6 | W6 산출물 제출 21:00 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-27_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 09-28 (월) | W6 | 발표에 쓸 사용자 인용 후보 모으기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w6/09-28_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-01 (목) | W7 | 사용자 수 · 재검사 수 · 리텐션 · 정확도 정리 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w7/10-01_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-05 (월) | W7 | 촬영 환경 준비 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w7/10-05_%EC%9B%94/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-08 (목) | W8 | 6개 절 쓰기 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w8/10-08_%EB%AA%A9/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
| 10-11 (일) | W8 | 팀 페이지 제출물 갱신 | [계획](https://github.com/ritual1127/naverogq/blob/main/plan/w8/10-11_%EC%9D%BC/%EA%B3%84%ED%9A%8D.md) | ⬜ | |
달성: `⬜` 안 함 · `✅` 함 · `🔺` 반쯤 · `❌` 못 함
남과 바꿨으면 **실제로 한 일** 칸에 "○○와 바꿈"이라고 적습니다.
배정을 어떻게 정했는지, 남과 바꿨을 때 어떻게 적는지는 아래에 있습니다.
> 출처 — [`plan/역할분담/README.md`](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/README.md) 를 그대로 옮긴 것입니다.
### 역할 분담
누가 언제 무엇을 맡았고 실제로 무엇을 했는지 남기는 폴더입니다.
#### 어떻게 정했나
- 담당자는 **무작위로 배정**합니다. 사람마다 잘하는 것만 계속 맡으면 한 사람만 늘고 나머지는 8주 동안 배우는 게 없습니다.
- 네 명을 섞은 묶음을 반복해 쓰기 때문에 **건수는 고르게** 나뉩니다.
- 회의 · 데모데이 참석 · 합의가 필요한 일은 배정하지 않고 `전원`으로 둡니다.
- 배정받은 사람이 도저히 못 하는 일이면 **그날 안에 바꾸고, 누구와 바꿨는지 이 폴더에 적습니다.** 조용히 남이 대신 하면 기록이 거짓이 됩니다.
- 08-18 ~ 08-22 는 이미 지난 날이라 무작위 배정이 아니라 **실제로 한 사람**을 적었습니다.
#### 사람별 기록
| 사람 | 배정 건수 | 기록 |
|---|---|---|
| 박지완 | 30건 | [박지완.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EB%B0%95%EC%A7%80%EC%99%84.md) |
| 장우영 | 24건 | [장우영.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EC%9E%A5%EC%9A%B0%EC%98%81.md) |
| 안대열 | 24건 | [안대열.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EC%95%88%EB%8C%80%EC%97%B4.md) |
| 김승준 | 24건 | [김승준.md](https://github.com/ritual1127/naverogq/blob/main/plan/%EC%97%AD%ED%95%A0%EB%B6%84%EB%8B%B4/%EA%B9%80%EC%8A%B9%EC%A4%80.md) |
| 전원 | 39건 | 회의 · 참석 · 합의 |
#### 주차별 배정
| 주차 | 박지완 | 장우영 | 안대열 | 김승준 | 전원 |
|---|---|---|---|---|---|
| W1 | 8 | 1 | 2 | 2 | 6 |
| W2 | 3 | 4 | 3 | 3 | 7 |
| W3 | 5 | 4 | 4 | 4 | 4 |
| W4 | 2 | 4 | 4 | 3 | 4 |
| W5 | 5 | 3 | 3 | 4 | 2 |
| W6 | 2 | 4 | 3 | 4 | 3 |
| W7 | 3 | 2 | 2 | 2 | 5 |
| W8 | 2 | 2 | 3 | 2 | 8 |
#### 적는 법
1. 그날 일이 끝나면 본인 파일에서 그 줄의 달성 칸을 고칩니다 (`⬜` → `✅` · `🔺` · `❌`).
2. **실제로 한 일** 칸에 무엇을 했는지 한 줄 적습니다. 계획과 달라졌으면 달라진 대로 적습니다.
3. 남과 바꿨으면 두 사람 파일 모두에 적습니다.
4. 못 한 것은 지우지 않습니다. `❌`로 남기고 이유를 적습니다. 다 `✅`인 기록은 아무도 믿지 않습니다.
---
## 7. 한 결과
**여기부터 채워 주세요. 위쪽은 건드리지 않으셔도 됩니다.**
| | |
|---|---|
| 달성 | ⬜ |
| 걸린 시간 | |
달성 칸의 `⬜` 를 `✅` 함 · `🔺` 반쯤 함 · `❌` 못 함 중 하나로 바꿔 주세요.
**다 `✅` 로 채우지 마세요.** 못 한 건 `❌` 입니다. 8주 뒤 심사에서 전부
성공한 기록은 아무도 믿지 않습니다.
### 실제로 한 일
*(계획과 달라졌으면 달라진 대로 적어 주세요. 숫자가 나왔으면 숫자를 적어 주세요.
"메일 보냈다" 보다 "08-24 19:10 에 netclaus@gmail.com 으로 보냈다" 가 낫습니다.)*
### 막힌 것 · 문제
*(없으면 "없음" 이라고 적어 주세요. **지어내지 마세요.** 지어낸 문제가 한 건이라도
섞이면 나머지 기록도 같이 못 믿게 됩니다.
문제인 것 — 틀린 결과가 나왔다, 하려던 게 안 됐다, 계획보다 시간이 훨씬 더 들었다,
연락이나 자료가 없어서 막혔다.
문제가 아닌 것 — 아직 안 만든 기능, 다음에 하기로 한 일, 잘 됐는데 더 잘하고 싶은 것.)*
### 남과 바꿨으면
*(누구와 바꿨는지 적어 주세요. 예: "장우영과 바꿈". 조용히 남이 대신 하면
기록이 거짓이 됩니다. 안 바꿨으면 비워 두세요.)*