Files
anti-plagiarism/Makefile
jze9 7758315632 feat: initial microservices project structure
Services:
- api: FastAPI gateway with JWT auth, async endpoints, WebSocket
- worker-gpu: CUDA sentence-transformers, FAISS IVFFlat, Ollama LLM
- worker-indexer: Winnowing+MinHash plagiarism detection, PDF/DOCX extraction
- worker-notifier: SMTP email notifications
- worker-gost: GOST 7.1-2003 and GOST R 7.0.5-2008 formatting

Infrastructure:
- docker-compose.yml (production) + docker-compose.dev.yml (hot reload)
- Nginx reverse proxy + WebSocket support
- PostgreSQL 16 with Alembic migrations
- Elasticsearch 8 with Russian/English analyzers
- MinIO, RabbitMQ, Redis, Ollama

Frontend:
- React 18 + Vite + TypeScript + TailwindCSS + Zustand + React Query v5
- 9 pages: Home, Search, Cabinet, Task, Check, Bibliography, Pricing, Login, Register

Scripts:
- Parser stubs: OpenAlex, КиберЛенинка, arXiv (Phase 0 - to be filled)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-24 19:42:39 +05:00

133 lines
4.8 KiB
Makefile

.PHONY: dev build migrate logs shell-api shell-gpu lint test down ps restart clean
# ─── Переменные ────────────────────────────────────────────────────────────────
COMPOSE = docker compose
COMPOSE_DEV = docker compose -f docker-compose.yml -f docker-compose.dev.yml
PROJECT = anti-plagiarism
# ─── Разработка ────────────────────────────────────────────────────────────────
dev:
@cp -n .env.example .env 2>/dev/null || true
$(COMPOSE_DEV) up --build
dev-d:
@cp -n .env.example .env 2>/dev/null || true
$(COMPOSE_DEV) up --build -d
# ─── Продакшн ─────────────────────────────────────────────────────────────────
build:
$(COMPOSE) build
up:
$(COMPOSE) up -d
down:
$(COMPOSE) down
restart:
$(COMPOSE) restart
ps:
$(COMPOSE) ps
# ─── Миграции ─────────────────────────────────────────────────────────────────
migrate:
$(COMPOSE) exec api alembic upgrade head
migrate-dev:
$(COMPOSE_DEV) exec api alembic upgrade head
makemigration:
@read -p "Migration name: " name; \
$(COMPOSE) exec api alembic revision --autogenerate -m "$$name"
downgrade:
$(COMPOSE) exec api alembic downgrade -1
# ─── Логи ─────────────────────────────────────────────────────────────────────
logs:
$(COMPOSE) logs -f
logs-api:
$(COMPOSE) logs -f api
logs-gpu:
$(COMPOSE) logs -f worker-gpu
logs-indexer:
$(COMPOSE) logs -f worker-indexer
logs-notifier:
$(COMPOSE) logs -f worker-notifier
logs-gost:
$(COMPOSE) logs -f worker-gost
# ─── Шеллы ────────────────────────────────────────────────────────────────────
shell-api:
$(COMPOSE) exec api bash
shell-gpu:
$(COMPOSE) exec worker-gpu bash
shell-indexer:
$(COMPOSE) exec worker-indexer bash
shell-db:
$(COMPOSE) exec postgres psql -U antiplagiator antiplagiator
shell-redis:
$(COMPOSE) exec redis redis-cli
# ─── Линтинг и тесты ──────────────────────────────────────────────────────────
lint:
$(COMPOSE) exec api ruff check . --fix
$(COMPOSE) exec api mypy app/
lint-frontend:
cd services/frontend && npm run lint
test:
$(COMPOSE) exec api pytest tests/ -v
test-cov:
$(COMPOSE) exec api pytest tests/ -v --cov=app --cov-report=html
# ─── Утилиты ──────────────────────────────────────────────────────────────────
clean:
$(COMPOSE) down -v --remove-orphans
docker system prune -f
# Запустить парсер (пример: make parse PARSER=openalex ARGS="--limit 1000")
parse:
$(COMPOSE) exec api python /scripts/run_parser.py $(PARSER) $(ARGS)
# Создать MinIO бакеты
minio-init:
$(COMPOSE) exec minio mc alias set local http://localhost:9000 minioadmin changeme
$(COMPOSE) exec minio mc mb local/documents || true
$(COMPOSE) exec minio mc mb local/backups || true
# Создать ES индекс
es-init:
bash infra/elasticsearch/setup.sh
# Статистика Celery
flower:
@echo "Flower доступен по адресу http://localhost:5555"
@$(COMPOSE) ps flower
help:
@echo "Академический помощник — команды make:"
@echo ""
@echo " make dev — запустить в режиме разработки (hot reload)"
@echo " make build — собрать Docker образы"
@echo " make up — запустить в продакшн режиме"
@echo " make down — остановить все сервисы"
@echo " make migrate — применить миграции Alembic"
@echo " make logs — показать логи всех сервисов"
@echo " make shell-api — открыть shell в контейнере api"
@echo " make lint — запустить линтер"
@echo " make test — запустить тесты"
@echo " make clean — удалить все контейнеры и volumes"