Skip to content

TSK-012-03 App shell subnav grid layout #407

@ClarusIubar

Description

@ClarusIubar

메타데이터

목표

앱 셸에 subNav 슬롯과 no-subnav 변형을 도입하고 map filter strip을 flow 레이어로 이동한다.

고정 결정

  • KTO 관광정보 표시 토글 기본값은 OFF다.
  • 기존 src/api/tourismClient.tssrc/tourismTypes.ts contract가 main에 있으면 우선 사용하고, 없으면 중복 client를 만들지 않고 해당 gap을 audit evidence로 기록한다.
  • API path, response shape, DB schema, OAuth 성공 경로는 변경하지 않는다.
  • KTO/OpenAPI, Supabase, admin import/sync를 브라우저에서 직접 호출하지 않는다.
  • 사용자-facing copy는 이 child 목표 달성에 필요한 범위에서만 변경한다.

체크리스트

  • 현재 코드 기준 변경 전 동작 또는 구조를 테스트/근거로 고정
  • child scope 외 파일/행동 변경 없음
  • public interface 변경 시 타입과 테스트 갱신
  • Architecture Boundary Gate 근거 기록
  • PR URL 기록
  • merge SHA 기록
  • CI URL 기록

검증 체크리스트

  • npm.cmd run check:numeric-literals
  • npm.cmd run lint
  • npm.cmd run typecheck
  • npm.cmd run test:unit
  • 변경 범위에 따라 npm.cmd run test:integration
  • 변경 범위에 따라 npm.cmd run test:regression
  • UI 변경 범위에 따라 npm.cmd run test:e2e
  • npm.cmd run build
  • git diff --check
  • UTF-8 integrity check

Core Classification

Verification Contract

Required commands

  • npm.cmd run check:numeric-literals
  • npm.cmd run lint
  • npm.cmd run typecheck
  • npm.cmd run test:unit
  • npm.cmd run test:integration
  • npm.cmd run test:regression
  • npm.cmd run test:e2e
  • npm.cmd run build
  • git diff --check
  • UTF-8 integrity check

Source-of-truth readback

Required evidence

  • PR URL
  • main merge SHA
  • CI URL
  • local validation command output summary
  • completion report path

Fail-closed failure modes

  • API path, response shape, DB schema, OAuth success path change required
  • KTO/OpenAPI, Supabase, or admin import/sync direct browser call required
  • user-facing copy change outside this child scope required
  • subNav layout cannot be validated by unit/e2e tests

Architecture Boundary Gate

  • Responsibility map: AppShell owns header, optional subNav, content, bottom tab slots. MapStageCategoryStrip owns category chip rendering only. MapTabStage owns map surface and sheets only after this change.
  • Dependency direction: App.tsx composes active-tab shell slots from stage props. Stage internals do not reach upward into shell layout.
  • Test seam: AppShell public props and map tab rendering are verified through unit/e2e tests, not private DOM mutation.
  • Scope map: TSK-012-03 App shell subnav grid layout #407 changes app shell slot composition, map category strip placement, and minimal CSS needed for flow layout.
  • Architecture risk: old absolute CSS rules may remain for later TSK-012-06 App shell CSS offset cleanup #410 cleanup; TSK-012-03 App shell subnav grid layout #407 must avoid broad cleanup while preventing the map filter strip from staying inside map body overlay.

완료 근거

  • PR: TSK-012-03 App shell subnav grid layout #414
  • main merge SHA: $mergeSha
  • CI frontend: $ciUrl
  • Cloudflare Pages check: $deployUrl
  • CodeQL: $codeqlUrl
  • Completion report:
    eports/completion/TSK-012-03-app-shell-subnav-grid-layout.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:frontendReact UI, hooks, coordinator, and client service workpriority:highHigh priority worktopic:architectureResponsibility boundaries, dependency flow, and module shapetype:featureFeature or additive behavior work

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions