Files
chat/README.md
Andrew K. Choi bd7a481803
All checks were successful
continuous-integration/drone/push Build is passing
README fix
2025-09-25 12:29:41 +09:00

353 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Women's Safety App - Backend Services
🚨 **Микросервисная архитектура для приложения безопасности женщин с поддержкой миллионов пользователей** 🚨
> Высокопроизводительная, масштабируемая система для экстренных уведомлений, геолокационных сервисов и управления женским здоровьем.
[![Python](https://img.shields.io/badge/Python-3.11+-blue.svg)](https://python.org)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com)
[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15+-blue.svg)](https://postgresql.org)
[![Docker](https://img.shields.io/badge/Docker-Ready-blue.svg)](https://docker.com)
[![Drone CI](https://img.shields.io/badge/Drone-CI%2FCD-orange.svg)](https://drone.io)
[![Build Status](https://drone.smartsoltech.kr/api/badges/trevor/chat/status.svg)](https://drone.smartsoltech.kr/trevor/chat)
## 🏗️ Архитектура
### 🎯 Ключевые возможности:
- **Мгновенные SOS-сигналы** с геолокационным таргетингом
- **Умный поиск** пользователей в радиусе 1км
- **Женский календарь** с ИИ-аналитикой
- **Push-уведомления** в реальном времени
- **JWT-аутентификация** и защита данных
- **Горизонтальное масштабирование** для миллионов пользователей
### 🚀 Микросервисы:
- **🔐 User Service** (8001): Профили, аутентификация, настройки
- **🚨 Emergency Service** (8002): SOS-сигналы, экстренные уведомления
- **📍 Location Service** (8003): Геолокация, поиск по радиусу
- **📅 Calendar Service** (8004): Женское здоровье, цикл, аналитика
- **🔔 Notification Service** (8005): Push-уведомления, FCM
- **🌐 API Gateway** (8000): Маршрутизация, rate limiting, балансировка
### 🛠️ Технологический стек:
- **Backend**: Python 3.11+ с FastAPI
- **Database**: PostgreSQL 15+ с партиционированием
- **Cache**: Redis 7+ для сессий и геоданных
- **Messaging**: Kafka для event streaming
- **Monitoring**: Prometheus + Grafana
- **Deployment**: Docker + Docker Compose
## 🚀 Запуск
### Требования
- Python 3.11+
- Docker & Docker Compose
- PostgreSQL 14+
- Redis 7+
### Установка
```bash
# Клонирование и настройка
git clone <repository>
cd women-safety-backend
# Создание виртуального окружения
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Установка зависимостей
pip install -r requirements.txt
# Запуск инфраструктуры
docker-compose up -d postgres redis kafka
# Миграции БД
alembic upgrade head
# Запуск сервисов
python -m uvicorn user_service.main:app --port 8001
python -m uvicorn emergency_service.main:app --port 8002
python -m uvicorn location_service.main:app --port 8003
python -m uvicorn calendar_service.main:app --port 8004
python -m uvicorn notification_service.main:app --port 8005
python -m uvicorn api_gateway.main:app --port 8000
```
## 📱 Основной функционал
### SOS Alert System
- Мгновенная отправка сигналов тревоги
- Геолокационный поиск пользователей в радиусе 1км
- Массовые push-уведомления
- Интеграция с службами экстренного реагирования
### Профили пользователей
- Регистрация и аутентификация
- Личные данные и настройки
- Контакты для экстренной связи
### Женский календарь
- Отслеживание менструального цикла
- Уведомления и напоминания
- Аналитика здоровья
## 🔧 Разработка
### Структура проекта
```
├── services/
│ ├── user-service/
│ ├── emergency-service/
│ ├── location-service/
│ ├── calendar-service/
│ ├── notification-service/
│ └── api-gateway/
├── shared/
│ ├── database/
│ ├── messaging/
│ └── utils/
├── docker-compose.yml
├── requirements.txt
└── README.md
```
### Команды разработки
```bash
# Тесты
python -m pytest
# Линтеры
black .
flake8 .
mypy .
# Миграции
alembic revision --autogenerate -m "description"
alembic upgrade head
```
## 🔒 Безопасность
- JWT аутентификация
- Rate limiting
- HTTPS only
- Шифрование персональных данных
- Валидация входных данных
- CORS настройки
## 📊 Масштабируемость
- Горизонтальное масштабирование сервисов
- Партиционирование БД по географическим регионам
- Кэширование критических данных
- Асинхронная обработка
- Circuit breaker pattern
- Health checks и service discovery
## 🚁 CI/CD - Drone Pipeline
[![Drone Build Status](https://drone.example.com/api/badges/women-safety/backend/status.svg)](https://drone.example.com/women-safety/backend)
Автоматизированный pipeline с полным циклом разработки, тестирования и развертывания:
### 🔄 Этапы Pipeline:
#### 1. **Code Quality** 🧹
```yaml
steps:
- name: lint
commands:
- black --check .
- flake8 .
- isort --check-only .
- mypy services/ --ignore-missing-imports
```
#### 2. **Security Scanning** 🛡️
```yaml
steps:
- name: security
commands:
- safety check --json
- bandit -r services/ -f json
- trivy image scan
```
#### 3. **Testing** 🧪
- **Unit Tests**: pytest с coverage отчетами
- **Integration Tests**: Реальные сервисы в Docker
- **Load Testing**: K6 performance тесты
- **Security Tests**: OWASP ZAP сканирование
#### 4. **Docker Build** 🐳
Параллельная сборка всех 6 микросервисов:
- `women-safety/user-service`
- `women-safety/emergency-service`
- `women-safety/location-service`
- `women-safety/calendar-service`
- `women-safety/notification-service`
- `women-safety/api-gateway`
#### 5. **Deployment** 🚀
- **Staging**: Автоматическое развертывание из `develop`
- **Production**: Развертывание из `main` с подтверждением
- **Rollback**: Автоматический откат при ошибках
### 📋 Drone Configuration
**Основной Pipeline** (`.drone.yml`):
```yaml
kind: pipeline
name: women-safety-backend
steps:
- name: setup
image: python:3.11-slim
commands:
- pip install -r requirements.txt
- name: test
depends_on: [setup]
commands:
- pytest --cov=services --cov-report=xml
- name: build-services
depends_on: [test]
image: plugins/docker
settings:
repo: women-safety/${SERVICE}
tags: [latest, ${DRONE_COMMIT_SHA:0:7}]
- name: deploy-production
depends_on: [integration-test]
when:
branch: [main]
event: [push]
```
**Vulnerability Scanning** (Nightly):
```yaml
kind: pipeline
name: vulnerability-scan
trigger:
cron: [nightly]
steps:
- name: trivy-scan
image: aquasec/trivy:latest
commands:
- trivy image women-safety/user-service:latest
```
**Performance Testing** (Weekly):
```yaml
kind: pipeline
name: performance-test
trigger:
cron: [weekly]
steps:
- name: load-test
image: loadimpact/k6:latest
commands:
- k6 run tests/performance/load-test.js
```
### 🔧 Настройка Secrets
```bash
# Docker Registry
drone secret add --repository women-safety/backend --name docker_username --data username
drone secret add --repository women-safety/backend --name docker_password --data password
# Production SSH
drone secret add --repository women-safety/backend --name production_host --data server.example.com
drone secret add --repository women-safety/backend --name production_ssh_key --data @~/.ssh/id_rsa
# Notifications
drone secret add --repository women-safety/backend --name slack_webhook --data https://hooks.slack.com/...
```
### 📊 Мониторинг Pipeline
- **Build Status**: Real-time статус в Slack/Teams
- **Performance Metrics**: Автоматические отчеты по производительности
- **Security Reports**: Еженедельные отчеты по уязвимостям
- **Deployment Logs**: Centralized логирование развертываний
### 🏃‍♂️ Быстрый старт с Drone
```bash
# Установка Drone CLI
curl -L https://github.com/drone/drone-cli/releases/latest/download/drone_linux_amd64.tar.gz | tar zx
sudo install -t /usr/local/bin drone
# Настройка
export DRONE_SERVER=https://drone.example.com
export DRONE_TOKEN=your-token
# Запуск build
drone build promote women-safety/backend 123 production
```
### 📜 Дополнительные скрипты
**Deployment Scripts:**
- `deploy-production.sh` - Полное развертывание в продакшен с проверками
- `test_auth_flow.sh` - Тестирование регистрации и авторизации
- `start_services_no_docker.sh` - Запуск сервисов без Docker
**Performance Testing:**
- `tests/performance/load-test.js` - K6 нагрузочное тестирование
- `tests/performance/stress-test.js` - K6 стресс-тестирование
**Quick Commands:**
```bash
# Полное развертывание
./deploy-production.sh v1.2.3
# Тестирование API
./test_auth_flow.sh
# Проверка системы
./health-check.sh
# Нагрузочное тестирование
k6 run tests/performance/load-test.js
```
## 📁 Структура проекта
```
women-safety-backend/
├── .drone.yml # Drone CI/CD Pipeline
├── deploy-production.sh # Production deployment script
├── docker-compose.prod.yml # Production configuration
├── docker-compose.test.yml # Testing configuration
├── DRONE_SETUP.md # Drone setup instructions
├── services/ # Microservices
│ ├── user_service/ # User management & auth
│ ├── emergency_service/ # SOS alerts & emergencies
│ ├── location_service/ # Geolocation & tracking
│ ├── calendar_service/ # Women's health calendar
│ ├── notification_service/ # Push notifications
│ └── api_gateway/ # API Gateway & routing
├── shared/ # Shared utilities
│ ├── config.py # Configuration management
│ ├── database.py # Database connections
│ └── auth.py # JWT authentication
├── tests/ # Test suites
│ ├── performance/ # K6 load tests
│ └── integration/ # Integration tests
└── scripts/ # Utility scripts
├── start_services_no_docker.sh
├── test_auth_flow.sh
└── health-check.sh # System health monitoring
```
## 🔗 Quick Links
- 📚 **[Drone Setup Guide](DRONE_SETUP.md)** - Complete CI/CD setup
- 🚀 **[Production Deployment](deploy-production.sh)** - Zero-downtime deployment
- 🧪 **[API Testing](test_auth_flow.sh)** - Authentication flow testing
- 📊 **[Performance Tests](tests/performance/)** - Load & stress testing
- 🐳 **[Docker Configs](docker-compose.prod.yml)** - Production containers