開発計画書 §4.3.1 Sprint 4 App。S-03 個人視点ダッシュボードのバックエンド一式を実装する。画面(案A #350 / dashboard/decision.md)は数値カード + 4セクションの両方を必要とし、両エンドポイントとも S-03 個人視点。OpenAPI 契約(現行 v1.7.1、Dashboard タグ)に準拠する。 ## 対象エンドポイント - `GET /api/dashboard/tasks` → DashboardTaskSections(4セクション: overdue / today / upcoming / completedToday のタスクリスト) - `GET /api/dashboard/summary` → DashboardSummary(数値カード: 当日期限 / 期限超過 / 本日完了 / 所有未完了 / ステータス別・優先度別件数) - 対象外: `GET /api/tenant/dashboard/summary`(S-15, Tenant Admin)= 別タスク。Phase 2 #192(所有/担当の指標分離)も対象外。 ## スコープ - 両エンドポイントの集計クエリ(OpenAPI 契約どおりのレスポンス。summary は DashboardSummary に完全準拠=ステータス別/優先度別カードを含む) - テナント認可・visibility を踏まえた集計(Hibernate Filter 経由、越境は 404 / 403) - クリーンアーキ4層(usecase に集約境界、adapter.web で公開)。両者は同一の認可済みタスク集合を集計するためドメイン/クエリを共有する ## 受け入れ条件 - [ ] `GET /api/dashboard/tasks` が DashboardTaskSections 契約どおり(4セクション) - [ ] `GET /api/dashboard/summary` が DashboardSummary 契約どおり(数値カード一式) - [ ] テナント分離・visibility 評価が両集計に反映される - [ ] 単体テスト(Testcontainers MySQL)でカバレッジ 80% 以上 - [ ] N+1 を出さない(メソッド名導出クエリ or 明示クエリで検証)
開発計画書 §4.3.1 Sprint 4 App。S-03 個人視点ダッシュボードのバックエンド一式を実装する。画面(案A #350 / dashboard/decision.md)は数値カード + 4セクションの両方を必要とし、両エンドポイントとも S-03 個人視点。OpenAPI 契約(現行 v1.7.1、Dashboard タグ)に準拠する。
対象エンドポイント
GET /api/dashboard/tasks→ DashboardTaskSections(4セクション: overdue / today / upcoming / completedToday のタスクリスト)GET /api/dashboard/summary→ DashboardSummary(数値カード: 当日期限 / 期限超過 / 本日完了 / 所有未完了 / ステータス別・優先度別件数)GET /api/tenant/dashboard/summary(S-15, Tenant Admin)= 別タスク。Phase 2 [Phase 2] DashboardSummary: 所有/担当タスクの個別指標分離 #192(所有/担当の指標分離)も対象外。スコープ
受け入れ条件
GET /api/dashboard/tasksが DashboardTaskSections 契約どおり(4セクション)GET /api/dashboard/summaryが DashboardSummary 契約どおり(数値カード一式)