メインコンテンツへスキップ
LangBotはフロントエンドとバックエンドに分かれています。フロントエンドはVite + React Router + shadcnを使用して開発され、バックエンドはQuart(Flaskの非同期版)を使用して開発されています。

バックエンド

コードはpkgディレクトリにあり、ルートディレクトリのmain.pyファイルによって起動されます。 依存関係をインストールします。依存関係の管理にはuvを使用します。
バックエンドを起動します
この時点で、設定ファイルはdata/config.yamlファイルに自動的に生成されます。

フロントエンド

コードはwebディレクトリにあり、Node.jsとpnpmが必要です。 .env.example.envにコピーして、値を入力します。
  • Linuxおよびその他の環境での使用
  • Windows環境での使用
依存関係をインストールしてフロントエンドを起動します
その後、出力情報に従って、http://127.0.0.1:3000にアクセスして、スタンドアロンフロントエンドページを表示します。
本番環境では、フロントエンドは静的ファイルにプリコンパイルされ、バックエンドによって提供され、フロントエンドは同じドメインのバックエンドアドレスに自動的にアクセスします。

コードフォーマット

リポジトリにはlintとformatのチェックワークフローが含まれており、コードをプッシュすると自動的にチェックされます。pre-commitを設定して、コードをローカルで事前にチェックしてください。

APIドキュメント

各インターフェースを開発する前に、APIFoxでAPIドキュメントを作成します。APIドキュメント(中国語)を参照してください。

データベースマイグレーション

LangBotはAlembicを使用してデータベースマイグレーションを管理しており、SQLiteとPostgreSQLの両方をシームレスにサポートします。データベース固有の分岐コードは不要です。

マイグレーションファイルの場所

新しいマイグレーションの作成

autogenerate を使用してマイグレーションスクリプトを自動生成することを推奨します。ORMモデルとデータベーススキーマの差分を比較して生成します:
生成されたファイルは src/langbot/pkg/persistence/alembic/versions/ に作成されます。生成されたスクリプトを確認・編集し、変更が正しいことを確認してからコミットしてください。
autogenerateは列の追加/削除、テーブルの変更、型の変更などを自動検出できます。ただし、データマイグレーション(JSONフィールドの内容変更など)は、生成されたスクリプトに手動でコードを追加する必要があります。
手動でマイグレーションファイルを作成することもできます。命名規則 NNNN_description.py に従ってください:

マイグレーションパターン

env.pyrender_as_batch=Trueが設定されているため、AlembicはSQLiteのALTER TABLE制限を自動的に処理します(一時テーブルによる再構築)。データベースタイプによる分岐は不要です。

動作の仕組み

マイグレーションはLangBot起動時に自動的に実行されます。手動コマンドは不要です:
  1. 初回起動時、ベースラインバージョンが自動的にスタンプされます(既存データベースのマーキング)
  2. 以降の起動時、未適用のすべてのマイグレーションが適用されます(alembic upgrade head

CIテスト

リポジトリにはtest-migrations.ymlワークフローが含まれており、persistence/関連ファイルが変更された際に、SQLiteとPostgreSQLの両方でマイグレーションスクリプトが自動テストされます。

CLIツール