Commit Graph

1181 Commits

Author SHA1 Message Date
gbpark 7bd08dcf9d refactor(components): consolidate canonical input cleanup 2026-05-13 02:38:29 +09:00
DDD1542 4a8413000b Consolidate canonical input migration
Build & Deploy to K8s / build-and-deploy (push) Failing after 11m17s
Remove legacy v2 input/select and file/media runtimes, add canonical option/file loaders, and document Codex handoff.
2026-05-12 18:36:43 +09:00
gbpark a5bbd1eb7c refactor(numbering-rule): NumberingRule → Input canonical 흡수 + 채번 관리 페이지 분리
- 옛 registry/numbering-rule, registry/v2-numbering-rule, V2NumberingRuleConfigPanel,
  NumberingRuleTemplate 폐기 — InvFieldConfigPanel + InputComponent 로 통합
- input 에 numbering-picker / select-pickers 추가, autonum 타입 흡수
- 채번 관리 전용 admin 페이지(systemMng/numberingRuleList) + CreateDialog +
  SequenceManagementPanel 신설
- backend NumberingRule controller/service/mapper 갱신 (시퀀스 관리 엔드포인트)
- input canonical 진행 노트 + 채번 관리 mockup 추가

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 21:42:13 +09:00
DDD1542 c4631efbd2 중간저장 2026-05-07 17:06:26 +09:00
gbpark 3a0ab10ee6 Merge branch 'gbpark-node' of https://git.junggomoa.com/gbpark/invyone into gbpark-node
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m51s
2026-05-03 01:29:07 +09:00
johngreen b999b425cb Merge pull request 'Sync main → gbpark-node: AI 모듈 JSONB 파싱 + audit-log fix' (#1) from main into gbpark-node
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m31s
Reviewed-on: #1
2026-05-02 10:20:35 +00:00
DDD1542 517c42b5cb fix: 피벗 column fields 필터 아이콘 가로 정렬 (세로 일렬 → flex-row + wrap)
PivotView line 1694 의 column header 좌측 셀 안 column fields 필터 아이콘
4개가 'flex flex-col' 로 세로 일렬로 표시되던 문제. 옛 PivotGridComponent
디자인을 통째 흡수한 결과 (T3b) — 가로로 변경.

flex flex-col gap-0.5 → flex flex-row flex-wrap items-center justify-center
gap-1

column fields 가 많아지면 자동 wrap, 한 줄에 모이지 않으면 다음 줄.
세로 길게 늘어지는 회귀 차단.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 16:58:09 +09:00
DDD1542 2d11d222db fix: 피벗 ConfigPanel — FeatureChipGrid 로 교체 + PivotView 빈 그리드 회피
이전 commit (3ed53a670, 57ffbcbbc) 의 두 잘못 수정.

1. ConfigPanel — CPSwitch 8개 → FeatureChipGrid 1개

   CP 시스템에 다중 boolean 토글 묶음용 FeatureChipGrid 가 이미 있는데
   (CPExtras.tsx:208, InvLegacyDivider/Button/Text/InvRepeater 가 사용),
   CPRow + CPSwitch 8개로 따로 만든 게 잘못. cp 시스템 본래 패턴 따름.

   - 8 토글 (chartEnabled / fieldChooserEnabled / rowGrandTotals /
     columnGrandTotals / mergeCells / alternateRowColors / exportExcel /
     exportPdf) 을 평면 key 로 정의
   - source = nested config 에서 평면 boolean 객체 변환
   - onToggle = 평면 key 받아 nested patch (switch 분기)
   - 각 chip 에 desc 추가 (hover tooltip, FeatureChipGrid 가 portal 로 표시)

2. PivotView — data 영역 0개면 안내 (빈 0 그리드 회피)

   hasActiveFields 분기를 강화. 기존: row/column/data 중 하나만 있어도
   true → row 영역에만 컬럼이 들어간 옛 잘못된 매핑이 빈 0 그리드를 표시
   하는 회귀 (Image #6).

   변경: data 영역 컬럼 ≥1 이어야 의미있는 피벗. data 0개면 "필드를
   배치하세요" 안내 + FieldChooser 버튼 fallback.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 16:54:30 +09:00
DDD1542 57ffbcbbc7 fix: 피벗 ConfigPanel default 값 모두 false (안일한 true → 빈 그리드 회귀 방지)
직전 commit (3ed53a670) 의 메타 토글 4종이 default true 로 잡혀 있었음.
빈 row/column 영역에서 행/열 총계만 활성화되어 사용자가 새 피벗 배치 시
무의미한 0 그리드가 보이는 회귀 발생.

default true → false 변경:
- 필드 선택기 (pivotFieldChooser.enabled)
- 행 총계 (pivotTotals.showRowGrandTotals)
- 열 총계 (pivotTotals.showColumnGrandTotals)
- 행 교대 색 (pivotStyle.alternateRowColors)

PivotView 본체 (line 1048~1085) 가 활성 필드 0 일 때 "필드를 배치하세요"
안내 + FieldChooser 버튼을 자연스럽게 표시함. 신규 피벗 배치 시 사용자가
명시적으로 옵션을 켜야 효과 발현 (솔루션 정의 단계 패턴).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 16:44:54 +09:00
DDD1542 3ed53a6708 fix: 피벗 ConfigPanel — 컬럼별 area dropdown 폐기, 메타 옵션 8종으로 교체
T4 (3e6bce70d) 의 ④ 피벗 설정이 빌더에서 row/column/data/filter 를 컬럼별
dropdown 으로 미리 정해버려 피벗의 본질 (사용자 자유 분석) 을 흐림. 본체
(FieldPanel / FieldChooser) 가 영역 배치 담당하도록 일관성 정리 (Excel 피벗
패턴).

삭제 — "사번 [row▼] / 사용자ID [row▼] ..." 컬럼별 area dropdown 매핑 67줄

신규 ④ 피벗 설정 — 메타 토글 8종 (CPRow + CPSwitch)
- 차트 표시 (pivotChart.enabled)
- 필드 선택기 (pivotFieldChooser.enabled)
- 행 총계 (pivotTotals.showRowGrandTotals)
- 열 총계 (pivotTotals.showColumnGrandTotals)
- 셀 병합 (pivotStyle.mergeCells)
- 행 교대 색 (pivotStyle.alternateRowColors)
- 엑셀 내보내기 (pivotExportConfig.excel)
- PDF 내보내기 (pivotExportConfig.pdf)

빌더 = "피벗에 어떤 도구/표시를 켤지" 만 결정.
본체 = row/column/data/filter 영역 배치 + drag-and-drop + drilldown + filter
+ chart 등 분석 인터랙션 담당 (이미 T3b 통째 흡수됨).

다른 viewMode (grouped: groupBy / card: cardColumnMapping) 는 본체 분석 UI
가 없으므로 ConfigPanel 이 핵심 — pivot 만 메타 패턴으로 가는 게 맞다
(Codex GO 판정).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 16:33:13 +09:00
DDD1542 3003a056d9 refactor: v2-card-display CSS rule + 'card-display' alias 제거 (T5 잔여)
Codex 재검증에서 발견된 2건 정리.

withContainerQuery.css: '@container v2-card-display' 미디어 쿼리 룰 (10줄)
삭제. v2-card-display 컴포넌트 폐기 (e44ba2953) 시 빠진 css 정리.

templateMigrate.ts: 'card-display': 'stats' 매핑 라인 삭제. v2-card-display
의 v2 prefix 없는 legacy alias. 폐기 컴포넌트의 마이그 매핑이라 dead.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:43:09 +09:00
DDD1542 e44ba2953a refactor: v2-table-grouped/v2-pivot-grid/v2-card-display 일괄 폐기 (T5)
T3 (본체) + T4 (ConfigPanel) 흡수 완료에 따라 옛 별도 컴포넌트 폐기.
v2-split-panel-layout 은 별도 컨테이너로 유지 (Codex 권고).

폴더 5개 삭제
- v2-table-grouped/ (537 + ConfigPanel)
- v2-pivot-grid/ (1963 + utils + components + hooks + ConfigPanel)
- v2-card-display/ (1314 + ConfigPanel)
- pivot-grid/ (legacy)
- card-display/ (legacy)

ConfigPanel 3개 삭제
- V2TableGroupedConfigPanel.tsx
- V2PivotGridConfigPanel.tsx
- V2CardDisplayConfigPanel.tsx

레지스트리 / alias / hidden 정리
- lib/registry/components/index.ts: 5개 import 라인 제거 (renderer 자동 등록 폐기)
- ComponentsPanel.tsx: hidden 목록의 v2-card-display ("→ stats" 잘못된 매핑) /
  v2-table-grouped / v2-pivot-grid / pivot-grid / card-display 모두 제거
- DynamicComponentRenderer.tsx LEGACY_TO_UNIFIED: v2-card-display "→stats"
  (잘못) / v2-table-grouped / v2-pivot-grid / card-display alias 제거
- getComponentConfigPanel.tsx: 4개 dynamic import + alias 제거
- templateMigrate.ts: 3 매핑 제거
- componentConfig.ts: v2PivotGridOverridesSchema, v2CardDisplayOverridesSchema
  + 등록 + defaults 제거

이벤트 dead code
- types/component-events.ts: RefreshCardDisplayDetail / REFRESH_CARD_DISPLAY
  이벤트 (사용처 0건 — v2-card-display 전용) 제거

ScreenDesigner
- 4058 의 isCardDisplay 분기 (66.67% 그리드 특수 처리) 제거
- 4098 의 gridColumnsRatioMap 의 "card-display" 항목 제거

검증
- npx tsc --noEmit 우리 작업 파일 새 에러 0
- v2-table-grouped/v2-pivot-grid/v2-card-display/RefreshCardDisplay 잔존
  grep — 의도적 주석 5곳만 (폐기 흔적 설명)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:38:05 +09:00
DDD1542 3e6bce70d1 feat: InvTableConfigPanel pivot/card 옵션 UI (T4)
displayMode 분기 옵션 채움. T3b 에서 흡수한 PivotView + CardView 가
실제로 동작하도록 ConfigPanel UI 노출. cp 프리미티브만 사용.

pivot 분기 (placeholder 제거)
- columns 별 영역 매핑 (none/row/column/data/filter) — CPSelect
- data 영역인 경우 집계 함수 (sum/count/avg/min/max/countDistinct) — CPSelect
- pivotFields[] 배열로 자동 변환 (area="none" 선택 시 항목 제거)
- 컬럼 미로드 시 안내 Hint

card 분기 (신규)
- 그리드: cardsPerRow (1~10), cardSpacing (0~64px) — CPNumber
- 표시 영역 (CPGroup defaultOpen): 제목/부제/설명/이미지 표시 토글 +
  이미지 위치 (top/left/right) + 이미지 크기 (small/medium/large)
- 컬럼 매핑 (CPGroup defaultOpen): titleColumn/subtitleColumn/
  descriptionColumn/imageColumn — CPSelect from columns
- 액션 버튼 (CPGroup defaultOpen=false): showActions 토글 + showView/Edit/
  DeleteButton 조건부 노출

cp-panel-standard 룰 준수 (CPSection > CPGroup > CPRow > CPSelect/Switch
/Segment/Number, 3-depth 미만, 카드형 외곽 X).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:31:45 +09:00
DDD1542 49b4cdf562 feat: 테이블 pivot 모드 본체 통째 흡수 (T3b)
5 viewMode 통합 세번째 단계 — Codex 권고 (Pivot 통째 흡수, 회귀 위험
차단) 그대로 적용. v2-pivot-grid 의 본체 + utils + components + hooks +
보조 타입을 모두 table/ 하위로 이전. 리팩토링 X (V2Date picker 패턴 동일).

table/types.ts 보조 타입 흡수
- PivotResult, PivotHeaderNode, PivotFlatRow, PivotFlatColumn, PivotCellValue,
  PivotCellData, PivotGridState, PivotGridProps
- PivotDataSourceType, PivotFilterCondition, PivotJoinConfig,
  PivotDataSourceConfig, PivotTotalsConfig, PivotFieldChooserConfig,
  PivotChartConfig, PivotConditionalFormatRule, PivotStyleConfig,
  PivotExportConfig
- PivotFieldConfig 에 filterValues / filterType / isCalculated /
  calculateFormula 누락 속성 추가
- TableConfig 에 pivot 보조 키 (pivotTotals / pivotStyle /
  pivotFieldChooser / pivotChart / pivotExportConfig)

table/utils/pivot/ 4개 파일 이전 (1505줄)
- pivotEngine.ts (812) — processPivotData / pathToKey / 헤더 트리 / 매트릭스 /
  10종 displayMode (runningTotal, percentDifferenceFromPrevious 등)
- aggregation.ts (180) — sum/count/avg/min/max/countDistinct + 포맷
- conditionalFormat.ts (311) — colorScale/dataBar/iconSet/cellValue 4 종
- exportExcel.ts (202) — Excel 내보내기 (xlsx)
- 옛 prefix(AggregationType 등) → Pivot prefix 일괄 정리

table/internals/pivot/components/ 7개 파일 이전 (2347줄)
- ContextMenu / DrillDownModal / FieldChooser / FieldPanel / FilterPopup /
  PivotChart / index

table/internals/pivot/hooks/ 3개 파일 이전 (570줄)
- usePivotState / useVirtualScroll / index

table/views/PivotView.tsx 신규 (PivotGridComponent.tsx 1963줄 통째 흡수)
- import 경로 일괄 정정 (../../types → ../types, ./utils → ../utils/pivot,
  ./components → ../internals/pivot/components, ./hooks →
  ../internals/pivot/hooks)
- 컴포넌트 이름 PivotGridComponent → PivotView
- 본체 로직 그대로 (리팩토링 X)

TableComponent.switch
- pivot 분기 placeholder 제거 → PivotView 호출
- DOM filter 에 pivotTotals/pivotStyle/pivotFieldChooser/pivotChart/
  pivotExportConfig 추가

13 files, +5400+ insertions. v2-pivot-grid/ 폴더 자체는 Phase T5 dead code
일괄 삭제에서 정리 예정.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:23:39 +09:00
DDD1542 a74dff4fa2 feat: 테이블 grouped/card 모드 본체 통합 (T3a)
5 viewMode 통합 두번째 단계 — TableComponent.switch 에 grouped/card/pivot
case 분기 추가. 별도 v2-* 컴포넌트 호출 X. table/views/* 분리.

GroupedView (신규, table/views/GroupedView.tsx)
- config.groupBy 기준으로 데이터를 그룹화해 펼침/접힘 단위로 렌더
- 그룹 헤더에 그룹 키 + 행 개수 표시. ChevronRight/Down 토글
- groupBy 미설정 시 안내 메시지

CardView (신규, table/views/CardView.tsx)
- config.cardsPerRow 으로 그리드, cardSpacing 으로 간격
- cardColumnMapping (titleColumn / subtitleColumn / descriptionColumn /
  imageColumn / displayColumns / actionColumns) 으로 데이터 → 카드 매핑
- cardStyle (showTitle/Subtitle/Description/Image, imagePosition,
  imageSize, showActions, showView/Edit/DeleteButton)

PivotView (placeholder, T3b 에서 통째 흡수 예정)
- v2-pivot-grid/PivotGridComponent (1963) + utils/pivotEngine.ts (700) +
  보조 타입 통째 흡수가 다음 단계
- 현재는 설정된 필드/행 수만 표시하는 placeholder

TableComponent.switch
- case "grouped" / "card" / "pivot" 신규 분기. case "split"/"table"/default 유지
- DOM filter 에 cardsPerRow/cardSpacing/cardStyle/cardColumnMapping/pivotFields 추가

빌드 OK. grouped/card 모드 사용자 선택 시 정상 렌더 (config 옵션 없으면 안내).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 13:49:32 +09:00
DDD1542 442f641305 feat: 테이블 card 모드 옵션 + pivot 풍부한 필드 타입 추가 (T2 인프라)
5 viewMode 통합 (table/split/grouped/pivot/card) 의 첫 단계. types.ts 만.
다음 단계에서 본체 흡수 + ConfigPanel UI + dead code 정리.

card 모드 옵션 (TableConfig 신규)
- cardsPerRow, cardSpacing
- cardStyle: showTitle/Subtitle/Description/Image/imagePosition/Size/showActions
- cardColumnMapping: titleColumn/subtitleColumn/descriptionColumn/imageColumn/
  displayColumns/actionColumns

pivot 모드 풍부한 필드 (TableConfig 의 pivotFields, PivotFieldConfig 신규)
- area: row/column/data/filter
- summaryType (sum/count/avg/min/max/countDistinct)
- summaryDisplayMode 10종 (absoluteValue / percentOfColumnTotal / runningTotal 등)
- groupInterval (year/quarter/month/week/day)
- 기존 단순 pivotRows/pivotColumns/pivotValues 도 호환 유지

Codex 솔루션 정의 단계 GO + 단계별 commit 권고.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 13:44:39 +09:00
DDD1542 5f945363b2 refactor: V2Date 일괄 폐기 + InvField type=date 통일
V2DateConfigPanel(262줄) + V2Date 본체(1046줄) + V2DateConfig 타입
+ lib/registry/components/v2-date/ + DynamicComponentRenderer 의
LEGACY alias 모두 삭제. 솔루션 정의 단계 정확한 1안.

데이터 모델
- FieldType / InputFieldType union 에 time, daterange 2종 추가하여 12종 확장
- canonical 키: dateFormat / minDate / maxDate / showToday / weekStart /
  dateDefault / rangePresets / maxRangeDays
- 옛 v2-date 의 snake_case (min_date / max_date / show_today) 와 dateType /
  type / range / format 키 충돌 종결

런타임 (InputComponent + pickers.tsx)
- V2Date 본체에 있던 SingleDatePicker / DateTimePicker / TimePicker /
  RangeDatePicker 4 picker 를 input/pickers.tsx 로 통합
- InputComponent 의 case "date"/"datetime" 의 native input 분기를 datepicker
  로 교체하고 case "time"/"daterange" 신규 추가
- type 결정 로직에 inputType prop 인식 (DB input_type 매핑) → date/time
  입력이 text 로 fallback 되던 silent breakage 해결

FC 계층
- FieldRenderer / CellRenderer / FcSearch 에 time / daterange 분기 추가
- TimeField, DateRangeField 신규 컴포넌트
- adapters.normalizeType allowed 배열 확장

ConfigPanel
- InvFieldConfigPanel.DateOptions 에 showToday CPRow + CPSwitch 신규
- 옛 호환 코드 (showSeconds:ss 보정 / dateType-format 격상 등) 모두 제거
- InvInputConfigPanel.TYPE_OPTIONS / 날짜 옵션 분기에 time/daterange 추가

dead code 삭제 14곳 + 잔존 정리
- V2Date / V2DateConfigPanel / V2DateConfig / lib/registry/v2-date/ 폴더
- LEGACY_TO_UNIFIED / CONFIG_PANEL_MAP / CONFIG_PANEL_ALIAS / register /
  V2PropertiesPanel hardcoded require / config-panels barrel / hidden 목록
- componentConfig 스키마, templateMigrate, webTypeMapping, DynamicConfigPanel
- withContainerQuery.css 의 v2-date 컨테이너 룰
- db/migrations/so_modal_layout(_kr).json 의 v2-date → input + type=date

37 files, +287 / -854.

Codex GO 판정 기준 (2회 NO-GO 후 FC 계층 / inputType prop / FieldType union /
잔존 v2-date / console.log 모두 처리 후 GO).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 13:22:55 +09:00
DDD1542 e347a75953 refactor: ConfigPanel hook/helper 추출 + IconPicker cp+Portal
Build & Deploy to K8s / build-and-deploy (push) Successful in 5m32s
- useDbTables: search/table/stats 의 DB 테이블 로드 hook (3 패널 중복 제거)
- TableConnectSection + AutoLoadButton: search/table 의 테이블 연결 섹션 + 자동 로드 버튼
- row-helpers: RowNumberBadge / RowExpandChevron / RowDeleteBtn (4 패널 dense list helper)
- IconPicker: shadcn 톤 -> cp 톤 (28px 트리거, focus glow, cp 변수)
- IconPicker popover: React Portal + position:fixed (부모 overflow:hidden 우회)
- input X버튼은 hoverBg={false} 로 silent visual change 원복

Codex (GPT-5.5) 와 매 단계 교차검증 후 진행
미완 후속 사항 (auto-flip / 외부 클릭 닫기 / z-index 표준화 등) 노트에 기록

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 11:25:06 +09:00
DDD1542 a8ded6455d refactor: ConfigPanel Inv 네이밍 통합 + legacy 패널 분리 + input cp 마이그
11 패널 일괄 Inv* prefix 통일:
- 통합 (lib/registry/components/X/): button / container / divider / search /
  stats / table / title / input → Inv*ConfigPanel
- frontend/components/v2/config-panels/V2FieldConfigPanel → InvFieldConfigPanel
- 옛 v2-* hidden 호환 → InvLegacy{Divider,Text,Button}ConfigPanel

input 통합 컴포넌트 cp 톤 신규 작성 (InvInputConfigPanel):
- 277줄 옛 디자인 → CPVisualGrid 10칸 type 카드 + 타입별 옵션 + FeatureChipGrid

getComponentConfigPanel.tsx 버그 수정 (Codex 검토):
- "stats" key 중복 제거 (옛 StatsCardConfigPanel 이 통합 stats 덮던 silent bug)
- ALIAS 에서 v2-button-primary/v2-divider-line/v2-text-display 제외
  (옵션 B 일관성 — 옛 hidden 컴포넌트는 InvLegacy 패널 사용)
- MAP 의 해당 키를 InvLegacy* 로 직접 매핑

호출처 일괄 갱신:
- 각 통합 컴포넌트의 index.ts 7개 (import / config_panel / re-export)
- v2-input/v2-select/v2-divider-line/v2-text-display/v2-button-primary
  의 index.ts (config_panel 매핑)
- V2PropertiesPanel.tsx 의 require pattern (v2-input/v2-select)

검증: tsc 우리 영역 0건 / V2FieldConfigPanel 잔재 0건 / 기존 path 잔재 0건

다음 세션: useDbTables hook 추출 + 잔여 V2* cp 마이그 + dead code 정리

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 17:57:57 +09:00
DDD1542 8b8186d1c0 INVYONE Studio Config Panel — 좌측 팔레트 10 컴포넌트 cp 톤 1차 마이그
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m7s
신규 / 마이그된 패널:
- 데이터 조회/선택: InvDataConfigPanel (wrapper) + InvRepeaterConfigPanel (V2Repeater 2029줄 폐기 → cp 신규 본체)
- 통합 컴포넌트 7개 in-place cp: button / container / divider / search / stats / table / title
- 옛 v2-* hidden 호환: InvDividerConfigPanel / InvTextConfigPanel / InvButtonConfigPanel

cp 인프라:
- _shared/cp/CPExtras.tsx 신규 — 8 공용 컴포넌트
  (Hint / DimText / InlineLoader / SectionLabel / CpChip / ChipPickerBox /
   FeatureChipGrid / CPVisualGrid)
- FeatureChipGrid: portal tooltip + Stripe 패턴 group cooldown (500ms delay → 즉시 전환)
- CPVisualGrid: 시각 미리보기 카드 (두께/색/사이즈/시맨틱 등 진짜 의미 preview)
- cp.css 다크 luminance 분리 + 키프레임 / CPPrimitives CPSelect 자동 검색·정렬

옛 V2 패널 4개 삭제:
- V2RepeaterConfigPanel (2029) / V2ButtonConfigPanel (2212) /
  V2DividerLineConfigPanel (236) / V2TextDisplayConfigPanel (304)

설계 노트 5개 추가 (notes/gbpark/2026-04-28-*.md):
- cp-panel-standard / cp-panel-day2-html-v4-match / invdata-inventory /
  inv-repeater-redesign / inv-naming-consolidation

다음: Inv* 일괄 네이밍 통합 + dead code 정리

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 17:21:50 +09:00
Johngreen 52386efb83 도메인 정리: invion.com → invyone.com 전체 일괄 치환 + 매핑 문서화
Build & Deploy to K8s / build-and-deploy (push) Has been cancelled
운영 도메인이 실제로는 v1.invyone.com / solution.invyone.com / api.invyone.com 인데
코드/문서 곳곳에 v1.invion.com / api.invion.com 등 미존재 도메인이 박혀 있어 정리.

변경 파일 (21):
- frontend lib/api/client.ts, lib/utils/apiUrl.ts: hostname 체크 endsWith(\".invyone.com\") 일반화
- frontend lib/api/dashboard.ts, file.ts, flow.ts, FileViewerModal*2.tsx: 도메인 치환
- frontend invion-layout-v5.html: 시안 내 placeholder 도메인 정리
- backend-spring SecurityConfig.java: CORS 주석 예시 정리
- docker/deploy/docker-compose.yml, k8s/traefik-dynamic.yaml: traefik Host 라벨 정리
- scripts/prod/deploy.sh: 안내 메시지 정리
- .cursor/rules/api-client-usage.mdc, project-conventions.mdc: AI 가이드 정리
- docs/* 4개: 아키텍처/플로우 문서 도메인 정리
- notes/gbpark/* 3개: 과거 메모 정리

신규:
- docs/DOMAIN_MAPPING.md: 운영/개발/폐기 도메인 영구 기록.
  AI 에이전트와 신규 개발자가 헷갈리지 않도록 단일 진실 출처.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 07:39:04 +09:00
gbpark 4b31fe1b27 사용 안 하는 performanceOptimizer 유틸 제거
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m7s
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 01:01:42 +09:00
gbpark 29682e5b63 INVYONE Studio Config Panel — CP 프리미티브 신설 + V2FieldConfigPanel HTML V4 스펙 풀 매칭
- _shared/cp 프리미티브 14종 (CPSection/CPRow/CPSelect 커스텀 popover/CPSegment 평면/CPCrumb 통합 팝오버 등)
- V2FieldConfigPanel: 4 kinds × 10 types × format별 옵션 패널로 재작성 (panel-input-new.jsx 매칭)
  - resolveTriple/applyTriple 양방향 매핑 — 기존 fieldType/source/autoGeneration 호환
  - 미구현(formula/audit/금액 외화/주민·주소·카드/다중 entity) 영역은 Hint 로 명시
- V2PropertiesPanel cp 톤 + 중복 Separator 정리, ScreenDesigner 우측 패널 너비 드래그
- 다크 luminance 분리 / 섹션 헤더 gradient underline / brumb 좌·우 transparent 영역

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 01:00:46 +09:00
DDD1542 563aef6490 admin 홈 리빌딩 + 폼팝업 전용 렌더러 + 테이블 선택 emit 강화
Build & Deploy to K8s / build-and-deploy (push) Successful in 6s
- /admin 홈을 단순 링크 카드 → Welcome/Stats/SystemStatus/회사활동/최근변경/빠른진입 구성의 관리자 대시보드로 교체 (mock 데이터, 실데이터 배선은 후속)
- PopupTemplateRenderer 신규 — 팝업은 canvas 1:1 유지가 필요하므로 반응형 TemplateRenderer 와 경로 분리, absolute 좌표 + transform scale 로 창을 꽉 채움. form-popup 이 templateId 로 자체 fetch 해서 stale views(screenResolutions 누락) 문제 해소
- DashboardCard: 팝업 outer 크기를 canvas + 브라우저 크롬 보정치로 계산, 부모가 template 객체 직접 전달하던 것 제거
- TemplateRenderer: BlockRenderer export, formRow 기반 columnName/value/onChange/onRowSelect 등 바인딩 props 전달 강화
- TableComponent: 행 클릭/체크박스 선택 시 onRowSelect / onSelectedRowsChange emit, 헤더 전체 선택 동작 구현, 싱글/멀티 선택 분기 정리
- AppLayout: 모드 전환 연출 강화(burst ring + particles / 헤더 sweep / breadcrumb swap / glow flash), horizontal nav + 데스크톱에서 햄버거 자동 접힘, 헤더 도구군 래핑 구조 정리
- DashboardEmpty 삭제 → 공통 EmptyDashboard 로 통합
- dashboard.css: ud-htools stagger(오른쪽 → 왼쪽 슬라이드) 애니메이션 적용

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 18:02:17 +09:00
DDD1542 3eda684787 사용자 대시보드 기능강화 및 인비온 스튜디오 메뉴관리 자잘한수정
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m22s
2026-04-22 18:27:06 +09:00
gbpark c7f00ff2cb 대시보드 캐시 오류 수정완료 2026-04-22 01:29:08 +09:00
DDD1542 5fc1e7ede2 자유배치 -> 라인선 레이아웃자유형 반응구현
Build & Deploy to K8s / build-and-deploy (push) Successful in 3m58s
2026-04-20 16:51:33 +09:00
DDD1542 aab894b553 임시저장 2026-04-20 10:00:18 +09:00
gbpark b3ad787179 대시보드 구현 완료 세세한 오류 수정 진행중
Build & Deploy to K8s / build-and-deploy (push) Successful in 5m4s
2026-04-19 21:15:25 +09:00
gbpark de7ab9b7e3 중간세이브 - 메뉴수정 - INVYONE 스튜디오 작업 2026-04-16 00:32:19 +09:00
gbpark 1aa48cc0bb INVYONE 화면 디자이너 개편 + 컴포넌트 86→8 통합
## 디자인 개편
- IDE 톤 CSS 오버라이드 (builder-ide.css)
- 컴팩트화 (폰트/간격/패딩 축소)
- INVYONE STUDIO 로고 추가 (SlimToolbar)
- 좌측 수평 탭 → 수직 아코디언 (details/summary)
- 우측 속성 패널 신설 (V2PropertiesPanel 완전 이주)
- 다크모드 지원 (7개 통합 컴포넌트 inline hex → CSS 변수)

## 기반 시스템
- ScreenDefinition.fields/connections 타입 확장
- ComponentDefinition.dataPorts 타입 확장
- FieldConfig adapters (fieldsToColumns/Search/Form)
- DataPortBus + setupConnections runtime
- FieldsPanel (화면 수준 필드 관리 패널)

## 컴포넌트 통합 (Phase A~C)
- divider (3→1): 가로/세로 + 텍스트 구분선
- title (2→1): h1~h6/body/caption variant
- button (3→1): 6 variant × 13 actionType
- search (3→1): inline/stacked 검색 필터
- input (20+→1): FieldConfig.type 10종 내부 분기
- stats (6→1): card/chip/bigNumber 3종 스타일
- table (9→1): table/split/grouped/pivot/card 5종 displayMode
- container (11→1): tabs/section/accordion/repeater/conditional 5종

## 버그 수정 (기존 VEX 코드)
- 드래그 드롭 불가 (defaultSize camelCase 불일치)
- 설정 변경 미반영 (componentConfig vs component_config)
- ConfigPanel 미인식 (config_panel vs configPanel)
- v2- 자동 매핑 함정 (INVYONE_UNIFIED_IDS 화이트리스트)
- LayerManagerPanel 무한 API 호출 (useEffect deps)
- Button size 이름 충돌 (visual size 객체 vs config string)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 20:37:23 +09:00
gbpark a0c9d9a0ab 화면 디자이너 제작
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:28:28 +09:00
gbpark 2c0a97f2ba Phase 1: INVYONE 카드 엔진 토대 정리
- components/builder/* 폐기 (12-grid 미완성 빌더 14개 파일)
- components/template-builder/TemplateBuilder.tsx 신규
  (자유배치 + 3뷰 + Zustand 스토어 + 드래그/리사이즈/히스토리/격자)
- admin/builder/page.tsx 진입점 전환 (BuilderLayout → TemplateBuilder)
- 타입 정리: FreePosition / TemplateComponent / ViewConfig / Card /
  Dashboard / CardConnection 추가, 레거시(GridPosition/TemplateKind/
  DEFAULT_COMPONENT_LAYOUTS/CANVAS_KEYWORDS) @deprecated 표기
- v2-* 마이그레이션 1차:
  · 완전: v2-table-list (ResizeObserver), v2-table-search-widget (@container)
  · 경량: button/input/select/date/text-display/card-display/aggregation-widget
    (withContainerQuery HOC)
- 다크 모드 대응: Tailwind dark: variant 21패턴 71곳 치환
- /test-card-responsive PoC 검증 페이지

세션 후반 버그 픽스 (phase1-log §7):
- test-card-responsive (main) 그룹 밖 이동 (AppLayout 탭 시스템 회피)
- useRegistryPalette default_size {width,height}/{w,h} 포맷 정규화
- dark: variant 중복 체인 정리

검증: (A) 반응형 메커니즘, (B) TemplateBuilder UI 통과
(C) 기존 VEX 화면은 마이그레이션 미완 상태라 Phase 2 이후 개별 진행

스펙: notes/gbpark/2026-04-10-card-engine-final-spec.md
로그: notes/gbpark/2026-04-10-card-engine-phase1-log.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 03:08:06 +09:00
gbpark 06ab990dbd 진행중 2026-04-08 04:55:12 +09:00
gbpark e3fe7b640f 22 2026-04-07 13:39:14 +09:00
gbpark de24fb09d5 123 2026-04-06 15:54:31 +09:00
DDD1542 87498b9940 Refactor code structure for improved readability and maintainability 2026-03-31 09:34:54 +09:00
DDD1542 c465141f53 snake_case 통일 작업 중간 저장 - 프론트 완료, 백엔드 쿼리 ID 불일치 수정 전 2026-03-30 12:22:26 +09:00
DDD1542 b9e3f68fce [agent-pipeline] pipe-20260330021427-v9fb round-1 2026-03-30 11:25:52 +09:00
DDD1542 4342056de6 [agent-pipeline] pipe-20260330011621-qr5j round-3 2026-03-30 10:45:31 +09:00
DDD1542 312984d3cb [agent-pipeline] pipe-20260330011621-qr5j round-2 2026-03-30 10:39:17 +09:00
DDD1542 0b26870ac5 [agent-pipeline] pipe-20260330011621-qr5j round-1 2026-03-30 10:24:16 +09:00
DDD1542 a9d3a526af [agent-pipeline] pipe-20260329160157-3bqb round-2 2026-03-30 02:39:43 +09:00
DDD1542 7529c3ff9e [agent-pipeline] pipe-20260329160157-3bqb round-1 2026-03-30 02:26:40 +09:00
DDD1542 b9679856d7 [agent-pipeline] pipe-20260329143602-hu6g round-9 2026-03-30 00:38:09 +09:00
DDD1542 5fea071ae8 [agent-pipeline] pipe-20260329143602-hu6g round-2 2026-03-30 00:10:13 +09:00
DDD1542 c24dd533b2 [agent-pipeline] pipe-20260329143602-hu6g round-1 2026-03-30 00:00:35 +09:00
DDD1542 1405a19d1c [agent-pipeline] pipe-20260329112709-ncml round-2 2026-03-29 23:12:23 +09:00
DDD1542 a5f4cd5ba9 [agent-pipeline] pipe-20260329112709-ncml round-1 2026-03-29 22:56:00 +09:00
DDD1542 0fc2101331 [agent-pipeline] pipe-20260329080516-zyud round-1 2026-03-29 17:48:45 +09:00