ku-ring / ios-app

쿠링 iOS 앱 v2 레포입니다. SwiftUI + TCA
MIT License
41 stars 0 forks source link

[2.2.0] 쿠링봇 SwiftData 로직 구현 및 디테일 수정 #222

Closed wonniiii closed 3 months ago

wonniiii commented 3 months ago

내용

참고사항

스크린샷

https://github.com/user-attachments/assets/45fbd63b-9cce-44e1-88b9-140845846c3b

lgvv commented 3 months ago

/쿠링 패키지 빌드

github-actions[bot] commented 3 months ago

🔨 iOS 17.0.1 iPhone 15 Pro 에서 스위프트 패키지를 빌드합니다.

github-actions[bot] commented 3 months ago

🔨 iOS 17.0.1 iPhone 15 Pro 에서 스위프트 패키지를 빌드합니다.

github-actions[bot] commented 3 months ago

✅ 패키지를 성공적으로 빌드했습니다.

github-actions[bot] commented 3 months ago

✅ 패키지를 성공적으로 빌드했습니다.

mwy3055 commented 3 months ago

안드는 이렇게 했습니다.

  1. 응답을 받는 도중 화면을 나가면, 나가기 직전까지 받았던 메시지만 로컬에 저장한 후 SSE 연결을 끊습니다. 즉 화면을 나간 이후에는 메시지를 더 수신하지 않습니다.
  2. 전송에 실패한 메시지도 저장합니다.
  3. 응답을 받는 데 실패했더라도 횟수가 차감됩니다. 서버에서 응답을 만드는 데 실패한 경우에는 횟수가 차감되지 않지만, 로컬에서는 횟수가 차감된 것처럼 보이는 문제가 있습니다. 향후 횟수 관리를 서버로 일원화하여 해결할 계획입니다.
wonniiii commented 3 months ago
  1. 만약 Bot 응답 도중에 화면을 나갔다가 다시 들어오면 어떻게 되나요? 응답이 다 온 상태로 메세지 업데이트가 되어 있나요? 그리고 화면을 나갔을 때 SSE 세션은 잘 종료되나요?
  2. 만약에 질문 메세지 전송에 실패했을 때 화면을 나갔다가 들어오면 어떻게 되나요? 메세지가 사라져 있나요?
  3. 응답 메세지가 실패했을 때는 응답 횟수 차감은 안되나요? 지금 로직이라면 응답 성공여부와 상관없이 차감 되는 것 같아요.

(안드로이드는 어떻게 구현했는지 우영님과 크로스체크 해보시면 좋을 것 같아요. cc. @mwy3055)

그리고 TCA 경우, TCA 구조를 공부하고자 한다면 확실하게 사용해보시구 모르는 게 있으시다면 커멘트 남겨서 의견을 구해보시는 것을 추천드립니다. 안그러면 오히려 공부가 안되고 잘못된 구조를 학습하실 수 있어요.

남겨주신 TCA 코드제안은 바로 반영해야하는 건 아니지만 스파게티 코드이기 때문에 기능 배포 후에 반드시 수정해보시면 좋을 거 같아요.

채팅 기능은 공부가 정말 많이 되기 때문에 큰 공부가 되었으면 좋겠네요! (디자인패턴, 아키텍쳐, 사이드이펙트 관리, 쓰레드, 데이터관리, 이벤트처리 등)

iOS도 안드와 1,2,3 번의 경우 다 일치합니다. iOS도 횟수 관리 서버로 일원화 되면 수정하겠습니다 !

QA 진행하면서 리뷰 남겨주신 TCA에 관한 수정사항 같이 고쳐서 PR 올리겠습니다. BotFeature에 BotView와 ChatView에 대한 액션이 모두 담겨 있어서 BotFeature와 ChatFeature로 분리할 예정입니다. 매번 코드 확인해주시고 제안해주셔서 감사해요 ! 공부 많이 되었습니다 !