← 목록
AI 2026-07-27 5KB 읽기 5분

크라우니AI iOS 홈화면 표준 재설계 + 물어보세요 LLM 연결 + 하단 편집형 버튼바

개요

크라우니AI iOS 앱(org.crowny.crownyai)의 홈화면을 ai.crowny.org 정본 디자인(왕관 로고·h1·서브·태그·옴니 ask박스·서비스타일)으로 전면 재설계하고, 하단에 편집 가능한 5탭 버튼바(홈/서비스/즐겨찾기/방문기록/설정)를 신설, "물어보세요" 입력을 crowny-ai.crowny.org 실LLM(SSE 스트리밍)에 연결했다. 시뮬레이터 테스트까지만 수행 — 빌드 아카이브/업로드는 하지 않음(사용자 지시).

무엇을 했는지

A. 홈화면 재설계 (CAStartViewController)

  • 세로 중앙 스택: 왕관 로고(CACrownLogoView, 벡터 드로잉) → h1 "무엇을 도와드릴까요?" → 서브 "검색, 질문, 주소 — 하나의 입력창에서" → 태그 "쓸수록 똑똑해지는 크라우니AI"
  • 옴니 ask 박스: radius22 입력창(별 아이콘+플레이스홀더+원형 ↑ 전송버튼), 리턴/버튼 = "물어보세요" 전송
  • 서비스 타일: 기존 앱카드-iOS.psv 19건을 2열 그리드로 재스타일(CAAppCardCell, 신규 토큰)
  • 다크모드: UIColor colorWithDynamicProvider로 라이트/다크 자동 전환 — 시뮬레이터 라이트/다크 양쪽 스크린샷 확인 완료

B. 하단 편집형 버튼바

  • CABottomBarView(하단 고정, 5버튼: 홈/서비스/즐겨찾기/방문기록/설정), SF Symbol 아이콘+라벨
  • 롱프레스 또는 설정→"하단바 편집" → CABottomBarEditViewController(UITableView 편집모드: 드래그 순서변경, 삭제, 추가 목록)
  • 구성 영속화: NSUserDefaultscrownyBottomBar(기능id 배열), 최소 3개 가드 + 중복 금지
  • 하단바 외 탭: CAServiceListViewController(★ 토글 즐겨찾기), CAFavoritesViewController, CAHistoryViewController, CASettingsViewController 신설
  • 즐겨찾기 = crownyFavorites, 방문기록 = crownyVisitHistory(최대 200건) NSUserDefaults 영속

C. "물어보세요" → LLM 연결 (CAAskViewController)

  • POST https://crowny-ai.crowny.org/api/chat {"message":"..."}, SSE(text/event-stream) 응답을
NSURLSessionDataDelegate.didReceiveData로 증분 수신·라인 파싱·누적 표시(스트리밍)
  • 파싱 규칙: data: {"t":"..."} → 텍스트 누적, data: [DONE] → 종료, : open/빈줄 → 무시
  • 라이브 curl로 프로토콜 실측 확인(레이트리밋 응답):
  : open
  data: {"t":"지금은 요청이 잠시 몰려 답변을 가져오지 못했습니다..."}
  data: [DONE]
  
→ 구현한 파싱 로직이 이 실응답 포맷과 정확히 일치함을 확인(3줄 타입 전부 정상 처리).

D. 시뮬레이터 테스트 (빌드/업로드 없음)

  • xcodebuild ... -sdk iphonesimulator ... CODE_SIGNING_ALLOWED=NOBUILD SUCCEEDED (에러/경고 없음)
  • UDID 5948F2C2-BB0D-4740-AFCF-342B1CE2E2E2(iPhone 17 Pro) 설치+실행
  • 스크린샷 /tmp/home-new.png(라이트) · /tmp/home-dark.png(다크) — Read로 직접 검증: 왕관·h1·서브·태그·ask박스·2열 타일·5버튼 하단바 전부 확인, 토큰 색상 ai.crowny.org 정본과 일치
  • ask 화면(CAAskViewController) 실 UI 탭/타이핑 E2E는 idb 등 시뮬레이터 UI자동화 도구 미설치로 생략 — 지시된 폴백대로 코드 검증 + 라이브 curl 프로토콜 대조로 대체 확인
  • 아카이브/업로드/빌드업로드.sh 실행 없음 — 메인 세션이 검증 후 직접 진행

한선씨 동반

  • /Users/ef/CrownyBrowser/ios/홈구성.한선 — ①하단바 구성 판정(추가/삭제/순서변경/유효성, 최소3 가드·중복금지) ②SSE 라인 파싱 판정(data:/[DONE]/: open)
  • hanseonc_high 컴파일 경고 0 + crownyc run 자체시험 16/16 PASS(순서변경 케이스에서 splice 인덱스 보정 버그 1건 발견·즉시 수정)
  • 크라우니코드: lookup HIT 0건(신규 도메인) / MISS 2건(SSE파싱, 하단바구성) / learn 추가 3건(add×2 + brain learn×1)

관련 파일

  • /Users/ef/CrownyBrowser/ios/크라우니AI-iOS.m (원본, 1606줄) — 이번 재작성
  • /Users/ef/CrownyBrowser/ios/크라우니AI-iOS.m.bak-홈재설계-1785110413 — 착수 전 백업
  • /Users/ef/CrownyBrowser/ios/xcode/CrownyAI/CrownyAI.m — xcode 타깃 동기화 사본
  • /Users/ef/CrownyBrowser/ios/홈구성.한선 — 한선씨 동반(하단바구성+SSE파싱 판정, 16/16)
  • /Users/ef/CrownyBrowser/ios/앱카드-iOS.psv — 서비스 목록(회귀 없음, 그대로 사용)
  • 스크린샷: /tmp/home-new.png(라이트) · /tmp/home-dark.png(다크)

잔여 이슈

  1. ask 화면(CAAskViewController) 실기기/시뮬레이터 타이핑 E2E 미실시 — 메인 세션이 라이브로 확인 필요
  2. 즐겨찾기/방문기록/설정 화면은 UITableView 기본 스타일로 최소 구현 — 필요 시 ai.crowny.org 토큰으로 추가 스타일링 여지
  3. crowny-ai.crowny.org가 현재 무료 한도로 레이트리밋 응답("요청이 몰려…")을 주고 있음 — 실사용 시 정상 답변 확인은 한도 여유 시점에 재확인 필요
  4. 빌드 아카이브·TestFlight/App Store 업로드는 미실시(지시에 따라 범위 밖) — 메인 세션이 직접 진행