Set up AI dev environment for recordingtest (#2)
- CLAUDE.md with collaboration rules and Planner/Generator/Evaluator cycle - .claude/ agents, commands, skills, hooks per Claude Code conventions - Sprint Contracts for sut-prober, normalizer, recorder, player, diff-reporter - SUT catalog (EG-BIM Modeler, 187 plugins) and .gitignore excluding SUT tree - PROGRESS.md / PLAN.md as shared agent handoff state - Solution scaffold targeting sut-prober PoC Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
100
docs/sut-catalog/catalog.md
Normal file
100
docs/sut-catalog/catalog.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# SUT Catalog (v0, 정적 분석)
|
||||
|
||||
> 수동 관찰 기반 초기 카탈로그. `sut-prober` PoC 완료 시 기계 생성 파일로 교체된다.
|
||||
> 마지막 갱신: 2026-04-07
|
||||
|
||||
## 개요
|
||||
|
||||
- **이름**: EG-BIM Modeler
|
||||
- **위치**: `EG-BIM Modeler/` (git 제외)
|
||||
- **실행파일**: `EG-BIM Modeler.exe` (.NET / WPF)
|
||||
- **구성**: `.deps.json`, `.runtimeconfig.json`, `.pdb` 동봉
|
||||
|
||||
## 핵심 어셈블리
|
||||
|
||||
| 이름 | 역할 | PDB |
|
||||
|------|------|-----|
|
||||
| `HmEG.dll` | 자체 3D 엔진 | ✅ (`HmEG.pdb`, `HmEG.xml`) |
|
||||
| `HmGeometry.dll` / `HmGeometry.V2.dll` | 지오메트리 커널 | ✅ |
|
||||
| `HmTriangle.dll` | 삼각분할 | ✅ |
|
||||
| `HmPG.dll` | (추정) 페러미터 그래프/프로파일 | - |
|
||||
| `HmCommonUI.dll`, `HmCommonBridge.dll` | 공통 UI / 네이티브 브릿지 | - |
|
||||
| `Editor02.HmEGAppManager.dll` | 앱 생명주기 / plugin 매니저 (MEF 로드 추정) | ✅ |
|
||||
| `Editor03.PluginInterface.dll` | Plugin 기본 계약 | ✅ |
|
||||
| `Editor04.CommandControl.dll` | 명령 파이프라인 UI | ✅ |
|
||||
| `Editor05.CommandCore.dll` | 명령 실행 코어 | ✅ |
|
||||
| `Editor06.CommandCustom.dll` | 커스텀 명령 | ✅ |
|
||||
| `Editor07.WidgetPluginInterface.dll` | 위젯 플러그인 계약 | ✅ |
|
||||
| `EditorCore.dll` | Editor 코어 | ✅ |
|
||||
| `Editor01.Localization.dll` | 다국어 | ✅ |
|
||||
| `Editor.AI01.HttpConnector.dll` | AI 연동 | ✅ |
|
||||
|
||||
## 렌더링
|
||||
|
||||
- **SharpDX** (D3D9/D3D11/DXGI/Direct2D, Mathematics, D3DCompiler)
|
||||
- 3D 뷰포트는 D3D surface → **UIA 사각지대**
|
||||
- `assimp.dll` / `AssimpNet.dll` → 메시 임포트
|
||||
- `freetype6.dll`, `SharpFont.dll` → 폰트
|
||||
- `SharpVectors.*` → SVG 지원
|
||||
|
||||
## UI 스택
|
||||
|
||||
- `MahApps.Metro`, `ControlzEx`, `Dragablz`
|
||||
- `CommunityToolkit.Mvvm`
|
||||
- `Microsoft.Xaml.Behaviors`, `System.Windows.Interactivity`
|
||||
- `System.Windows.Controls.WpfPropertyGrid`
|
||||
- `Microsoft.Web.WebView2.*` (WebView2 패널)
|
||||
|
||||
## 유틸/공용
|
||||
|
||||
- `Serilog` + `Serilog.Sinks.File`, `log4net`
|
||||
- `Newtonsoft.Json`, `Google.Protobuf`, `MemoryPack.Core`
|
||||
- `UnitsNet`, `FluentScheduler`, `System.Reactive`, `Flurl.Http`
|
||||
- `BaronSoftware.Auth.dll` — 인증/라이선스 추정 (**레코딩 시 민감정보 주의**)
|
||||
|
||||
## Json 설정 (텍스트 golden-file 1차 타깃)
|
||||
|
||||
`EG-BIM Modeler/Json/`:
|
||||
|
||||
- `Settings.json`, `DefaultSettings.json`
|
||||
- `CategoryCommands.json`, `DefaultCategoryCommands.json`
|
||||
- `CommandAlias.json`, `DefaultCommandAlias.json`
|
||||
- `KeyShortCut.json`, `DefaultKeyShortCut.json`
|
||||
- `MouseSnap.json`, `DefaultMouseSnap.json`
|
||||
- `StartupCommand.json`, `DefaultStartupCommand.json`
|
||||
- `Units.json`, `DefaultUnits.json`
|
||||
- `Materials.json`
|
||||
- `RecentFiles.json` — **확실히 비결정적** (최근 사용 파일 경로)
|
||||
|
||||
### 비결정성 후보 필드 (정규화 대상)
|
||||
|
||||
- `RecentFiles.json` 전체
|
||||
- 모든 `Settings.json` 내부의 경로·창 크기·마지막 실행 시간
|
||||
- GUID·타임스탬프 (포맷 확인 필요)
|
||||
|
||||
## 저장 파일 포맷
|
||||
|
||||
- `lmd.hme` — 자체 모델 포맷 (`.hme`)
|
||||
- `jversion.egm` — 버전/메타 파일
|
||||
- **바이너리 추정** — 별도 포맷 분석 contract 필요
|
||||
|
||||
## 로컬라이제이션
|
||||
|
||||
- `ko-KR`, `en-US`, `ja-JP`, `es-ES` 리소스 폴더
|
||||
- `Editor01.Localization.dll` 경유
|
||||
|
||||
## MEF Plugin
|
||||
|
||||
- 위치: `EG-BIM Modeler/Plugins/Eg*Plugin/`
|
||||
- **총 187개** (2026-04-07 스냅샷)
|
||||
- 카테고리: 생성(Box, Circle, Arc, Curve, Cone, Cylinder …), Boolean(Union/Intersection/Difference), Array(Linear/Polar/Crv), Align, Check(Border/Disjointed/Duplicated/NonManifold/Self-Intersection/Overlap/ZeroArea/ZeroCurve), Audit, Block(Edit), Chamfer, Clash, Cap, Cut, DeleteFaces, Import/Export 등
|
||||
- 전체 목록: [plugins.md](plugins.md)
|
||||
|
||||
## recordingtest 영향 요약
|
||||
|
||||
1. **1차 검증 타깃**: `Json/` 텍스트 파일 (정규화 쉬움)
|
||||
2. **2차**: `.hme`/`.egm` 파서 필요
|
||||
3. **3D 뷰포트**: 좌표 입력 + engine-bridge
|
||||
4. **Plugin 카탈로그**: sut-prober 자동 덤프
|
||||
5. **PDB 풍부** → engine-bridge 리플렉션 비용 낮음
|
||||
6. **인증/라이선스**: 자동화 테스트 환경에서 로그인 상태 유지/마스킹 필요
|
||||
199
docs/sut-catalog/plugins.md
Normal file
199
docs/sut-catalog/plugins.md
Normal file
@@ -0,0 +1,199 @@
|
||||
# EG-BIM Modeler Plugin List
|
||||
|
||||
- **스냅샷 일시**: 2026-04-07
|
||||
- **총 개수**: 187
|
||||
- **경로**: `EG-BIM Modeler/Plugins/`
|
||||
|
||||
> 자동 생성 전 수동 덤프. `sut-prober` PoC 완료 시 `plugins.json`으로 교체된다.
|
||||
|
||||
## 전체 목록 (사전순)
|
||||
|
||||
```
|
||||
Eg3DFacePlugin
|
||||
Eg3DMImportExporter
|
||||
EgAddToGroupPlugin
|
||||
EgAlignPlugin
|
||||
EgAlignSelectedVerticesPlugin
|
||||
EgAlignVerticesPlugin
|
||||
EgAnglePlugin
|
||||
EgArcPlugin
|
||||
EgAreaCentroidPlugin
|
||||
EgAreaPlugin
|
||||
EgArrayCrvPlugin
|
||||
EgArrayLinearPlugin
|
||||
EgArrayPlugin
|
||||
EgArrayPolarPlugin
|
||||
EgAuditPlugin
|
||||
EgBlockEditPlugin
|
||||
EgBlockPlugin
|
||||
EgBooleanDifferencePlugin
|
||||
EgBooleanIntersectionPlugin
|
||||
EgBooleanUnionPlugin
|
||||
EgBoundingBoxPlugin
|
||||
EgBoxPlugin
|
||||
EgBuildSectionPlugin
|
||||
EgCPlanePlugin
|
||||
EgCapPlugin
|
||||
EgChamferPlugin
|
||||
EgChangeColorPlugin
|
||||
EgCheckBorderEdgePlugin
|
||||
EgCheckDisjointedMeshPlugin
|
||||
EgCheckDuplicatedVertexPlugin
|
||||
EgCheckNonManifoldEdgePlugin
|
||||
EgCheckSelfIntersectionPlugin
|
||||
EgCheckSelfOverlapPlugin
|
||||
EgCheckZeroAreaPlugin
|
||||
EgCheckZeroCurvePlugin
|
||||
EgCirclePlugin
|
||||
EgClashPlugin
|
||||
EgCloseCrvPlugin
|
||||
EgClosestPtPlugin
|
||||
EgConePlugin
|
||||
EgConvertTextToBlockAttributePlugin
|
||||
EgCopyPlugin
|
||||
EgCopyToClipboardPlugin
|
||||
EgCrvEndPlugin
|
||||
EgCrvStartPlugin
|
||||
EgCurvePlugin
|
||||
EgCurveThroughPtPlugin
|
||||
EgCutPlugin
|
||||
EgCylinderPlugin
|
||||
EgDeleteFacesPlugin
|
||||
EgDeletePlugin
|
||||
EgDeleteSubCrvPlugin
|
||||
EgDeselByUidsPlugin
|
||||
EgDimAnglePlugin
|
||||
EgDirPlugin
|
||||
EgDistancePlugin
|
||||
EgDividePlugin
|
||||
EgDomainPlugin
|
||||
EgDotPlugin
|
||||
EgDupBorderPlugin
|
||||
EgDupEdgePlugin
|
||||
EgDupMeshHoleBoundaryPlugin
|
||||
EgEditTheGradingElevationPlugin
|
||||
EgEllipsePlugin
|
||||
EgEllipsoidPlugin
|
||||
EgEvaluatePtPlugin
|
||||
EgExplodeBlockPlugin
|
||||
EgExplodePlugin
|
||||
EgExportByPathPlugin
|
||||
EgExtendPlugin
|
||||
EgExtractMeshFacePlugin
|
||||
EgExtractNonManifoldMeshEdgesPlugin
|
||||
EgExtractPtPlugin
|
||||
EgExtrudeAlongCrvPlugin
|
||||
EgExtrudePlugin
|
||||
EgFillMeshHolePlugin
|
||||
EgFilletEdgePlugin
|
||||
EgFilletPlugin
|
||||
EgFilterByFaceCountPlugin
|
||||
EgFilterByLayerPlugin
|
||||
EgFilterByLengthPlugin
|
||||
EgFilterByModelTypePlugin
|
||||
EgFilterBySpatialBoxPlugin
|
||||
EgFilteringWithXYPlanePlugin
|
||||
EgFindTextPlugin
|
||||
EgFlipPlugin
|
||||
EgGroupPlugin
|
||||
EgHandleCurvePlugin
|
||||
EgHidePlugin
|
||||
EgHyperbolaPlugin
|
||||
EgImportByPathPlugin
|
||||
EgInsertPlugin
|
||||
EgInterpCrvPlugin
|
||||
EgIsolatePlugin
|
||||
EgJoinPlugin
|
||||
EgLengthPlugin
|
||||
EgLinePlugin
|
||||
EgLineSmoothPlugin
|
||||
EgLoftPlugin
|
||||
EgMarginLinePlugin
|
||||
EgMatchPropertiesPlugin
|
||||
EgMergeFacesPlugin
|
||||
EgMeshIntersectPlugin
|
||||
EgMeshPatchPlugin
|
||||
EgMeshPolylinePlugin
|
||||
EgMirrorPlugin
|
||||
EgModelClearPlugin
|
||||
EgMovePlugin
|
||||
EgObjectDescriptionPlugin
|
||||
EgOffsetMeshPlugin
|
||||
EgOffsetPlugin
|
||||
EgOneLayerOffPlugin
|
||||
EgOneLayerOnPlugin
|
||||
EgOpenURLPlugin
|
||||
EgOrientPlugin
|
||||
EgParabolaPlugin
|
||||
EgPastePlugin
|
||||
EgPatchPlugin
|
||||
EgPipePlugin
|
||||
EgPlanarDifferencePlugin
|
||||
EgPlanarIntersectionPlugin
|
||||
EgPlanarUnionPlugin
|
||||
EgPlanePlugin
|
||||
EgPlaneThroughPtPlugin
|
||||
EgPointPlugin
|
||||
EgPointsOffPlugin
|
||||
EgPointsOnPlugin
|
||||
EgPointsPlugin
|
||||
EgPolygonCountPlugin
|
||||
EgPolygonPlugin
|
||||
EgPolylinePlugin
|
||||
EgProfileSweepPlugin
|
||||
EgProjectPlugin
|
||||
EgProjectionPointPlugin
|
||||
EgPyramidPlugin
|
||||
EgRLeaderEditPlugin
|
||||
EgRebuildPlugin
|
||||
EgRectanglePlugin
|
||||
EgReduceMeshPlugin
|
||||
EgRemoveFromGroupPlugin
|
||||
EgRemoveSelfIntersectionPlugin
|
||||
EgRepairCrvTopologyPlugin
|
||||
EgRevolvePlugin
|
||||
EgRibbonPlugin
|
||||
EgRoadSectionPlugin
|
||||
EgRotate3DPlugin
|
||||
EgRotatePlugin
|
||||
EgScale1DPlugin
|
||||
EgScale2DPlugin
|
||||
EgScalePlugin
|
||||
EgScreenShotPlugin
|
||||
EgSelBoxPlugin
|
||||
EgSelByUidsPlugin
|
||||
EgSelColorPlugin
|
||||
EgSelLayerPlugin
|
||||
EgSelNamePlugin
|
||||
EgSelectedLayersOffPlugin
|
||||
EgSetDisplayModePlugin
|
||||
EgSetFocusedViewportPlugin
|
||||
EgSetGroupNamePlugin
|
||||
EgSetObjectNamePlugin
|
||||
EgSetViewmodePlugin
|
||||
EgShearPlugin
|
||||
EgShowPlugin
|
||||
EgSlabPlugin
|
||||
EgSlopePlugin
|
||||
EgSnipCrvPlugin
|
||||
EgSpherePlugin
|
||||
EgSplitDisjointMeshPlugin
|
||||
EgSplitPlugin
|
||||
EgSrfPtPlugin
|
||||
EgSubCrvPlugin
|
||||
EgSurfaceQuadRemeshPlugin
|
||||
EgSweep1Plugin
|
||||
EgSweep2Plugin
|
||||
EgTextPlugin
|
||||
EgTorusPlugin
|
||||
EgTrimPlugin
|
||||
EgTruncatedPyramidPlugin
|
||||
EgTubePlugin
|
||||
EgUnGroupPlugin
|
||||
EgUngroupAllPlugin
|
||||
EgUnifyNormalPlugin
|
||||
EgVerticalScalePlugin
|
||||
EgVolumeCentroidPlugin
|
||||
EgZoomPlugin
|
||||
HMEGImportExport
|
||||
```
|
||||
Reference in New Issue
Block a user