Commit Graph

3744 Commits

Author SHA1 Message Date
gbpark 06998cd2a5 문서 최신화: Traefik 와일드카드 실운영 / TenantGuard / K8s Secret 주의 2026-04-24 20:29:53 +09:00
gbpark 6d4f486e35 DB 비밀번호 회전
Build & Deploy to K8s / build-and-deploy (push) Successful in 6s
2026-04-24 19:40:17 +09:00
gbpark 5812925929 테넌트 서브도메인 존재 검증 Guard 추가
Build & Deploy to K8s / build-and-deploy (push) Failing after 3m6s
- 백엔드 TenantController: GET /api/tenant/check?subdomain=xxx
  (메타 DB 강제 라우팅 + CompanyResolver 로 존재 여부 반환)
- frontend/lib/tenant/subdomain.ts: 호스트 파싱 + 예약어(solution/www/admin 등) 제외
- TenantGuard 클라이언트 컴포넌트: layout.tsx 에서 wrap,
  sessionStorage 로 같은 서브도메인 재체크 방지
- /tenant-not-found 페이지: v5 solid+glow 스타일

등록되지 않은 서브도메인 접속 시 즉시 /tenant-not-found 로 리다이렉트.
2026-04-24 19:27:52 +09:00
gbpark 76f43cea9b DB 이름 vexplor → invyone 전환
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m30s
- application.yml, k8s configmap, docker-compose 4종: SPRING_DATASOURCE_URL path
- provisioning 코드: {prefix}_vexplor → {prefix}_invyone 테넌트 DB 네이밍 규칙
- 프론트 마법사: Step1Basic, Step4Run 미리보기 라벨
- CompanyAccordionRow: 기본 DB 이름 포맷
- 마이그레이션/멀티테넌시 문서 동기화
- Traefik 와일드카드 설정 산출물 보관 (notes/)

비밀번호(vexplor0909!!) 및 역사 기록 문서(INVYONE_CONCEPT,
DDD1542, test-output, dashboard-runtime-fixes) 는 의도적으로 미변경.
2026-04-24 19:15:06 +09:00
gbpark 8c861144dc 서브도메인 배포 작업
Build & Deploy to K8s / build-and-deploy (push) Successful in 6s
2026-04-24 17:49:16 +09:00
gbpark 8be7e16e56 서브도메인설정
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m28s
2026-04-24 04:56:40 +09:00
gbpark 94c9b4b602 중간저장 2026-04-24 04:56:30 +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 991b3aa831 Merge remote-tracking branch 'origin/main' into gbpark-node
Build & Deploy to K8s / build-and-deploy (push) Successful in 6s
; Please enter a commit message to explain why this merge is necessary,
; especially if it merges an updated upstream into a topic branch.
;
; Lines starting with ';' will be ignored, and an empty message aborts
; the commit.
2026-04-23 11:25:38 +09:00
DDD1542 4508766d06 수정본 업데이트
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m0s
2026-04-23 09:32:39 +09:00
Claude (gbpark) 44c7313deb responsive: 사이드바 토글 항상 노출 + breakpoint 정렬
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m0s
- JS isMobile breakpoint 1024→768 (CSS @media 와 정렬)
  기존에 768~1023px 구간에서 사이드바는 숨고 햄버거는 display:none 이라
  사이드바를 열 방법이 없던 버그 수정.
- v5-mobile-toggle 기본 display:flex (모든 화면에서 표시)
  borderless 헤더 아이콘 스타일(32px)과 정합
- 햄버거 onClick 분기: 모바일=sidebarOpen / 데스크톱=sidebarCollapsed
  desktop 에서는 narrow(56px) ↔ full(220px) 토글로 동작
- title/aria-label 다국어 (열기/닫기/펼치기/접기)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 06:54:41 +09:00
Claude (gbpark) 1a4586e126 UI Phase B — shadcn을 SSoT로, 컴포넌트 디자인 정리
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m2s
- Badge: variant를 semantic 토큰화 (bg-green-500 하드코딩 제거 → bg-success 등)
  - border/hover 제거 (클릭 불가 요소에 hover 불필요)
  - focus-visible ring (focus → focus-visible)
  - info variant 추가 + solid (filled primary) 추가
  - whitespace-nowrap, gap-1 (아이콘 간격 표준)

- Button: success/warning variant 제거 (사용처 0건, 상태는 Badge로)

- Dialog: size prop 추가 (sm:420 / md:560[default] / lg:720 / xl:960)
  - 기존 max-w-lg(512) → md(560). className의 max-w-* 가 오면 우선.
  - 편집 모달의 좁은 폭 문제 해결

- Input: h-10 → h-9 (Button default 높이와 정합)

- v5-atomics.css: DEPRECATION NOTICE 주석 추가. 신규 코드는 shadcn <Button>, <Badge> 등 사용.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 22:16:22 +09:00
Claude (gbpark) 3f481acd8e UI Phase A — 컴포넌트 크기/폰트 상향, UPPERCASE 제거
Build & Deploy to K8s / build-and-deploy (push) Successful in 3m59s
- v5-btn 30→34px, sm 26→28px, lg 40px 추가. 폰트 11.2→13px
- v5-bdg UPPERCASE/letter-spacing 제거 (한글 자간 왜곡 해결), 9.28→11.5px
- v5-tbl 헤더 UPPERCASE 제거, font-weight 600, 폰트 9.6→13px, 행 padding 증가
- v5-kpi-num 1.85→2rem (display 토큰 정렬), delta/sub 9.9→12px
- v5-card-title UPPERCASE 제거, 10.5→13px
- v5-crumbs 9.6→11.5px, 몬오스페이스 제거
- v5-page-sub 10.9→13px
- v5-modal max-width 420→560, size 변형 추가 (sm 420, lg 720, xl 960)
- v5-modal-body body-sm→body 토큰
- 사이드바 .v5-si 폰트 12.3→13px, 여백 증가
- 헤더 breadcrumb 11.5→13px

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 22:02:45 +09:00
Claude (gbpark) 407da15e6d UI 디자인 패스 — 타이포/헤더/빈화면/로그인 정돈
- 타이포 스케일: body 12→14px, caption 9.6→12px, display 25.6→32px, 위계 강화
- 헤더 우측 3그룹화 (대시보드액션 | 테마/알림/설정 | 모드+프로필), v5-hdr-sep 구분자 추가
- 사이드바 SUPER_ADMIN 회사 카드 borderless slim 라벨로 압축
- 메뉴명 빈 텍스트 방어 + title 속성 추가
- 빈 대시보드(EmptyDashboard) 리디자인: 탭없음/위젯없음 2상태 분리, 2-CTA 카드
- 로그인 코스믹 공연 축소: 별 150→30, 파티클 20→0, 카피 한글화 (로그인 버튼/서브타이틀)
- 모드 전환 burst/sweep/badge-zoom 제거, sidebar stagger morph만 유지 (handleModeSwitch 100→25줄)
- View transitions duration 1800ms → 500ms

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 19:42:46 +09:00
DDD1542 3eda684787 사용자 대시보드 기능강화 및 인비온 스튜디오 메뉴관리 자잘한수정
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m22s
2026-04-22 18:27:06 +09:00
DDD1542 a5de92de65 정리 완료
Build & Deploy to K8s / build-and-deploy (push) Successful in 39s
2026-04-22 09:45:55 +09:00
chpark 2c57dc8cda 부서 권한 그룹 권한 관리
Build & Deploy to K8s / build-and-deploy (push) Successful in 7s
2026-04-22 03:16:38 +09:00
gbpark 868ddac9a3 Merge branch 'gbpark-node' of https://git.junggomoa.com/gbpark/invyone into gbpark-node
Build & Deploy to K8s / build-and-deploy (push) Successful in 6s
2026-04-22 01:32:25 +09:00
gbpark c7f00ff2cb 대시보드 캐시 오류 수정완료 2026-04-22 01:29:08 +09:00
chpark 7c30955809 윈도우 및 맥 DB정보 수정정
Build & Deploy to K8s / build-and-deploy (push) Successful in 40s
2026-04-22 00:54:52 +09:00
gbpark 15c74ae26c 라이트 모드 색상 톤 조정
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m0s
- 패널/카드 배경을 솔리드 흰색으로 변경
- 캔버스/카드/보더 대비 강화
- v5 본문 라벤더 그라데이션 제거, 흰색 + 우측 보더 분리

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 00:12:53 +09:00
gbpark 5153386fce 디자인 수정
Build & Deploy to K8s / build-and-deploy (push) Successful in 3m59s
2026-04-21 22:59:51 +09:00
DDD1542 bc66d8c549 버튼 수정 TemplateRenderer
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m0s
2026-04-20 18:32:12 +09:00
DDD1542 fbd46c53cf 라인 레이아웃 버튼 tight-fit compaction 추가
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m3s
row 단위 그룹으로 버튼 크기를 자동 축소해 cell overflow 방지.
text-aware floor 로 라벨 길이에 따라 최소 폭 보장.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 17:49:36 +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 937505ab28 Merge remote-tracking branch 'origin/gbpark-node' into gbpark-node
Build & Deploy to K8s / build-and-deploy (push) Successful in 7s
2026-04-16 00:35:50 +09:00
gbpark de7ab9b7e3 중간세이브 - 메뉴수정 - INVYONE 스튜디오 작업 2026-04-16 00:32:19 +09:00
chpark 4d39d70f1d DB 연결정보를 서버 로컬 DB로 변경 (183.99.177.40:5432)
Build & Deploy to K8s / build-and-deploy (push) Successful in 6s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 15:15:22 +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
chpark 1eb13050dd ci: backend-node 제거 (Spring Boot로 전환됨)
Build & Deploy to K8s / build-and-deploy (push) Successful in 39s
2026-04-12 02:27:40 +09:00
chpark 4b15263ee7 ci: retrigger deploy after node install
Build & Deploy to K8s / build-and-deploy (push) Successful in 7m24s
2026-04-11 17:15:58 +00:00
chpark 39fdc2683e fix: selectCompanyName LIMIT 1 추가 및 K8s 배포 설정 추가
Build & Deploy to K8s / build-and-deploy (push) Failing after 7s
2026-04-11 17:09:40 +00: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 9c36191ebf 중간 세이브 2026-04-10 13:33:37 +09:00
gbpark c6e81c4520 22 2026-04-09 00:39:11 +09:00
gbpark 3dad7fcf4f 11 2026-04-08 21:18:22 +09:00
gbpark 06ab990dbd 진행중 2026-04-08 04:55:12 +09:00
gbpark 4603ac7fd6 디자인 수정 2026-04-08 02:27:27 +09:00
gbpark db8df83b31 node 업그레이드-->25 이전 서버설정 cash문제 해결. 2026-04-08 01:10:59 +09:00
gbpark 9890b906b9 chore(docker): point invyone backend at test_dev instead of vexplor_dev
User confirmed test_dev is the correct database for invyone (the
old TEST-VEX project), matching what the previous mac compose was
using. Same host (211.115.91.141:11134), same credentials, just a
different database name.

Verified end-to-end: real login (POST /api/auth/login from the
browser path) returns 200 with a valid JWT, meaning the full chain
browser → next dev rewrites → backend-spring → HikariCP → test_dev
works and the user table lookup + password check both pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 23:45:27 +09:00
gbpark 276e338b0e fix(frontend): use relative API URL so browser works from any host
NEXT_PUBLIC_API_URL was hardcoded to http://localhost:8083/api which
gets baked into webpack bundles at build time. NEXT_PUBLIC_* vars
run in the browser, so "localhost" resolves to the *user's own PC*,
not the office host running the container — connect refused for
anyone hitting the site over Tailscale or LAN.

Use a relative URL (/api) and let next dev's rewrites proxy to
SERVER_API_URL (invyone-backend-spring:8081 inside invyone-net).
This way the request always lands on whatever host the browser is
already talking to (localhost / 100.126.230.80 / public domain),
and the Next dev server forwards it to the backend container.

Verified: POST /api/auth/login from browser path returns the spring
controller's 400 response, confirming the full
browser → frontend → backend chain works.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 23:38:01 +09:00
gbpark 00dd9e3a59 fix(frontend): disable standalone + webpackMemoryOptimizations in dev
next dev mode was throwing ENOENT for routes-manifest.json and other
chunk files, leaving /login and other routes permanently 404 after
the first compile. Root cause:

- output: "standalone" is a prod build option; combined with next dev
  it produces chunk paths and manifests that don't match what dev
  expects.
- experimental.webpackMemoryOptimizations evicts compiled modules to
  save memory, but in dev that includes already-served SSR chunks,
  so requests after the eviction window 404 even though the page
  compiled successfully.

Wrap both options in an isDev check so prod build behavior is
preserved while dev no longer self-destructs its own chunks.
Verified on the office Ubuntu invyone-frontend container: /, /login
return 200 and the chunk-loss errors are gone.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 23:32:31 +09:00
gbpark 5bcff2db4d 123 2026-04-07 23:25:25 +09:00
gbpark b7c5262c53 chore: drop backend-node from invyone docker stack
invyone (= old TEST-VEX) is React + Java only; backend-node belongs
to a different project (PMS) and was bundled by mistake. Remove the
backend-node service from docker-compose.invyone.yml, drop the
backend-node.Dockerfile, and clean up the now-unused frontend env
vars that pointed at the node API.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 22:55:22 +09:00
gbpark a3872a271f chore: add unified docker dev stack for invyone (frontend + spring + node)
Adds backend-node.Dockerfile (Node 20-alpine + nodemon) and a single
docker-compose.invyone.yml that brings up all three services on
invyone-net with restart unless-stopped, intended for the office
Ubuntu host. Uses vexplor_dev DB for both backends and exposes
9772 (frontend) / 8083 (spring) / 8082 (node) on the host.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 22:24:20 +09:00
gbpark b994ac7335 chore: ignore CLAUDE.local.md (per-user setup notes)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 21:55:13 +09:00
gbpark b2c52e32b1 test 2026-04-07 18:51:18 +09:00