Project

General

Profile

Actions

機能 #66

open

機能 #63: 新チケットver1

技術調査

Added by K Okuda 3 months ago. Updated 13 days ago.

Status:
新規
Priority:
通常
Assignee:
Start date:
06/20/2025
Due date:
% Done:

0%

Estimated time:
Spent time:
Actions #1

Updated by K Okuda 28 days ago

クラス

Wgoクラス

  • ブラウザ検知がある(c)

Boardクラスのコンストラクタ

  • エレメントと、碁盤サイズ・幅のサイズ配列を渡す
Actions #2

Updated by K Okuda 28 days ago

文法メモ

  • wgo 一番最初
  • this[key]
  • var config = config || {}
Actions #3

Updated by K Okuda 27 days ago

// 1. ゲームインスタンスを作成します
var game = new WGo.Game(19);

// 2. 例として、4手目まで着手します
game.play(3, 3);   // 1手目: 黒が (3, 3) に着手
game.play(15, 15); // 2手目: 白が (15, 15) に着手
game.play(3, 15);  // 3手目: 黒が (3, 15) に着手
game.play(15, 3);  // 4手目: 白が (15, 3) に着手

// 3. 3手目の情報を取得します
var moveNumber = 3;

// 3手目が存在するかどうかをチェックします
if (game.stack.length > moveNumber) {
    // 2手目終了時の盤面(比較元)を取得します
    var previousPosition = game.stack[moveNumber - 1];

    // 3手目終了時の盤面(比較先)を取得します
    var currentPosition = game.stack[moveNumber];

    // 2つの盤面を比較して、差分を取得します
    var changes = previousPosition.compare(currentPosition);

    // 'add'プロパティの配列に、新しく追加された石の情報が入っています
    if (changes.add.length > 0) {
        // 通常、着手は1つなので、配列の最初の要素を取得します
        var moveInfo = changes.add[0];

        console.log("3手目の着手情報:");
        console.log("X座標:", moveInfo.x); // -> 3
        console.log("Y座標:", moveInfo.y); // -> 15
        console.log("色:", moveInfo.c === WGo.B ? "" : ""); // -> 黒

    } else {
        // 'add'配列が空の場合、その手番はパスだったことを意味します
        console.log(moveNumber + "手目はパスでした。");
    }
} else {
    console.log(moveNumber + "手目はまだ打たれていません。");
}

Actions #4

Updated by K Okuda 21 days ago

検討図機能は次のリリースにする。
サーバー側の入出力と流れをまとめた図をつくる。

Actions #5

Updated by K Okuda 21 days ago · Edited

MPAからSPAにする。

  • ログイン
    メールアドレスまたはIDとパスワード
    出力→トップ画面(詳細はトップ画面で検討)

  • 新規ユーザー登録
    ユーザーID・ユーザー名・パスワード・プロフィール画像
    DB保存:ユーザーID・ユーザー名・ハッシュ化されたパスワード
    出力→トップ画面

  • トップ画面(※検索画面、条件なし)
    入力:なし(JWT?)
    出力→新着棋譜情報とユーザー情報、ID(10件)

もっと見るを押す→API追加取得

  • もっと見る
    入力:クエリ・ページ番号(q=初心者&t=1&t=2&p=2)
    出力:棋譜情報の概要、ユーザー情報とID(10件)

  • クエリ付き検索結果→もっと見ると同じ、ページ番号が1

  • 詳細ページ
    入力:ID
    出力:棋譜情報、コメント情報、ユーザー情報(新しい順)

  • 新規登録ページ
    入力:なし
    出力:

Actions #6

Updated by K Okuda 13 days ago · Edited

学習範囲が広くなるのでSPA一旦やめてSPA。
これらをJINJS2テンプレートに組み込む。

  • ログイン
    メールアドレスまたはIDとパスワード
    出力→トップ画面(詳細はトップ画面で検討)

  • 新規ユーザー登録
    ユーザーID・ユーザー名・パスワード・プロフィール画像
    DB保存:ユーザーID・ユーザー名・ハッシュ化されたパスワード
    出力→トップ画面

  • トップ画面(※検索画面、条件なし)
    入力:なし(JWT?)
    出力→新着棋譜情報とユーザー情報、ID(10件)

もっと見るを押す→API追加取得

  • もっと見る
    入力:クエリ・ページ番号(q=初心者&t=1&t=2&p=2)
    出力:棋譜情報の概要、ユーザー情報とID(10件)

  • クエリ付き検索結果→もっと見ると同じ、ページ番号が1

  • 詳細ページ
    入力:ID
    出力:棋譜情報、コメント情報、ユーザー情報(新しい順)

  • コメント
    API。
    入力:コメント、何手目か
    出力:成功か失敗か

  • 新規棋譜登録ページ
    入力:なし
    出力:画面(固定)

  • お気に入りページ
    入力:なし
    出力:画面

もっと見る→API(棋譜ID、概要)

Actions #7

Updated by K Okuda 13 days ago · Edited

admin画面(アップデート用)

/admin
現在のバージョン:1
アップデート(ボタン)
ダウングレード(ボタン)

/admin/dbUpdateExec /admin/dbDowngradeExec
成功か失敗か
エラーメッセージ

Actions #8

Updated by K Okuda 13 days ago

models.py(アプリ側)

テーブル名・列・制約を書く“設計図”。

変更したいときは まずここ を直す。

alembic/env.py(Alembic側の入口)

上の“設計図”を読み込んで差分を検出する設定。

DB接続先(環境変数から読む)、型やデフォルトの比較有効化など。

ふだんはほぼ触らない(最初に正しく設定したら放置)。

alembic/versions/ の中のファイル(差分の履歴)

1ファイル=1回分のスキーマ変更。

自動生成された内容を人が確認して、必要なら微修正(リネーム補正やデータ移行の追記)。

実際にDBへ適用される内容はここに記録される。

Actions

Also available in: Atom PDF