← 목록
기타 2026-07-18 3KB 읽기 4분

크라우니 오피스 플랜(간트) punch #1 — T[] hoist + 작업명/기간 편집

개요

플랜 모듈(간트/보드/리소스 3뷰 계획도구)의 간트 스케줄 본체 T[](8작업)이 renderVals 로컬 const라 편집 모델이 없던 것을, crownyBridge.js 신규 §24 installPlanBridge 런타임 몽키패치로 state.tasks 로 hoist하고 작업명·기간 편집을 영속화했다. 앱 번들 무수정, 문서 회귀 27/27 무영향.

무엇을 했는지

  • T[] hoist: 로컬 const T[] + 보조 const deps/starts/statusOf 를 state.tasks(id 필드 + per-task
dep/start/status 흡수)로 승격. renderVals 를 모델 구동으로 재구현(간트/보드/리소스·오늘선·눈금·임계· 담당칩·인건비 1:1 보존).
  • 작업명 편집: 간트 작업목록 작업명 셀 contentEditable → state.tasks[].name writeback(항목별 독립).
  • 기간 편집: 기간 셀 contentEditable → state.tasks[].dur + width 파생 재계산(주수×16.66% → 막대 길이 반영).
  • 한선씨 정본: bundle/office/bridge/플랜모델.한선 (작업 배열모델·id조회·작업명/기간 writeback·기간너비
파생·작업별독립·빈스케줄) 자체시험 24/24.

★핵심 함정(2026-07-18 CDP 실측)

  • 원본 renderVals 공존 크래시: 앱 번들 무수정이라 외부 contentEditable 편집 시 DCLogic 이 원본
컴포넌트를 재평가해 원본 renderVals(T[sel]·owners[i] 숫자 인덱스 가정)를 다시 실행한다. sel 을 문자열 id 로 마이그레이션하면 T['p3']=undefined → 크래시 → 빈 렌더(DOM 소멸). 해소: sel(number)·owners ({index:name})는 원본 숫자 계약을 보존하고, deps/starts/statusOf 만 작업 필드로 흡수해 id 기반 매핑 토대를 마련(sel/owners 의 id 전환은 punch#2 add/delete 와 함께). 인덱스 5중결합 트랩의 다른 얼굴.
  • inline style 정규화: DCLogic/브라우저가 style 을 정규화(height:34px→'height: 34px'·색→rgb) → 헤더/
행/막대 식별에 style 리터럴 매칭 금지. 헤더=첫 셀 '#', 막대=getComputedStyle position:absolute + inline width:% 로 식별(아웃라인 §23 정규화 함정과 동일 교훈).

관련 파일

  • bundle/office/bridge/crownyBridge.js — 신규 §24 installPlanBridge (11740→12089줄, +349)
  • bundle/office/bridge/플랜모델.한선 — 한선씨 정본 24/24
  • dist/CrownyAI.app/Contents/Resources/office/bridge/crownyBridge.js — 미러 동기화(md5 일치)
  • 백업: 백업/crownyBridge-플랜착수-0718-*.js.bak

게이트 결과

  • 플랜모델.한선 hanseonc_high 컴파일+실행 24/24 PASS
  • 플랜 CDP(:9333) 실측 14/14 PASS: 모델hoist·id필드·sel숫자보존·모델구동간트·작업명편집(실DOM)·
작업별독립·3뷰전환·편집유지·기간편집→막대너비(15→50)·기간독립·담당칩무회귀·단가무회귀
  • 문서 회귀하니스 27/27 PASS(§24 신규, §19~§23·문서 무영향)
  • 앱 번들 index.html·crowny-browser.m·crowny-shell.m·Makefile 무수정

잔여 이슈 (punch#2 이후)

  • 작업 추가/삭제 + sel/owners 의 id 키 전환(원본 renderVals 공존 처리 동반 필요)
  • 칸반 카드 드래그(status)·막대 드래그(일정)·의존선·자동 임계경로·그룹 접기·줌·리소스 로드 편집·모듈 연동