KIT: 이슈 방식으로 — 새 SPEC·CLAUDE.md, #1 완료 기준 검사 (#1)

이슈 #1 중 코치 몫(SPEC·CLAUDE·검사).
- SPEC.md: 지금 지킬 규약만 남긴 새 판
- CLAUDE.md: 이슈 방식 작업 규칙 (하이쿠용)
- check.sh: F17 기준을 짧은 README 기준으로 바꾸고 이슈 #1 완료 기준 F47 추가

코치가 저장소 밖 시험 사본(별도 README 참조안)으로 F47 이 통과 가능함을 확인.
이 저장소에서는 README·FEATURES·PROGRESS 작업 전이라 지금 F47 이 실패하는 것이 정상.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
오문성andClaude Haiku 5.5 committed 2026-10-27 16:24:59 +09:00
1 parent f33e00bce4
commit bdd296597a
3 files changed
+69 -648

No files matched your search

+16 -30
View File
@@ -1,37 +1,23 @@
# drawing3d-web — 작업 규칙 (Haiku 세션용)
# drawing3d-web — 작업 규칙 (Haiku)
원형 수직구 일반도를 라이브러리 없이 Canvas 2D 로 보여 주는 3D 뷰어. 설계는 `SPEC.md`, 할 일은 `FEATURES.json`.
규약은 `SPEC.md`. **작업 목록과 설계 배경은 Gitea 이슈(tdc_engineer/drawing3d-web)에 있다.**
## 시작할 때마다
1. `PROGRESS.md` 마지막 5줄과 `git log --oneline -5` 를 읽는다.
2. `FEATURES.json` 에서 `"passes": false` 인 **맨 앞 기능 하나**만 고른다. 두 개를 같이 하지 않는다.
3. 그 기능의 `steps` 와 SPEC 의 해당 장을 읽고 시작한다.
## 시작
1. 지시받은 이슈를 **제목이나 번호로 찾아 그 이슈만** 읽는다. 다른 이슈·긴 문서를 미리 다 읽지 않는다.
2. `git log --oneline -5` 를 본다.
## 실행과 검증
- 화면 보기: `explorer.exe index.html` (Windows 브라우저로 열림). 수석이 화면을 확인한다.
- 판정: `bash check.sh F0n` (n = 지금 기능 번호). 그 기능과 앞 기능 항목이 전부 `[PASS]` 여야 끝이다.
- 끝났다고 말할 때는 **check.sh 출력 전체를 그대로 붙인다.** 요약하거나 고쳐 쓰지 않는다.
## 끝낼 때 (기능 1개 = 커밋 1개)
1. `FEATURES.json` 에서 그 기능의 `passes` 만 `true` 로 바꾼다. 다른 글자는 건드리지 않는다.
2. `PROGRESS.md` 에 한 줄 추가(양식은 파일 첫 줄).
3. `git add -A` 후 커밋. 메시지 첫 줄 `F0n: 한 일`, 본문에 check.sh 마지막 줄.
4. 다음 기능으로 넘어가지 말고 수석에게 보고하고 멈춘다.
## 끝 (이슈 하나 = 커밋 하나)
1. `bash check.sh` 가 FAIL 0 이어야 끝이다. 아니면 커밋하지 않고 멈춰 보고한다.
2. 커밋 메시지 첫 줄 끝에 `(#이슈번호)`, 본문에 check.sh 마지막 줄과 `Co-Authored-By` 줄.
3. 이슈 댓글(완료 기준 확인 표·검사 결과·커밋 해시·경위 한 줄)과 push·이슈 닫기는 **지시가 있을 때만** 한다.
## 금지
- `check.sh`, `SPEC.md`, `CLAUDE.md` 수정 금지. 틀렸다고 생각되면 고치지 말고 수석에게 말한다.
- three.js 등 라이브러리, CDN, `import`, `require`, 외부 URL 금지. 파일은 index.html, viewer.js, model.js, README.md, .gitignore, guide/ (구동설명서 HTML), tools/prep_drawing.py, tools/extract_from_dxf.py, model_extracted.js, compare.html. F33~F34 에서는 model.js 를 고치지 않는다.
- 도면은 `private/` 의 공개용 정리본만 커밋한다: `drawing.dxf`·`drawing.svg`·`drawing_gen.svg` (SPEC 34장). 원본 DWG·`full.dxf`·지명·과업명·실제 좌표가 든 파일은 절대 커밋하지 않는다. `git add -A` 전에 `git status` 로 확인한다.
- `model.js` 는 `const MODEL = ` 뒤에 순수 JSON(따옴표 키, 주석·끝 쉼표 없음) 그리고 `;`.
- 커밋 메시지의 `Co-Authored-By` 줄을 지우지 않는다. `--no-verify`, `--amend`, `rebase`, 날짜 지정 금지.
- 실패한 시도도 커밋을 지우지 않는다. 되돌릴 때는 새 커밋으로.
- 원본 도면 파일(DWG·정리 전 DXF), 회사 파일명, 비밀값을 리포에 넣지 않는다.
## 코드
- 순수 JavaScript 한 파일(viewer.js). 함수 이름은 SPEC 7장 목록을 쓴다.
- 길이 단위는 mm, z 위로 +. 각도는 X축에서 반시계, 도.
- 면 = 점 배열 + 색 + alpha. 먼 면부터 그린다.
- `check.sh`·`SPEC.md`·`CLAUDE.md` 수정. 틀렸다고 생각되면 고치지 말고 보고한다.
- 검사를 통과시키려고 파일을 숨기거나 검사를 우회하기.
- 화면 코드의 라이브러리·CDN·import·외부 URL. 도구는 표준 라이브러리만.
- 정리본 3개(`private/drawing.dxf`·`drawing.svg`·`drawing_gen.svg`) 밖의 도면, 원본 DWG, 지명·과업명·실제 좌표, 비밀값 커밋. `git add -A` 전에 `git status`.
- `model.js` 는 `const MODEL = ` 뒤 순수 JSON 과 `;`.
- `Co-Authored-By` 줄 지우기, `--no-verify`·`--amend`·`rebase`·날짜 지정, 실패한 커밋 지우기.
## 막히면
- 같은 문제를 두 번 고쳐도 안 되면 멈추고 수석에게 무엇이 안 되는지 보고한다.
- 모르는 치수는 지어내지 않는다. SPEC 에 없으면 수석에게 묻는다.
같은 문제를 두 번 고쳐도 안 되면 멈추고 무엇이 안 되는지 보고한다. 모르는 치수는 지어내지 않는다.