- 거버넌스: kintex-pm·dev-pm·pmo 에이전트
- Phase A 아키텍처 5종: docs/architecture/{app,system,tech,data,network}.md (성문화·NFR·SRID0 공간표준·M16 스타스키마·보안영역)
- WISE(UIWS) 참조 개발문서 6종: README·DEVELOPMENT_GUIDE·ENV_SETUP·COMMON_CODES·API_GUIDE·BUILD_DEPLOY
- DB 계층: PostGIS 스키마 V1~V6(홀·트렌치 가정그리드·GiST) + MyBatis 매퍼 5종(ST_* 공간쿼리) + Flyway. gradlew build SUCCESS
- 프론트 착수: React/Vite 스캐폴드 + design.md 토큰 + SCR-01 로그인·SCR-03 부스 에디터. tsc/vite build EXIT 0
- R-T1 수정: 나노바나나 워커 큐키 kintex:renderjob:queue 통일(백엔드 정합, silent no-op 방지)
- 도메인/게이트: G2 해소(dev kintex.zioinfo.kr·prod kintex.wise.ai.kr), CLAUDE.md 로스터 20종
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.5 KiB
킨텍스 프론트엔드 — 진행 기록 (kintex-frontend-dev)
작성: kintex-frontend-dev · 2026-07-11 · 근거:
docs/design.mdv1.1 ·_workspace/01_backend_contracts.mdv0.1 · Stitch(SCR-01·SCR-03) 범위: IMPLEMENTATION_BACKLOG B-0(프론트 스캐폴드) + C-C 일부(SCR-01) + C-M2 일부(SCR-03)
완료
- 스캐폴드:
src/frontend(React 18 + Vite 5 + TS). 디자인 토큰(design.md §1) →src/styles/tokens.cssCSS 변수 단일 출처. 라우팅(react-router, 인증 가드), API 클라이언트(JWT 헤더·ApiResponse 봉투·오류코드), WebSocket(STOMP/SockJS,/topic/render/{jobId}구독) 골격. - SCR-01 로그인/워크스페이스 선택: 좌 55% 브랜드 패널 + 우 45% 로그인 카드 → 로그인 후 워크스페이스 카드 그리드.
login·workspaces·accept-invite배선. 미등록 장치업체 초대 차단(NOT_REGISTERED_COMPANY→ 차단 모달). - SCR-03 부스 배치 에디터: 3열(좌 도구·중앙 SVG 다크캔버스·우 속성/검증) + 상단 툴바. SVG 캔버스(부스 폴리곤·트렌치 그리드·축척·선택·줌).
GET/validate/auto-generate배선. AI 자동배치 1·2·3안 생성→선택/병합 다이얼로그(S7 조감 RenderJob WebSocket 구독). - 검증:
tsc -bEXIT 0,vite buildEXIT 0(238 modules, rollup win32 크래시 없음). WCAG AA — 포커스 링·role/aria·switch·reduced-motion.
경계면 이슈 (백엔드/계약 대조 — kintex-qa/backend 확인 요청)
-
[중] 위반 오버레이 좌표 부재 —
ComplianceReport.violations[]에pin·label·measured는 있으나 도면 하이라이트 위치(좌표/boothId)가 없다. design.md §1-4·SCR-03은 "도면 위 같은 색 하이라이트 + 번호 핀으로 목록과 1:1 연결"을 요구. 현재 위반 목록의 "위치 보기"는 캔버스 하이라이트로 연결 불가. 요청: Violation에polygon/boothId/anchor[x,y]중 하나 추가(pin 번호와 캔버스 오버레이 매핑용). -
[중] 홀 치수·트렌치 좌표 계약 부재 — 캔버스가 홀 크기(126×90m)와 트렌치 그리드를 하드코딩/가정 중.
LayoutDto에 홀 dims·트렌치 좌표가 없다. 계약 §6 render의scene.hall.dims_m엔 있음. 요청:GET .../layout응답에hall:{dims_m, trenches?}포함 또는 별도GET .../halls/{hallId}홀 마스터 엔드포인트(트렌치·기둥·비상구 포함). -
[하] auto-generate → 편집 반영 경로 불명 —
AutoLayoutOption은summary+s7RenderJobId만 반환, 선택 안의 부스 배열이 없다. "이 안으로 편집 시작"이 선택 안을 layout에 병합하려면 옵션의 booths 또는 서버측 확정 엔드포인트가 필요. 현재는 재조회(refetch)로 임시 처리. 요청: auto-generate 옵션에 booths 포함 또는POST .../layout/apply-option {optionId}. -
[하] 홀 매니저 SSO·이메일 인증 로그인 — SCR-01의 "킨텍스 내부 계정 로그인" 버튼은 계약에 대응 엔드포인트 없음(login 단일). 현재 UI만 배치, 미배선. Phase B-1(2FA/SSO) 시 배선 예정.
-
[정보] degraded 폴백 —
GET layout·login·accept-invite가 현재 501(NOT_IMPLEMENTED). 프론트는 501을 감지해 로그인은 안내 메시지, 에디터는 샘플 배치(sampleLayout.ts, 계약 shape 동일) 로 캔버스 시연. 매퍼 구현 시 코드 변경 없이 실데이터로 대체됨.
계약 준수 확인
- 응답 봉투
ApiResponse<T>·PageResponse<T>·오류코드→분기(FORBIDDEN·COMPLIANCE_BLOCKED·NOT_REGISTERED_COMPANY·NOT_IMPLEMENTED) 그대로 구현. - AI 생성 이미지는
watermarkRequired/watermarkText/notice를 항상 노출(제거 불가AiImage컴포넌트). 계약 §0-3 준수. - 민감정보(IP·SSH·해시) 미표시. 사용자/업체는 이름·역할만.
남은 화면 (미착수)
- 웹: SCR-02 주최자 대시보드 · SCR-04 배치안 비교(S7) · SCR-05 참가업체 홈 · SCR-06 설계 스튜디오(4샷+Before/After) · SCR-07 배선 뷰 · SCR-08 신청 요약 · SCR-09 규정 리포트 · SCR-10 승인 큐 · SCR-11 검수 상세 · SCR-12 갤러리
- 모바일(390px): SCR-M1 현장 체크리스트 · SCR-M2 현장 검수
- 공통 후속: 재사용 컴포넌트(Before/After CompareSlider — reroomai 패턴, 배선 오버레이 렌더러, 데이터 테이블/지브라), 실 캔버스 인터랙션(부스 드래그·리사이즈·병합), WebGL 대규모 렌더 검토.