コンテンツにスキップ

仕様書:IF仕様(バックエンドAPI)

バックエンドAPIサーバのIF(インターフェース)仕様を記述します。

バックエンドAPIサーバのIF仕様

概要

このドキュメントでは、FastAPIを用いて構築されたAPIのエンドポイント、パラメータ、レスポンスに関する情報を記述しています。

エンドポイント

反応関連

  • /reaction/stat/{category}/{year}/{month}/{problem_number}
    • メソッド: GET
    • タグ: Reaction
    • サマリー: 指定された問題の統計情報を取得する
    • パラメータ
      • year (path): 年
      • month (path): 月
      • problem_number (path): 問題番号
      • category (path): カテゴリー
      • user_id (query): ユーザID (必須)
      • user-agent (header): User-Agent (必須)
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /reaction/stat/{cat_no}
    • メソッド: GET
    • タグ: Reaction
    • サマリー: 指定された問題の統計情報を取得する
    • パラメータ
      • cat_no (path): カテゴリー番号
      • user_id (query): ユーザID
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /reaction/weakness
    • メソッド: GET
    • タグ: Reaction
    • サマリー: 弱点ポイントを取得する
    • パラメータ
      • category (query): カテゴリー (デフォルト: 0)
      • user_id (query): ユーザID (デフォルト: "")
      • limit (query): 取得件数 (デフォルト: 10)
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /reaction/verify
    • メソッド: POST
    • タグ: Reaction
    • サマリー: 指定した問題の解答を登録する。選択内容と正答、正誤判定を返却
    • パラメータ
      • user-agent (header): User-Agent (必須)
    • リクエストボディ
      • user_id (必須): ユーザID
      • year (必須): 年
      • month (必須): 月
      • problem_number (必須): 問題番号
      • lecture (必須): 講義
      • category (必須): カテゴリー
      • reaction (必須): 反応
      • checksum (必須): チェックサム
      • my_token (デフォルト: ""): マイ - トークン
      • get_other_choose (デフォルト: false): 他の選択を取得するかどうか
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /reaction/leaderboard
    • メソッド: POST
    • タグ: Reaction
    • サマリー: 学生別にグループ化された教師レビューを取得する
    • リクエストボディ
      • group_type (デフォルト: "all"): グループ化のタイプ
      • group_by_student (デフォルト: 0): 学生でグループ化するかどうか
      • group_by_day (デフォルト: 1): 日付でグループ化するかどうか
      • filter_category (デフォルト: 0): フィルターするカテゴリー
      • filter_lecture_id (デフォルト: -1): フィルターする講義ID
      • extract_start_date (デフォルト: "2020-01-01"): 抽出開始日
      • extract_end_date (デフォルト: "2024-07-29"): 抽出終了日
      • extract_user_id (デフォルト: ""): 抽出するユーザID
      • leaderboard_mode (デフォルト: 1): ランキングモード
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー

講義関連

  • /lecture/stat/{lecture_id}
    • メソッド: GET
    • タグ: Lecture
    • サマリー: 指定された講義の統計情報を取得する
    • パラメータ
      • lecture_id (path): 講義ID
      • user_id (query): ユーザID
      • get_reaction (query): 反応を取得するかどうか (デフォルト: false)
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /lecture/list
    • メソッド: GET
    • タグ: Lecture
    • サマリー: 全ての講義リストを取得する
    • パラメータ
      • user_id (query): ユーザID
      • disable_visibility_check (query): 可視性チェックを無効にするかどうか (デフォルト: false)
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /lecture/start
    • メソッド: POST
    • タグ: Lecture
    • サマリー: 指定したユーザ・講義の開始時刻を記録する
    • リクエストボディ
      • user_id (必須): ユーザID
      • lecture_id (必須): 講義ID
      • attempt (必須): 試行回数
      • autocommit (デフォルト: true): 自動コミットするかどうか
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /lecture/submit
    • メソッド: POST
    • タグ: Lecture
    • サマリー: 指定したユーザ・講義の終了時刻を記録する
    • リクエストボディ
      • user_id (必須): ユーザID
      • lecture (必須): 講義
      • autocommit (デフォルト: true): 自動コミットするかどうか
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /lecture/create_self
    • メソッド: POST
    • タグ: Lecture
    • サマリー: 講義を作成する
    • リクエストボディ
      • lecture_name (必須): 講義名
      • lecture_owner (必須): 講義の作成者
      • lecture_raw_data (必須): 講義のrawデータ
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー

教師関連

  • /teacher/jwt
    • メソッド: POST
    • タグ: Teacher
    • サマリー: JWTを用いて教師を認証する
    • リクエストボディ
      • teacher_name (必須): 教師名
      • teacher_pass (必須): 教師パスワード
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /teacher/jwt/verify
    • メソッド: POST
    • タグ: Teacher
    • サマリー: 教師のJWTを検証する
    • リクエストボディ
      • token (必須): トークン
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /teacher/lecture/submit
    • メソッド: POST
    • タグ: Teacher
    • サマリー: 教師の講義を提出する
    • リクエストボディ
      • teacher_jwt (必須): 教師のJWT
      • lecture_id (必須): 講義ID
      • attempt (必須): 試行回数
      • student_id (必須): 学生ID
      • reactions (必須): 反応
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /teacher/lecture/create
    • メソッド: POST
    • タグ: Teacher
    • サマリー: 教師の講義を作成する
    • リクエストボディ
      • teacher_jwt (必須): 教師のJWT
      • lecture_visible (必須): 講義を表示するかどうか
      • lecture_shuffle (必須): 問題をシャッフルするかどうか
      • lecture_permit_practice (必須): 練習問題を許可するかどうか
      • lecture_permit_exam (必須): 試験問題を許可するかどうか
      • lecture_ichimon (必須): 一問ずつ表示するかどうか
      • lecture_name (必須): 講義名
      • lecture_owner (必須): 講義の作成者
      • lecture_description (必須): 講義の説明
      • lecture_raw_data (必須): 講義のrawデータ
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /teacher/lecture/edit
    • メソッド: POST
    • タグ: Teacher
    • サマリー: 教師の講義を編集する
    • リクエストボディ
      • teacher_jwt (必須): 教師のJWT
      • lecture_id (必須): 講義ID
      • lecture_ichimon (必須): 一問ずつ表示するかどうか
      • lecture_visible (必須): 講義を表示するかどうか
      • lecture_name (必須): 講義名
      • lecture_owner (必須): 講義の作成者
      • lecture_description (必須): 講義の説明
      • lecture_shuffle (必須): 問題をシャッフルするかどうか
      • lecture_permit_practice (必須): 練習問題を許可するかどうか
      • lecture_permit_exam (必須): 試験問題を許可するかどうか
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /teacher/lecture/results
    • メソッド: POST
    • タグ: Teacher
    • サマリー: 教師の講義の結果を取得する
    • リクエストボディ
      • teacher_jwt (必須): 教師のJWT
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /teacher/lecture/{lecture_id}.pdf
    • メソッド: POST
    • タグ: Teacher
    • サマリー: 教師がPDFを取得する
    • パラメータ
      • lecture_id (path): 講義ID
    • リクエストボディ
      • teacher_jwt (必須): 教師のJWT
      • print_answer_box (デフォルト: true): 解答欄を出力するかどうか
      • print_first_description (デフォルト: true): 最初の説明を出力するかどうか
      • print_body_description (デフォルト: true): 本文の説明を出力するかどうか
      • print_direct_download (デフォルト: true): 直接ダウンロードを許可するかどうか
      • print_problem_no (デフォルト: true): 問題番号を出力するかどうか
      • print_name_area (デフォルト: true): 氏名欄を出力するかどうか
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー

教師AI関連

  • /teacher/ai/student_growth/batch
    • メソッド: GET
    • タグ: Teacher_AI
    • サマリー: 学生の成長を取得する
    • レスポンス
      • 200: 成功
  • /teacher/ai/student_growth/batch
    • メソッド: POST
    • タグ: Teacher_AI
    • サマリー: 学生の成長を投稿する
    • レスポンス
      • 200: 成功
  • /teacher/ai/student_growth/direct
    • メソッド: GET
    • タグ: Teacher_AI
    • サマリー: 学生の成長を取得する
    • パラメータ
      • elapsed_days (query, 必須): 経過日数
      • now_ratio (query, 必須): 現在の比率
      • b3_ratio (query, 必須): B3の比率
      • norm_avg (query, 必須): 正規化された平均値
      • b2_ratio (query, 必須): B2の比率
      • b1_ratio (query, 必須): B1の比率
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー

学生関連

  • /student/{user_id}
    • メソッド: GET
    • タグ: Student
    • サマリー: 学生の情報を取得する
    • パラメータ
      • user_id (path): ユーザID
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /student/{user_id}
    • メソッド: POST
    • タグ: Student
    • サマリー: 学生の情報を登録する
    • パラメータ
      • user_id (path): ユーザID
    • リクエストボディ
      • department (必須): 学科
      • entrance_year (必須): 入学年度
      • class_number (必須): クラス番号
      • last_name (必須): 苗字
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー

アセット関連

  • /toi_asset/fe_am/{year}/{month}/{problem_number}.webp
    • メソッド: GET
    • サマリー: FE/AMアイテムを読み込む
    • パラメータ
      • year (path): 年
      • month (path): 月
      • problem_number (path): 問題番号
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー
  • /toi_asset/{category}/{year}/{month}/{problem_number}.webp
    • メソッド: GET
    • サマリー: APアイテムを読み込む
    • パラメータ
      • category (path): カテゴリー
      • year (path): 年
      • month (path): 月
      • problem_number (path): 問題番号
    • レスポンス
      • 200: 成功
      • 422: バリデーションエラー

その他

  • /system_in.pdf
    • メソッド: GET
    • サマリー: デフォルトのPDFを取得する
    • レスポンス
      • 200: 成功
  • /pgadmin4-login
    • メソッド: GET
    • サマリー: pgAdmin4のログインページ
    • レスポンス
      • 200: 成功
  • /
    • メソッド: GET
    • サマリー: インデックスページ
    • レスポンス
      • 200: 成功

データスキーマ

このAPIでは、いくつかのデータスキーマが定義されています。詳細については、OpenAPIドキュメントを参照してください。

エラー処理

APIリクエストでエラーが発生した場合、422 Unprocessable Entityステータスコードと、エラーの詳細を含むJSONレスポンスが返されます。

バージョン情報

  • タイトル: FastAPI
  • バージョン: 0.1.0

注意点

このドキュメントは自動生成されたものであり、最新の情報とは異なる場合があります。