48 lines
3.6 KiB
Markdown
48 lines
3.6 KiB
Markdown
# Инвентаризация
|
||
|
||
Сервис учёта инвентаря: объекты (инвентарный номер, описание, фото) складываются в ящики (с вложенностью), у каждого объекта и ящика есть QR-код — сканирование обычной камерой телефона открывает публичную страницу с описанием и фото, без установки приложений. Правки защищены простым admin-логином, просмотр — публичный.
|
||
|
||
Стек: FastAPI + SQLAlchemy (async) + PostgreSQL, MinIO (S3) для фото, React + Vite + Tailwind на фронте, всё поднимается через Docker Compose.
|
||
|
||
## Быстрый старт (локально)
|
||
|
||
1. Скопируйте `.env.example` в `.env` и при желании поменяйте пароли/секреты:
|
||
```
|
||
cp .env.example .env
|
||
```
|
||
2. Поднимите весь стек:
|
||
```
|
||
docker compose up -d --build
|
||
```
|
||
Первый запуск: поднимутся Postgres и MinIO, применятся миграции (сервис `migrate`), создастся бакет MinIO с публичным доступом на чтение (сервис `minio-init`), затем стартуют `backend` и `frontend`.
|
||
3. Создайте первого администратора:
|
||
```
|
||
docker compose exec backend uv run python -m app.cli --username admin
|
||
```
|
||
(спросит пароль интерактивно; логин без прав — без него нельзя добавлять/редактировать объекты и ящики).
|
||
4. Откройте:
|
||
- фронтенд — http://localhost:5173 (админка на `/admin/objects`, `/admin/boxes`)
|
||
- API-документация — http://localhost:8000/docs
|
||
- консоль MinIO — http://localhost:9001 (логин/пароль — `MINIO_ROOT_USER`/`MINIO_ROOT_PASSWORD` из `.env`)
|
||
|
||
Публичные страницы объекта/ящика (`/objects/:id`, `/boxes/:id`) открываются без авторизации — именно на них ведут QR-коды.
|
||
|
||
## Разработка
|
||
|
||
Исходники `backend/` и `frontend/` смонтированы в контейнеры (см. `docker-compose.override.yml`), оба сервиса перезапускаются на лету (`uvicorn --reload`, `vite`). Изменения в коде подхватываются без пересборки образа; пересборка (`--build`) нужна только при изменении зависимостей (`pyproject.toml`/`package.json`) или Dockerfile.
|
||
|
||
Новая миграция после изменения моделей:
|
||
```
|
||
docker compose exec backend uv run alembic revision --autogenerate -m "..."
|
||
docker compose exec backend uv run alembic upgrade head
|
||
```
|
||
|
||
Тесты бэкенда:
|
||
```
|
||
docker compose exec backend uv run pytest
|
||
```
|
||
|
||
## Прод-деплой
|
||
|
||
Пока не настроен (нет `docker-compose.prod.yml`, реверс-прокси и TLS) — это следующий шаг, когда сервис будет готов выкатывать на сервер с доменом. Тогда потребуется поменять в `.env` `PUBLIC_BASE_URL` и `MINIO_PUBLIC_URL` на реальный домен (они зашиты в QR-коды и ссылки на фото) и добавить реверс-прокси (например, Caddy) для HTTPS.
|