Skip to content

feat: task/selectエンドポイントの実装#33

Merged
famisics merged 2 commits intomainfrom
claude/#26/usecase/task-select
Oct 19, 2025
Merged

feat: task/selectエンドポイントの実装#33
famisics merged 2 commits intomainfrom
claude/#26/usecase/task-select

Conversation

@famisics
Copy link
Contributor

概要

Issue #26に基づき、task/selectエンドポイントを実装しました。このエンドポイントは、指定されたタスクIDから親タスクを辿ってルートタスクまでの階層をリストで返す機能を提供します。

関連 issue

close: #26

やったこと

  • contract.ts: リクエスト/レスポンススキーマ定義
    • リクエスト: { task_id: TaskId }
    • レスポンス: TaskDTO[](rootタスクから順に配列)
  • service.ts: 親タスクを再帰的に辿るビジネスロジック実装
    • 循環参照防止機能(最大深度100)
    • トランザクション管理
    • Result<T, AppError>パターンによるエラーハンドリング
  • endpoint.trpc.ts: tRPCエンドポイント定義
    • protectedProcedure使用(認証必須)
    • query操作(読み取り専用)
  • task.ts: ルーターにselectエンドポイントを登録

やらないこと

  • タスクの作成・更新・削除(このエンドポイントは読み取り専用)
  • 循環参照の完全な検出(最大深度制限のみ)

影響範囲

  • 新規エンドポイントの追加のため、既存機能への影響はなし
  • src/server/api/routers/task.tsに新しいルーターを追加
  • フロントエンドでapi.task.select.useQuery()として利用可能

テスト

以下のコマンドで検証済み:

  • pnpm typecheck: 成功
  • pnpm lint: 成功
  • pnpm format: 成功

API使用例:

const { data: taskChain } = api.task.select.useQuery({
  task_id: "task_xyz123"
});
// レスポンス例:
// [
//   { id: "root_task", name: "プロジェクト", parentId: null, ... },
//   { id: "child_task", name: "サブタスク", parentId: "root_task", ... },
//   { id: "task_xyz123", name: "指定タスク", parentId: "child_task", ... }
// ]

備考

  • usecase-maker agentを使用して実装
  • 4層アーキテクチャに準拠
  • レスポンスはrootタスクから指定タスクまで順に配列で返される(.unshift()を使用)
  • 循環参照の可能性を考慮し、最大深度100の制限を設定

task_idから親タスクを辿ってルートタスクまでの階層を取得するエンドポイントを実装。

主な変更:
- contract.ts: リクエスト/レスポンススキーマ定義
- service.ts: 親タスクを再帰的に辿るビジネスロジック(循環参照防止付き)
- endpoint.trpc.ts: protectedProcedureによる認証必須のqueryエンドポイント
- task.ts: selectエンドポイントをルーターに登録

レスポンス形式: TaskDTO[](rootタスクから指定タスクまで順に配列)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@vercel
Copy link

vercel bot commented Oct 19, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
sp-2502 Error Error Oct 19, 2025 6:02am

💡 Enable Vercel Agent with $100 free credit for automated AI reviews

@famisics famisics merged commit cdb0744 into main Oct 19, 2025
3 of 5 checks passed
@famisics famisics deleted the claude/#26/usecase/task-select branch October 19, 2025 05:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[usecase] task/selectの実装

1 participant