Web_application_for_space_tasks

0

Описание

Веб-приложение для космических задач

Языки

  • Python100%
S
SergeyAchkasov
README
# 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