Skip to content

TSK-014-01 Mobile map location and tourism sheet layout fix #426

@ClarusIubar

Description

@ClarusIubar

Scope-ID

TSK-014-01-MOBILE-MAP-LOCATION-AND-SHEET-LAYOUT-FIX

Core Classification

Branch

mobile-map-location-sheet-fix

문제

실사용 화면에서 다음 문제가 확인됐다.

  • 내 위치 찾기 버튼이 기대대로 동작하지 않는다.
  • KTO 관광정보 바텀시트가 이미지 이후 본문 영역을 충분히 보여주지 못하고 하단 탭 근처에서 내용이 잘린다.

구현 체크리스트

  • 현재 내 위치 버튼 흐름과 geolocation hook 경계를 코드 기준으로 확인
  • 위치 성공/실패/권한 거부를 public behavior 기준으로 테스트 추가
  • KTO 정보 시트의 partial/full 높이와 내부 스크롤 구조를 테스트 추가
  • 모바일 바텀 탭과 시트가 겹치지 않도록 CSS/layout 최소 수정
  • KTO 정보 시트가 이미지, 요약, 소개, 위치, 출처, 링크까지 접근 가능하게 유지
  • 완료 보고서 작성 및 PR/merge/CI 근거 기록

Architecture Boundary Gate

  • Stable contract/data boundary: browser geolocation API, Naver map local contract, TourismPlaceItem presentation contract.
  • Core behavior owner: map location action은 map/navigation hook 계층, KTO sheet layout은 TourismInfoSheet와 map sheet CSS.
  • External dependency boundary: live GPS/Naver SDK는 테스트에서 직접 의존하지 않고 public UI state와 local mocks로 검증한다.
  • Composition/orchestration boundary: AppMapStageView는 버튼/시트 조립만 담당하고, 위치 계산과 시트 렌더링 책임을 내부로 끌어오지 않는다.
  • Validation seam: unit/component tests plus mobile E2E layout checks.
  • Scope map: frontend map UX only. API path/response shape/DB/OAuth/backend import flow는 변경하지 않는다.
  • Architecture risk: CSS로만 덮으면 다른 sheet 상태를 깨뜨릴 수 있으므로 partial/full state와 bottom tab overlap을 함께 검증한다.

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 strict read or commit hook

Source-of-truth readback

  • PR URL
  • main merge SHA
  • main CI URL
  • production-smoke URL
  • CodeQL/Code Quality URL

Required evidence

  • 내 위치 액션 회귀 테스트
  • KTO 시트 레이아웃/내용 접근성 회귀 테스트
  • 완료 보고서 reports/completion/TSK-014-01-mobile-map-location-sheet-fix.md

Fail-closed failure modes

  • live GPS/Naver SDK 없이는 검증 불가능한 구조로 바뀌면 중단한다.
  • API/DB/OAuth 변경이 필요하면 별도 이슈로 분리한다.
  • 사용자-facing copy 대량 정리가 필요하면 별도 copy/encoding 이슈로 분리한다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:frontendReact UI, hooks, coordinator, and client service workbugSomething isn't workingpriority:highHigh priority worktopic:architectureResponsibility boundaries, dependency flow, and module shapetype:childExecutable child issue under a parent roadmap

    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