260 lines
16 KiB
Markdown
260 lines
16 KiB
Markdown
# Phase Z Roadmap
|
||
|
||
**문서 성격**: 앞으로의 진행 순서 + 큰 axis + 우선순위. *자주 갱신*.
|
||
**작성일**: 2026-05-08 (frontend 통합 session 반영)
|
||
**문서 역할 분담**: 본 문서는 *진행 계획*. 정확한 단계별 상태는 [`PHASE-Z-PIPELINE-STATUS-BOARD.md`](PHASE-Z-PIPELINE-STATUS-BOARD.md), 결정 변경 이력은 [`PHASE-Z-CHANGE-LOG.md`](PHASE-Z-CHANGE-LOG.md), 22 단계 도면은 [`PHASE-Z-PIPELINE-OVERVIEW.md`](PHASE-Z-PIPELINE-OVERVIEW.md).
|
||
|
||
> **현재 당장 할 일은 개발 진행이 아니라, 보고와 피드백을 위한 `PROCESS_OVERVIEW.html` 프로토타입을 먼저 만드는 것이다.**
|
||
|
||
---
|
||
|
||
## 1. 현재 위치
|
||
|
||
- MDX03 정상 경로 통과 (PASS)
|
||
- Phase Z 22 단계 파이프라인 일반화 진행 중
|
||
- 보고용 프로토타입을 먼저 작성 예정
|
||
|
||
### MDX03 결과 요약
|
||
|
||
- V4 rank-1 frame 적용 완료
|
||
- `03-1 → F13 / three_parallel_requirements` (그대로 사용 가능, 0.927)
|
||
- `03-2 → F29 / process_product_two_way` (그대로 사용 가능, 0.920)
|
||
- rank 2~6 후보 Step 9 `application_plan` 에 보존
|
||
- `final.html` / `preview.png` 생성
|
||
- Step 14 시각 점검 통과 / Step 20 상태 통과
|
||
- F29 missing asset bug 수정 완료
|
||
- missing image count = 0 / full MDX coverage = true
|
||
|
||
---
|
||
|
||
## 2. 이번 session 에서 닫힌 작업
|
||
|
||
이번 session 에서 closed 된 axis 목록:
|
||
|
||
- Step 5 보완 — V4 rank-1 → non-reject 최대 6 개 후보 list
|
||
- Step 6-A — `CompositionUnit` 에 `v4_candidates` 필드 추가 (additive, logic 무변)
|
||
- Step 7-conn — `select_layout_candidates` artifact 연결
|
||
- Step 8-conn — region / display candidates artifact 연결 (placeholder)
|
||
- Step 9 v0 — passive `application_plan` artifact (V4 후보 적용 계획 trace)
|
||
- cleanup-1 — stale 주석 (`pipeline 호출처 X`) 정정
|
||
- F29 visual fidelity 정정 — missing SVG → CSS gradient 재현
|
||
- README 통합 갱신 — 한글 / 22-step Mermaid / 로드맵 Mermaid
|
||
- push 완료 — origin (GitHub) + slide2 (Gitea)
|
||
|
||
### 2-B. Frontend 통합 session 닫힌 작업 (보고용 1차 초안)
|
||
|
||
frontend (`design_agent_front/design-agent`) 와 backend phase_z2 의 연결 axis :
|
||
|
||
- **Vite plugin endpoint 들** — 외부 backend 없이 단일 dev server 안에서 spawn :
|
||
- `POST /api/run` (overrides body 받아 CLI 인자로 forward)
|
||
- `GET /data/runs/{run_id}/{path}` (run artifact serving)
|
||
- `GET /frame-preview/{frame_number}` (`data/figma_previews/{NN}.png` 서빙)
|
||
- `GET /api/sample-mdx` (데모용 fixed mdx03 자동 로드)
|
||
- **Backend Step 7-A (override CLI 인자)** :
|
||
- `--override-layout PRESET` (8 preset 중 하나 강제)
|
||
- `--override-frame UNIT_ID=TEMPLATE_ID` (multiple)
|
||
- `--override-zone-geometry ZONE_ID=X,Y,W,H` (multiple, horizontal-2 / vertical-2 만 적용)
|
||
- catalog 미등록 frame 보호 — `frame_overrides_skipped` trace
|
||
- **Backend trace 확장** — `step09.units[].v4_all_judgments` (reject 포함 32 entry, `catalog_registered` flag, `frame_overrides_applied/skipped`, `layout_override_applied`, `auto_layout_preset`)
|
||
- **Frontend SlideCanvas** :
|
||
- iframe 안 `.zone[data-zone-position]` + `.slide-body` boundingClientRect 측정 → zone overlay 좌표 정확
|
||
- iframe contentDocument CSS injection (html/body margin/padding/min-height 강제 — standalone 표시용 잘림 방지)
|
||
- 8 preset layout 별 zone overlay rendering
|
||
- frame top-6 표시 + V4 label badge + figma_previews thumbnail + catalog 미등록 회색 차별
|
||
- selected frame preview overlay (반투명 미리보기)
|
||
- section drag-drop drop target (LeftMdxPanel 의 native drag → SlideCanvas zone drop)
|
||
- **HTML 편집 모드** (글벗 editor.js 패턴 차용 : designMode + contentEditable + outline CSS) — 텍스트 변경 시 `hasPendingChanges` 트리거
|
||
- **pendingLayout 모드** — 다른 layout "적용하기" → slide-body 영역만 빈 layout 으로 전환 + zone resize 8 방향 handle (edge × 4 + corner × 4) + section drag drop 자동 carry over
|
||
- "선택대로 재생성하기" 버튼 — `userSelection.overrides` → `PipelineOverrides` 변환 후 `/api/run` forwarding
|
||
- **Frontend MDX 트리 분해 (frontend re-parse)** — `parseMdxText` 가 `##` 중목차 + `###` 소목차 분해. `loadRun` 에서 backend section 의 `raw_content` 앞에 `## __ROOT__` prefix 임시 추가해서 sub_sections 추출 (Stage 0 normalize 가 backend 에 통합 안 된 임시 우회)
|
||
- **데모 fixed input** — 페이지 로드 시 자동 `samples/mdx/03 ...` fetch → 사용자 업로드 단계 skip
|
||
|
||
각 axis 상세 의사결정 / 폐기 / lock 은 [`PHASE-Z-CHANGE-LOG.md`](PHASE-Z-CHANGE-LOG.md) 참조.
|
||
|
||
---
|
||
|
||
## 3. 현재 22 단계 진행 수준
|
||
|
||
> 아래 수치는 MDX03 정상 경로 기준의 *추정 진행률*이다.
|
||
> 22 단계별 공식 상태는 [`PHASE-Z-PIPELINE-STATUS-BOARD.md`](PHASE-Z-PIPELINE-STATUS-BOARD.md) 를 *single source of truth* 로 한다.
|
||
|
||
| Step | 단계 | 추정 % |
|
||
|---|---|---|
|
||
| 0 | 사전 준비 / 카탈로그 / 컨트랙트 | 65% |
|
||
| 1 | MDX 업로드 | 100% |
|
||
| 2 | MDX 정규화 | 65% |
|
||
| 3 | Content Object 추출 | 45% |
|
||
| 4 | Internal Composition Planning | 40% |
|
||
| 5 | V4 매칭 후보 추출 | 85% |
|
||
| 6 | 구성 계획 | 80% |
|
||
| 7 | 슬라이드 레이아웃 계획 | 85% |
|
||
| 8 | Zone / Region 비율 계획 | 75% |
|
||
| 9 | 적용 계획 (`application_plan`) | 70% |
|
||
| 10 | 프레임 컨트랙트 확인 | 65% |
|
||
| 11 | 슬롯 매핑 | 45% |
|
||
| 12 | 슬롯 데이터 생성 | 85% |
|
||
| 13 | HTML 렌더 | 85% |
|
||
| 14 | 시각 점검 | 70% |
|
||
| 15 | 문제 분류 | 80% |
|
||
| 16 | 재시도 라우터 | 85% |
|
||
| 17 | 조치 실행 | 40% |
|
||
| 18 | 실패 분류 | 85% |
|
||
| 19 | 다음 조치 제안 | 60% |
|
||
| 20 | 슬라이드 상태 결정 | 95% |
|
||
| 21 | 디버그 / 추적 기록 | 45% |
|
||
| 22 | 사용자 확인 / 내보내기 | 10% |
|
||
|
||
전체 요약:
|
||
- MDX03 정상 경로 = 완료
|
||
- 22 단계 일반화 = 약 **65~70%**
|
||
- 제품형 전체 = 중간 단계
|
||
|
||
---
|
||
|
||
## 4. 큰 로드맵
|
||
|
||
```
|
||
1. 22 단계 파이프라인 안정화 (현재)
|
||
2. Phase Q 재검토 후 Phase Z 반영 (audit & salvage)
|
||
3. AI 보정 / 재구성 단계 (AI Repair / Restructure)
|
||
4. DB / 카탈로그 정리
|
||
5. 프론트엔드 연결
|
||
6. HTML 수정 기능 추가
|
||
7. 프레임 지속 업데이트
|
||
```
|
||
|
||
자세한 단계별 설명은 [`README.md`](../../README.md) §4 참조. 샘플 MDX (03 / 04 / 01 / 02) 는 *로드맵 단계 X* — *22 단계 보완용 검증 재료*.
|
||
|
||
---
|
||
|
||
## 5. 우선순위 (2026-05-08 갱신 — frontend 통합 session 후)
|
||
|
||
```
|
||
0. 보고용 link 1차 (현재 — 닫는 중)
|
||
|
||
1. §7-B 항목별 목적 / input / output 정리 + Phase Q audit & salvage
|
||
- 먼저 lens 잡고 (각 보완 항목의 목적·input·output)
|
||
- 그 lens 로 Phase Q 모듈 10 개 검토 (Keep / Migrate / Reference / Delete)
|
||
- 통합 정책은 [`PHASE-Q-AUDIT.md`](PHASE-Q-AUDIT.md) §0-A 따름 (10 원칙 lock)
|
||
- 산출물: docs/architecture/PHASE-Q-AUDIT.md
|
||
|
||
2. 22 단계 backend 본체 보완
|
||
- audit 결과 반영 (Migrate 항목 우선 통합)
|
||
- frontend session 에서 발견된 보완 지점 (§7-B A 그룹) 반영
|
||
- Stage 0 normalize / V4 fallback / zone 좌표 export / slide-base iframe / catalog 확장 등
|
||
|
||
3. Frontend 추가 보완 (AI 투입 / HTML 수정 backend 적용 / DB 연결)
|
||
- §7-B B 그룹 (zone-section assignment / edited HTML → MDX 등)
|
||
- §7-B D 그룹 (filtered reason UI / min_height 한계 / status badge 안내)
|
||
|
||
4. 전체 일반화 + 시스템 audit
|
||
4a. MDX 01 / 02 / 04 fresh run (regression / status / coverage 검증)
|
||
4b. 코드 audit (dead code / stale comment / type drift)
|
||
4c. frame catalog audit (등록 수 / contract 일관성 / preview.png 일관성)
|
||
4d. DB / data 활용 audit (assets / runs / static 폴더 정리 수준)
|
||
|
||
5. Clean up (4 의 결과를 input 으로)
|
||
```
|
||
|
||
§7-B 의 항목 구현 순서는 §1 의 audit 결과로 재정렬됨 — 본 §5 가 최상위 axis.
|
||
|
||
---
|
||
|
||
## 6. 보고용 프로토타입 계획
|
||
|
||
**파일**: `PROCESS_OVERVIEW.html` (기존 갱신) 또는 `PHASE_Z_REPORT_PROTOTYPE.html` (신규).
|
||
|
||
**포함할 내용**:
|
||
- 프로젝트 개요
|
||
- MDX03 실제 결과 (`preview.png` / `final.html` / PASS status)
|
||
- 22 단계 파이프라인 타임라인
|
||
- V4 rank 후보 예시 (1~6 위)
|
||
- Layout / Region / Frame 설명
|
||
- Step 9 `application_plan` 예시
|
||
- 아직 미구현인 기능 (HTML 수정 / 이미지 크기 조정 / AI 보정 / DB / 프론트 에디터)
|
||
- 향후 로드맵 (큰 7 단계)
|
||
|
||
**목적**:
|
||
- 현재 파이프라인 구조 설명
|
||
- MDX03 결과 시각적으로 보여줌
|
||
- 미구현 영역 명확히 표시
|
||
- 향후 front / AI / DB / editor 방향에 대한 피드백 수집
|
||
|
||
---
|
||
|
||
## 7. Pipeline 복귀 후 Todo
|
||
|
||
보고 / 피드백 수집 후 22 단계 안정화 작업 재개. 우선순위 후보:
|
||
|
||
- **MDX04 검증** — `samples/mdx_batch/04.mdx` fresh run → status / rank-1 frame / 미연결 여부 확인
|
||
- **시각 점검 확장** (Step 14 보강) — 누락 이미지 / 표 잘림 / 비율 어긋남 / 빈 공간 검사
|
||
- **프레임 어댑터 확장** — Figma / V4 에는 있지만 Phase Z 에 미연결인 frame 의 contract / partial / builder 추가
|
||
- **MDX 정규화 보강** (Step 2 / 3 / 4) — Content Object 추출 + Internal Composition Planning 활성화
|
||
- **Step 21 디버그 추적 보강** — schema 채우기 (현재 빈 상태)
|
||
- **MDX01 / 02 검증** — 다른 sample 로 일반화 확장
|
||
|
||
이 후 단계 = 큰 로드맵의 §2 ~ §7 (Phase Q audit → AI repair → DB → 프론트 → HTML 수정 → frame 지속).
|
||
|
||
---
|
||
|
||
## 7-B. Frontend 통합으로 드러난 보완 지점 (2026-05-08)
|
||
|
||
이번 frontend session 에서 *기능적인 것을 해결하기 위해 frontend 가 임시로 채운 부분* + *backend 본체가 보완해야 의미 있는 axis* 정리.
|
||
|
||
> **본 표는 §5 의 1 단계 audit lens** — 각 항목의 *목적 / input / output* 을 먼저 채우면 Phase Q 모듈 검토 시 *명확한 질문* 이 됨 ("이 schema 와 같은 코드가 Phase Q 에 있나? Migrate / Reference / Delete 어느 쪽?"). audit 결과로 본 §7-B 의 구현 우선순위가 재정렬됨.
|
||
|
||
### A. Backend 본체 보완 (큰 axis)
|
||
|
||
| # | 항목 | 이유 / 영향 | 임시 대체 |
|
||
|---|---|---|---|
|
||
| A-1 | **Stage 0 normalize 통합** — `mdx_normalizer.normalize_mdx_content` 를 phase_z2 가 호출 | 표준 input (정리된 bullet MDX) 외 (HTML-heavy raw) 입력 처리 못 함. step03 추출이 1 ContentObject 로 뭉침 → cardinality strict frame 과 mismatch → filter | frontend 가 raw_content 앞에 `## __ROOT__` prefix 붙여 sub_sections 만 추출. content_objects 는 통째로 (별 axis 보류 — `project_phase_z_normalize_gap.md`) |
|
||
| A-2 | **Catalog 확장** — frame_contracts.yaml + frame_partials 더 많은 frame 등록 (현재 3 개 → 32 개 목표) | 사용자 frame 변경 의미 거의 불가 (V4 32 후보 중 use_as_is/light_edit 만 있어도 catalog 미등록이면 backend 가 skip). MDX03 외 다른 sample 일반화 어려움 | frontend 가 `catalog_registered: false` 카드 시각 차별 + handleGenerate 에서 forward 미시도. 사용자에게 "catalog 미등록 — render path 미연결" toast |
|
||
| A-3 | **Frame preview png 일관성** — 모든 catalog frame 의 일관된 preview.png 자동 생성 | `figma_to_html_agent/blocks/{frame_id}/preview.png` 가 inconsistent (일부 frame 만 존재). frontend 가 어떤 source 든 통일해야 | 32 개 모두 있는 `data/figma_previews/{NN}.png` (Figma original export) 사용. frame 별 *실제 렌더 결과* 가 아닌 *Figma 디자인* 표시 |
|
||
| A-4 | **slide-base.html iframe-friendly mode** — body padding / centering / min-height 가 standalone 모드용. iframe embed 시 잘림 | frontend 가 매 iframe onLoad 마다 contentDocument 에 reset CSS 주입 (모든 frame 영향) | frontend CSS injection 으로 우회. 진짜 fix 는 slide-base 가 query string `?embedded=1` 같은 시그널 받아 conditional padding |
|
||
| A-5 | **V4 후보 자동 fallback** — rank-1 capacity / cardinality / structure mismatch 시 자동 rank-2/3 시도 | 03-1 처럼 rank-1 (`three_parallel_requirements`, strict cardinality 3) 가 추출 0 items 와 mismatch → filtered_capacity. 사용자 입장에서 "왜 빠졌는지" 알기 어려움 | (없음. frontend 는 reject + filtered 결과를 그대로 받아 표시) |
|
||
| A-6 | **Zone DOM 좌표 export** — backend 가 `.zone[data-zone-position]` / `.slide-body` 의 절대 px 좌표를 step08 또는 별도 step 에 export | frontend 가 매 iframe onLoad 마다 boundingClientRect 측정 — 비용 + iframe 안 DOM 변경 시 stale | (없음. iframe 측정으로 우회) |
|
||
|
||
### B. Backend Override path 확장 (Step D-ext 나머지)
|
||
|
||
| # | 항목 | 이유 |
|
||
|---|---|---|
|
||
| B-1 | **Zone-section assignment override** — `--override-section-assignment ZONE_ID=section_id,section_id` CLI 인자 + composition planner 의 자동 결정을 user override 로 강제 | pendingLayout 모드의 section drag drop 결과가 backend 에 적용되도록. 현재 frontend visual 만 |
|
||
| B-2 | **Edited HTML → MDX 역변환** — 글벗의 `html_to_slide_mdx` 패턴 차용. frontend 의 `iframe.contentDocument.querySelector('.slide').outerHTML` → backend → MDX → pipeline 재실행 | 편집 모드에서 사용자가 텍스트 수정한 결과가 새 final.html 에 반영. 현재 frontend visual 만 |
|
||
| B-3 | **Sub-section (### 단위) drag drop 처리** — backend 가 sub-section id 를 인식해서 zone 에 sub-section 단위로 매핑 | LeftMdxPanel 의 트리 (S1.1, S1.2 ...) drag drop 결과가 의미 있게 적용되도록 |
|
||
| B-4 | **다른 layout 의 zone-geometry override** — 현재 horizontal-2 / vertical-2 만. top-1-bottom-2 / top-2-bottom-1 / left-1-right-2 / left-2-right-1 / grid-2x2 도 지원 | 사용자가 어떤 layout 에서든 자유 zone resize 가능 |
|
||
|
||
### C. Frontend 일관성 정리 (drift 정리)
|
||
|
||
| # | 항목 |
|
||
|---|---|
|
||
| C-1 | `userSelection.selectedZoneId` schema — `zone.id` (e.g., `zone-03-1`, `pending-zone-N`) vs `zone.zone_id` (e.g., `top`, `primary`) 양쪽 매칭 일관화 |
|
||
| C-2 | `zone_sections` / `zone_geometries` / `zone_frames` 의 key 통일 (zone_id 또는 region.id) |
|
||
| C-3 | `effectiveSlidePlan` swap 로직이 누락된 component 정리 (FramePanel / LayoutPanel / 기타) |
|
||
| C-4 | Toaster 제거 후 inline status bar 도입 (선택) — 현재 toast 호출은 silent (비표시) |
|
||
| C-5 | resize 좌표 schema 통일 (slide-body 내부 0~1 vs 1280×720 절대) — pendingLayout 만 활성으로 단순화한 상태이지만 향후 다양한 mode 지원 시 명확화 |
|
||
|
||
### D. UX 보완
|
||
|
||
| # | 항목 |
|
||
|---|---|
|
||
| D-1 | **filtered_section_reasons 노출 UI** — backend `step20_slide_status.json` 의 filter 사유를 frontend 가 헤더 / 패널에 표시 (Step 8 coverage UI) |
|
||
| D-2 | **Zone resize 시 frame min_height 한계 표시** — frame contract 의 min_height_px 를 frontend 가 받아서 resize limit + visual hint |
|
||
| D-3 | **데모 외 사용자 업로드 흐름 일관화** — 자동 mdx03 로드와 사용자 직접 업로드의 시각 차별. "데모 모드" 표시 |
|
||
| D-4 | **Step 20 status badge 의미 안내** — PASS / RENDERED_WITH_VISUAL_REGRESSION / PARTIAL_COVERAGE 의 사용자 친화 설명 |
|
||
|
||
---
|
||
|
||
## 8. 문서 역할 분담
|
||
|
||
| 문서 | 역할 | 갱신 빈도 |
|
||
|---|---|---|
|
||
| [`README.md`](../../README.md) | 외부 / 내부 공유용 프로젝트 개요 | 가끔 (큰 방향 변경 시) |
|
||
| [`PHASE-Z-PIPELINE-OVERVIEW.md`](PHASE-Z-PIPELINE-OVERVIEW.md) | 22 단계 도면 (구조 잠금) | 거의 안 바뀜 |
|
||
| [`PHASE-Z-PIPELINE-STATUS-BOARD.md`](PHASE-Z-PIPELINE-STATUS-BOARD.md) | 22 단계별 현재 상태의 single source of truth | 자주 |
|
||
| [`PHASE-Z-CHANGE-LOG.md`](PHASE-Z-CHANGE-LOG.md) | 의사결정 변경 이력 (axis 단위, 시간 순) | 작업 단위 |
|
||
| **`PHASE-Z-ROADMAP.md`** (본 문서) | **앞으로의 진행 순서 / 큰 axis / 우선순위** | **자주** |
|
||
| [`PHASE-Q-AUDIT.md`](PHASE-Q-AUDIT.md) | Phase Q 모듈의 Keep / Migrate / Reference / Delete 결정 + Salvage Plan + ROADMAP §7-B 우선순위 재정렬의 input | audit 진행 중 (모듈별로 1 turn) |
|
||
| `PROCESS_OVERVIEW.html` | 보고 / 피드백용 시각 프로토타입 | 보고 시점 |
|
||
|
||
각 문서가 자기 역할만 하면 drift / 중복 / outdated 방지.
|