Skip to content

[Feat] [토닥이] AI 챗봇 구현 (#86) - #92

Merged
MoonGoon72 merged 14 commits into
releasefrom
feature/86-todak-chatbot
Aug 16, 2026
Merged

MoonGoon72 merged 14 commits into
releasefrom
feature/86-todak-chatbot

Conversation

@MoonGoon72

@MoonGoon72 MoonGoon72 commented Aug 13, 2026 •

Copy link
Copy Markdown
Collaborator

변경 내용

  • 토닥이 최초 진입 템플릿, 카테고리별 고정 응답·안내 팝업, 스플래시 및 생각 중 웨이브를 구현했습니다.
  • 대화 이력 조회·상세·삭제와 SSE 메시지 클라이언트를 추가하고, 히스토리를 최신순·삭제 버튼 trailing 정렬로 보완했습니다.
  • 토닥이 탭을 App에 조립하고 인증 헤더를 사용하는 HTTP/SSE 의존성을 주입했습니다.
  • 채팅 입력창 커서 튐과 예시 질문의 콘텐츠 폭·leading 정렬을 보정했습니다.

고민한 내용

  • 최초 진입과 추천 질문은 서버 요청 없이 클라이언트 임시 템플릿·고정 대화로 표시하고, 직접 입력부터 SSE를 호출합니다.
  • Figma 393pt 기준 고정 폭은 참조값으로만 사용했습니다. 예시 질문과 대화 이력 행은 화면 폭에 적응하도록 구성했습니다.
  • SSE event:error는 실패 상태와 토스트로 처리합니다. 현재 앱·curl 모두 CHAT-500 재현되어 backend AI 생성 단계 확인이 필요합니다.

스크린샷

Before After
해당 없음 시뮬레이터를 실행·조작하지 않는 검증 정책에 따라 사용자 수동 확인 예정

테스트

  • ./scripts/lint.sh
  • TodakFeature, DesignSystem, DesignSystemExample 제네릭 빌드
  • ./scripts/sync-and-validate.sh
  • Todakun 전체 앱 제네릭 빌드
  • pre-push SwiftLint 및 아키텍처 검증

PR Preflight Review

  • Status: 완료
  • Mode: Quick (1 round)
  • Roles: Architecture Guard / Test Coverage & Regression / Build, Tooling & CI
  • Accepted findings: README의 실제 App 조립 상태 반영, 모든 추천 질문의 성취운 임시 답변 통일, SSE error 디코딩·실패 상태 및 대화 삭제 성공·취소 회귀 테스트 추가
  • Rejected findings: 빌드·리소스·계층 의존성 관련 재현 가능한 문제 없음
  • Verification: SwiftLint, TodakFeature 제네릭 test build, ./scripts/sync-and-validate.sh, pre-push SwiftLint·아키텍처 검증 통과
  • Residual risk: 시뮬레이터 직접 조작 정책에 따라 실제 화면 렌더링과 SSE 서버 성공 흐름은 수동 QA 필요

추후 구현 사항

  • 택일 운세 기능이 구현되고 화면·데이터 계약이 확정되면, 결과에서 토닥이 대화를 이어가는 기능을 후속 이슈 #91로 구현합니다.

참고 사항

  • AuthSessionClient.swift의 기존 미커밋 DEBUG 변경은 본 PR에 포함하지 않았습니다.
  • 대화 이력 pagination/보관 기간/7일 이후 날짜 표기/quota 소진 시 새 채팅 정책은 API·제품 정책 확정 후 후속 처리합니다.

Closes #87
Closes #88
Closes #89
Closes #90

- UIKit 기본 캐럿 스크롤과 경쟁하던 강제 content offset 변경을 제거합니다.
- 입력 중 UITextView 속성 재설정과 불필요한 세로 bounce를 제거합니다.
- Figma 예시 폭을 고정 규격으로 사용하지 않도록 질문 말풍선의 최대 폭 확장을 제거합니다.
- Playground와 명세서에 콘텐츠 기반 폭 계약을 반영합니다.
- Figma 기준 화면 폭에 종속된 고정 콘텐츠 폭을 제거합니다.
- 제목 영역을 유동 폭으로 두어 삭제 버튼이 모든 화면에서 trailing inset에 정렬되게 합니다.
- 대화 이력 조회·상세·삭제와 메시지 스트림의 DTO 및 도메인 매핑을 추가합니다.
- SSE 이벤트와 서버 오류를 토닥이 도메인 이벤트로 변환하고 클라이언트 매핑 테스트를 추가합니다.
- 최초 진입 템플릿, 카테고리 안내, 고정 응답, SSE 상태와 스플래시 흐름을 구현합니다.
- 대화 히스토리, 새 채팅 오버레이, 삭제 확인, 토닥이 에셋과 Feature 테스트를 추가합니다.
- 메인 탭에서 토닥이 Feature를 표시하고 닫기 시 이전 탭으로 돌아가게 합니다.
- 인증 헤더를 사용하는 HTTP·SSE 클라이언트를 App 의존성으로 주입합니다.
@MoonGoon72 MoonGoon72 self-assigned this Aug 13, 2026
@github-actions github-actions Bot added the enhancement 기능 개발, 리팩토링, 설정 변경 등 전반적인 작업 label Aug 13, 2026
@coderabbitai

coderabbitai Bot commented Aug 13, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: cf94d389-9811-42a7-abb7-190c1b3a11c9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

- 모든 추천 질문의 임시 답변을 성취운 문구로 통일한다.
- SSE 오류와 대화 삭제의 reducer 회귀 테스트를 추가한다.
- 실제 App 조립 상태에 맞게 README 설명을 갱신한다.
세 점을 독립적인 순차 애니메이션으로 바꾸고, 점과 안내 문구의 색상 명세를 반영한다.
- event 이름 없는 CHAT-429 data를 서버 오류로 해석한다.

- 매 start의 quota 갱신을 유지하고 소진 오류에서는 남은 횟수를 0으로 표시한다.

- SSE 오류와 quota 상태 전이 테스트를 추가한다.
- URLSession raw byte splitter로 SSE 빈 줄 경계를 보존합니다.
- LF와 CRLF 처리 및 malformed UTF-8 오류를 추가합니다.
- transport 진단 로그와 line splitter 단위 테스트를 추가합니다.
- 스플래시 동안 Entry API를 조회해 서버의 인사말, 추천 질문, quota를 반영합니다.
- 토닥이 SSE 수신, 디코드, Reducer 상태 전이 로그를 DEBUG 빌드에 추가합니다.
- Entry 응답 매핑과 최초 진입 상태 전이 테스트를 보강합니다.
- release의 운세·내 정보 편집 흐름과 토닥이 탭 조립을 함께 유지한다.\n- 토닥이 닫기 시 이전 탭 복귀와 하단 내비게이션 노출 조건을 보존한다.\n- 병합 대상 명세의 불필요한 EOF 공백을 제거한다.
- release의 행운 액션 탭·push 화면·완료 오버레이 조립을 반영한다.\n- 토닥이 상태와 닫기 시 이전 탭 복귀를 함께 유지한다.
@MoonGoon72
MoonGoon72 marked this pull request as ready for review August 16, 2026 04:38
@MoonGoon72
MoonGoon72 requested a review from seungwone as a code owner August 16, 2026 04:38
@MoonGoon72
MoonGoon72 merged commit 285f342 into release Aug 16, 2026
2 of 3 checks passed
@MoonGoon72
MoonGoon72 deleted the feature/86-todak-chatbot branch August 16, 2026 04:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement 기능 개발, 리팩토링, 설정 변경 등 전반적인 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant