Skip to content

nitoc-ict/Ecodule-Backend

Repository files navigation

エコジュールバックエンド

環境構築

  • .envファイルの作成
JWT_SECRET_KEY="任意の文字列"
EMAIL_VERIFICATION_SECRET_KEY="任意の文字列"
ANDROID_CLIENT_ID="GCPで取得したアンドロイドクライアントID" # 開発環境ではウェブ用のCLIENT_IDを使用
ADMIN_KEY=""
ADMIN_CLIENT_ID=""
ADMIN_CLIENT_SECRET=""
python -c 'import secrets; print(secrets.token_hex(32))'
  • google apiのcredentials.jsonをルートに保存
    • ecoduleのgoogle cloud platformでダウンロード
# google apiのtoken.jsonをsrc配下に保存
# ローカルで実行
Ecodule-Backend\src> python -m pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
Ecodule-Backend\src> python -m core.email_verification
# 全体統計集計の実行(予定)

# サーバーのcron設定例 (毎日深夜3時に実行)
0 3 * * * /usr/bin/python /path/to/your_project/scripts/calculate_overall_stats.py

テスト実行

docker-compose up -d --build

docker-compose exec app pip install -r ../requirements-dev.txt

docker-compose exec app pytest

マイグレーションコマンド

docker-compose exec app alembic revision --autogenerate -m "マイグレーションの名前付け"
docker-compose exec app alembic upgrade head # 実行

ディレクトリ構成(予定)

your-project-name/
├── app/                      # 👈 メインのソースコードを格納するディレクトリ
│   ├── __init__.py
│   ├── api/                  # 👈 APIエンドポイント(ルーター)を定義
│   │   ├── __init__.py
│   │   ├── deps.py           # 共通の依存性注入(例: ユーザー認証)
│   │   └── routers/
│   │       ├── __init__.py
│   │       ├── users.py      # ユーザー関連API (/users, /auth/token)
│   │       └── app_data.py   # アプリデータ関連API (/data)
│   │
│   ├── core/                 # 👈 プロジェクトのコア設定
│   │   ├── __init__.py
│   │   └── config.py         # 環境変数、秘密鍵などの設定管理
│   │
│   ├── crud/                 # 👈 DB操作(CRUD)のロジック
│   │   ├── __init__.py
│   │   ├── base.py           # 基本的なCRUD操作の基底クラス
│   │   └── crud_user.py      # usersテーブルに対する操作
│   │
│   ├── db/                   # 👈 データベース接続関連
│   │   ├── __init__.py
│   │   └── session.py        # DBセッションの生成・管理
│   │
│   ├── models/               # 👈 SQLAlchemyのデータベースモデル
│   │   ├── __init__.py
│   │   └── user.py           # usersテーブルのモデル定義
│   │
│   ├── schemas/              # 👈 Pydanticのデータ検証スキーマ
│   │   ├── __init__.py
│   │   └── user.py           # APIで受け渡しするデータの型定義
│   │
│   ├── services/             # 👈 軽い演算などのビジネスロジック
│   │   ├── __init__.py
│   │   └── statistics.py     # 統計計算などのサービス
│   │
│   ├── tasks/                # 👈 Celeryの非同期タスク
│   │   ├── __init__.py
│   │   └── process_data.py   # 時間のかかるデータ処理タスク
│   │
│   ├── main.py               # 👈 FastAPIアプリケーションのエントリーポイント
│   └── worker.py             # 👈 Celeryワーカーのエントリーポイント
│
├── tests/                    # 👈 自動テストコード
│
├── .env                      # 環境変数を記述(.gitignoreに必ず追加)
├── .gitignore                # Gitの追跡から除外するファイルを設定
├── Dockerfile                # アプリケーションのコンテナイメージを定義
├── docker-compose.yml        # Dockerコンテナ群(アプリ、DB、Redis)を起動
├── pyproject.toml            # [推奨] 依存パッケージ管理 (or requirements.txt)
└── README.md                 # プロジェクトの説明書

docker環境下に適応したモジュールインポート

  • モジュールをインポートする際のパスはsrc以下から記述してください
  • 例: from db.session, from models.user

oauthテスト

<!DOCTYPE html>
<html>
<head>
    <title>Google Sign-In Test</title>
    <script src="https://accounts.google.com/gsi/client" async defer></script>
</head>
<body>
    <h1>Google IDトークン取得テスト</h1>
    <p>ログイン後、ブラウザの開発者コンソールにIDトークンが出力されます。</p>

    <div id="g_id_onload"
         data-client_id="YOUR_WEB_CLIENT_ID.apps.googleusercontent.com"
         data-callback="handleCredentialResponse">
    </div>
    <div class="g_id_signin" data-type="standard"></div>

    <script>
      function handleCredentialResponse(response) {
        console.log("Encoded JWT ID token: " + response.credential);
      }
    </script>
</body>
</html>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages