Commit Graph

24 Commits

Author SHA1 Message Date
zio
48572d261a feat(nfr,tenant): wave 5+6 — dark theme toggle, i18n (ko/en/zh/ja), multitenancy phase 1 (V26)
- theme: dark palette remap via [data-theme], themeStore persistence, AppShell toggle,
  shared-layer hex -> semantic tokens, focus-ring/reduced-motion/skip-link a11y
- i18n: react-i18next with browser detection + ko fallback; full extraction for public
  site P1-P7 and login/signup/forgot flows; LanguageSwitcher wired in public shell,
  login, and AppShell
- multitenancy: V26 tenant master + tenant_id (event/hall/app_user, DEFAULT 'kintex'),
  TenantContextFilter (X-Tenant-Id -> Host -> default), catalog/hall scoping (zero
  behavior change), /api/admin/tenants GET/POST wired for SCR-A9
- ops(prod): kintex.wise.ai.kr live — nginx vhost on wise host proxying verified dev
  origin + LE TLS; full-stack split deferred (host RAM/disk constraint, see WORK_STATUS)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 10:52:52 +09:00
zio
4049b7c222 feat(backlog): wave 4 — ops real-data, M9 settlement (V24), M1 hall assign+quote (V25), roleCode/nav; fix OTP retry lockout
- fix(security): verifyOtp/enrollVerify consumed the challenge BEFORE code verification —
  one mistyped TOTP burned the session and every retry hit "세션 만료" (live incident).
  Now consume only on success, keep challenge for up to 5 failures (OtpChallengeStoreTest)
- SCR-14 ops: congestion from real check-in aggregates, power from utility orders;
  hardware widgets stay as honest "sensor not connected" empty states
- M9 settlement: /api/settlement (dashboard/invoices/generate/issue/payments), V24 invoice
  tables, server-authoritative amounts (ST_Area x rate + VAT), PG-delegation notice, /settlement UI
- M1 hall assign: /api/halls CRUD + period-overlap conflict (409 with details) + rates-v1.0
  auto-quote, V25 idempotent period columns, /halls board UI
- shared: AuthUser.roleCode (JWT rc claim, additive), AdminGuard precise check, AppShell
  placeholder nav wired via event-context builders, /_styleguide dev-only route

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 10:14:29 +09:00
zio
8a49a68a6a feat(backlog): wave 3 — BI global overview, admin CRUD screens+guard, schedule real-data (V23); fix boot crash
- fix: MyBatis <script> XML violations (AuctionMapper deadline<now(), VisitorMapper <=) that
  crash-looped boot and triggered health rollback; add MapperAnnotationParseTest regression guard
- M16 BI: GET /api/analytics/overview — cross-event revenue, monthly hall utilization,
  exhibitor retention, linear-regression forecast (hall-manager only, no migration)
- M18 admin: users/roles/codes/menus CRUD screens consuming live system APIs, AdminGuard on all
  /admin/* routes, landing module shortcuts; A8 rulesets confirmed already live-wired
- SCR-15 schedule: V23 (category/est_visitors backfill), hall-utilization + calendar APIs,
  screen switched to real data with offline fallback
- QA: replace text check glyph with IconCheck SVG
- verified: compileJava, test (incl. mapper parse), tsc -b --force, vite build all EXIT 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 09:44:44 +09:00
zio
c6f3a8d916 feat(domains): second-wave hardening — auction scoring, visitor check-in/lead engine, CMS versions/media/public (V21)
- M15 auction: scoring/quotation calc + unit tests, screens/auction local API as canonical client
- M10 visitor: check-in desk (SCR-31, /visitors/checkin route+nav), QR token + checkin_at,
  lead exhibitor/consent/note, check-in/search/stats/badge-reissue/lead-create/CSV export
  (masked PII only, RBAC-guarded, @Audited) + rule-based lead scoring engine
- M17 CMS: content version history, media library, public CMS API (/api/public/cms), HtmlSanitizer
- Flyway repair: extensions appended to already-applied V17/V19 split into V21 (checksum-safe), V17/V19 restored
- verified: compileJava, test, tsc -b all EXIT 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 09:09:14 +09:00
zio
abc9f83690 docs: record Stitch port track (25 screens) + derived backlog 1B
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 05:28:56 +09:00
zio
345082c251 docs: WORK_STATUS — track close-out, 3 hotfixes, live E2E results, new pitfalls
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 04:12:39 +09:00
zio
8509787016 fix(frontend): server tsc -b errors + missing pieces
- NotificationCenterPage: toast node was never rendered (toasts invisible + TS6133 on server tsc -b)
- ReportPage: Tooltip formatter param typed number, recharts expects ValueType|undefined
- vite.config: /uploads dev proxy (login slide images) — missed in 1de3b9b
- design.md v2.1.1: all 84 screens Stitch status reconciled 64-row update (via designer)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 03:48:06 +09:00
zio
c3a695d70c feat(stitch): harvest all 39 pending screens (64/64 secured)
- Web core SCR-22/23/25-27/29/30/32-50 (26), admin A5/A6/A8/A9, public P1-P7, mobile M15
- +5 supplementary variants (P4 3-step, P7 manage, M15 ticket-select), 43 files, 0 failures
- All delayed generations recovered server-side (project 27 -> 155 screens), no regeneration needed
- WORK_STATUS: stitch 64/64 + real-data/2FA track close-out recorded

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 03:27:05 +09:00
zio
c7b853be17 docs: record Stitch pending 39 screens + recovery procedure in WORK_STATUS
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 01:07:41 +09:00
zio
1de3b9b269 feat: login slide CMS + G2B RFP doc + 4 report decks + SCR-31 screen
- Login page: 5-image auto-rotation slides (latest-first) with admin CRUD (upload, caption, active toggle, RBAC + audit log), V11 seed migration
- docs: G2B-style RFP (74 requirements, tech 90/price 10, prototype demo 32pt)
- Deliverables: execution plan (25s), kickoff (13s), interim (15s), final (25s) report decks
- Stitch: SCR-31 check-in kiosk screen HTML

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 01:00:35 +09:00
zio
ba90b54d81 feat(proposal): G2B-standard 7-chapter proposal deck (97 slides, QA-approved)
- Restructure to KONEPS (조달청 협상계약 별지5호) standard TOC: I general / II strategy-methodology / III tech-function / IV performance-quality / V PM / VI support / VII misc
- 9 new slides: staffing M/M, quantitative eval, standard framework, PM methodology, handover/training, SM/SLA, incident/BCP, managerial security, subcontracting
- Scoring alignment updated to tech 90 (70 qual + 20 quant) / price 10
- Nanobanana win-theme dual placement (II applied-tech + III function)
- Appendix D screen gallery (19 Stitch drafts) with AI-draft disclosure
- QA PASS: RTM 142/142 (3 fixes: F-008/F-010/F-026), no secrets, honesty labels verified
- Preserve rebuild toolchain + source docs in deliverables/제안서/_gen (16 files)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 00:44:44 +09:00
zio
6c9891c7e2 feat: mobile harness + design v2.1 (84 screens) + PLANNING v3.1 + deliverables + Stitch screens
- Harness: kintex-mobile-dev agent + kintex-mobile-orchestrator skill (WISE mobile ref, Stitch-first design rule, dual app targets B2B/B2C)
- design.md v2.1: full 84-screen inventory (web 51 / admin 10 / public 8 / mobile 15) with Stitch prompts incl. ticketing (SCR-P7/P8, M14/M15)
- PLANNING v3.1: unified account + split signup tracks (2FA required for staff, light signup/guest for visitors), one codebase / two app targets
- Deliverables: dev plan (21s), user/operator/developer guides (17/14/15s), program spec (44s, 65 programs, 8 flowcharts), DA (DB design 14s + table spec xlsx 35 tables/299 cols)
- Benchmark: ticketing-app-benchmark.md (7 apps) -> IMPLEMENTATION_BACKLOG Phase F (14 items)
- Stitch: 23 generated screens saved (mobile 10, admin 6, web core 5, ticket 2)
- mobile/: Expo scaffold (SDK 51, expo-router, secure store JWT)
- frontend: SCR-13~17 QA fixes, icons.tsx, kintexEvents, V10 seed migration
- ci/: KINTEX CI logo assets

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 23:31:45 +09:00
zio
117d1b3d56 docs: 산출물 갱신 정책 변경 — 최초 1회 생성 + 개발 완료 시 최종 1회만 갱신 (중간 갱신 금지)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:59:32 +09:00
zio
4cee6c1f66 feat(frontend): 신규 5화면 SCR-13~17 — 경영분석·현장운영·전시일정·관리자·스타일가이드
- design.md v1.3: SCR-13~17 매핑·상세 스펙 순증 (기존 SCR-01~12 무수정)
- React 이식 5화면 + Recharts 도입 + chartColors(§1 토큰)·shared.css 공통 프리미티브
- App.tsx 라우트 5종 + AppShell NavLink 배선 (신규 4항목, /_styleguide 네비 비노출)
- QA: tsc 위양성 교정(tsconfig.app 기준)·미사용 import 제거 → tsc/vite build EXIT 0
- reviewer: 배포 가능(Critical/Major 0) — Minor 티켓 BACKLOG 등재, R15-01 홀 필터 배선 즉시 수정
- docs: UNDEVELOPED_BACKLOG.md 신설(세션 미개발 통합) + WORK_STATUS 갱신
- stitch: 재취득 4화면 + component_guide 2종 + _icons 7종

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:56:28 +09:00
zio
58556ee1da docs: WORK_STATUS.md — 작업 인수인계·요구사항 로그·현황·남은 큐·함정 (다른 PC 이어작업용)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 21:02:18 +09:00
zio
de7ad55056 docs: 전시관리 100대 기능 백로그 + 갭분석 (AI 자동화·NFR 강조)
- FEATURE_BACKLOG_100.md: 12카테고리 100기능·AI 55/100·AI자동화맵(없앤 수작업)·공통품질 NFR(접근성·시큐어코딩·다국어·라이트/다크)
- FEATURE_GAP_ANALYSIS.md: PLANNING v3.0 대비 이미63/부분18/신규19·담당 에이전트 매핑·orchestrator Phase 편입

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 20:55:04 +09:00
zio
95dc76f150 chore: GUARDiA 재사용 패턴 흡수 — 스모크 러너·push·정합/보안/운영 문서
- tools/test/kintex_smoke_test.py: 8021 스모크/회귀 러너(run_full_test 패턴, env-only 시크릿, 비파괴 프로브, CI 게이트)
- scripts/push_kintex.py: push_any_repo 경량 이식(자격증명 env-only)
- docs/GUARDIA_ALIGNMENT.md: 표준 프레임워크 정합 매핑
- docs/SECURITY.md: 보안 불변(외부API·자격증명·워터마크·root 예외)
- docs/OPS_RUNBOOK.md: 헬스체크·재기동·롤백 런북

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 19:54:35 +09:00
zio
ca971c1cae feat(planning): PLANNING v3.0 멀티테넌시(다중 전시관) 확장
- 정체성: 킨텍스 전용 → 다중 전시관 SaaS(KINTEX=테넌트#1, COEX 등 온보딩)
- 테넌트/Venue 모델 + 전 엔티티 tenant_id 전파 + fail-closed 격리(공유 스키마+tenant_id 컬럼)
- 역할: 플랫폼 슈퍼관리자 vs 테넌트(전시관) 관리자 계층 + 행사 RBAC 3중
- 서브도메인 테넌트 컨텍스트, 기존 데이터 tenant_id=1 백필. DDL은 DA/db-engineer 후속

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 19:36:27 +09:00
zio
89d59d3093 feat(phase-b): WISE 공통/시스템관리 레이어 + 2FA/OTP + MDI 셸 표준
공통레이어(PLANNING §5B, WISE/UIWS 이식):
- 인증강화 2FA: TotpService(RFC6238)·OTP 등록/검증/초기화·로그인 실패 잠금·admin 비번 env 주입(admin123 시드 없음). 기존 JWT/RBAC 무수정, security 패키지 레이어만 추가
- 시스템관리: 사용자·역할/권한·공통코드·메뉴·시스템설정·감사(@Audited AOP). SystemAccessGuard(전역 ADMIN/홀매니저) — EventAccessGuard와 직교 이중 RBAC
- 공통 업무기능: worklog·schedule·message·notice·opinion·meeting·report·notification(단일 채널)·stats·search
- 스키마 V7(시스템관리·보안)·V8(공통 업무모듈) 멱등, V1~V6 불변

design.md v1.2: MDI 셸 표준 §2.7(탭바·다중문서·상태보존·세션복원·단축키·역할별)
CLAUDE.md: G1·G2 게이트 해소 반영

backend gradlew build·frontend tsc EXIT 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 19:23:02 +09:00
zio
eccbeb1337 feat(v2.0): Phase A 아키텍처 + WISE 개발문서 + PM/PMO + DB 계층 + 프론트 착수
- 거버넌스: 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>
2026-07-11 18:10:01 +09:00
zio
9987d958db feat(v2.0): 자동전시시스템 하네스 재구성 + PLANNING v2.0 + 백엔드 스캐폴드 + 평면도 자산
PLANNING v2.0: 자동전시시스템 재정의, 6역할 웹/모바일 분리, 도메인 M10~M18(옥션 M15·관람객 M10·마케팅/공개사이트 M12·BI M16(운영사 ROI 포함)·CMS M17·관리자 M18), WISE/UIWS 공통·시스템관리 레이어 §5B(2FA OTP), 옥션/견적서/역경매, M2/M3 3안 생성→선택/병합. design.md v1.1(Stitch 정합·SCR 매핑).

하네스 재구성: 전문 에이전트 17종(아키텍트 AA·SA·TA·DA·NA / 공통 common-dev / 코어 backend·frontend·db / 도메인 bidding·visitor·cms·bi·admin / AI ai-dev·visualizer / QA·devops) + kintex-impl-orchestrator v2.0(Phase A~E) + IMPLEMENTATION_BACKLOG v2.0 + CLAUDE.md.

백엔드 스캐폴드: Spring Boot 3.2.5(com.zioinfo.kintex) + JWT/RBAC + WebSocket + 버전형 룰엔진 + M2~M5 컨트롤러(M3 사전검증·M4 견적·M5 RenderJob 실구현, 공간경로 501 대기). compileJava SUCCESS.

자산: 평면도 JPG 15장 + 매니페스트(R4 트렌치·CAD 해소). CAD 93MB·build는 gitignore.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 17:32:40 +09:00
zio
4cd83bdfe1 feat(harness): 구현 하네스 전체 구성 + 스택 확정(React/Spring/MyBatis/PostgreSQL)
- 스택 확정: PLANNING v1.2 §8(FastAPI/Next.js→Spring Boot+MyBatis/React), CLAUDE.md 기술스택 섹션
- 구현 에이전트 5종: kintex-backend-dev·frontend-dev·db-engineer·qa·devops-dev
- kintex-impl-orchestrator 스킬 + docs/IMPLEMENTATION_BACKLOG.md(Phase0~5)
- designer에 Stitch 학습·정합 트랙, developer 스택 갱신
- Stitch export 텍스트 참조(code.html·DESIGN.md 3종·proposal.md) 추가, 스크린샷 PNG는 gitignore

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 16:58:31 +09:00
zio
3da6b1c092 feat(harness): ReRoomAI 분석 반영 — PLANNING v1.1 나노바나나 파이프라인 확정 + client.py 재작성 + Stitch 전달
- docs/analysis/reroomai-source.md 신규: gemini-3.1-flash-image-preview image-to-image, 보존/교체 프롬프트, CompareSlider/전처리 차용
- PLANNING v1.1: §6-4/6-5 나노바나나 호출스택·부스 프롬프트 빌더 확정, R11 해소·R12(Gemini 외부API 승인 게이트) 추가
- tools/nanobanana/client.py 전면 재작성: build_booth_prompt 4단 조립, 메타데이터 임베드, S6 래스터 합성 분리, seed 폴백, 방어 로직
- BACKLOG B-02/B-03/B-09/B-11/B-12 done
- kintex.com 2차 검증 순증 사실 반영(기본부스 사양·이격·홀 스펙)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 16:40:11 +09:00
zio
8a488322c1 chore: kintex 하네스 초기 커밋 (로컬 소스)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 16:16:33 +09:00