Implement recorder PoC (#6)

This commit is contained in:
minsung
2026-04-07 14:27:46 +09:00
parent e3d2ff6c77
commit d486cbb4d9
14 changed files with 996 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
# 2026-04-07 이슈 #6 — Recorder Generator
- **이슈**: #6
- **소요 시간**: 약 25분
- **Context 사용량**: 약 45k 토큰
## 작업 요약
`docs/contracts/recorder.md` 계약을 바탕으로 `Recordingtest.Recorder` 콘솔 PoC와
xUnit 테스트 프로젝트를 신규 작성했다.
### 산출물
- `src/Recordingtest.Recorder/`
- `Recordingtest.Recorder.csproj` (`net8.0-windows`, FlaUI.Core/UIA3 4.0.0, YamlDotNet 16.1.3)
- `NativeMethods.cs` — Win32 P/Invoke (WH_KEYBOARD_LL, WH_MOUSE_LL, GetMessage 등)
- `LowLevelHook.cs` — 전용 STA 스레드 + message loop, `Channel<RawEvent>` 푸시
- `ElementPathBuilder.cs``IElementSnapshot` 기반 순수 로직
- `OffsetNormalizer.cs` — 정규화 [0..1] 클램프 포함
- `MaskPolicy.cs``PasswordBox` / `IsPassword``<MASKED>`
- `Scenario.cs`, `ScenarioWriter.cs` — YAML 직렬화 (UnderscoredNamingConvention)
- `Program.cs` — CLI 파싱, attach 로직(절대 Launch 없음), Ctrl+C 플러시
- `tests/Recordingtest.Recorder.Tests/`
- 5 단위 테스트 (path builder / normalizer / mask / yaml roundtrip / CLI exit 2)
### 결과
- `dotnet build recordingtest.sln` — 경고 0, 오류 0
- `dotnet test tests/Recordingtest.Recorder.Tests` — 5/5 통과
### 주의
- SUT(EG-BIM Modeler)는 코드/스크립트 어디에서도 launch하지 않는다. attach만 지원.
- `--attach` 누락 시 usage 출력 후 exit 2.
- 실 hook/UIA는 단위 테스트에서 다루지 않으며, 순수 로직 4종 + CLI 1종만 검증.
### 미해결 / 후속
- 실제 SUT 대상 통합 테스트는 Evaluator 단계에서 별도 진행.
- IME 조합 키, 드래그 합성, 휠 등 고차 이벤트 합성은 후속 스프린트.