-
Notifications
You must be signed in to change notification settings - Fork 4
11월 12일 회의록
MoonGoon edited this page Nov 12, 2024
·
1 revision
회 의 일 시 | 2024년 11월 12일 오후 2:00 |
---|---|
참 여 자 | @한승 조 @구병조 @민석 김 @문영균 |
- 아키텍처 정의
- 모델(엔티티) 설계
- Domain과 CoreData 차이
| 배경
Presentation - Domain - Data (Clean Architecture)
우리는 왜 클린아키텍처를 따라가는가 ?
Network(REST) → 모듈
Persistent(CoreData) → 모듈
Model(비즈니스 로직 처리) - 세부적으로 클래스는 역할에 맞게 나뉨 → 필수
View(없을 수 도 있음)
| 토의
https://github.com/uber/RIBs/wiki
- RIBs 일부 적용
- 필요한 추상 정보만 전달 가능
- 의존성 관리가 직관적임
- 의존성 관계가 복잡하지 않아서 적용
- 입출력을 한 곳에서 처리하자
- 이후 복잡해진다면 분리하도록 설계
- ViewController를 View로 볼 것인가, Controller로 볼 것인가
- 일단 View+Controller로 하고, 복잡해지면 분리하자
| 토의 내용
Message Entity
struct Message {
let role: Role
let content: String
let createdAt: Date
enum Role {
case user
case assistant
}
}
- 회고에 ID가 부여되므로, 메세지는 createdAt으로 식별가능
- 현재 상태를 어떻게 할지? → 제일 상위
회고
에만- 보내고 처리중인 상태
- 응답 실패 상태
- 응답 성공 상태
Retrospect Entity
struct Retrospect {
let id: UUID
let author: User
let summary: String?
let status: Data
let isPinned: Bool
let createdAt: Date // 회고 생성 시점
let chat: [Message]
enum Data {
case 대화종료
case 대화 진행중(Status)
}
enum Status {
// case 대화 종료
case 응답 에러(대화 진행중)
case 입력 대기 중(대화 진행중)
case 네트워크 응답 대기 중(대화 진행중)
}
}
유저 Entity → UserDefaults에 저장
struct User {
let id: UUID
let nickname: String
}
var isAlarmEnabled: Bool -> 유저 디폴트에 Bool로 저장