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

103
start_all_services.sh Executable file
View File

@@ -0,0 +1,103 @@
#!/bin/bash
# Скрипт для запуска микросервисной архитектуры Women Safety App
# Запускает все необходимые микросервисы и API Gateway
# Цвета для вывода
GREEN="\033[0;32m"
YELLOW="\033[0;33m"
BLUE="\033[0;34m"
RED="\033[0;31m"
NC="\033[0m" # No Color
# Переход в директорию проекта
cd "$(dirname "$0")" || { echo -e "${RED}Не удалось перейти в директорию проекта${NC}"; exit 1; }
# Активация виртуального окружения
echo -e "${YELLOW}Активация виртуального окружения...${NC}"
source venv/bin/activate
# Установка переменной PYTHONPATH
export PYTHONPATH="${PWD}:${PYTHONPATH}"
# Функция для проверки доступности порта
check_port() {
local port=$1
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null ; then
return 0 # порт занят
else
return 1 # порт свободен
fi
}
# Создание скрипта миграции
echo -e "${YELLOW}Создание скрипта миграции базы данных...${NC}"
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
# Запуск микросервисов в фоновом режиме
echo -e "${YELLOW}Запуск микросервисов...${NC}"
# Список сервисов для запуска
services=(
"user_service:8001"
"emergency_service:8002"
"location_service:8003"
"calendar_service:8004"
"notification_service:8005"
)
# Запуск сервисов в фоновом режиме
for service in "${services[@]}"; do
name=${service%%:*}
port=${service#*:}
if check_port $port; then
echo -e "${YELLOW}Порт $port уже используется, пропускаем запуск $name${NC}"
continue
fi
echo -e "${BLUE}Запуск $name на порту $port...${NC}"
python -m uvicorn services.${name}.main:app --host 0.0.0.0 --port $port &
# Сохраняем PID процесса
echo $! > /tmp/${name}.pid
# Ждем немного, чтобы сервис успел запуститься
sleep 2
done
# Проверка, что все сервисы запущены
echo -e "${YELLOW}Проверка статуса сервисов...${NC}"
for service in "${services[@]}"; do
name=${service%%:*}
port=${service#*:}
if check_port $port; then
echo -e "${GREEN}✅ Сервис $name запущен на порту $port${NC}"
else
echo -e "${RED}❌ Сервис $name НЕ запущен на порту $port${NC}"
fi
done
# Получение IP-адреса для доступа из мобильного приложения
EXTERNAL_IP=$(hostname -I | awk '{print $1}')
echo -e "${GREEN}📱 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