SlotKeeper 設計と品質

要件トレーサビリティ

要件 受入条件 Given / When / Then 実在テストID 検査
COM-01 COM-01-AC Given 一般利用者が390pxと1280pxの画面でログインしている When 資源選択・予約作成・詳細・取消・ログアウトをキーボード操作可能な部品で行う Then 各操作が完了し、ページ全体の横スクロール幅が表示幅以下で、localStorageにtokenを残さない vitest::Cognitoのログアウト先 [COM-01-AC]
playwright::ログインから予約・履歴・取消・ログアウトまで [COM-01-AC] [SLOT-AC01] [SLOT-02-AC] [SLOT-07-AC] [SLOT-AC04]
playwright::一般利用者に資源管理を表示しない [COM-01-AC] [COM-04-AC]
—
COM-02 COM-02-AC Given 確定済み予約と途中で失敗する作成要求がある When migration・seedの再実行と履歴保存中の障害を起こす Then 確定データは保持され、失敗した要求は予約・履歴・要求キーを残さない tests/app/apis/reservations/create_reservation/test_router.py::test_rollback_at_event
tests/test_db_session.py::test_repeatable_read
tests/tools/test_project_migrate.py::test_migrate_and_seed_repeat
—
COM-02 SLOT-AC16 Given 確定データと開発用seedがある When 起動・seed・アプリ再起動を繰り返す Then 確定データを保持し、seedの無条件重複や開発データ消去を起こさない tests/tools/test_project_migrate.py::test_migrate_and_seed_repeat —
COM-03 COM-03-AC Given 不正入力・未認証・権限不足・存在しない対象・業務競合の要求がある When 各APIを呼び出す Then それぞれ422・401・403・404・409を返し、入力値を応答へ反射しない tests/app/apis/reservations/cancel_reservation/test_router.py::test_missing_reservation_returns_404
tests/app/apis/reservations/create_reservation/test_functions.py::test_request_rejects_unknown_fields
tests/app/apis/reservations/create_reservation/test_functions.py::test_router_error_response_maps_exceptions
tests/app/apis/reservations/create_reservation/test_router.py::test_create_status_codes
tests/app/apis/reservations/get_reservation/test_router.py::test_missing_reservation_returns_404
tests/app/apis/reservations/list_reservations/test_functions.py::test_router_error_response
tests/app/apis/resources/create_resource/test_functions.py::test_resource_input
tests/app/apis/resources/get_resource_schedule/test_functions.py::test_router_error_response
tests/app/apis/resources/get_resource_schedule/test_router.py::test_missing_resource_returns_404
tests/app/apis/resources/list_resources/test_functions.py::test_router_error_response
tests/app/apis/resources/update_resource/test_router.py::test_missing_resource_returns_404
tests/app/apis/test_deps.py::test_anonymous_and_health
tests/test_api_error_responses.py::test_api_error_responses_are_selected_per_operation
—
COM-04 COM-04-AC Given 一般利用者のtokenと任意の権限ヘッダーがある When 管理API・他人の予約の詳細と取消を呼び出す Then サーバー側で403とし、UI表示に依存せず拒否する tests/app/apis/reservations/cancel_reservation/test_router.py::test_privacy_and_cancel
tests/app/apis/reservations/cancel_reservation/test_router.py::test_tc001_cancel_reservation_router_matches_unit_test_gen
tests/app/apis/reservations/get_reservation/test_functions.py::test_rejection_and_router_error_builders
tests/app/apis/reservations/get_reservation/test_router.py::test_owner_and_admin_view_history
tests/app/apis/reservations/get_reservation/test_router.py::test_tc001_get_reservation_router_matches_unit_test_gen
tests/app/apis/resources/create_resource/test_functions.py::test_only_admin_manages_resources
tests/app/apis/resources/create_resource/test_router.py::test_user_cannot_create_resource
tests/app/apis/resources/create_resource/test_router.py::test_tc001_create_resource_router_matches_unit_test_gen
tests/app/apis/resources/update_resource/test_router.py::test_tc001_update_resource_router_matches_unit_test_gen
tests/app/apis/test_deps.py::test_anonymous_and_health
playwright::一般利用者に資源管理を表示しない [COM-01-AC] [COM-04-AC]
—
COM-05 COM-05-AC Given Git checkoutとDocker Composeだけがある When 起動・seed・全検証のCompose commandを繰り返す Then 依存の準備から検証まで完了し、seedは固定IDで重複しない tests/tools/test_project_migrate.py::test_migrate_and_seed_repeat —
COM-06 SLOT-AC11 Given 資源または予約が他の操作で先に更新されている When 古い版で資源編集・予約取消を送る Then 409を返し、先に確定した値と履歴を失わない tests/app/apis/reservations/cancel_reservation/test_functions.py::test_get_reservation_and_predicates
tests/app/apis/reservations/cancel_reservation/test_functions.py::test_rejection_builders
tests/app/apis/reservations/cancel_reservation/test_router.py::test_cancel_boundaries
tests/app/apis/reservations/cancel_reservation/test_router.py::test_tc002_cancel_reservation_router_matches_unit_test_gen
tests/app/apis/resources/update_resource/test_functions.py::test_permission_lock_version_and_future
tests/app/apis/resources/update_resource/test_functions.py::test_update_resource_and_builders
tests/app/apis/resources/update_resource/test_router.py::test_versions_and_inactive
tests/app/apis/resources/update_resource/test_router.py::test_update_resource_router_returns_sample_shaped_response_with_db
tests/app/apis/resources/update_resource/test_router.py::test_tc002_update_resource_router_matches_unit_test_gen
—
COM-07 COM-07-AC Given 予約目的とBearer tokenを含む要求がある When APIを呼び出す Then 要求ID・operation・status・所要時間を構造化ログに残し、目的とtokenを記録しない tests/app/apis/reservations/cancel_reservation/test_router.py::test_cancel_reservation_sample_request_emits_router_error_log_to_stdio
tests/app/apis/reservations/create_reservation/test_router.py::test_create_reservation_sample_request_emits_router_error_log_to_stdio
tests/app/apis/reservations/get_reservation/test_router.py::test_get_reservation_sample_request_emits_router_error_log_to_stdio
tests/app/apis/reservations/list_reservations/test_router.py::test_list_reservations_sample_request_emits_router_error_log_to_stdio
tests/app/apis/resources/create_resource/test_router.py::test_create_resource_sample_request_emits_router_error_log_to_stdio
tests/app/apis/resources/get_resource_schedule/test_router.py::test_get_resource_schedule_sample_request_emits_router_error_log_to_stdio
tests/app/apis/resources/list_resources/test_router.py::test_list_resources_sample_request_emits_router_error_log_to_stdio
tests/app/apis/resources/update_resource/test_router.py::test_update_resource_sample_request_emits_router_error_log_to_stdio
tests/test_operational_logging.py::test_request_log_redacts
—
COM-08 COM-08-AC Given 通信失敗・401・403・404・409・422・503と業務コードがある When 画面の案内文を求める Then 状態ごとに異なり次の操作を判断できる日本語の案内を返す vitest::日本時間の入力と次の操作案内 [COM-08-AC] [RULE-04-AC] —
SLOT-01 SLOT-01-AC Given 管理者と一般利用者がいる When 資源の登録・編集・無効化と一覧取得を行う Then 管理者だけが変更でき、一覧は名前とIDの固定順でページングされる tests/app/apis/resources/create_resource/test_functions.py::test_only_admin_manages_resources
tests/app/apis/resources/create_resource/test_functions.py::test_save_resource_and_builders
tests/app/apis/resources/create_resource/test_router.py::test_user_cannot_create_resource
tests/app/apis/resources/create_resource/test_router.py::test_admin_creates_active_resource
tests/app/apis/resources/create_resource/test_router.py::test_create_resource_router_returns_sample_shaped_response_with_db
tests/app/apis/resources/create_resource/test_router.py::test_tc001_create_resource_router_matches_unit_test_gen
tests/app/apis/resources/create_resource/test_router.py::test_tc002_create_resource_router_matches_unit_test_gen
tests/app/apis/resources/list_resources/test_functions.py::test_resources_are_paged_by_name_and_id
tests/app/apis/resources/list_resources/test_router.py::test_resource_paging_order
tests/app/apis/resources/list_resources/test_router.py::test_list_resources_router_returns_sample_shaped_response_with_db
tests/app/apis/resources/list_resources/test_router.py::test_tc001_list_resources_router_matches_unit_test_gen
tests/app/apis/resources/update_resource/test_functions.py::test_update_resource_and_builders
tests/app/apis/resources/update_resource/test_router.py::test_update_resource_router_returns_sample_shaped_response_with_db
tests/app/apis/resources/update_resource/test_router.py::test_tc001_update_resource_router_matches_unit_test_gen
tests/app/apis/resources/update_resource/test_router.py::test_tc004_update_resource_router_matches_unit_test_gen
—
SLOT-01 SLOT-AC05 Given 無効資源と将来予約のある有効資源がある When 無効資源への予約と、将来予約のある資源の無効化を行う Then 両方409で拒否し、データは変化しない tests/app/apis/reservations/create_reservation/test_functions.py::test_rejection_builders_return_conflicts
tests/app/apis/reservations/create_reservation/test_router.py::test_tc003_create_reservation_router_matches_unit_test_gen
tests/app/apis/resources/update_resource/test_functions.py::test_permission_lock_version_and_future
tests/app/apis/resources/update_resource/test_router.py::test_versions_and_inactive
tests/app/apis/resources/update_resource/test_router.py::test_future_prevents_disable
tests/app/apis/resources/update_resource/test_router.py::test_tc003_update_resource_router_matches_unit_test_gen
—
SLOT-02 SLOT-02-AC Given 資源に確定予約と取消済み予約がある When 一般利用者が資源と日付で予約表を取得する Then 確定済みの時間帯と「予約済み」だけを返し、他人の目的と識別情報を返さない tests/app/apis/reservations/cancel_reservation/test_router.py::test_privacy_and_cancel
tests/app/apis/resources/get_resource_schedule/test_functions.py::test_schedule_hides_other_details
tests/app/apis/resources/get_resource_schedule/test_router.py::test_schedule_hides_other_details
tests/app/apis/resources/get_resource_schedule/test_router.py::test_get_resource_schedule_router_returns_sample_shaped_response_with_db
tests/app/apis/resources/get_resource_schedule/test_router.py::test_tc001_get_resource_schedule_router_matches_unit_test_gen
playwright::ログインから予約・履歴・取消・ログアウトまで [COM-01-AC] [SLOT-AC01] [SLOT-02-AC] [SLOT-07-AC] [SLOT-AC04]
—
SLOT-03 SLOT-AC01 Given 空き資源がある When 翌日10:00〜11:00を予約する Then 1件確定し、予約表と自分の一覧へ反映する tests/app/apis/reservations/create_reservation/test_router.py::test_create_adjacent_overlap
tests/app/apis/reservations/create_reservation/test_router.py::test_create_reservation_router_returns_sample_shaped_response_with_db
tests/app/apis/reservations/create_reservation/test_router.py::test_tc005_create_reservation_router_matches_unit_test_gen
playwright::ログインから予約・履歴・取消・ログアウトまで [COM-01-AC] [SLOT-AC01] [SLOT-02-AC] [SLOT-07-AC] [SLOT-AC04]
—
SLOT-03 SLOT-AC06 Given 過去・現在と同時刻・0分・4時間超・30日超・15分未満の刻み・日跨ぎの入力がある When 予約時刻を検証する Then 入力エラーとし、15分・4時間・30日以内の境界は受け付ける tests/app/apis/reservations/create_reservation/test_functions.py::test_reject_invalid_time
tests/app/apis/reservations/create_reservation/test_functions.py::test_boundaries
tests/app/apis/reservations/create_reservation/test_router.py::test_rule_violation_is_422
—
SLOT-04 SLOT-AC02 Given 既存の10:00〜11:00予約がある When 10:30〜11:30と11:00〜12:00を予約する Then 前者409、後者成功 tests/app/apis/reservations/create_reservation/test_functions.py::test_rejection_builders_return_conflicts
tests/app/apis/reservations/create_reservation/test_router.py::test_create_adjacent_overlap
tests/app/apis/reservations/create_reservation/test_router.py::test_tc004_create_reservation_router_matches_unit_test_gen
tests/test_db_session.py::test_business_errors_are_not_retried
—
SLOT-04 SLOT-AC03 Given 空き枠に20人がいる When 直列化せず同時に予約する Then 1件成功・19件409で重複0件 tests/app/apis/reservations/create_reservation/test_router.py::test_twenty_concurrent
tests/test_db_session.py::test_transaction_retries_conflicts
—
SLOT-04 SLOT-AC10 Given 有効資源がある When 予約作成と資源無効化を同時実行する Then 無効化と将来予約が両方確定する結果は0件 tests/app/apis/reservations/create_reservation/test_functions.py::test_update_resource_control_version_locks_or_404
tests/app/apis/resources/update_resource/test_router.py::test_create_vs_disable
—
SLOT-05 SLOT-AC04 Given 利用者Aの開始前予約がある When B・A・管理者が取消を試みる Then Bは403、本人と管理者は取消でき、取消履歴が追加される tests/app/apis/reservations/cancel_reservation/test_functions.py::test_get_reservation_and_predicates
tests/app/apis/reservations/cancel_reservation/test_functions.py::test_rejection_builders
tests/app/apis/reservations/cancel_reservation/test_router.py::test_privacy_and_cancel
tests/app/apis/reservations/cancel_reservation/test_router.py::test_admin_cancels_other_before_start
tests/app/apis/reservations/cancel_reservation/test_router.py::test_cancel_reservation_router_returns_sample_shaped_response_with_db
tests/app/apis/reservations/cancel_reservation/test_router.py::test_tc001_cancel_reservation_router_matches_unit_test_gen
tests/app/apis/reservations/cancel_reservation/test_router.py::test_tc005_cancel_reservation_router_matches_unit_test_gen
playwright::ログインから予約・履歴・取消・ログアウトまで [COM-01-AC] [SLOT-AC01] [SLOT-02-AC] [SLOT-07-AC] [SLOT-AC04]
—
SLOT-05 SLOT-AC13 Given 開始時刻ちょうどの予約と取消済み予約がある When 取消する Then 409で拒否し、履歴を増やさない tests/app/apis/reservations/cancel_reservation/test_functions.py::test_get_reservation_and_predicates
tests/app/apis/reservations/cancel_reservation/test_functions.py::test_rejection_builders
tests/app/apis/reservations/cancel_reservation/test_router.py::test_cancel_boundaries
tests/app/apis/reservations/cancel_reservation/test_router.py::test_tc003_cancel_reservation_router_matches_unit_test_gen
tests/app/apis/reservations/cancel_reservation/test_router.py::test_tc004_cancel_reservation_router_matches_unit_test_gen
—
SLOT-06 SLOT-AC08 Given 自分と他人の予約が複数日・複数状態にある When 日付・状態で絞込み、他人の詳細を取得する Then 自分の対象だけを返し、他人の目的・履歴は403で漏れない tests/app/apis/reservations/cancel_reservation/test_router.py::test_privacy_and_cancel
tests/app/apis/reservations/list_reservations/test_functions.py::test_own_reservations_are_filtered_and_paged
tests/app/apis/reservations/list_reservations/test_router.py::test_list_filters_only_own
tests/app/apis/reservations/list_reservations/test_router.py::test_list_reservations_router_returns_sample_shaped_response_with_db
tests/app/apis/reservations/list_reservations/test_router.py::test_tc001_list_reservations_router_matches_unit_test_gen
—
SLOT-07 SLOT-07-AC Given 作成後に取消した予約がある When 本人・管理者・他人が詳細画面で履歴を取得する Then 本人と管理者は作成・取消の順の履歴を閲覧でき、他人は403 tests/app/apis/reservations/cancel_reservation/test_router.py::test_admin_cancels_other_before_start
tests/app/apis/reservations/get_reservation/test_functions.py::test_get_reservation_with_events
tests/app/apis/reservations/get_reservation/test_router.py::test_owner_and_admin_view_history
tests/app/apis/reservations/get_reservation/test_router.py::test_get_reservation_router_returns_sample_shaped_response_with_db
tests/app/apis/reservations/get_reservation/test_router.py::test_tc001_get_reservation_router_matches_unit_test_gen
tests/app/apis/reservations/get_reservation/test_router.py::test_tc002_get_reservation_router_matches_unit_test_gen
playwright::ログインから予約・履歴・取消・ログアウトまで [COM-01-AC] [SLOT-AC01] [SLOT-02-AC] [SLOT-07-AC] [SLOT-AC04]
—
SLOT-08 SLOT-AC07 Given 成功応答を失った作成要求がある When 同じキーで再送(同時再送を含む)する Then 元の予約IDと応答を返し、予約・作成履歴は各1件 tests/app/apis/reservations/create_reservation/test_router.py::test_replay_before_validation
tests/app/apis/reservations/create_reservation/test_router.py::test_same_key_concurrent
tests/app/apis/reservations/create_reservation/test_router.py::test_tc002_create_reservation_router_matches_unit_test_gen
tests/test_db_session.py::test_transaction_retries_conflicts
—
SLOT-08 SLOT-AC09 Given 同じ要求キーの成功記録がある When 異なる入力を送る Then 409で元の予約を変更しない tests/app/apis/reservations/create_reservation/test_functions.py::test_normalized_input
tests/app/apis/reservations/create_reservation/test_functions.py::test_rejection_builders_return_conflicts
tests/app/apis/reservations/create_reservation/test_router.py::test_replay_before_validation
tests/app/apis/reservations/create_reservation/test_router.py::test_tc001_create_reservation_router_matches_unit_test_gen
—
SLOT-08 SLOT-AC12 Given 予約保存後の履歴保存で障害が起きる When 作成し、その後同じキーで再送する Then 部分保存を残さず、再送で1件だけ作成する tests/app/apis/reservations/create_reservation/test_router.py::test_rollback_at_event
tests/test_db_session.py::test_transaction_limits
—
SLOT-08 SLOT-AC15 Given 作成済みキーの経過が24時間前後で、予約は取消・開始済みである When 同じキーで再送する Then 有効期間内は元の作成結果、期限後は新規要求の規則に従う tests/app/apis/reservations/create_reservation/test_functions.py::test_expired_record_is_not_replayed
tests/app/apis/reservations/create_reservation/test_functions.py::test_get_idempotency_record_marks_expiry
tests/app/apis/reservations/create_reservation/test_router.py::test_replay_before_validation
tests/app/apis/reservations/create_reservation/test_router.py::test_replay_after_start
—
TECH-STACK TECH-STACK-AC Given Astro画面・FastAPI・PostgreSQLを起動している When 静的buildとOpenAPI型生成を検査する Then 静的成果物がbuildでき、フロント型がOpenAPIとdriftしない — astro, frontend-build, openapi-types
TECH-DB TECH-DB-AC Given ローカルPostgreSQLの検証DBがある When 接続の分離レベルと共通SQLの型を検査する Then Repeatable Readで接続し、SQL正本の束縛引数と結果型が一致する tests/test_db_session.py::test_dsql_connection_uses_official_connector
tests/test_db_session.py::test_repeatable_read
—
TECH-AUTH SLOT-AC14 Given 不正署名・期限切れ・異なるissuer/client・role改ざん・ID tokenがある When 業務APIを呼び出す Then 401/403で拒否し、DBは変化しない tests/app/apis/reservations/create_reservation/test_router.py::test_invalid_token_leaves_database
tests/app/apis/test_deps.py::test_bad_claims
tests/app/apis/test_deps.py::test_bad_signature
tests/integrations/test_identity_provider.py::test_cognito_access_and_id
tests/integrations/test_identity_provider.py::test_jwks_client_is_bounded
tests/integrations/test_identity_provider.py::test_fake_verifier_rejects_unknown_token
—
TECH-LAMBDA TECH-LAMBDA-AC Given Compose内でLinux向けに作った配布ZIPがある When 隔離pathからimportし、API Gatewayイベントを変換する Then handlerを読み込み、healthは200・未認証の業務APIは401 tests/test_lambda_handler.py::test_gateway_event
tests/test_lambda_handler.py::test_distribution_zip
—
TECH-INFRA TECH-INFRA-AC Given AWS認証情報のない環境で環境contextを指定する When CDKをsynthしassertionとcdk-nagで検査する Then 非公開S3+OAC、JWT保護route、限定IAM、ログ保持、削除保護、環境別のCORSとcallbackを満たし、常設サーバーを持たない tests/infra/test_stack.py::test_serverless_and_authorization
tests/infra/test_stack.py::test_routes_are_protected
tests/infra/test_stack.py::test_origin_consistency
tests/infra/test_stack.py::test_least_privilege_and_private_bucket
tests/infra/test_stack.py::test_environment_settings
tests/infra/test_stack.py::test_unknown_environment_rejected
—
TECH-COMPOSE TECH-COMPOSE-AC Given ホストにGitとDocker Composeだけがある When verifyを1コマンドで実行する Then 依存serviceの準備から結果収集とポータル生成まで行い、失敗時は非0で終了する — package, backend, e2e, portal-build
TECH-DESIGN TECH-DESIGN-AC Given 実装source・SQL・CDKがある When 設計を2回クリーン生成し、既存生成物と比較する Then byte一致し、欠落・変更・余剰・未対応構文・要件traceの欠落を非0で報告する tests/tools/test_project_design.py::test_data_capability_is_deterministic
tests/tools/test_project_design.py::test_drift_reports_manual_edit_and_stale_file
tests/tools/test_project_design.py::test_write_owned_root_replaces_only_owned_contents
tests/tools/test_project_design.py::test_repeat_sections_reads_profile_grammar
tests/tools/test_project_design.py::test_repeat_sections_rejects_unsupported_structure
tests/tools/test_project_design.py::test_added_route_without_contract_is_rejected
tests/tools/test_project_design.py::test_crud_rows_split_read_and_write_evidence
tests/tools/test_project_design.py::test_crud_model_matches_common_projection
tests/tools/test_project_design.py::test_sql_target_change_changes_crud_projection
tests/tools/test_project_design.py::test_database_model_marks_logical_references
tests/tools/test_project_design.py::test_frontend_without_menu_is_unsupported
tests/tools/test_project_design.py::test_trace_rejects_missing_and_unknown_tests
tests/tools/test_project_design.py::test_verify_checks_cover_requirement_evidence
tests/tools/test_project_evidence.py::test_design_search_covers_lazunex_documents
—
TECH-DESIGN TECH-CRUD-AC Given APIのOpenAPI summaryと保存先アクセスの実装がある When CRUD図を生成する Then 既存正本から取得したAPI和名を行、保存先を列、CRUD文字列をセルとするマトリクスを決定的に生成し、アクセスなしは空欄にする tests/tools/test_project_design.py::test_crud_diagram_uses_openapi_summaries_and_storage_columns
tests/tools/test_project_design.py::test_crud_diagram_tracks_summary_changes
tests/tools/test_project_design.py::test_crud_diagram_rejects_missing_summary
tests/tools/test_project_design.py::test_crud_diagram_orders_axes_and_cells_and_preserves_no_access
tests/tools/test_project_design.py::test_crud_capability_is_deterministic
tests/tools/test_project_design.py::test_crud_contract_rejects_rendering_drift
tests/tools/test_project_design.py::test_crud_contract_rejects_stale_summary_and_invalid_model
—
TECH-PORTAL TECH-PORTAL-AC Given 同一revision・runの検査結果と生成設計がある When ポータルをbuildしブラウザで検証する Then 階層・検索・図の拡大・DB探索・深いリンク・390px表示が動作する playwright::CRUD図でAPI和名と保存先のマトリクスを読む [TECH-PORTAL-AC]
playwright::階層検索から設計図とDB探索へ移動する [TECH-PORTAL-AC]
—
TECH-PERF TECH-PERF-AC Given 資源100・利用者200・予約10万件のデータがある When 20並列で参照80%・作成取消20%の負荷を測定する Then API別のp50/p95/p99・throughput・エラー率・整合性違反を同一runの証跡に残す — performance
TECH-QUALITY TECH-QUALITY-AC Given 失敗・skip・未実行・flakyを含む結果がある When 結果を共通形式へ変換する Then 非成功状態を成功へ変えず、collector外の結果と別runの混入を拒否する tests/tools/test_project_evidence.py::test_result_identity_and_unexecuted
tests/tools/test_project_evidence.py::test_nonpassing_states_preserved
tests/tools/test_project_evidence.py::test_result_outside_collector_is_rejected
tests/tools/test_project_evidence.py::test_foreign_run_rejected
tests/tools/test_project_evidence.py::test_backend_coverage_below_goal_fails
—
TECH-PRIVACY TECH-PRIVACY-AC Given 公開サイトにallowlist外のfileやsymlinkがある When 公開集合を検査する Then 公開を拒否し、生ログ・token・DB dumpを含めない tests/tools/test_project_evidence.py::test_publication_allowlist
tests/tools/test_project_evidence.py::test_symlink_not_published
tests/tools/test_project_evidence.py::test_allowed_site_records_provenance
—
RULE-01 RULE-01-AC Given 10:00〜11:00の予約がある When 11:00〜12:00を予約する Then 半開区間として重複せず成功する tests/app/apis/reservations/create_reservation/test_functions.py::test_has_overlapping_reservation_uses_half_open_interval
tests/app/apis/reservations/create_reservation/test_router.py::test_create_adjacent_overlap
—
RULE-02 RULE-02-AC Given 15分刻みでない、15分未満、4時間超の入力がある When 時刻を検証する Then 422とし、15分と4時間ちょうどは受け付ける tests/app/apis/reservations/create_reservation/test_functions.py::test_reject_invalid_time
tests/app/apis/reservations/create_reservation/test_functions.py::test_boundaries
tests/app/apis/reservations/create_reservation/test_router.py::test_rule_violation_is_422
—
RULE-03 RULE-03-AC Given 過去・30日超・日本時間の日跨ぎの入力がある When 時刻を検証する Then 422とし、翌日00:00終了も拒否する tests/app/apis/reservations/create_reservation/test_functions.py::test_reject_invalid_time
tests/app/apis/reservations/create_reservation/test_functions.py::test_boundaries
—
RULE-04 RULE-04-AC Given 公開APIとClock依存がある When OpenAPIと日本時間の変換を検査する Then 現在時刻を上書きする入力はなく、日本時間の日付境界で変換する tests/app/apis/reservations/create_reservation/test_functions.py::test_request_rejects_unknown_fields
tests/test_api_error_responses.py::test_public_contract_has_no_clock_or_direct_edit
vitest::日本時間の入力と次の操作案内 [COM-08-AC] [RULE-04-AC]
—
RULE-05 RULE-05-AC Given 確定予約がある When 公開APIを検査して取消する Then 予約日時の直接編集APIはなく、状態はconfirmedからcancelledへだけ遷移する tests/test_api_error_responses.py::test_public_contract_has_no_clock_or_direct_edit —
RULE-06 RULE-06-AC Given 確定予約がある When 取消と同じ枠の再予約を行う Then 取消済みは重複判定から除かれ、確定予約は最大1件 tests/app/apis/reservations/cancel_reservation/test_functions.py::test_cancel_updates_and_appends_event
tests/app/apis/reservations/cancel_reservation/test_router.py::test_privacy_and_cancel
tests/app/apis/reservations/cancel_reservation/test_router.py::test_cancel_and_rebook_concurrent
—
RULE-07 RULE-07-AC Given 開始済みの予約がある資源 When 資源を無効化し将来予約を一覧する Then 無効化でき既存記録を保持し、将来予約はconfirmedかつ開始前だけ tests/app/apis/reservations/list_reservations/test_router.py::test_list_filters_only_own
tests/app/apis/resources/update_resource/test_router.py::test_disable_after_start_keeps_record
—
RULE-08 RULE-08-AC Given 将来予約がある資源、または予約作成と無効化の同時実行 When 無効化する Then 無効資源に将来予約を残さない tests/app/apis/resources/update_resource/test_functions.py::test_permission_lock_version_and_future
tests/app/apis/resources/update_resource/test_router.py::test_future_prevents_disable
tests/app/apis/resources/update_resource/test_router.py::test_create_vs_disable
tests/app/apis/resources/update_resource/test_router.py::test_tc003_update_resource_router_matches_unit_test_gen
—
RULE-09 RULE-09-AC Given 他人の予約がある When 一般利用者が予約表と詳細を取得し、管理者が詳細を取得する Then 一般利用者へ目的・識別情報・履歴を返さず、管理者は閲覧できる tests/app/apis/reservations/cancel_reservation/test_router.py::test_privacy_and_cancel
tests/app/apis/reservations/cancel_reservation/test_router.py::test_admin_cancels_other_before_start
tests/app/apis/reservations/get_reservation/test_functions.py::test_get_reservation_with_events
tests/app/apis/reservations/get_reservation/test_router.py::test_owner_and_admin_view_history
tests/app/apis/reservations/get_reservation/test_router.py::test_tc002_get_reservation_router_matches_unit_test_gen
tests/app/apis/resources/get_resource_schedule/test_functions.py::test_schedule_hides_other_details
tests/app/apis/resources/get_resource_schedule/test_router.py::test_schedule_hides_other_details
tests/app/apis/resources/get_resource_schedule/test_router.py::test_get_resource_schedule_router_returns_sample_shaped_response_with_db
—
RULE-10 RULE-10-AC Given 同じ利用者の要求キーがある When 同じ入力・異なる入力・24時間後に再送する Then 元の成功応答・409・新規要求として扱う tests/app/apis/reservations/create_reservation/test_functions.py::test_expired_record_is_not_replayed
tests/app/apis/reservations/create_reservation/test_router.py::test_replay_before_validation
tests/app/apis/reservations/create_reservation/test_router.py::test_tc001_create_reservation_router_matches_unit_test_gen
tests/app/apis/reservations/create_reservation/test_router.py::test_tc002_create_reservation_router_matches_unit_test_gen
—
RULE-11 RULE-11-AC Given 作成済み予約が取消または開始済みである When 24時間以内に同じキーで再送する Then 時刻検証より先に照合し元の作成結果を返す tests/app/apis/reservations/create_reservation/test_router.py::test_replay_after_start —
RULE-12 RULE-12-AC Given 作成または取消の途中で障害が起きる When 操作を確定する Then 予約・履歴・要求キーを同一transactionで確定またはrollbackする tests/app/apis/reservations/cancel_reservation/test_functions.py::test_cancel_updates_and_appends_event
tests/app/apis/reservations/cancel_reservation/test_router.py::test_cancel_reservation_router_returns_sample_shaped_response_with_db
tests/app/apis/reservations/create_reservation/test_functions.py::test_save_reservation_owner_event_and_record
tests/app/apis/reservations/create_reservation/test_router.py::test_rollback_at_event
tests/app/apis/reservations/create_reservation/test_router.py::test_create_reservation_router_returns_sample_shaped_response_with_db
—
RULE-13 RULE-13-AC Given 取消済み予約がある When 取消する Then 409で履歴を追加しない tests/app/apis/reservations/cancel_reservation/test_router.py::test_privacy_and_cancel
tests/app/apis/reservations/cancel_reservation/test_router.py::test_cancel_boundaries
tests/app/apis/reservations/cancel_reservation/test_router.py::test_tc003_cancel_reservation_router_matches_unit_test_gen
—
RULE-14 RULE-14-AC Given 境界長の名前・説明・目的と複数ページの一覧がある When 入力と一覧を検査する Then 長さ制約を守り、固定順とID順でページングする tests/app/apis/reservations/list_reservations/test_functions.py::test_own_reservations_are_filtered_and_paged
tests/app/apis/reservations/list_reservations/test_router.py::test_reservation_paging_order
tests/app/apis/resources/create_resource/test_functions.py::test_resource_input
tests/app/apis/resources/create_resource/test_functions.py::test_description_limit
tests/app/apis/resources/create_resource/test_router.py::test_admin_creates_active_resource
tests/app/apis/resources/list_resources/test_functions.py::test_resources_are_paged_by_name_and_id
tests/app/apis/resources/list_resources/test_router.py::test_resource_paging_order
—