第一マイルストーン
マイルストーン
v0.1
最低限の記録の申請, 追記, 閲覧のサイクルを作る。
特記事項, 制約
言語は日本語のみ
ログイン機能なし
(1) 管理者権限操作(記録追記)は、URLを知らない他者がアクセスできないことを安全性の根拠として実装する。
自動生成されたドキュメントがどう番号付られるかは事前に予測がつかない。
一応これでも安全!とも言えなくはないが....。
申請一覧ページを実装するときにどうしてもユーザー権限に関わるシステムは必要。
あとでログインシステムを補強しておく。
(2) 記録に紐づける投稿者はとりあえず一旦なし
あとから一応取り返しつく
ログインシステムを導入した際に、YouTubeとTwitterのアカウントを設定してもらって、
それに従って後からタグを引っ付ける。
(3) 同一者の判定も今は考えない
ルールブックに関わる機能はなし
今のところはユーザーに全員ルールの了解があるものとして実装を進める。
土台
環境構築
必要となるコンポーネント実装の洗い出し
第一マイルストーンに対するデータベースインタフェース
p.iconデータ構造の定義
エンティティ(実体; Entity)の定義
カテゴリ(Category)の定義
コピー能力(Ability)の定義
レベル(Level)の定義
シングルセグメント(Single Segment)の定義
メディア投稿者(Media Owner)の定義
ユーザー定義エンティティ(User-defined Entity)の定義
タグ(Tag)の定義
レベル上の記録型(LevelRecord)の定義
準記録
半記録
ユーザー
ルールブック
第一マイルストーンに対するREST APIの策定
統一条件指定ボックスの実装
Sidemenu Componentの定義
Page Componentの定義
B
主要機能
記録の投稿
申請
フロントエンド
記録申請ページの実装
https://gyazo.com/4535651b52dc18947aa1c153889af709
統一条件指定ボックス
入力制約をつける。
URLボックスを表示する。
サーバーに申請内容データを送信する
URLを入力するテキストボックスを実装する。
Discord通知先を書けるようにする。
ルールブックへアクセスできる
URL入力欄の横ボタンをクリックすると、タグと走者メモを記述できる欄が現れる。
通知機能を実装する
バックエンドの実装
申請内容(準記録)をデータベースに書き込む。
POST:/api/level/prerecords/{ID}/
特例 Discordへ通知を行う。
メールサーバーへ通知を送信する。
追記認証
フロントエンド
記録追記ページの実装
https://gyazo.com/fac8a0617946d4c22afedb597cbc5533
準記録の詳細情報をAPIから得る。
準記録基本情報ヘッダの実装
統一条件指定ボックス
入力内容のチェック欄
Individual Levelの場合のタイム入力欄の実装
入力が適切であればチェックを示す。
それらの入力内容をまとめ、サーバーへ提出する。
コメントの欄を設置する(markdown)
処理を排他的にしたい
申請一覧ページの実装
バックエンドの実装
GET:/api/users/{uid}/prerecords
POST:/api/level/records?prerecord={prerecord-id}
記録が承認された時、追記された申請内容を記録用テーブルに追加する。
insert-record
この追記された申請内容のことを審査後記録, 単に 記録という。
元々の準記録のデータをテーブルから削除する。
remove-record
ユーザーの通知用テーブルを更新する。
記録の閲覧
記録照会ページの実装
統一条件指定ボックス
お気に入りの条件指定
ボスカテゴリタグが存在しているかしていないかを判定
通し記録を表示させるケース
単発記録表示機能
通しの記録を上位3位について表示する機能
通しの記録を次の100件まで表示する機能
クリックすると、対応する記録詳細ページへアクセスできる
記録詳細ページの実装
バックエンドの実装
GET:/api/level/records?tags=[T]
指定したタグを持つ記録に関して、概要を返す。
記録概要, 半記録:semirecordと呼ぶ。
渡された検索条件をもとに記録用テーブルから所望の記録の集合を得る。
記録の集合に関して、全てのIDを名前に変換する。
言語設定を考慮する必要がある。
ルールブックの確認
ログイン処理の実装
ユーザーの確認
通知機能の実装
メール通知設定