Skip to content

第35回高専プロコン自由部門作品「ふたりんごと」バックエンド

License

Notifications You must be signed in to change notification settings

futaringoto/futarin-api

Repository files navigation

futarin-api

CI Build container and push to ACR Dependabot Updates

目次

貢献者ガイド(CONTRIBUTING.md)

本リポジトリにコミットする場合、CONTRIBUTING.md必ず確認ください

動作環境(確認済み)

  • Ubuntu(WSL2)
    • Docker
  • macOS(x86-64,arm64)
    • Docker Desktop もしくは OrbStack

動作確認

  1. リポジトリのクローンと移動
git clone git@github.com:futaringoto/futarin-api.git
cd futarin-api
  1. .envの作成
touch .env
echo "VOICEVOX_API_KEY=[voicevox api key]" >> .env
echo "OPENAI_API_KEY=[openAI api key]" >> .env
echo "OPENAI_ASSISTANT_ID=[openAI assistant id]" >> .env
echo "OPENAI_THREAD_ID=[openAI thread id]" >> .env
echo "AZURE_STORAGE_ACCOUNT=[azure storage-account name]" >> .env
echo "AZURE_SAS_TOKEN=[azure storage-account SAS token]" >> .env
echo "PUBSUB_CONNECTION_STRING=[azure Web PubSub connection string]" >> .env
echo "OPENAI_ASSISTANT_ID_PARAPHRASE=[openAI assistant id 2]" >> .env
- `VOICEVOX_API_KEY` は https://su-shiki.com/api/ から、
- `OPENAI_API_KEY` は https://platform.openai.com/docs/overview から
- `OPENAI_API_KEY` は https://platform.openai.com/docs/overview から
  1. Dockerイメージのビルド
sudo make build
  1. コンテナ起動
sudo make run-dev
# Detachモード
sudo make run-dev-d
  1. テーブル作成
sudo make create-table
  1. localhost でドキュメントを開いてみましょう http://localhost/docs

  2. コンテナの停止

sudo make stop

APIエンドポイント

詳しくは https://futaringoto.github.io/futarin-api/ を参照してください。

v2

メソッド パス 概要 実装状況
GET POST PUT DELETE /v2/raspis ラズパイ関連
POST /v2/raspis/{id}/ 一連の処理全て
POST /v2/raspis/{id}/messages/ messageの作成
POST /v2/raspis/{id}/negotiate/ websockets接続
GET POST PUT DELETE /v2/users/ ユーザ関連 ✔️
GET POST PUT DELETE /v2/couples/ ペア関連 ✔️

v1

メソッド パス 概要
POST /v1/raspi/ 一連の処理全て
POST /v1/sandbox/gpt/ ChatGPTによる文章生成
POST /v1/sandbox/transcript/ whisperによる文字起こし

Warning

従来の/raspi/xxx/系のエンドポイントはdeprecated(非推奨)となりました。

makeコマンドについて

本リポジトリはMakefileを採用しています。

Make 実行する処理 元のコマンド
make build コンテナのビルド docker compose -f docker-compose.yml -f docker-compose.dev.yml build
make build-no-cache コンテナのビルド(キャッシュなし) docker compose -f docker-compose.yml -f docker-compose.dev.yml build --no-cache
make run-dev コンテナの起動 docker compose -f docker-compose.yml -f docker-compose.dev.yml up
make run-dev-d コンテナの起動(デタッチ) docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
make stop コンテナの停止 docker compose down
make lint リントの実行 docker compose exec api flake8
make format フォーマットの実行 docker compose exec api black . docker compose exec api isort .
make test テストの実行 docker compose exec api pytest
make create-table テーブルの作成 docker compose exec api python migrate_db.py

ディレクトリ構成

  • api (application - FastAPI)
  • nginx (web-server)
.
├── CONTRIBUTING.md
├── ER.md
├── LICENSE
├── Makefile
├── README.md
├── _docker
│   ├── api
│   │   └── Dockerfile
│   ├── db
│   │   ├── docker-entrypoint-initdb.d
│   │   │   └── create_table.sql
│   │   └── my.cnf
│   └── nginx
│       └── conf.d
│           └── app.conf
├── api
│   ├── alembic
│   │   ├── README
│   │   ├── env.py
│   │   ├── script.py.mako
│   │   └── versions
│   ├── alembic.ini
│   ├── config.py
│   ├── db-cert.pem
│   ├── db.py
│   ├── main.py
│   ├── migrate_db.py
│   ├── poetry.lock
│   ├── pyproject.toml
│   ├── tests
│   │   ├── __init__.py
│   │   ├── audio1.wav
│   │   ├── conftest.py
│   │   ├── cruds
│   │   │   └── conftest.py
│   │   ├── test_v1_raspi.py
│   │   ├── test_v2_raspi.py
│   │   └── test_v2_user.py
│   ├── uploads
│   ├── v0
│   ├── v1
│   └── v2
│       ├── __init__.py
│       ├── azure
│       ├── cruds
│       │   ├── __init__.py
│       │   ├── couple.py
│       │   ├── raspi.py
│       │   └── user.py
│       ├── models
│       │   ├── __init__.py
│       │   ├── couple.py
│       │   ├── message.py
│       │   ├── raspi.py
│       │   └── user.py
│       ├── routers
│       │   ├── __init__.py
│       │   ├── couple.py
│       │   ├── demo.py
│       │   ├── pubsub.py
│       │   ├── raspi.py
│       │   └── user.py
│       ├── schemas
│       │   ├── __init__.py
│       │   ├── couple.py
│       │   ├── raspi.py
│       │   ├── sandbox.py
│       │   └── user.py
│       ├── services
│       │   ├── __init__.py
│       │   ├── blob_storage.py
│       │   ├── gpt.py
│       │   ├── pubsub.py
│       │   ├── voicevox_api.py
│       │   └── whisper.py
│       └── utils
│           ├── __init__.py
│           ├── file_search.txt
│           ├── index.html
│           ├── logging.py
│           └── query.py
├── docker-compose.dev.yml
├── docker-compose.yml
├── init_mysql.sh
└── ws_client.py

VOICEVOX

有志のVOICEVOX APIを使用しています。

ライセンス

本リポジトリはMITライセンスです。(LICENSE参照)ただし、一部apache-2.0LGPL v3のライブラリを採用しています。それらに関してはそちらのライセンス内容を遵守してください。