90 lines
3.0 KiB
Markdown
90 lines
3.0 KiB
Markdown
# ADa Workshop
|
||
|
||
## Что необходимо
|
||
|
||
- Python 3.11 или новее;
|
||
- запущенный PostgreSQL и созданная пустая база данных;
|
||
- бакет Backblaze B2 и Application Key с правами **Read and Write**;
|
||
- файлы проекта:
|
||
|
||
```text
|
||
Workshop/
|
||
├── main.py # Запуск FastAPI и отдача страницы
|
||
├── routers.py # API каталога, проверка ZIP и загрузка в B2
|
||
├── database.py # Модели и подключение PostgreSQL
|
||
├── workshop.html # Интерфейс мастерской
|
||
├── requirements.txt # Python-зависимости
|
||
└── .evn # Локальные настройки и секреты, в Git не добавлять
|
||
```
|
||
|
||
Папки `.venv/` и `backups/` для запуска не нужны: первая создаётся командами
|
||
ниже, вторая содержит резервные копии разработки.
|
||
|
||
## Настройка `.evn`
|
||
|
||
Создай в папке `Workshop` файл именно с именем `.evn` и заполни его:
|
||
|
||
```env
|
||
DATABASE_URL=postgresql+psycopg://POSTGRES_USER:POSTGRES_PASSWORD@localhost:5432/WORKSHOP_DB
|
||
|
||
S3_ENDPOINT_URL=https://s3.YOUR_REGION.backblazeb2.com
|
||
S3_REGION=YOUR_REGION
|
||
S3_BUCKET=YOUR_BUCKET_NAME
|
||
S3_ACCESS_KEY=YOUR_B2_keyID
|
||
S3_SECRET_KEY=YOUR_B2_applicationKey
|
||
```
|
||
|
||
Для Backblaze B2:
|
||
|
||
- `S3_ACCESS_KEY` — поле **keyID** созданного Application Key;
|
||
- `S3_SECRET_KEY` — поле **applicationKey**;
|
||
- `S3_REGION` — регион из S3 Endpoint;
|
||
- `S3_BUCKET` — имя бакета.
|
||
|
||
## Запуск на Windows
|
||
|
||
Открой PowerShell в папке проекта и выполни:
|
||
|
||
```powershell
|
||
cd C:\путь\к\Workshop
|
||
py -m venv .venv
|
||
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
|
||
.\.venv\Scripts\python.exe -m uvicorn main:app --reload
|
||
```
|
||
|
||
Открой в браузере: http://127.0.0.1:8000
|
||
|
||
## Запуск на macOS
|
||
|
||
Открой Terminal в папке проекта и выполни:
|
||
|
||
```bash
|
||
cd /путь/к/Workshop
|
||
python3 -m venv .venv
|
||
source .venv/bin/activate
|
||
python -m pip install -r requirements.txt
|
||
python -m uvicorn main:app --reload
|
||
```
|
||
|
||
Открой в браузере: http://127.0.0.1:8000
|
||
|
||
Для остановки сервера в обоих случаях нажми `Ctrl+C`.
|
||
|
||
## Формат загружаемого ZIP
|
||
|
||
Архив должен содержать файлы в корне архива, без внешней папки `ada/`:
|
||
|
||
```text
|
||
ada.zip
|
||
├── checker/
|
||
│ └── checker.py
|
||
└── service/
|
||
├── docker-compose.yml
|
||
├── Dockerfile.api
|
||
└── ...
|
||
```
|
||
|
||
Обязательны `checker/checker.py`, `service/docker-compose.yml` и
|
||
`service/Dockerfile.api`. Максимальный размер ZIP — 5 МБ; все файлы должны
|
||
лежать только внутри `checker/` или `service/`.
|