Skip to content

報酬ライフサイクル設計

概要

Issue駆動の業務委託プラットフォームにおける報酬の設定から支払い完了までのライフサイクルを定義する。


1. 報酬設定フロー

1.1 Issue作成時の報酬設定

PMがIssueを作成する際に、以下の情報を設定する:

項目必須説明
難易度Yeseasy / medium / hard
見積工数Yes時間単位(h)
報酬額Yes円単位。報酬レンジガイドラインに基づく
プロジェクトIDYes予算管理対象のプロジェクト
備考No報酬設定の根拠メモ

1.2 報酬レンジガイドライン

難易度と見積工数に応じた報酬額の目安を以下に定める。PMはこのレンジ内で報酬を設定することを推奨する。

難易度報酬レンジ見積工数目安想定タスク例
easy5,000 - 15,000円1 - 4hドキュメント修正、軽微なバグ修正、設定変更
medium15,000 - 50,000円4 - 16h新機能の一部実装、中規模リファクタリング、テスト追加
hard50,000 - 150,000円16 - 40h新機能設計・実装、大規模改修、アーキテクチャ変更

レンジ超過時のルール

  • レンジ上限を超える場合: マネージャー承認が必要
  • レンジ下限を下回る場合: 設定可能(委託者への配慮として非推奨)

1.3 報酬額の変更

  • Issue作業着手前: PMが自由に変更可能
  • Issue作業着手後(assigned状態): PM + 委託者の合意が必要
  • レビュー承認後: 変更不可

2. 報酬ステータス

報酬は以下の5つのステータスを持つ。

ステータス説明
draftIssue作成時。報酬額は設定済みだが確定前
active委託者がアサインされ作業中
pending委託者がMRを提出しレビュー待ち
confirmedレビュワー承認済み。支払い対象
paid月次締めで支払い完了

3. ステート遷移図

mermaid
stateDiagram-v2
    [*] --> draft: Issue作成・報酬設定

    draft --> active: 委託者アサイン
    draft --> [*]: Issue取消

    active --> pending: MR提出
    active --> draft: アサイン解除

    pending --> confirmed: レビュワー承認
    pending --> active: レビュワーが差し戻し

    confirmed --> paid: 月次締め・支払い実行
    confirmed --> pending: 確定取消(管理者のみ)

    paid --> [*]: 完了

4. 報酬確定フロー

4.1 レビュワー承認 → 報酬確定

  1. 委託者がMR(Merge Request)を提出
  2. レビュワーがコードレビューを実施
  3. レビュワーがMRを承認(Approve)
  4. システムが自動で報酬ステータスを pendingconfirmed に遷移
  5. 委託者・PMに確定通知を送信

4.2 自動確定の条件

以下の全てを満たす場合に自動確定する:

  • MRが承認(Approved)状態である
  • MRがマージ済みである
  • Issueに報酬額が設定されている
  • プロジェクトの残予算が報酬額以上である

4.3 残予算不足時の挙動

  • 報酬確定をブロック(pending のまま保持)
  • PM・マネージャーにアラート通知
  • マネージャーが予算追加 or PMが報酬額を調整した後に再確定

5. 支払いフロー

5.1 月次締め処理

ステップ処理タイミング
1締め日確定毎月末日 23:59
2confirmed ステータスの報酬を集計締め日翌日
3委託者別の支払い明細を生成締め日翌日
4マネージャー承認翌月1-5営業日
5支払い実行マネージャー承認後
6ステータスを confirmedpaid に更新支払い実行後
7委託者に支払い完了通知支払い実行後

5.2 支払い明細に含まれる情報

委託者名: xxx
対象期間: 2026年3月1日 〜 2026年3月31日
─────────────────────────────────────
Issue#  | タイトル         | 報酬額
#12     | API設計          | 30,000円
#15     | バグ修正         | 8,000円
─────────────────────────────────────
合計                        38,000円

6. データモデル

6.1 rewards テーブル

カラム説明
idUUID主キー
issue_idUUIDFK: issues.id
project_idUUIDFK: projects.id
assignee_idUUIDFK: users.id(委託者)
amountINTEGER報酬額(円)
difficultyENUMeasy / medium / hard
estimated_hoursDECIMAL見積工数(時間)
statusENUMdraft / active / pending / confirmed / paid
confirmed_atTIMESTAMP確定日時
paid_atTIMESTAMP支払い日時
payment_batch_idUUIDFK: payment_batches.id
created_atTIMESTAMP作成日時
updated_atTIMESTAMP更新日時

6.2 payment_batches テーブル

カラム説明
idUUID主キー
period_startDATE対象期間開始日
period_endDATE対象期間終了日
statusENUMpending / approved / paid
approved_byUUIDFK: users.id(承認マネージャー)
approved_atTIMESTAMP承認日時
total_amountINTEGER合計支払額
created_atTIMESTAMP作成日時

6.3 reward_history テーブル(監査ログ)

カラム説明
idUUID主キー
reward_idUUIDFK: rewards.id
from_statusENUM遷移元ステータス
to_statusENUM遷移先ステータス
changed_byUUIDFK: users.id
reasonTEXT変更理由
created_atTIMESTAMP変更日時