API refactor
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-10-07 16:25:52 +09:00
parent 76d0d86211
commit 91c7e04474
1171 changed files with 81940 additions and 44117 deletions

86
run_microservices.sh Normal file
View File

@@ -0,0 +1,86 @@
#!/bin/bash
# Скрипт для быстрого запуска всех необходимых микросервисов Women Safety App
# Цвета для вывода
GREEN="\033[0;32m"
YELLOW="\033[0;33m"
BLUE="\033[0;34m"
RED="\033[0;31m"
NC="\033[0m" # No Color
echo -e "${BLUE}🚀 Запуск Women Safety App Microservices${NC}"
# Переход в директорию проекта
cd "$(dirname "$0")" || { echo -e "${RED}❌ Ошибка: Не удалось перейти в директорию проекта${NC}"; exit 1; }
# Проверка виртуального окружения
if [ ! -d "venv" ]; then
echo -e "${YELLOW}⚠️ Виртуальное окружение не найдено. Создаю новое...${NC}"
python3 -m venv venv
source venv/bin/activate
python -m pip install -r requirements.txt
else
echo -e "${GREEN}✅ Виртуальное окружение найдено${NC}"
source venv/bin/activate
fi
# Установка PYTHONPATH
export PYTHONPATH="${PWD}:${PYTHONPATH}"
# Функция для запуска сервиса
start_service() {
local name=$1
local port=$2
echo -e "${YELLOW}🔄 Запуск $name на порту $port...${NC}"
# Запускаем в фоновом режиме
python -m uvicorn services.${name}.main:app --host 0.0.0.0 --port $port &
# Сохраняем PID
echo $! > /tmp/${name}.pid
# Небольшая задержка для запуска
sleep 2
# Проверка запуска
if curl -s http://localhost:$port/health > /dev/null; then
echo -e "${GREEN}$name успешно запущен на порту $port${NC}"
else
echo -e "${RED}❌ Ошибка: $name не запущен на порту $port${NC}"
fi
}
# Создание скрипта миграции БД
cat > migrate_db.py << 'EOF'
import asyncio
async def run_migrations():
from shared.database import init_db
print("🔄 Выполнение миграций базы данных...")
await init_db()
print("✅ Миграции успешно выполнены!")
if __name__ == "__main__":
asyncio.run(run_migrations())
EOF
# Запуск миграций
echo -e "${YELLOW}🔄 Применение миграций базы данных...${NC}"
python migrate_db.py
# Запуск всех микросервисов
start_service "user_service" 8001
start_service "emergency_service" 8002
start_service "location_service" 8003
start_service "calendar_service" 8004
start_service "notification_service" 8005
# IP для мобильного доступа
EXTERNAL_IP=$(hostname -I | awk '{print $1}')
echo -e "${BLUE}📱 IP для мобильного приложения: ${EXTERNAL_IP}:8000${NC}"
# Запуск API Gateway
echo -e "${GREEN}🚪 Запуск API Gateway на порту 8000...${NC}"
python -m uvicorn services.api_gateway.main:app --host 0.0.0.0 --port 8000