Skip to content

221121_스크럼

Byunghak Ko edited this page Nov 21, 2022 · 1 revision

주간 스프린트 계획 회의

  • 준영: 기존에 SP2로 설정했던 대로 진행할 계획. 로그인은 중지. 시스템 on/off는 ui 관련된 작업이라 우선순위에서 밀릴 수 있음.

추가로 논의할 사항

  • UseCase를 누가 담당할까?
  • 코디네이터 태스크를 만들어야 된다.
  • 전체적인 UseCase에 대한 설계

오전 스크럼

  • 병학: 채팅 관련 파이어베이스 구현한 것 PR 올리고, UseCase 기반 태스크 이슈 생성
  • 창묵: MainMap ViewModel 생성 및 바이딩, UseCase 기반 태스크 이슈 생성
  • 영욱: 친구목록 코디네이터, DIContainer 생성, UseCase 기반 태스크 이슈 생성
  • 동은: UseCase 기반 태스크 이슈 생성, 뷰모델 및 코디네이터 수정
  • 준영: UseCase 기반 태스크 이슈 생성, 뷰모델 및 코디네이터 수정, DIContainer 주입하게 수정.

오후 스크럼

  • 병학

    • AuthService는 repository로 추상화 할게 없다.

      • UseCase에서 service를 주입받아서 써도 좋을 것 같다.
      • 아니면 AuthRepository로 명명하는 것도 괜찮아 보입니다.
      • 결론
        • 인증서버가 바뀌어도 교체할 수 있게 AuthRepository와 AuthService를 나누기로 결정
      protocol AuthRepository {
          func verifyUser() -> Completable
          func fetchCurrentUserEmail() -> Single<String>
          func loginWithApple(token idTokenString: String, nonce: String) -> Completable
          func logout() -> Completable
          func deleteCurrentUser() -> Completable
      }
      
      final class DefaultAuthRepository: AuthRepository {
          let authService: AuthService?
          
          init(authService: AuthService) {
              self.authService = authService
          }
      }
      protocol AuthService {
          func verifyUser() -> Completable
          func fetchCurrentUserEmail() -> Single<String>
          func loginWithApple(token idTokenString: String, nonce: String) -> Completable
          func logout() -> Completable
          func deleteCurrentUser() -> Completable
      }
      
      final class DefaultAServerAuthService: AuthService { }
      final class DefaultFirebaseAuthService: AuthService { }
  • 코드 템플릿

    ViewController

    import UIKit
    
    final class <#code#>: UIViewController {
        // MARK: - UI properties
        
        // MARK: - Properties
        
        // MARK: - Lifecycles
        override func viewDidLoad() {
            super.viewDidLoad()
        }
        
        // MARK: - Helpers
    }

    Viewmodel 템플릿

    import Foundation
    import RxSwift
    
    struct <#code#>ViewModelActions {
        
    }
    
    protocol <#code#>ViewModelInput {
        
    }
    
    protocol <#code#>ViewModelOutput {
        
    }
    
    protocol <#code#>ViewModel: <#code#>ViewModelInput, <#code#>ViewModelOutput {
        
    }
    
    final class Default<#code#>ViewModel: <#code#>ViewModel {
        private let actions: <#code#>ViewModelActions
        
        private let disposeBag: DisposeBag
        
        init(actions: <#code#>ViewModelActions) {
            
        }
    }

    DIContainer

    import Foundation
    
    final class <#code#>DIContainer {
        
        // MARK: - Dependencies
        func make<#code#>Dependency() {
        }
        
        // MARK: - Services
        func make<#code#>Service() {
        }
        
        // MARK: - UseCases
        func make<#code#>UseCase() {
        }
        
        // MARK: - Repositories
        func make<#code#>Repository() {
        }
        
        // MARK: - ViewModels
        func make<#code#>ViewModel() {
        }
        
        // MARK: - Create viewController
        func create<#code#>ViewController() {
        }
        
        // MARK: - Coordinator
        func make<#code#>Coordinator() {
        }
    }

  • 병학
    • 주말 작업한거 PR 머지 → 리뷰 해주시면 감사하겠습니다
    • 채팅을 위한 RealtimeDB 구조에 대해서 다시 구현 중
    • FCM 서비스를 클라이언트에서 활용하는 법을 학습중
      • FCM메시지를 보통 서버에서 보내는 로직이 공개되어 있다.
      • iOS 클라이언트에서 직접 보내는 기능이 없습니다. → REST API → 액세스토큰이 필요함. → 액세스토큰을 어디서 받아와야 되나?
  • 창묵
    • 메인지도 Coordinator, DIContainer, UseCase, Repository 구현 중 + ViewModel(RxSwift)
  • 준영
    • Logout, Dropout UseCase, Repository 구현 (PR 올림), UpdateProfileUseCase 구현 (PR 안올림), ProfileSettingViewModel 구현 중 → 올린 PR은 그대로 두고, 병학님이 AuthRepository 수정 예정
    • ProfileSettingViewModel에 프로필 가져오는 방법 고민중, 프로필 저장시 이미지 경로 어떻게 설정해야 하는지 고민 → 이미지 먼저 업로드 (파이어베이스 내에서 경로를 String으로 받음), 그 후 프로필 등록, 업로드
    • 프로필 등록 때, uuid는 랜덤으로 생성해서 전달
  • 영욱
    • 친구 목록 (Coordinator, DIContainer, UseCase, Entity) 구현
  • 동은
    • 프로필 상세, 채팅방 생성 화면의 usecase 구현중
      • 머지된 병학님 코드로 수정을 해야할듯
    • 프로필 상세 → 채팅방 화면 전환 고민중
      • 프로필 살세 present → 채팅시작 버튼 클릭 → 프로필 살세 dissmiss → 채팅 화면 → 뒤로가기 버튼 클릭 → 채팅 목록
    • UploadChatRoomInfoUseCase 를 dm과 groupchat 동일하게 upload 할 수 있는지?
Clone this wiki locally