実績システムの仕様

ユーザ登録ページ

  • Android のアクティビティではなく、ウェブページとして表示
  • 学籍番号や名前等をここで登録する

実績値

  • 実績値は閉区間 [0, 100] の整数のリスト

サーバ

  • ユーザ毎に、送信スレッドから送られてきた実績値をマージしたものをデータベースに保存する
  • 閲覧ページからリクエストが来たとき、そのユーザの実績データをすべて返す
  • 教員のアカウントからのリクエストの場合、その教員の講義の実績データをすべて見ることができる?

アカウント管理

最初にアカウントを登録してもらい、使うときは /users/profile に表示される認証トークンを CUTEn に登録する。 ユーザ登録は Android 端末上ではなくウェブ上で行う。

ユーザ情報とは:

  • メールアドレス
  • パスワード
  • 学籍番号
  • 名前
  • etc...

セキュリティ

アカウントに関する情報がネットワーク上を流れるので、セキュリティをどこまでどのように確保するか。

認証トークンは任意のタイミングでリセットできるようにする。

サーバ側の API

基本的にどの API も認証が必要となる。 auth_token=XXXXXX というようなパラメータを付加してリクエストを投げる。 ちなみに、curl では

% curl -G -d auth_token=XXXXXX http://www16307ue.sakura.ne.jp:3001/users/profile.json

(-d オプションをつけると自動的に POST リクエストになってしまうので、-G で GET リクエストを明示的に指定している)

というように試せる。

GET /users/profile.json

ユーザ情報を返す。 今は

  • メールアドレス
  • 学籍番号

を返している。

POST /users/reset_token.json

現在の認証トークンを破棄し、再生成したものを返す。

レスポンス例:

{
  "auth_token": "ABCDEFGHIJKLMNOPQRST"
}

GET /achievements.json

実績の一覧を返す。 実績のフォーマットは↓を参照。

GET /tasks/:task_id/achievement.json

task_id の課題の実績を返す。実績は以下のようなオブジェクト。

{
    "result": "1,2,3",
    "task_id": 1
}

PUT /tasks/:task_id/achievement.json

task_id の課題の実績を更新する。

以下のパラメータを受け取る。

  • achievement[result]: 実績値の List<Integer> をカンマ区切りで並べたもの

教師アカウント

教師アカウントは以下の操作を行うことができる。

  • 自分の講義についての全実績を /achievements で見れる。
  • 自分の講義の実績を /achievements/:id で見れる。
    • ただし、生徒の実績を新規作成したり変更したりはできない。

作成・ログイン

/teachers/sign_in からログインできる。