Перенос в master всего, кроме админки: ТОП-группы, порядок групп, запуск без Docker
Админка осталась отдельной ветвью admin-panel; в master её нет (ни кода, ни страниц, ни переменных окружения, ни тома настроек). Что перенесено: - parsing: имена групп вида «ИВТ-ТОП-11БО» распознаются, порядок групп = порядок столбцов таблицы (похожие заголовки с пробелами группой не считаются); - main: GET /groups отдаёт группы в порядке столбцов; интервал обновления из SCHEDULE_INTERVAL_MINUTES (со старым SCHEDULE_CACHE_TTL как fallback); - cache: по интервалу сверяем modified — если файл не менялся, не скачиваем; при загрузке считаем sha256 и пишем в лог и /status, изменился ли файл; - source: запросы к Яндекс.Диску с no-cache и меткой времени; - frontend: ответы API с Cache-Control: no-store, общий .env из корня проекта (и backend, и frontend), страницы/прокси админки нет; - Dockerfile/compose/.env.example: без ADMIN_* и без тома настроек; в api-образ попадают все модули backend (проверяется тестом test_deploy); - Makefile: make help/venv/run/run-api/run-front/test + docker-цели — «make run» поднимает всё локально без Docker; - README: быстрый старт, полный список зависимостей, запуск локально и в Docker; - deploy/: пример nginx и инструкция «второй стенд рядом с основным». Тесты: 114 (удалены админские), все зелёные.
This commit is contained in:
62
Makefile
62
Makefile
@@ -1,32 +1,58 @@
|
||||
.PHONY: build up down logs restart deploy ps dev test
|
||||
PY := $(CURDIR)/.venv/bin/python
|
||||
PIP := $(CURDIR)/.venv/bin/pip
|
||||
|
||||
build: ## Собрать образы микросервисов
|
||||
.PHONY: help venv run dev run-api run-front test build up down restart logs ps deploy
|
||||
|
||||
help: ## Показать этот список команд
|
||||
@grep -hE '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-10s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
# --- локальный запуск (без Docker) -------------------------------------------
|
||||
|
||||
venv: ## Создать .venv и установить зависимости
|
||||
@test -x $(PY) || python3 -m venv .venv
|
||||
@$(PIP) install -q --upgrade pip
|
||||
@$(PIP) install -q -r requirements-dev.txt
|
||||
@echo "Зависимости готовы (.venv). Дальше: make run"
|
||||
|
||||
run: venv ## Запустить API и сайт локально, без Docker
|
||||
@echo "API: http://127.0.0.1:8000/status"
|
||||
@echo "Сайт: http://127.0.0.1:8080 (открыть в браузере)"
|
||||
@echo "Остановить: Ctrl+C"
|
||||
@trap 'kill 0' EXIT; \
|
||||
(cd src/backend && $(PY) -m uvicorn main:app --reload --port 8000) & \
|
||||
(cd src/frontend && $(PY) -m uvicorn main:app --reload --port 8080) & \
|
||||
wait
|
||||
|
||||
dev: run ## То же, что run
|
||||
|
||||
run-api: venv ## Запустить только API (http://127.0.0.1:8000)
|
||||
cd src/backend && $(PY) -m uvicorn main:app --reload --port 8000
|
||||
|
||||
run-front: venv ## Запустить только сайт (http://127.0.0.1:8080)
|
||||
cd src/frontend && $(PY) -m uvicorn main:app --reload --port 8080
|
||||
|
||||
test: venv ## Прогнать тесты
|
||||
$(PY) -m pytest tests -q
|
||||
|
||||
# --- Docker (продакшен) ------------------------------------------------------
|
||||
|
||||
build: ## Собрать образы
|
||||
docker compose build
|
||||
|
||||
up: ## Запустить все микросервисы одной командой
|
||||
up: ## Запустить сервисы в фоне
|
||||
docker compose up -d
|
||||
|
||||
down: ## Остановить и удалить контейнеры
|
||||
down: ## Остановить и удалить контейнеры
|
||||
docker compose down
|
||||
|
||||
restart: ## Перезапустить микросервисы
|
||||
restart: ## Перезапустить сервисы
|
||||
docker compose restart
|
||||
|
||||
logs: ## Логи всех микросервисов
|
||||
logs: ## Логи сервисов (Ctrl+C для выхода)
|
||||
docker compose logs -f
|
||||
|
||||
ps: ## Статус микросервисов
|
||||
ps: ## Статус сервисов
|
||||
docker compose ps
|
||||
|
||||
deploy: ## Собрать и запустить (деплой на сервере)
|
||||
deploy: ## Собрать и запустить (docker)
|
||||
./deploy.sh
|
||||
|
||||
test: ## Прогнать тесты (локальный venv)
|
||||
$(CURDIR)/.venv/bin/python -m pytest tests -q
|
||||
|
||||
dev: ## Запустить локально без Docker (бэкенд + фронт)
|
||||
@echo "Запуск бэкенда на :8000 и фронта на :8080..."
|
||||
@trap 'kill 0' EXIT; \
|
||||
cd src/backend && $(CURDIR)/.venv/bin/python -m uvicorn main:app --reload --port 8000 & \
|
||||
cd src/frontend && $(CURDIR)/.venv/bin/python -m uvicorn main:app --reload --port 8080 & \
|
||||
wait
|
||||
|
||||
Reference in New Issue
Block a user