Skip to content

家事の承認処理機能を実装 #64

@stotic-dev

Description

@stotic-dev

概要

家事完了後に他のメンバーが承認する機能を実装する。
HouseworkApprovalViewで承認・拒否のUIは実装済みだが、実際の承認処理ロジックが未実装のため、これを完成させる。

背景

現在、家事を完了した際に他の同居人が確認・承認するフローが必要だが、HouseworkApprovalViewの承認・拒否ボタンがTODOのままになっている。

現在の実装状況

実装済み

  • ✅ HouseworkItemに承認関連フィールド定義済み
    • reviewerId: String? - 確認者のユーザID
    • approvedAt: Date? - 承認日時
    • reviewerComment: String? - 確認コメント
  • ✅ HouseworkApprovalViewのUI実装済み
    • 完了報告の通知表示
    • メッセージ入力欄
    • 「完了にする」「未完了に戻す」ボタン
  • ✅ HouseworkStateにpendingApprovalcompletedが定義済み

未実装・不完全

  • ❌ HouseworkApprovalViewの承認ボタンアクション(TODO)
  • ❌ HouseworkApprovalViewの拒否ボタンアクション(TODO)
  • ⚠️ HouseworkItem.updateApproved()メソッドが不完全
    • 現在state: .pendingApprovalのままで、.completedに更新されていない
    • reviewerIdapprovedAtreviewerCommentの設定が未実装

実装内容

1. HouseworkItemモデルの修正

homete/Model/Domain/Cohabitant/Housework/HouseworkItem.swift:49-61

// ❌ 現在の不完全な実装
func updateApproved(at now: Date, reviewer: String) -> Self {
    return .init(
        id: id,
        indexedDate: indexedDate,
        title: title,
        point: point,
        state: .pendingApproval,  // ← completedにすべき
        executorId: changer,  // ← 未定義の変数
        executedAt: now,
        expiredAt: expiredAt
    )
}

修正方針:

  • state.completedに変更
  • reviewerIdapprovedAtreviewerCommentを正しく設定
  • 拒否処理用のupdateRejected()メソッドを追加

2. HouseworkClientの拡張

承認・拒否処理用のメソッドを追加:

  • approveHousework(item:reviewer:comment:) - 家事を承認
  • rejectHousework(item:) - 家事を未完了に戻す

3. HouseworkListStoreの更新

HouseworkClientを使って承認・拒否処理を実行するメソッドを追加

4. HouseworkApprovalViewのアクション実装

homete/Views/HouseworkApproval/HouseworkApprovalView.swift:100-114

TODOコメント部分を実装:

  • 「完了にする」ボタン → approveHousework()呼び出し
  • 「未完了に戻す」ボタン → rejectHousework()呼び出し
  • 処理完了後に画面を閉じる

5. Firestoreへの保存

承認・拒否された家事をFirestoreに保存する処理を実装

受け入れ条件

  • HouseworkApprovalViewで「完了にする」ボタンを押すと、家事が承認されstate=completedになる
  • 承認時にreviewerIdapprovedAtreviewerCommentが正しく保存される
  • HouseworkApprovalViewで「未完了に戻す」ボタンを押すと、家事がstate=incompleteに戻る
  • 承認・拒否処理後にFirestoreに保存される
  • 承認・拒否処理後にHouseworkApprovalViewが閉じられる
  • ユニットテストが追加される(HouseworkItemの更新メソッド)

関連ファイル

  • homete/Model/Domain/Cohabitant/Housework/HouseworkItem.swift
  • homete/Model/Dependencies/HouseworkClient.swift
  • homete/Model/Domain/Cohabitant/Housework/HouseworkListStore.swift
  • homete/Views/HouseworkApproval/HouseworkApprovalView.swift
  • hometeTests/Domain/Housework/HouseworkListStoreTest.swift

備考

現在のブランチ: update/impl_approve_housework

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions