60 lines
2.5 KiB
Markdown
60 lines
2.5 KiB
Markdown
# CLAUDE.md — recordingtest
|
|
|
|
## 세션 시작 (필수)
|
|
|
|
1. [PROGRESS.md](PROGRESS.md) 읽기 — 완료/진행 중/차단 현황
|
|
2. [PLAN.md](PLAN.md) 읽기 — 다음 할 일 우선순위 큐
|
|
3. 작업 선택 → PROGRESS.md "In progress" 표시
|
|
4. 완료 시: PROGRESS.md Done 이동 + PLAN.md 갱신 + `docs/history/YYYY-MM-DD_{작업명}.md` 작성 (소요시간·Context 사용량 필수, 누락 시 커밋 차단)
|
|
|
|
## 작업 사이클 — Planner / Generator / Evaluator
|
|
|
|
비자명한 작업은 반드시 3단계:
|
|
|
|
1. `/contract <name>` → `docs/contracts/<name>.md` (Goal, DoD, Interfaces, Risks)
|
|
2. Generator — DoD만 충족, 스코프 이탈 금지
|
|
3. `/evaluate <name>` → `docs/contracts/<name>.evaluation.md` — **pass여야만** PROGRESS.md Done 이동
|
|
|
|
**Generator와 Evaluator는 같은 세션이 겸하지 않는다.**
|
|
|
|
컨텍스트가 차면 요약 말고 **파일에 상태를 쏟고 새 세션으로 리셋**.
|
|
|
|
## 프로젝트
|
|
|
|
**recordingtest** — WPF 3D 편집기(EG-BIM Modeler, HmEG 엔진, MEF 플러그인)에 대한 입력 회귀 테스트 자동화 도구.
|
|
|
|
전략: 입력 레코딩 → 리플레이 → 결과물을 `*.approved.*` 베이스라인과 diff (ApprovalTests 패턴).
|
|
|
|
## 코드 계층 (의무)
|
|
|
|
3개 계층, 단방향 의존:
|
|
|
|
```
|
|
App-specific (Sut/EgBim/) → HmEG-aware (Hmeg/) → Generic (src/ 직속)
|
|
```
|
|
|
|
| 계층 | 참조 가능 | 위치 | 네임스페이스 |
|
|
|---|---|---|---|
|
|
| Generic | .NET BCL, FlaUI, Win32, YAML만 | `src/` | `Recordingtest.*` |
|
|
| HmEG-aware | Generic + HmEG.dll만 | `src/Hmeg/` | `Recordingtest.Hmeg.*` |
|
|
| App-specific | Generic + HmEG-aware + 앱 어셈블리 | `src/Sut/<App>/` | `Recordingtest.Sut.<App>.*` |
|
|
|
|
역참조 금지. `Recordingtest.Architecture.Tests` 가 의존 그래프를 자동 검증한다.
|
|
|
|
계층 이동·신규 SUT 추가 시 `/contract` 필수. 폴더 레이아웃: [docs/architecture.md](docs/architecture.md)
|
|
|
|
## 설계 규칙
|
|
|
|
- **고정 sleep 금지** — UIA 이벤트/property change 대기
|
|
- **좌표만 저장 금지** — UIA element path + 상대 offset 필수 기록
|
|
- **새 필드 추가 시 정규화 규칙 동시 등록**
|
|
- **SUT in-process 코드는 WPF UI thread에서 실행**
|
|
- 베이스라인 명명: `*.approved.*` / `*.received.*`
|
|
- 실패 아티팩트: 스크린샷 + UIA 트리 + sidecar JSON + diff를 한 폴더에
|
|
|
|
## 저장소
|
|
|
|
- Origin: https://gitea.hmac.kr/kimminsung/recordingtest (이슈 트래커 동일)
|
|
- 커밋·PR에 이슈 번호(#N) 참조
|
|
- 기술 결정 근거: `docs/history/` + Claude 메모리
|