diff --git a/Output/guides/cimery-dev-guide.md b/Output/guides/cimery-dev-guide.md index 1bbc3eb..c285939 100644 --- a/Output/guides/cimery-dev-guide.md +++ b/Output/guides/cimery-dev-guide.md @@ -1,10 +1,11 @@ --- title: cimery 개발 지침 -updated: 2026-04-14 +updated: 2026-04-15 related-adr: - "[[ADR-001-tech-stack]]" - "[[ADR-002-feature-dsl]]" - "[[ADR-003-architecture-followups]]" + - "[[ADR-004-sprint-25-39-decisions]]" --- # cimery 개발 지침 @@ -15,8 +16,9 @@ cimery 관련 작업 시 먼저 읽는 문서. CLAUDE.md에서 링크된다. 1. `Output/reports/ADR-001-tech-stack.md` — 기술 스택 2. `Output/reports/ADR-002-feature-dsl.md` — Feature DSL 아키텍처 3. `Output/reports/ADR-003-architecture-followups.md` — UI·IFC·CI/CD·USD·Plugin·Feature 카탈로그·LOD·UX 등 -4. 본 문서 — 지침 요약·규약 -5. `~/.claude/.../memory/` — 개인 선호·작업 방식 +4. `Output/reports/ADR-004-sprint-25-39-decisions.md` — 거더교 MVP 확장·IFC4X3 Add2·proc-macro 스캐폴딩 15결정 +5. 본 문서 — 지침 요약·규약 +6. `~/.claude/.../memory/` — 개인 선호·작업 방식 ADR과 본 문서가 충돌하면 **ADR 우선**. ADR 개정은 새 ADR로 수행 (`status: superseded-by:`). @@ -35,17 +37,18 @@ ADR과 본 문서가 충돌하면 **ADR 우선**. ADR 개정은 새 ADR로 수 ## 아키텍처 파이프라인 ``` Rust DSL (builder + macro_rules! 설탕) - └─ #[param(unit, range, default)] attribute 메타 + └─ #[param(unit, range, default)] attribute 메타 ← 스캐폴딩(Sprint 38) ↓ IR (JSON/MessagePack, 결정론적 직렬화) ↓ -salsa query (Feature 단위, Lazy/Reactive) +salsa query (Feature 단위, Lazy/Reactive) — Sprint 24 구현 ↓ Evaluator → GeomKernel trait - ├─→ 자체 wgpu 뷰어 (주) - └─→ USD export (증분 Prim 단위, IFC alias 이중 태깅) + ├─→ 자체 wgpu 뷰어 (egui 패널 + Ortho/Perspective) + ├─→ USD export (Sprint 21) + └─→ IFC4X3 Add2 export (Sprint 33~36, Alignment+PSC-I+Pset_BeamCommon) ``` -CSV 라운드트립: 개발자 템플릿 → CSV export → 엔지니어 편집 → CSV import → DSL 소스 재생성. +CSV 라운드트립(Sprint 7): 개발자 템플릿 → CSV export → 엔지니어 편집 → CSV import → DSL 소스 재생성. ## 코드 규약 - **단위 강제:** 구조물 `Mm`, 선형 `M`. 암묵 변환 금지. 경계 함수 시그니처에 명시. @@ -67,10 +70,10 @@ CSV 라운드트립: 개발자 템플릿 → CSV export → 엔지니어 편집 - 선택·필터: Category = **Feature kind**. cimery 고유 = 선형 기반 선택·규칙 선택·영향권 하이라이트. - 개념 다른 영역은 "Revit Element ≠ cimery Feature instance"처럼 차이를 공식 문서화. -## Feature 카탈로그 (MVP 거더교) -- **Must (v1):** Girder · Deck Slab · Pier · Abutment · Bearing · Alignment(입력) -- **Should (v1.1):** Cross Beam · Expansion Joint · Parapet -- **Could (v2):** Foundation · Approach Slab · Drainage +## Feature 카탈로그 (MVP 거더교) — Sprint 39 시점 +- **Must (v1) — 구현 완료:** Girder(PSC-I·SteelBox) · Deck Slab · Pier(T형·π형) · Abutment · Bearing · Alignment(입력) · 다경간 +- **Should (v1.1) — 구현 완료:** Cross Beam · Expansion Joint · Parapet · Diaphragm(격벽) · Haunch · Skew · Camber · Variable Depth +- **Could (v2):** Foundation · Approach Slab · Drainage · IfcPile - **Won't (v3+):** 철근·사장교·현수교·아치·트러스 ## 사용자 설정 (VS Code 3계층 모델) @@ -86,6 +89,8 @@ CSV 라운드트립: 개발자 템플릿 → CSV export → 엔지니어 편집 **12개 ADR-003 결정을 동시 진행 금지.** 첫 **Girder 1개**로 전 계층(DSL → IR → salsa → evaluator → OCCT → wgpu → USD) **한 번 관통**한 뒤 수평 확장. 뷰어 한 달·DSL 한 달 식 수평 접근은 치명적. +**Sprint 1~39 현황:** 수직 관통 완료. Girder·Deck·Pier·Abutment·Bearing 전부 DSL→IR→kernel→viewer→USD+IFC 파이프라인 연결됨. ADR-004 참조. + ## 함정 체크리스트 - 두 OCCT 백엔드 수치 미세 차이 → cross-check 조기 검증. - 기하 연산 비결정성 → 결정론 테스트 CI 1순위. diff --git a/cimery/CLAUDE.md b/cimery/CLAUDE.md index fbb5040..163d81a 100644 --- a/cimery/CLAUDE.md +++ b/cimery/CLAUDE.md @@ -2,21 +2,24 @@ cimery 코드베이스 개발 지침. 최상위 CLAUDE.md + Output/guides/cimery-dev-guide.md의 상세판. -## 크레이트 구조 +## 크레이트 구조 (Sprint 39 현황) ``` crates/ ├── core/ 단위 타입(Mm·M), 에러, 도메인 열거형 ← 모두 의존 -├── ir/ IR 구조체 + serde JSON 직렬화 ← dsl·kernel·usd 의존 +├── ir/ IR 구조체 + serde JSON 직렬화 ← dsl·kernel·usd·ifc 의존 ├── dsl/ Girder 등 Feature 빌더 + 검증 ← ir 의존 -├── kernel/ GeomKernel trait + StubKernel ← ir 의존 -├── incremental/ 증분 계산 DB (dirty tracking → salsa) ← kernel·ir 의존 +├── kernel/ GeomKernel trait + StubKernel/PureRust/Occt ← ir 의존 +├── incremental/ 증분 계산 DB (수동 + salsa 백엔드) ← kernel·ir 의존 ├── evaluator/ IR → kernel 연결 레이어 ← incremental·kernel 의존 -├── viewer/ wgpu 뷰어 (독립, 선택적 kernel 의존) ← kernel 의존 -└── usd/ USD 텍스트 익스포트 ← ir 의존 +├── viewer/ egui+wgpu 뷰어, IFC 익스포트 통합 ← kernel·ifc 의존 +├── usd/ USD 텍스트 익스포트 ← ir 의존 +├── ifc/ IFC4X3 Add2 STEP Part21 익스포터 ← ir·core 의존 (Sprint 33~36) +├── macros/ proc-macro: #[derive(ParamSummary)] ← 독립 (Sprint 38) +└── app/ Tauri v2 데스크톱 런처 ← 전 크레이트 의존 ``` -의존 방향: core → ir → { dsl, kernel, usd } → incremental → evaluator +의존 방향: core → ir → { dsl, kernel, usd, ifc } → incremental → evaluator → viewer → app ## 개발 규칙 @@ -40,14 +43,18 @@ cargo test --workspace cargo test -p cimery-core ``` -## 다음 스프린트 업그레이드 경로 +## 업그레이드 경로 — 완료·진행·대기 -- `incremental`: manual dirty tracking → salsa (크레이트가 안정화되면) -- `kernel`: StubKernel → opencascade-rs (데스크톱) / OpenCascade.js (웹) -- `viewer`: 삼각형 렌더 → Girder Mesh 렌더 → 전체 씬 -- `dsl`: 순수 builder → `macro_rules!` 설탕 → proc-macro `#[param]` +| 경로 | 현재 | 다음 | +|---|---|---| +| `incremental` | 수동 + salsa-backend 양쪽 (Sprint 24) | WASM salsa 승격 | +| `kernel` | PureRust + OcctKernel(데스크톱) | opencascade.js(웹) | +| `viewer` | egui+wgpu 전체 씬 + Ortho 토글 | LOD · 성능 최적화 | +| `dsl` | builder + `#[derive(ParamSummary)]` 스캐폴딩 | `#[param(unit,range,default)]` 전면 | +| `ifc` | IFC4X3 Add2 Phase 1~3b + Pset_BeamCommon | LinearPlacement · ElementAssembly | ## 참조 ADR - ADR-001: 기술 스택 (Rust + Tauri/PWA, OCCT, wgpu) - ADR-002: Feature DSL 아키텍처 (builder, IR, salsa, evaluator, 테스트 4층) - ADR-003: 후속 결정 (Feature 카탈로그, LOD, UX) +- ADR-004: Sprint 25~39 결정 (거더교 MVP 확장·IFC4X3 Add2·proc-macro 스캐폴딩) diff --git a/wiki/log.md b/wiki/log.md index 28b6cf6..deed8a5 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -8,8 +8,20 @@ --- +- 2026-04-15 create [[교각 형식 분류]] — cet_hmeg(2021) 6대 형식 + SW/nSB/APH/FTY 분기 트리 + CSB 매트릭스 컴파일. 원칙: 비패밀리·선형-GIS. +- 2026-04-15 create [[교각 4 레이어 구조]] — 교좌면·코핑·기둥·기초 composite + 레이어 의존성 컴파일. 원칙: 비패밀리. +- 2026-04-15 create [[교각 파라미터 카탈로그]] — ~112개 변수 한눈표 + 입력/자동 구분 + IFC 4X3 매핑 컴파일. 원칙: 비패밀리. +- 2026-04-15 create [[교각 자동계산 수식]] — TL/CH/HLL/CST/FL 등 derived 변수 + CEILING 시공 단위 강제 컴파일. 원칙: 비패밀리·증분. +- 2026-04-15 create [[교각 3점 기준좌표계]] — BP1/BP2/BP3 + EP1/EP2/EP3 + 5단계 좌표 산정 절차 컴파일. 원칙: 선형-GIS. +- 2026-04-15 create [[기둥 단면 형상 카탈로그]] — 사각·원형·팔각·트랙 4종 × 솔리드/중공 + 자동 벽두께 규칙 컴파일. 원칙: 비패밀리. +- 2026-04-15 meta — raw/engineer-knowledge/cet-hmeg-pier-2021/ 신설. 한맥기술(2021) PierZainer 분석 리포트 v3 + 수식 분석 + 9개 도면 인입. +- 2026-04-15 update [[선형 GIS 기반 좌표계]] — 스테이션 기반 스윕 기하·스큐각 로직 추가. 소스 추가. +- 2026-04-15 create [[교량 설계 워크플로우 UX]] — 도로설계편람 절차·MIDAS Wizard·OpenAPI 플러그인·선언적 조작 컴파일. 원칙: 비패밀리·증분. +- 2026-04-15 create [[IFC 4.3 교량 스키마]] — IfcBridge·SBS·Pset·QTO·스키마 한계·USD 하이브리드 컴파일. 원칙: 비패밀리·선형-GIS. +- 2026-04-15 create [[교량 설계 수치 제약]] — KDS 거더 두께·LRFD 하중계수·신축이음 여유량 컴파일. 원칙: 비패밀리·증분. - 2026-04-14 create [[cimery 실행 가이드]] — 빌드·테스트·뷰어 실행·USD·WASM·CI/CD·크레이트 구조 전체 실행 명령 레퍼런스. - 2026-04-14 meta — PLAN.md · PROGRESS.md 도입. 에이전트 협업 프로토콜 확립. CLAUDE.md에 필독 섹션 추가. +- 2026-04-15 meta — ADR-004 작성 (Output/reports/ADR-004-sprint-25-39-decisions.md). Sprint 25~39 15개 아키텍처 결정 + 미결 6항목 + 테스트 101개 현황. - 2026-04-14 meta — CLAUDE.md 린화. 상세 지침을 Output/guides/cimery-dev-guide.md·Output/guides/obsidian-cli.md로 분리. 프롬프트 토큰 절감. - 2026-04-14 meta — ADR-003 후속 아키텍처 결정 작성. 12개 주제 병렬 조사 기반: UI(Leptos)·IFC(ifc-lite-core)·CI/CD(Gitea+GH 하이브리드)·USD(Codeless schema)·Alignment·Plugin(Extism→WIT)·Feature 카탈로그·FEM(MIDAS)·LOD 300·리본 12탭·선택/필터·설정 3계층. - 2026-04-14 meta — ADR-002 Feature DSL 아키텍처 작성 (Output/reports/). cimery DSL·IR·salsa·evaluator·Excel 라운드트립 등 20개 기본 결정.