휴대폰에서 시안과 다르게 보이는 곳이 있어 화면마다 디자인 캔버스와 대조했다.
데이터나 기능이 없는 칸(배너 · 검색 축제 탭 · 정렬 · 로그인 · 지도 등)은 그대로 두고, 지금 맞출 수 있는 것만 고쳤다.
- 공통: 화면 제목 17/24 w700. 전체를 못 불러온 화면(검색 · 행사 목록·상세 · 장소 상세)은 공통 오류 화면으로
- 홈: 카테고리 열 간격 8, '전체 보기' 누르는 칸 44, 반려 장소 줄 글자 크기, 꼬리말 출처와 안내를 한 문단으로
- 첫 실행: 그림·제목 묶음을 세로 가운데로, 언어 · 지역 고르기 버튼의 탭 영역을 보이는 크기로
- 검색: 뒤로 44, 지우기 원 크기·색, 결과 셋째 줄 높이, 빈 결과 아이콘 색
- 장소 상세: 뒤로 버튼 그림자 없음, 이용 안내 이름 칸(한국어 56), 복사·링크를 오른쪽 끝에,
소개 '더 보기'에 꺾쇠, 근처 공연·행사 줄 끝 꺾쇠, 빠져 있던 단어 단위 줄바꿈(행사 이름 · 한눈에 보기)
누르는 칸은 44 를 지키고(시안 일부 40), 시안의 옅은 회색은 아이콘에만 쓴다(글자는 대비 때문에 한 단계 진하게).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
백엔드 AI 코스 API(4–6단계)를 앱에서 쓸 수 있게 화면 8–10 을 붙였다(설계 ai-course §14 7단계).
- 기반: 첫 실행 때 만든 기기 ID 를 안전 저장소에 두고 X-Device-Id 로 보낸다(비로그인 하루 횟수 기준).
앱 언어를 Accept-Language 로 보내 AI 문구 언어를 맞춘다
- 홈 'AI에게 코스 맡기기' → 입력(8): 문장을 1초 멈추면 조건을 해석해 줄마다 채우고 고칠 수 있다.
서버와 같은 조건 규칙을 앱에서도 먼저 본다. 하루 횟수를 다 썼으면 만들지 않고 안내한다
- 만드는 중(9): 1.5초마다 진행을 조회한다. 나가면 취소하고(차감 없음), 만들던 생성 id 를 남겨
앱을 다시 켜거나 AI_004 를 받으면 이어 본다
- 결과(10): 사실 값 · 경고 · 이동 · 바꾸기 후보(한 번에 한 곳, 횟수 안 듦) · 평가 · 다시 만들기(확인 뒤 차감) ·
출처와 AI 생성 표시. 요청 칸과 다시 만들기는 이 기기에서 입력한 생성일 때만 보인다
- 디자인 캔버스와 맞춤: 결과의 코스 제목은 빼고 'AI 추천 코스'와 요약으로 시작한다(사용자 결정).
마스코트 그림을 홈 · 입력 · 만드는 중 · 결과 · 횟수 소진에 넣었다
- 화면 전체를 못 불러왔을 때의 공통 오류 화면(그림 · 다시 시도 · 오류 코드와 추적 ID)을 만들어 만드는 중 화면에 쓴다
코스로 저장 · 지도 미리보기 · 홈의 비 소식 줄 · 횟수 소진의 로그인 버튼은 그 기능이 생기면 붙인다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KOPIS 공연이 들어온 뒤 홈 '이번 주말' 칸의 대부분이 공연이 되었다.
'축제·행사'라는 이름이면 축제 목록으로 오해하기 쉬워 '공연·행사'로 바꿨다
(이번 주말 · 다가오는 · 장소 상세 근처 · 빈 문구 · 홈 카테고리 칸, 영어 Shows & events).
- 카드 아래 줄 앞에 종류(공연 · 축제 · 행사 · 전시)를 굵게 보인다. 배지는 쓰지 않는다
- 포스터가 대부분 세로(A판)라 썸네일을 5:7 로 보인다(홈 120×168, 세로 목록 60×84).
공공누리 3유형 사진은 그대로 자르지 않는다
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
현재 위치를 그대로 쓰면 대구 밖(서울 등)에서는 모든 칸이 "근처에 아직 없어요"로 비었다(2026-11-04 회귀 점검).
서비스 지역(대구, 군위 포함 — 백엔드 geo.ts 와 같은 영역) 밖이면 대구 도심을 기준으로 쓰고,
홈에서 "아직 대구 지역만 볼 수 있어요"를 한 번 알린다.
위치를 받지 못해 대신하는 경우도 지금까지는 기준만 조용히 바뀌었는데, 같은 방식으로 알린다.
대신한 이유는 BasePoint.fallback 에 남는다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Semantics(excludeSemantics: true) 로 감싼 버튼은 안쪽 InkWell 의 누르기 동작까지 지워져
TalkBack·VoiceOver 로 누를 수 없었다(하단 탭 · 언어 · 홈 검색창 · 카테고리 · 기준 위치 · 반려견 칩).
Semantics 에도 같은 onTap 을 준다. 기기 접근성 트리에서 누를 수 있음으로 바뀐 것을 확인했고,
누르기 동작이 빠지면 위젯 테스트가 실패한다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
출처와 상관없이 가까운 30곳을 받아 관광공사·확인 장소만 고르던 것을 서버 조건(trusted)으로 바꿨다.
도심에서는 받은 30곳이 모두 상가라 칸이 비었다(봉산서원 0곳 → 6곳, 김광석길 2곳 → 6곳).
자기 자신이 섞여 오므로 보일 수(6)보다 하나 더 받는다.
백엔드 trusted 조건(fix/place-hours-and-nearby)이 먼저 배포되어야 한다 — 모르는 조건은 400 이다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
120km 는 관광공사 행사뿐이던 2026-11-03 에 대구 행사가 너무 적어 경북까지 넓힌 값이다.
KOPIS·문화포털이 들어온 뒤로는 대구 안에서도 충분히 차고(도심 기준 이번 주말 50km 32건 ·
120km 42건), 120km 면 영덕·영주처럼 차로 2시간 거리까지 나왔다.
50km 는 군위를 포함한 대구 전역과 경산·칠곡까지다(2026-11-04 결정).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
실기기(Android 16)에서 확인했다. Android 15 부터 앱이 화면 끝까지 그려지는데,
목록에 여백을 직접 준 화면은 시스템 여백이 빠져 마지막 출처 줄이 내비게이션 바에 가렸다
(장소 상세 · 행사 상세 · 행사 목록).
장소 상세는 사진 위에서 상태 표시줄 글자가 검은색이라 잘 안 보였고, 내리면 본문 제목이
상태 표시줄과 겹쳤다. 사진 위에서는 흰 글자와 위쪽 그늘을 두고, 사진을 지나면 흰 제목 줄
(뒤로 · 장소 이름)을 깐다. 상단 바가 없는 화면의 기본값(검은 글자)은 앱 뿌리에서 정한다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
디자인 캔버스 4(검색)·6·7(장소 상세) 중 지금 장소 API 로 되는 부분을 붙였다.
- 검색은 반경 20km(백엔드 최대) 거리순. 대구 도심에서 대구 전역이 들어온다.
- 영업시간을 모르는 곳은 "영업시간 미확인 · 방문 전 확인"으로 보인다.
- 한눈에 보기는 공공데이터 원문으로 확실한 것만 올린다(주차 '인근 공영주차장' 같은 애매한 값은 빼기).
- 함께 가기 좋은 곳에는 확인 안 된 상가정보 매장을 넣지 않는다(2026-11-02 합의).
- 1330 관광통역안내는 영어 화면에만(2026-10-29 합의).
검색의 '축제' 탭과 실내·무료·주차·이번 주말 조건은 데이터가 없어 넣지 않았다
(행사 API 검색어 조건 · 운영자 확인 장소 · 날씨).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
장소 화면도 공공누리 사진과 출처 표기를 써야 해서, 행사 쪽에 있던 것을
shared 로 옮겼다. Type3 사진을 자르지 않는 규칙이 한 위젯(PublicImage)에만 있게 한다.
event_models 는 출처 모델을 다시 내보내 기존 import 는 그대로 동작한다.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
데이터 기반(장소·행사 조회 API)이 생겨 앱 화면을 붙이기 시작한다.
디자인 캔버스의 1~7번(시작·둘러보기) 중 지금 API 로 바로 되는 것부터 만들었다.
- 앱 뼈대: 디자인 캔버스의 색·글자 크기·선 아이콘을 옮긴 테마, go_router 하단 탭
(홈·지도·내 코스·내 정보 — 지도·내 코스·내 정보는 자리만), 한/영 문구(arb, 4개 언어 전제)
- 첫 실행: 현재 위치를 쓰거나 대구 동네(도심·수성못·앞산 카페거리)를 고른다.
위치를 못 쓰면 대구 도심을 기준으로 시작하고 알린다. 좌표는 저장하지 않는다
- 홈 '이번 주말 축제·행사': 기준 위치 반경 120km 거리순, 비면 다가오는 30일 (2026-11-03 합의)
- 행사 전체 목록(커서 페이지)·상세(시간·요금·예매·전화·소개·출처)
- 한국어 문단은 단어 단위 줄바꿈(keepAll) — Flutter 기본은 글자 단위로 끊는다
- 공공누리 Type3 사진은 자르지 않고, 꼬리말에 관광공사·KOPIS·문화포털 출처를 적는다
- 한/영 생성물(lib/l10n/generated)은 flutter pub get 이 만들므로 git 에서 뺀다
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>