| No | カテゴリ | テスト項目(関数名) | 観点 | 種別 |
| 1 | 認証・権限制御 | test_unauthenticated_access | 未認証でAPIアクセスすると401が返ること | 結合 |
| 2 | 認証・権限制御 | test_authenticated_access | 認証済みでAPIアクセスすると401ではなく通過すること(※既知の制約によりxfail。5章参照) | 結合 |
| 3 | 認証・権限制御 | test_admin_access_denied_for_member | 一般会員が管理APIにアクセスすると403が返ること | 結合 |
| 4 | 認証・権限制御 | test_admin_access_allowed_for_owner | オーナーが管理APIにアクセスできること(403でないこと) | 結合 |
| 5 | 認証・権限制御 | test_reports_denied_for_school | スクール生がレポートAPIにアクセスすると403が返ること | 結合 |
| 6 | 認証・権限制御 | test_reports_allowed_for_school_plus | スクール+がレポートAPIにアクセスできること(※既知の制約によりxfail。5章参照) | 結合 |
| 7 | 認証・権限制御 | test_content_admin_denied_for_operator | オペレーターがコンテンツ管理APIにアクセスすると403が返ること | 結合 |
| 8 | 会員情報API | test_get_me | GET /api/users/me が認証ユーザー情報(メール・ロール・プラットフォーム)を返すこと | 結合 |
| 9 | 会員情報API | test_get_me_member | 一般会員のプロフィールを正しく取得できること | 結合 |
| 10 | 会員情報API | test_get_me_unauthenticated | 未認証の場合401が返ること | 結合 |
| 11 | ヘルスチェック | test_health | GET /health が200とステータスokを返すこと | 結合 |
| 12 | データスキーマ検証 | test_course_create | コース作成スキーマの初期値(sort_order=0・is_published=False)が正しいこと | 単体 |
| 13 | データスキーマ検証 | test_chapter_create | 章作成スキーマが正しく生成されること | 単体 |
| 14 | データスキーマ検証 | test_lesson_create_video | 動画レッスン作成スキーマ(種別・再生時間)が正しいこと | 単体 |
| 15 | データスキーマ検証 | test_lesson_create_text | テキストレッスン作成スキーマ(種別・本文)が正しいこと | 単体 |
| 16 | データスキーマ検証 | test_progress_update | 学習進捗更新スキーマが正しく生成されること | 単体 |
| 17 | データスキーマ検証 | test_archive_create | アーカイブ作成スキーマが正しく生成されること | 単体 |
| 18 | データスキーマ検証 | test_notice_create | お知らせ作成スキーマの初期値(target_roles=[]・is_published=False)が正しいこと | 単体 |
| 19 | データスキーマ検証 | test_notice_update_partial | お知らせ部分更新スキーマ(一部フィールドのみ更新)が正しいこと | 単体 |
| 20 | データスキーマ検証 | test_question_create | 質問作成スキーマの初期値(category=common)が正しいこと | 単体 |
| 21 | データスキーマ検証 | test_answer_create | 回答作成スキーマが正しく生成されること | 単体 |
| 22 | Chatwork通知連携 | test_send_message_success | 送信成功時にTrueが返ること | 単体 |
| 23 | Chatwork通知連携 | test_send_message_retry_on_failure | 送信失敗時に3回リトライしFalseが返ること | 単体 |
| 24 | Chatwork通知連携 | test_notify_helpers | 各種通知ヘルパー(新規レッスン/アーカイブ/レポート更新/お知らせ/質問)が正しいtrigger_typeで呼び出されること | 単体 |
| 25 | デポジット承認トークン | test_generate_token_format | トークンがpayload.signature形式(SHA256署名64桁)で生成されること | 単体 |
| 26 | デポジット承認トークン | test_verify_token_success | 生成したトークンを正常に検証できること | 単体 |
| 27 | デポジット承認トークン | test_verify_token_with_expected_values | 期待するcandidate_id/user_idを渡しても検証が通ること | 単体 |
| 28 | デポジット承認トークン | test_verify_token_wrong_signature | 署名が改ざんされたトークンはTokenInvalidErrorになること | 単体 |
| 29 | デポジット承認トークン | test_verify_token_wrong_secret | 別シークレットで生成されたトークンはTokenInvalidErrorになること | 単体 |
| 30 | デポジット承認トークン | test_verify_token_malformed | ドットがない/空文字のトークンはTokenInvalidErrorになること | 単体 |
| 31 | デポジット承認トークン | test_verify_token_expired | 有効期限切れトークンはTokenExpiredErrorになること | 単体 |
| 32 | デポジット承認トークン | test_verify_token_mismatch_cid | 期待candidate_idと異なる場合TokenMismatchErrorになること | 単体 |
| 33 | デポジット承認トークン | test_verify_token_mismatch_uid | 期待user_idと異なる場合TokenMismatchErrorになること | 単体 |
| 34 | デポジット承認トークン | test_secret_required | シークレット未設定ではトークン生成がTokenInvalidErrorになること | 単体 |
| 35 | デポジット承認トークン | test_token_jti_uniqueness | 同一秒に複数生成してもトークンが一意(jtiによる)であること | 単体 |
| 36 | デポジット承認トークン | test_build_approve_url | 承認用URLが正しい形式で生成されること | 単体 |
| 37 | デポジット承認トークン | test_build_skip_url_appends_action | スキップ用URLにaction=skipが付与されること | 単体 |
| 38 | デポジット承認トークン | test_round_trip_with_real_uuid | 実際のUUID文字列で生成→検証が問題なく成立すること | 単体 |
| 39 | デポジット承認URL(結合) | test_get_confirmation_approve_success | 承認確認画面が正しく表示されること(顧客名・推奨金額・送信実行ボタンを含む) | 結合 |
| 40 | デポジット承認URL(結合) | test_get_confirmation_skip_action | スキップ確認画面が正しく表示されること | 結合 |
| 41 | デポジット承認URL(結合) | test_get_confirmation_invalid_token | 不正なトークンでアクセスすると400(不正なリンク)になること | 結合 |
| 42 | デポジット承認URL(結合) | test_get_confirmation_expired_token | 有効期限切れトークンで410(有効期限切れ)になること | 結合 |
| 43 | デポジット承認URL(結合) | test_get_confirmation_wrong_uid | 承認ユーザー不一致の場合400(リンク破損)になること | 結合 |
| 44 | デポジット承認URL(結合) | test_get_confirmation_already_sent | 送信済み候補にアクセスすると処理済み画面が表示されること | 結合 |
| 45 | デポジット承認URL(結合) | test_get_confirmation_candidate_not_found | 候補が存在しない場合404になること | 結合 |
| 46 | デポジット承認URL(結合) | test_post_execute_approve_success | 承認実行で送信完了画面(顧客名を含む)が表示されること | 結合 |
| 47 | デポジット承認URL(結合) | test_post_execute_skip_success | スキップ実行でスキップ完了画面が表示されること | 結合 |
| 48 | デポジット承認URL(結合) | test_post_execute_already_processed | 処理済み候補への再実行は再送されず処理済み画面になること(再送防止) | 結合 |
| 49 | デポジット承認URL(結合) | test_post_execute_chatwork_failure | Chatwork送信失敗時にエラー画面(500・送信失敗)が表示されること | 結合 |
| 50 | デポジット承認URL(結合) | test_post_execute_db_expired_at_in_past | DB側の有効期限が過去の場合、署名が有効でも410になること | 結合 |
| 51 | デポジット催促配信 | test_notify_uses_send_as_assistant_not_send_message | 伊藤bot名義(send_as_assistant)で送信され、通常送信(send_message)が使われないこと | 単体 |
| 52 | デポジット催促配信 | test_notify_skips_when_user_name_is_null | 顧客名未登録(user_name未設定)の候補はスキップされ、skip_reasonが記録されること | 単体 |
| 53 | デポジット催促配信 | test_notify_message_body_does_not_contain_email_as_name | 平部宛メッセージにメールアドレスが宛名として含まれないこと | 単体 |
| 54 | デポジット催促配信 | test_notify_returns_zero_when_no_pending | 対象候補がゼロ件の場合も安全に終了すること | 単体 |
| 55 | デポジット催促配信 | test_default_message_does_not_mention_zhang | デフォルトメッセージに旧メンション([To:3301051]・張さん)が含まれないこと | 単体 |
| 56 | デポジット催促配信 | test_notify_missing_settings_returns_error | 必須設定が未設定の場合、early returnでエラー扱いになること | 単体 |
| 57 | 融資書類・予測エンジン | test_length_and_actuals_preserved | 実績4ヶ月+予測12ヶ月=16行になり、実績値がそのまま保持されること | 単体 |
| 58 | 融資書類・予測エンジン | test_year_month_continues_across_boundary | 予測の年月が実績末尾から連続し、年またぎ(12月→翌1月)が正しいこと | 単体 |
| 59 | 融資書類・予測エンジン | test_early_and_mature_growth_taper | 初期6ヶ月+20%、以降+10%の段階的成長逓減が適用されること | 単体 |
| 60 | 融資書類・予測エンジン | test_muzai_plateau_never_exceeds_cap | 無在庫売上がプラトー上限(200万円)を超えないこと | 単体 |
| 61 | 融資書類・予測エンジン | test_forecast_profit_is_rate_of_total | 予測月の利益が総売上×利益率で正しく計算されること | 単体 |
| 62 | 融資書類・予測エンジン | test_arizai_off_by_default | 既定値(seed=0)では有在庫売上・必要在庫資金がゼロであること | 単体 |
| 63 | 融資書類・予測エンジン | test_arizai_starts_after_plateau_when_seeded | seed指定時、無在庫プラトー到達後に有在庫売上が立ち上がること | 単体 |
| 64 | 融資書類・予測エンジン | test_peak_is_last_forecast_month_when_monotonic | プラトー未到達で単調増加の場合、ピークが予測最終月になること | 単体 |
| 65 | 融資書類・予測エンジン | test_peak_ties_at_plateau_returns_first | プラトーで頭打ちの場合、最初に上限到達した月をピークとすること | 単体 |
| 66 | 融資書類・予測エンジン | test_observed_growth_median | 実績成長率の中央値(参考値)が正しく計算されること | 単体 |
| 67 | 融資書類・予測エンジン | test_empty_history_raises | 実績データが空の場合、ValueErrorになること | 単体 |
| 68 | オンボーディング停滞検知 | test_tamai_case_flagged_payment_pending | 両者署名済み・未決済放置ケースがpayment_pendingとして検知されること(実案件の再発防止検証) | 単体 |
| 69 | オンボーディング停滞検知 | test_paid_user_not_flagged | 決済済みユーザーは検知されないこと | 単体 |
| 70 | オンボーディング停滞検知 | test_recent_not_flagged | 署名直後(閾値未満)は検知されないこと | 単体 |
| 71 | オンボーディング停滞検知 | test_owner_pending_flagged | 本人署名済み・甲未署名の放置がowner_pendingとして検知されること | 単体 |
| 72 | オンボーディング停滞検知 | test_sent_only_not_signed_ignored | 本人未署名(送付止まり)は対象外であること | 単体 |
| 73 | オンボーディング停滞検知 | test_non_qualifying_types_ignored | 付随契約(確認書・月額規約・利益規約等)のみでは検知されないこと | 単体 |
| 74 | オンボーディング停滞検知 | test_threshold_boundary_inclusive | 閾値日数ちょうどは検知し、1日未満手前は検知しないこと(境界値) | 単体 |
| 75 | オンボーディング停滞検知 | test_mixed_owner_signed_is_owner_pending | 一部契約のみ甲署名済みの場合、owner_pendingと判定されること | 単体 |
| 76 | オンボーディング停滞検知 | test_payment_clock_starts_at_owner_signed | payment_pendingの経過日数が、最後に甲署名された時点を起点に計算されること | 単体 |
| 77 | オンボーディング停滞検知 | test_multiple_users_only_stalled_returned | 複数ユーザーが混在する中、停滞ユーザーのみが返されること | 単体 |
| 78 | オンボーディング停滞検知 | test_sorted_oldest_first | 検知結果が経過日数の古い順にソートされること | 単体 |
| 79 | オンボーディング停滞検知 | test_empty_input | 入力が空の場合、空配列が返ること | 単体 |
| 80 | オンボーディング停滞検知 | test_internal_domain_excluded | 自社ドメイン(rerise-japan.co.jp)の内部アカウントは検知対象から除外されること | 単体 |
| 81 | オンボーディング停滞検知 | test_exclude_emails_param | 除外メールアドレス指定(大文字小文字無視)が機能すること | 単体 |
| 82 | オンボーディング停滞検知 | test_internal_excluded_but_real_customer_still_flagged | 内部除外を適用しても実顧客ケースは確実に検知されること | 単体 |
| 83 | オンボーディング停滞検知 | test_qualifying_types_constant | 検知対象契約種別の定数(QUALIFYING_TYPES)が正しいこと | 単体 |
| 84 | オンボーディング停滞検知 | test_alert_message_contains_key_info | アラートメッセージに必要情報(件数・メール・経過日数・ステージ)が含まれること | 単体 |
| 85 | オンボーディング停滞検知 | test_alert_message_owner_pending_label | owner_pending時のラベル文言(甲(承認)未署名)が正しいこと | 単体 |
| 86 | 未返信検知 | test_customer_last_old_flagged | 顧客最終発言から閾値超過(48時間未返信)で検知されること | 単体 |
| 87 | 未返信検知 | test_staff_last_not_flagged | 運営(平部)が最後に返信済みの場合、検知されないこと | 単体 |
| 88 | 未返信検知 | test_customer_last_recent_not_flagged | 顧客発言が閾値未満の場合、検知されないこと | 単体 |
| 89 | 未返信検知 | test_threshold_boundary | 閾値ちょうどは検知し、わずかに手前は検知しないこと(境界値) | 単体 |
| 90 | 未返信検知 | test_missing_fields_skipped | 必須フィールド(アカウントID・時刻)欠損データはスキップされること | 単体 |
| 91 | 未返信検知 | test_sorted_oldest_first | 検知結果が待機時間の長い順にソートされること | 単体 |
| 92 | 未返信検知 | test_mixed_only_unanswered_customers | 混在データ(スタッフ返信済み/顧客最近発言を含む)から未返信顧客のみが抽出されること | 単体 |
| 93 | 未返信検知 | test_excerpt_truncated | メッセージ抜粋が60文字以内に切り詰められること | 単体 |
| 94 | 未返信検知 | test_alert_message_contains_room_and_hours | アラートメッセージに必要情報(ルーム名・未返信時間・本文抜粋)が含まれること | 単体 |
| 95 | 未返信検知 | test_empty | 入力が空の場合、空配列が返ること | 単体 |
2026-07-03以降に追加された以下3機能は、専用の単体・結合テスト(pytest)を保有していない。Playwrightによる手動操作で下表の観点を確認し、次回改修時に自動テストの追加を検討する。