# Web_application_for_space_tasks
Веб-приложение для космических задач
Space Tasks Web Application
Веб-приложение для решения трех космических задач с REST API.
Требования
- Python 3.8+
- pip
Установка
# Клонирование
git clone https://github.com/yourusername/space-tasks-app.git
cd space-tasks-app
# Виртуальное окружение
python -m venv venv
source venv/bin/activate # macOS/Linux
# или
venv\Scripts\activate # Windows
# Зависимости
pip install -r requirements.txt
Запуск
bash
python app.py
Приложение будет доступно по адресу: **http://localhost:8000**
API Эндпоинты
| Задача | Эндпоинт | Описание |
|--------|----------|---------|
| Круиз Робинсона | `POST /api/cruise_robinson` | Оптимизация полета с гравитационным маневром |
| Видимость звезды | `POST /api/visibility_window` | Поиск окна видимости в системе тел |
| Созвездие | `POST /api/constellation_finder` | Поиск созвездия в 3D-пространстве |
| Информация | `GET /api/info` | Информация о доступных задачах |
| Статус | `GET /api/health` | Проверка статуса сервера |
Примеры
Проверка статуса
bash
curl http://localhost:8000/api/health
Задача 1: Круиз Робинсона
bash
curl -X POST http://localhost:8000/api/cruise_robinson \
-H "Content-Type: application/json" \
-d '{
"start_planet": "Earth",
"end_planet": "Mars",
"start_orbit_km": 400,
"end_orbit_km": 300,
"planet_mu": 3.986e14,
"use_gravity_assist": true
}'
Задача 2: Видимость
bash
curl -X POST http://localhost:8000/api/visibility_window \
-H "Content-Type: application/json" \
-d '{
"observer_position": [6378, 0, 0],
"target_position": [384400, 0, 0],
"occluding_bodies": [
{"name": "Moon", "position": [150000, 150000, 0], "radius": 1737}
],
"orbit_period_hours": 24,
"samples": 100
}'
Задача 3: Созвездие
bash
curl -X POST http://localhost:8000/api/constellation_finder \
-H "Content-Type: application/json" \
-d '{
"observed_stars": [[1.0, 1.0, 0.0], [2.0, 0.0, 0.0], [0.0, 2.0, 0.0]],
"constellation_patterns": [
{"name": "Triangle", "stars": [[1.0, 1.0, 0.0], [2.0, 0.0, 0.0], [0.0, 2.0, 0.0]]}
],
"tolerance": 0.15,
"analyze_structure": true
}'
Python/requests
python
import requests
response = requests.post(
'http://localhost:8000/api/cruise_robinson',
json={
"start_planet": "Earth",
"end_planet": "Mars",
"start_orbit_km": 400,
"end_orbit_km": 300,
"planet_mu": 3.986e14
}
)
print(response.json())
Тестирование
bash
python test_api.py
Docker
bash
# Построить образ
docker build -t space-app:1.0 .
# Запустить контейнер
docker run -p 8000:8000 space-app:1.0
Или через Docker Compose:
bash
docker-compose up -d
Deployment
### Gunicorn
bash
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 app:app
### Systemd (Linux)
bash
sudo nano /etc/systemd/system/space-app.service
ini
[Unit]
Description=Space Tasks App
After=network.target
[Service]
User=www-data
WorkingDirectory=/home/user/space-tasks-app
ExecStart=/home/user/space-tasks-app/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always
[Install]
WantedBy=multi-user.target
Затем:
bash
sudo systemctl enable space-app
sudo systemctl start space-app
Структура проекта
space-tasks-app/
├── app.py # Основное приложение
├── test_api.py # Тесты
├── requirements.txt # Зависимости
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose
├── README.md # Этот файл
└── .gitignore # Git ignore
Конфигурация
**Значения μ для планет:**
| Объект | μ (м³/с²) |
|--------|-----------|
| Земля | 3.986e14 |
| Луна | 4.905e12 |
| Марс | 4.283e13 |
| Юпитер | 1.267e17 |
| Солнце | 1.327e20 |
Решение проблем
**Port 8000 уже используется:**
bash
# Linux/macOS
lsof -i :8000 | kill -9 $(awk 'NR==2 {print $2}')
# Windows
netstat -ano | findstr :8000
taskkill /PID <PID> /F
**Модуль не найден:**
bash
pip install --upgrade pip
pip install -r requirements.txt
Документация
Подробная документация доступна в папке `docs/`:
- `API_DOCUMENTATION.md` - Полная документация API
- `EXAMPLES.md` - Расширенные примеры использования
Вклад
Pull requests приветствуются. Для больших изменений сначала откройте issue для обсуждения.
## requirements.txt
txt
Flask==2.3.3
numpy==1.24.3
scipy==1.11.2
requests==2.31.0
gunicorn==21.2.0
## .gitignore
# Python
__pycache__/
*.py[cod]
*.so
venv/
env/
ENV/
# IDE
.vscode/
.idea/
*.swp
# Логи
*.log
# ОС
.DS_Store
Thumbs.db
# Тесты
.pytest_cache/
.coverage
# Переменные окружения
.env