mirror of
https://github.com/DavidGailleton/42-Piscine_Python.git
synced 2026-03-13 20:56:54 +01:00
Module 9 ex0 done + ex1 WIP
This commit is contained in:
237
09/data_exporter.py
Normal file
237
09/data_exporter.py
Normal file
@@ -0,0 +1,237 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Data export utilities for the Cosmic Data Observatory
|
||||
Exports generated data to JSON, CSV, and Python formats for testing
|
||||
"""
|
||||
|
||||
import json
|
||||
import csv
|
||||
from pathlib import Path
|
||||
from typing import List, Dict, Any, Union
|
||||
from data_generator import SpaceStationGenerator, AlienContactGenerator, CrewMissionGenerator, DataConfig
|
||||
|
||||
|
||||
class DataExporter:
|
||||
"""Handles data export in multiple formats"""
|
||||
|
||||
def __init__(self, output_dir: str = "generated_data"):
|
||||
self.output_dir = Path(output_dir)
|
||||
self.output_dir.mkdir(exist_ok=True)
|
||||
|
||||
def export_to_json(self, data: List[Dict[str, Any]], filename: str) -> Path:
|
||||
"""Export data to JSON format"""
|
||||
filepath = self.output_dir / f"{filename}.json"
|
||||
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||
|
||||
return filepath
|
||||
|
||||
def export_to_csv(self, data: List[Dict[str, Any]], filename: str) -> Path:
|
||||
"""Export flat data to CSV format"""
|
||||
if not data:
|
||||
return None
|
||||
|
||||
filepath = self.output_dir / f"{filename}.csv"
|
||||
|
||||
# Handle nested data by flattening
|
||||
flat_data = []
|
||||
for item in data:
|
||||
flat_item = self._flatten_dict(item)
|
||||
flat_data.append(flat_item)
|
||||
|
||||
# Get all unique keys for CSV headers
|
||||
all_keys = set()
|
||||
for item in flat_data:
|
||||
all_keys.update(item.keys())
|
||||
|
||||
with open(filepath, 'w', newline='', encoding='utf-8') as f:
|
||||
writer = csv.DictWriter(f, fieldnames=sorted(all_keys))
|
||||
writer.writeheader()
|
||||
writer.writerows(flat_data)
|
||||
|
||||
return filepath
|
||||
|
||||
def export_to_python(self, data: List[Dict[str, Any]], filename: str, variable_name: str) -> Path:
|
||||
"""Export data as Python variable for direct import"""
|
||||
filepath = self.output_dir / f"{filename}.py"
|
||||
|
||||
with open(filepath, 'w', encoding='utf-8') as f:
|
||||
f.write(f'"""\nGenerated test data for {filename}\n"""\n\n')
|
||||
# Use repr() to get proper Python syntax instead of JSON
|
||||
f.write(f'{variable_name} = {self._format_python_data(data)}\n')
|
||||
|
||||
return filepath
|
||||
|
||||
def _format_python_data(self, data: Any, indent: int = 0) -> str:
|
||||
"""Format data as valid Python code with proper True/False/None"""
|
||||
indent_str = ' ' * indent
|
||||
next_indent_str = ' ' * (indent + 1)
|
||||
|
||||
if data is None:
|
||||
return 'None'
|
||||
elif isinstance(data, bool):
|
||||
return 'True' if data else 'False'
|
||||
elif isinstance(data, (int, float)):
|
||||
return str(data)
|
||||
elif isinstance(data, str):
|
||||
# Escape quotes and format as Python string
|
||||
return repr(data)
|
||||
elif isinstance(data, list):
|
||||
if not data:
|
||||
return '[]'
|
||||
items = []
|
||||
for item in data:
|
||||
formatted_item = self._format_python_data(item, indent + 1)
|
||||
items.append(f'{next_indent_str}{formatted_item}')
|
||||
return '[\n' + ',\n'.join(items) + f'\n{indent_str}]'
|
||||
elif isinstance(data, dict):
|
||||
if not data:
|
||||
return '{}'
|
||||
items = []
|
||||
for key, value in data.items():
|
||||
formatted_value = self._format_python_data(value, indent + 1)
|
||||
items.append(f'{next_indent_str}{repr(key)}: {formatted_value}')
|
||||
return '{\n' + ',\n'.join(items) + f'\n{indent_str}}}'
|
||||
else:
|
||||
return repr(data)
|
||||
|
||||
def _flatten_dict(self, d: Dict[str, Any], parent_key: str = '', sep: str = '_') -> Dict[str, Any]:
|
||||
"""Flatten nested dictionary for CSV export"""
|
||||
items = []
|
||||
|
||||
for k, v in d.items():
|
||||
new_key = f"{parent_key}{sep}{k}" if parent_key else k
|
||||
|
||||
if isinstance(v, dict):
|
||||
items.extend(self._flatten_dict(v, new_key, sep=sep).items())
|
||||
elif isinstance(v, list) and v and isinstance(v[0], dict):
|
||||
# Handle list of dictionaries by creating numbered entries
|
||||
for i, item in enumerate(v):
|
||||
if isinstance(item, dict):
|
||||
items.extend(self._flatten_dict(item, f"{new_key}_{i}", sep=sep).items())
|
||||
else:
|
||||
items.append((f"{new_key}_{i}", item))
|
||||
elif isinstance(v, list):
|
||||
# Simple list - join as string
|
||||
items.append((new_key, ', '.join(map(str, v))))
|
||||
else:
|
||||
items.append((new_key, v))
|
||||
|
||||
return dict(items)
|
||||
|
||||
|
||||
def generate_all_datasets():
|
||||
"""Generate complete datasets for all exercise types"""
|
||||
config = DataConfig()
|
||||
exporter = DataExporter()
|
||||
|
||||
print("🔄 Generating complete datasets...")
|
||||
|
||||
# Generate space station data
|
||||
station_gen = SpaceStationGenerator(config)
|
||||
stations = station_gen.generate_station_data(10)
|
||||
|
||||
# Generate alien contact data
|
||||
contact_gen = AlienContactGenerator(config)
|
||||
contacts = contact_gen.generate_contact_data(15)
|
||||
|
||||
# Generate mission data
|
||||
mission_gen = CrewMissionGenerator(config)
|
||||
missions = mission_gen.generate_mission_data(5)
|
||||
|
||||
# Export in multiple formats
|
||||
datasets = [
|
||||
(stations, "space_stations", "SPACE_STATIONS"),
|
||||
(contacts, "alien_contacts", "ALIEN_CONTACTS"),
|
||||
(missions, "space_missions", "SPACE_MISSIONS")
|
||||
]
|
||||
|
||||
exported_files = []
|
||||
|
||||
for data, filename, var_name in datasets:
|
||||
# Export to JSON
|
||||
json_file = exporter.export_to_json(data, filename)
|
||||
exported_files.append(json_file)
|
||||
|
||||
# Export to Python
|
||||
py_file = exporter.export_to_python(data, filename, var_name)
|
||||
exported_files.append(py_file)
|
||||
|
||||
# Export to CSV (only for non-nested data)
|
||||
if filename != "space_missions": # Missions have nested crew data
|
||||
csv_file = exporter.export_to_csv(data, filename)
|
||||
if csv_file:
|
||||
exported_files.append(csv_file)
|
||||
|
||||
print(f"✅ Generated {len(exported_files)} data files:")
|
||||
for file_path in exported_files:
|
||||
print(f" 📄 {file_path}")
|
||||
|
||||
return exported_files
|
||||
|
||||
|
||||
def create_test_scenarios():
|
||||
"""Create specific test scenarios for validation testing"""
|
||||
config = DataConfig()
|
||||
exporter = DataExporter()
|
||||
|
||||
# Invalid space station data
|
||||
invalid_stations = [
|
||||
{
|
||||
"station_id": "TOOLONG123456", # Too long
|
||||
"name": "Test Station",
|
||||
"crew_size": 25, # Too many crew
|
||||
"power_level": 85.0,
|
||||
"oxygen_level": 92.0,
|
||||
"last_maintenance": "2024-01-15T10:30:00",
|
||||
"is_operational": True
|
||||
},
|
||||
{
|
||||
"station_id": "TS", # Too short
|
||||
"name": "", # Empty name
|
||||
"crew_size": 0, # No crew
|
||||
"power_level": -10.0, # Negative power
|
||||
"oxygen_level": 150.0, # Over 100%
|
||||
"last_maintenance": "2024-01-15T10:30:00",
|
||||
"is_operational": True
|
||||
}
|
||||
]
|
||||
|
||||
# Invalid alien contacts
|
||||
invalid_contacts = [
|
||||
{
|
||||
"contact_id": "WRONG_FORMAT", # Doesn't start with AC
|
||||
"timestamp": "2024-01-15T14:30:00",
|
||||
"location": "Area 51",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 8.5,
|
||||
"duration_minutes": 45,
|
||||
"witness_count": 5,
|
||||
"message_received": None, # Strong signal without message
|
||||
"is_verified": False
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_002",
|
||||
"timestamp": "2024-01-16T09:15:00",
|
||||
"location": "Roswell",
|
||||
"contact_type": "telepathic",
|
||||
"signal_strength": 6.2,
|
||||
"duration_minutes": 30,
|
||||
"witness_count": 1, # Too few witnesses for telepathic
|
||||
"message_received": None,
|
||||
"is_verified": False
|
||||
}
|
||||
]
|
||||
|
||||
# Export test scenarios
|
||||
exporter.export_to_json(invalid_stations, "invalid_stations")
|
||||
exporter.export_to_json(invalid_contacts, "invalid_contacts")
|
||||
|
||||
print("🧪 Created validation test scenarios")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
generate_all_datasets()
|
||||
create_test_scenarios()
|
||||
print("\n🎯 All data files ready for testing!")
|
||||
302
09/data_generator.py
Normal file
302
09/data_generator.py
Normal file
@@ -0,0 +1,302 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Cosmic Data Observatory - Data Generator
|
||||
Generates realistic test data for space station monitoring, alien contacts, and crew missions.
|
||||
"""
|
||||
|
||||
import random
|
||||
from datetime import datetime, timedelta
|
||||
from typing import List, Dict, Any
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class DataConfig:
|
||||
"""Configuration parameters for data generation"""
|
||||
seed: int = 42
|
||||
base_date: datetime = datetime(2024, 1, 1)
|
||||
date_range_days: int = 365
|
||||
|
||||
|
||||
class SpaceStationGenerator:
|
||||
"""Generates space station monitoring data"""
|
||||
|
||||
STATION_NAMES = [
|
||||
"International Space Station", "Lunar Gateway", "Mars Orbital Platform",
|
||||
"Europa Research Station", "Titan Mining Outpost", "Asteroid Belt Relay",
|
||||
"Deep Space Observatory", "Solar Wind Monitor", "Quantum Communications Hub"
|
||||
]
|
||||
|
||||
STATION_PREFIXES = ["ISS", "LGW", "MOP", "ERS", "TMO", "ABR", "DSO", "SWM", "QCH"]
|
||||
|
||||
def __init__(self, config: DataConfig):
|
||||
self.config = config
|
||||
random.seed(config.seed)
|
||||
|
||||
def generate_station_data(self, count: int = 5) -> List[Dict[str, Any]]:
|
||||
"""Generate multiple space station records"""
|
||||
stations = []
|
||||
|
||||
for i in range(count):
|
||||
station_id = f"{random.choice(self.STATION_PREFIXES)}{random.randint(100, 999)}"
|
||||
name = random.choice(self.STATION_NAMES)
|
||||
|
||||
# Realistic operational parameters
|
||||
crew_size = random.randint(3, 12)
|
||||
power_level = round(random.uniform(70.0, 98.5), 1)
|
||||
oxygen_level = round(random.uniform(85.0, 99.2), 1)
|
||||
|
||||
# Recent maintenance date
|
||||
days_ago = random.randint(1, 180)
|
||||
maintenance_date = self.config.base_date - timedelta(days=days_ago)
|
||||
|
||||
# Operational status based on system health
|
||||
is_operational = power_level > 75.0 and oxygen_level > 90.0
|
||||
|
||||
# Optional maintenance notes
|
||||
notes = None
|
||||
if not is_operational:
|
||||
notes = "System diagnostics required"
|
||||
elif random.random() < 0.3:
|
||||
notes = "All systems nominal"
|
||||
|
||||
stations.append({
|
||||
"station_id": station_id,
|
||||
"name": name,
|
||||
"crew_size": crew_size,
|
||||
"power_level": power_level,
|
||||
"oxygen_level": oxygen_level,
|
||||
"last_maintenance": maintenance_date.isoformat(),
|
||||
"is_operational": is_operational,
|
||||
"notes": notes
|
||||
})
|
||||
|
||||
return stations
|
||||
|
||||
|
||||
class AlienContactGenerator:
|
||||
"""Generates alien contact report data"""
|
||||
|
||||
LOCATIONS = [
|
||||
"Area 51, Nevada", "Roswell, New Mexico", "SETI Institute, California",
|
||||
"Arecibo Observatory, Puerto Rico", "Atacama Desert, Chile",
|
||||
"Antarctic Research Station", "International Space Station",
|
||||
"Mauna Kea Observatory, Hawaii", "Very Large Array, New Mexico"
|
||||
]
|
||||
|
||||
CONTACT_TYPES = ["radio", "visual", "physical", "telepathic"]
|
||||
|
||||
MESSAGES = [
|
||||
"Greetings from Zeta Reticuli",
|
||||
"Mathematical sequence detected: prime numbers",
|
||||
"Coordinates to star system received",
|
||||
"Warning about solar flare activity",
|
||||
"Request for peaceful contact",
|
||||
"Unknown language pattern identified"
|
||||
]
|
||||
|
||||
def __init__(self, config: DataConfig):
|
||||
self.config = config
|
||||
random.seed(config.seed + 1)
|
||||
|
||||
def generate_contact_data(self, count: int = 8) -> List[Dict[str, Any]]:
|
||||
"""Generate multiple alien contact records"""
|
||||
contacts = []
|
||||
|
||||
for i in range(count):
|
||||
contact_id = f"AC_{self.config.base_date.year}_{str(i+1).zfill(3)}"
|
||||
|
||||
# Random contact timing within date range
|
||||
days_offset = random.randint(0, self.config.date_range_days)
|
||||
contact_time = self.config.base_date + timedelta(days=days_offset)
|
||||
|
||||
location = random.choice(self.LOCATIONS)
|
||||
contact_type = random.choice(self.CONTACT_TYPES)
|
||||
|
||||
# Signal characteristics
|
||||
signal_strength = round(random.uniform(1.0, 10.0), 1)
|
||||
duration = random.randint(5, 240) # 5 minutes to 4 hours
|
||||
witnesses = random.randint(1, 15)
|
||||
|
||||
# Message content for strong signals
|
||||
message = None
|
||||
if signal_strength > 6.0 and random.random() < 0.7:
|
||||
message = random.choice(self.MESSAGES)
|
||||
|
||||
# Verification status
|
||||
is_verified = False
|
||||
if contact_type == "physical":
|
||||
is_verified = True # Physical contacts must be verified
|
||||
elif contact_type == "radio" and signal_strength > 8.0:
|
||||
is_verified = random.random() < 0.8
|
||||
|
||||
# Adjust witnesses for telepathic contacts
|
||||
if contact_type == "telepathic" and witnesses < 3:
|
||||
witnesses = random.randint(3, 8)
|
||||
|
||||
contacts.append({
|
||||
"contact_id": contact_id,
|
||||
"timestamp": contact_time.isoformat(),
|
||||
"location": location,
|
||||
"contact_type": contact_type,
|
||||
"signal_strength": signal_strength,
|
||||
"duration_minutes": duration,
|
||||
"witness_count": witnesses,
|
||||
"message_received": message,
|
||||
"is_verified": is_verified
|
||||
})
|
||||
|
||||
return contacts
|
||||
|
||||
|
||||
class CrewMissionGenerator:
|
||||
"""Generates space crew and mission data"""
|
||||
|
||||
FIRST_NAMES = [
|
||||
"Sarah", "John", "Alice", "Michael", "Emma", "David", "Lisa", "Robert",
|
||||
"Maria", "James", "Anna", "William", "Elena", "Thomas", "Sofia", "Daniel"
|
||||
]
|
||||
|
||||
LAST_NAMES = [
|
||||
"Connor", "Smith", "Johnson", "Williams", "Brown", "Jones", "Garcia",
|
||||
"Miller", "Davis", "Rodriguez", "Martinez", "Hernandez", "Lopez", "Gonzalez"
|
||||
]
|
||||
|
||||
SPECIALIZATIONS = [
|
||||
"Mission Command", "Navigation", "Engineering", "Life Support",
|
||||
"Communications", "Medical Officer", "Pilot", "Science Officer",
|
||||
"Maintenance", "Security", "Research", "Systems Analysis"
|
||||
]
|
||||
|
||||
RANKS = ["cadet", "officer", "lieutenant", "captain", "commander"]
|
||||
|
||||
DESTINATIONS = [
|
||||
"Mars", "Moon", "Europa", "Titan", "Asteroid Belt",
|
||||
"Jupiter Orbit", "Saturn Rings", "Deep Space", "Solar Observatory"
|
||||
]
|
||||
|
||||
def __init__(self, config: DataConfig):
|
||||
self.config = config
|
||||
random.seed(config.seed + 2)
|
||||
|
||||
def generate_crew_member(self, member_id: str) -> Dict[str, Any]:
|
||||
"""Generate a single crew member"""
|
||||
name = f"{random.choice(self.FIRST_NAMES)} {random.choice(self.LAST_NAMES)}"
|
||||
rank = random.choice(self.RANKS)
|
||||
age = random.randint(25, 55)
|
||||
specialization = random.choice(self.SPECIALIZATIONS)
|
||||
|
||||
# Experience correlates with age and rank
|
||||
base_experience = max(0, age - 22)
|
||||
rank_bonus = {"cadet": 0, "officer": 2, "lieutenant": 5, "captain": 8, "commander": 12}
|
||||
years_experience = min(base_experience + rank_bonus[rank] + random.randint(-2, 3), 30)
|
||||
|
||||
return {
|
||||
"member_id": member_id,
|
||||
"name": name,
|
||||
"rank": rank,
|
||||
"age": age,
|
||||
"specialization": specialization,
|
||||
"years_experience": max(0, years_experience),
|
||||
"is_active": True
|
||||
}
|
||||
|
||||
def generate_mission_data(self, count: int = 3) -> List[Dict[str, Any]]:
|
||||
"""Generate complete mission records with crews"""
|
||||
missions = []
|
||||
|
||||
for i in range(count):
|
||||
mission_id = f"M{self.config.base_date.year}_{random.choice(['MARS', 'LUNA', 'EUROPA', 'TITAN'])}"
|
||||
destination = random.choice(self.DESTINATIONS)
|
||||
mission_name = f"{destination} {'Colony' if random.random() < 0.5 else 'Research'} Mission"
|
||||
|
||||
# Mission timing
|
||||
launch_offset = random.randint(30, 300)
|
||||
launch_date = self.config.base_date + timedelta(days=launch_offset)
|
||||
|
||||
# Mission parameters
|
||||
duration = random.randint(90, 1200) # 3 months to 3+ years
|
||||
budget = round(random.uniform(500.0, 5000.0), 1)
|
||||
|
||||
# Generate crew (3-8 members)
|
||||
crew_size = random.randint(3, 8)
|
||||
crew = []
|
||||
|
||||
# Ensure at least one high-ranking officer
|
||||
has_commander = False
|
||||
for j in range(crew_size):
|
||||
member_id = f"CM{str(i*10 + j + 1).zfill(3)}"
|
||||
member = self.generate_crew_member(member_id)
|
||||
|
||||
# First member has higher chance of being high-ranking
|
||||
if j == 0 and not has_commander:
|
||||
member["rank"] = random.choice(["captain", "commander"])
|
||||
has_commander = True
|
||||
|
||||
crew.append(member)
|
||||
|
||||
# For long missions, ensure experienced crew
|
||||
if duration > 365:
|
||||
experienced_needed = len(crew) // 2
|
||||
experienced_count = sum(1 for member in crew if member["years_experience"] >= 5)
|
||||
|
||||
if experienced_count < experienced_needed:
|
||||
# Boost experience for some crew members
|
||||
for member in crew[:experienced_needed]:
|
||||
if member["years_experience"] < 5:
|
||||
member["years_experience"] = random.randint(5, 15)
|
||||
|
||||
missions.append({
|
||||
"mission_id": mission_id,
|
||||
"mission_name": mission_name,
|
||||
"destination": destination,
|
||||
"launch_date": launch_date.isoformat(),
|
||||
"duration_days": duration,
|
||||
"crew": crew,
|
||||
"mission_status": "planned",
|
||||
"budget_millions": budget
|
||||
})
|
||||
|
||||
return missions
|
||||
|
||||
|
||||
def main():
|
||||
"""Generate sample data for all exercise types"""
|
||||
config = DataConfig()
|
||||
|
||||
print("🚀 Cosmic Data Observatory - Sample Data Generator")
|
||||
print("=" * 60)
|
||||
|
||||
# Generate space station data
|
||||
station_gen = SpaceStationGenerator(config)
|
||||
stations = station_gen.generate_station_data(5)
|
||||
|
||||
print(f"\n📡 Generated {len(stations)} space stations:")
|
||||
for station in stations:
|
||||
status = "✅ Operational" if station["is_operational"] else "⚠️ Maintenance"
|
||||
print(f" {station['station_id']}: {station['name']} - {status}")
|
||||
|
||||
# Generate alien contact data
|
||||
contact_gen = AlienContactGenerator(config)
|
||||
contacts = contact_gen.generate_contact_data(6)
|
||||
|
||||
print(f"\n👽 Generated {len(contacts)} alien contacts:")
|
||||
for contact in contacts:
|
||||
verified = "✅ Verified" if contact["is_verified"] else "❓ Unverified"
|
||||
print(f" {contact['contact_id']}: {contact['contact_type']} at {contact['location']} - {verified}")
|
||||
|
||||
# Generate mission data
|
||||
mission_gen = CrewMissionGenerator(config)
|
||||
missions = mission_gen.generate_mission_data(3)
|
||||
|
||||
print(f"\n🚀 Generated {len(missions)} space missions:")
|
||||
for mission in missions:
|
||||
print(f" {mission['mission_id']}: {mission['mission_name']}")
|
||||
print(f" Crew: {len(mission['crew'])} members, Duration: {mission['duration_days']} days")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("Data generation complete! Use these generators in your exercises.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
194
09/ex0/space_station.py
Normal file
194
09/ex0/space_station.py
Normal file
@@ -0,0 +1,194 @@
|
||||
import datetime
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel, Field, ValidationError
|
||||
|
||||
SPACE_STATIONS = [
|
||||
{
|
||||
"station_id": "LGW125",
|
||||
"name": "Titan Mining Outpost",
|
||||
"crew_size": 6,
|
||||
"power_level": 76.4,
|
||||
"oxygen_level": 95.5,
|
||||
"last_maintenance": "2023-07-11T00:00:00",
|
||||
"is_operational": True,
|
||||
"notes": None,
|
||||
},
|
||||
{
|
||||
"station_id": "QCH189",
|
||||
"name": "Deep Space Observatory",
|
||||
"crew_size": 3,
|
||||
"power_level": 70.8,
|
||||
"oxygen_level": 88.1,
|
||||
"last_maintenance": "2023-08-24T00:00:00",
|
||||
"is_operational": False,
|
||||
"notes": "System diagnostics required",
|
||||
},
|
||||
{
|
||||
"station_id": "ISS674",
|
||||
"name": "Europa Research Station",
|
||||
"crew_size": 11,
|
||||
"power_level": 82.0,
|
||||
"oxygen_level": 91.4,
|
||||
"last_maintenance": "2023-10-21T00:00:00",
|
||||
"is_operational": True,
|
||||
"notes": None,
|
||||
},
|
||||
{
|
||||
"station_id": "ISS877",
|
||||
"name": "Mars Orbital Platform",
|
||||
"crew_size": 9,
|
||||
"power_level": 79.7,
|
||||
"oxygen_level": 87.2,
|
||||
"last_maintenance": "2023-10-06T00:00:00",
|
||||
"is_operational": False,
|
||||
"notes": "System diagnostics required",
|
||||
},
|
||||
{
|
||||
"station_id": "LGW194",
|
||||
"name": "Deep Space Observatory",
|
||||
"crew_size": 4,
|
||||
"power_level": 80.2,
|
||||
"oxygen_level": 89.9,
|
||||
"last_maintenance": "2023-10-25T00:00:00",
|
||||
"is_operational": False,
|
||||
"notes": "System diagnostics required",
|
||||
},
|
||||
{
|
||||
"station_id": "ISS847",
|
||||
"name": "Solar Wind Monitor",
|
||||
"crew_size": 11,
|
||||
"power_level": 73.6,
|
||||
"oxygen_level": 98.1,
|
||||
"last_maintenance": "2023-12-11T00:00:00",
|
||||
"is_operational": False,
|
||||
"notes": "System diagnostics required",
|
||||
},
|
||||
{
|
||||
"station_id": "QCH400",
|
||||
"name": "Asteroid Belt Relay",
|
||||
"crew_size": 12,
|
||||
"power_level": 75.5,
|
||||
"oxygen_level": 86.0,
|
||||
"last_maintenance": "2023-07-15T00:00:00",
|
||||
"is_operational": False,
|
||||
"notes": "System diagnostics required",
|
||||
},
|
||||
{
|
||||
"station_id": "ERS891",
|
||||
"name": "Titan Mining Outpost",
|
||||
"crew_size": 4,
|
||||
"power_level": 94.4,
|
||||
"oxygen_level": 97.3,
|
||||
"last_maintenance": "2023-09-25T00:00:00",
|
||||
"is_operational": True,
|
||||
"notes": "All systems nominal",
|
||||
},
|
||||
{
|
||||
"station_id": "ABR266",
|
||||
"name": "Asteroid Belt Relay",
|
||||
"crew_size": 8,
|
||||
"power_level": 76.0,
|
||||
"oxygen_level": 88.8,
|
||||
"last_maintenance": "2023-07-10T00:00:00",
|
||||
"is_operational": False,
|
||||
"notes": "System diagnostics required",
|
||||
},
|
||||
{
|
||||
"station_id": "LGW723",
|
||||
"name": "Mars Orbital Platform",
|
||||
"crew_size": 11,
|
||||
"power_level": 90.8,
|
||||
"oxygen_level": 87.3,
|
||||
"last_maintenance": "2023-09-25T00:00:00",
|
||||
"is_operational": False,
|
||||
"notes": "System diagnostics required",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
class SpaceStation(BaseModel):
|
||||
station_id: str = Field(max_length=10, min_length=3)
|
||||
name: str = Field(min_length=1, max_length=50)
|
||||
crew_size: int = Field(le=20, ge=1)
|
||||
power_level: float = Field(ge=0.0, le=100.0)
|
||||
oxygen_level: float = Field(ge=0.0, le=100.0)
|
||||
last_maintenance: datetime.datetime
|
||||
is_operational: bool = Field(default=True)
|
||||
notes: str | None = Field(default=None, max_length=200)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
try:
|
||||
valid_station = {
|
||||
"station_id": "ISS001",
|
||||
"name": "International Space Station",
|
||||
"crew_size": 6,
|
||||
"power_level": 85.5,
|
||||
"oxygen_level": 92.3,
|
||||
"last_maintenance": "2023-09-25T00:00:00",
|
||||
}
|
||||
|
||||
invalid_station = {
|
||||
"station_id": "ISS001",
|
||||
"name": "International Space Station",
|
||||
"crew_size": 26,
|
||||
"power_level": 85.5,
|
||||
"oxygen_level": 92.3,
|
||||
"last_maintenance": "2023-09-25T00:00:00",
|
||||
}
|
||||
|
||||
try:
|
||||
print("\nValid station:n\n")
|
||||
ss = SpaceStation(**valid_station)
|
||||
print("Valid station created")
|
||||
print(
|
||||
f"ID: {ss.station_id}\n"
|
||||
f"Name {ss.name}\n"
|
||||
f"Crew: {ss.crew_size} people\n"
|
||||
f"Power: {ss.power_level}%\n"
|
||||
f"Oxygen: {ss.oxygen_level}%\n"
|
||||
f"Status: {'operational' if ss.is_operational else 'not operational'}\n"
|
||||
f"Note: {ss.notes}\n"
|
||||
)
|
||||
except ValidationError as err:
|
||||
print(err)
|
||||
|
||||
try:
|
||||
print("\nInvalid station:\n")
|
||||
ss = SpaceStation(**invalid_station)
|
||||
print("Valid station created")
|
||||
print(
|
||||
f"ID: {ss.station_id}\n"
|
||||
f"Name {ss.name}\n"
|
||||
f"Crew: {ss.crew_size} people\n"
|
||||
f"Power: {ss.power_level}%\n"
|
||||
f"Oxygen: {ss.oxygen_level}%\n"
|
||||
f"Status: {'operational' if ss.is_operational else 'not operational'}\n"
|
||||
f"Note: {ss.notes}\n"
|
||||
)
|
||||
except ValidationError as err:
|
||||
print(err)
|
||||
|
||||
print("\nBatch stations:\n")
|
||||
for station in SPACE_STATIONS:
|
||||
try:
|
||||
ss = SpaceStation(**station)
|
||||
print("========================================")
|
||||
print("Valid station created")
|
||||
print(
|
||||
f"ID: {ss.station_id}\n"
|
||||
f"Name {ss.name}\n"
|
||||
f"Crew: {ss.crew_size} people\n"
|
||||
f"Power: {ss.power_level}%\n"
|
||||
f"Oxygen: {ss.oxygen_level}%\n"
|
||||
f"Status: {'operational' if ss.is_operational else 'not operational'}\n"
|
||||
f"Note: {ss.notes}\n"
|
||||
)
|
||||
except ValidationError as e:
|
||||
print(e.errors())
|
||||
except Exception as err:
|
||||
print(err)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
34
09/ex1/alien_contact.py
Normal file
34
09/ex1/alien_contact.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import datetime
|
||||
from enum import Enum
|
||||
from pydantic import BaseModel, Field, model_validator
|
||||
|
||||
|
||||
class ContactType(Enum):
|
||||
RADIO = "radio"
|
||||
VISUAL = "visual"
|
||||
PHYSICAL = "physical"
|
||||
TELEPATHIC = "telepathic"
|
||||
|
||||
|
||||
class AlienContact(BaseModel):
|
||||
contact_id: str = Field(min_length=5, max_length=15)
|
||||
timestamp: datetime.datetime
|
||||
location: str = Field(min_length=3, max_length=100)
|
||||
contact_type: ContactType
|
||||
signal_strength: float = Field(le=0.0, ge=10.0)
|
||||
duration_minutes: int = Field(le=1, ge=1440)
|
||||
witness_count: int = Field(le=1, ge=100)
|
||||
message_received: str | None = Field(default=None, max_length=500)
|
||||
is_verified: bool = Field(default=False)
|
||||
|
||||
@model_validator(mode="after")
|
||||
def format_validation(cls):
|
||||
pass
|
||||
|
||||
|
||||
def main() -> None:
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
16
09/generated_data/alien_contacts.csv
Normal file
16
09/generated_data/alien_contacts.csv
Normal file
@@ -0,0 +1,16 @@
|
||||
contact_id,contact_type,duration_minutes,is_verified,location,message_received,signal_strength,timestamp,witness_count
|
||||
AC_2024_001,visual,99,False,"Atacama Desert, Chile",Greetings from Zeta Reticuli,9.6,2024-01-20T00:00:00,11
|
||||
AC_2024_002,radio,152,False,"Mauna Kea Observatory, Hawaii",,5.6,2024-08-20T00:00:00,6
|
||||
AC_2024_003,telepathic,19,False,"Very Large Array, New Mexico",,4.5,2024-11-15T00:00:00,14
|
||||
AC_2024_004,telepathic,46,False,"Roswell, New Mexico",,2.4,2024-02-24T00:00:00,9
|
||||
AC_2024_005,telepathic,134,False,"SETI Institute, California",Warning about solar flare activity,6.4,2024-09-10T00:00:00,5
|
||||
AC_2024_006,radio,20,False,"Area 51, Nevada",,2.7,2024-02-02T00:00:00,14
|
||||
AC_2024_007,physical,138,True,"Atacama Desert, Chile",Request for peaceful contact,9.0,2024-03-25T00:00:00,10
|
||||
AC_2024_008,radio,122,True,"Area 51, Nevada",Unknown language pattern identified,8.6,2024-11-30T00:00:00,13
|
||||
AC_2024_009,visual,25,False,"Mauna Kea Observatory, Hawaii",,2.1,2024-09-27T00:00:00,13
|
||||
AC_2024_010,physical,52,True,"Area 51, Nevada",,4.3,2024-06-12T00:00:00,11
|
||||
AC_2024_011,radio,235,False,"Roswell, New Mexico",,3.7,2024-11-05T00:00:00,13
|
||||
AC_2024_012,radio,111,False,International Space Station,,5.3,2024-07-04T00:00:00,10
|
||||
AC_2024_013,visual,228,False,Antarctic Research Station,,6.8,2024-02-12T00:00:00,11
|
||||
AC_2024_014,radio,113,False,"Atacama Desert, Chile",Mathematical sequence detected: prime numbers,7.2,2024-10-20T00:00:00,8
|
||||
AC_2024_015,radio,9,False,"Roswell, New Mexico",,2.1,2024-01-02T00:00:00,13
|
||||
|
167
09/generated_data/alien_contacts.json
Normal file
167
09/generated_data/alien_contacts.json
Normal file
@@ -0,0 +1,167 @@
|
||||
[
|
||||
{
|
||||
"contact_id": "AC_2024_001",
|
||||
"timestamp": "2024-01-20T00:00:00",
|
||||
"location": "Atacama Desert, Chile",
|
||||
"contact_type": "visual",
|
||||
"signal_strength": 9.6,
|
||||
"duration_minutes": 99,
|
||||
"witness_count": 11,
|
||||
"message_received": "Greetings from Zeta Reticuli",
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_002",
|
||||
"timestamp": "2024-08-20T00:00:00",
|
||||
"location": "Mauna Kea Observatory, Hawaii",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 5.6,
|
||||
"duration_minutes": 152,
|
||||
"witness_count": 6,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_003",
|
||||
"timestamp": "2024-11-15T00:00:00",
|
||||
"location": "Very Large Array, New Mexico",
|
||||
"contact_type": "telepathic",
|
||||
"signal_strength": 4.5,
|
||||
"duration_minutes": 19,
|
||||
"witness_count": 14,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_004",
|
||||
"timestamp": "2024-02-24T00:00:00",
|
||||
"location": "Roswell, New Mexico",
|
||||
"contact_type": "telepathic",
|
||||
"signal_strength": 2.4,
|
||||
"duration_minutes": 46,
|
||||
"witness_count": 9,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_005",
|
||||
"timestamp": "2024-09-10T00:00:00",
|
||||
"location": "SETI Institute, California",
|
||||
"contact_type": "telepathic",
|
||||
"signal_strength": 6.4,
|
||||
"duration_minutes": 134,
|
||||
"witness_count": 5,
|
||||
"message_received": "Warning about solar flare activity",
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_006",
|
||||
"timestamp": "2024-02-02T00:00:00",
|
||||
"location": "Area 51, Nevada",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 2.7,
|
||||
"duration_minutes": 20,
|
||||
"witness_count": 14,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_007",
|
||||
"timestamp": "2024-03-25T00:00:00",
|
||||
"location": "Atacama Desert, Chile",
|
||||
"contact_type": "physical",
|
||||
"signal_strength": 9.0,
|
||||
"duration_minutes": 138,
|
||||
"witness_count": 10,
|
||||
"message_received": "Request for peaceful contact",
|
||||
"is_verified": true
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_008",
|
||||
"timestamp": "2024-11-30T00:00:00",
|
||||
"location": "Area 51, Nevada",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 8.6,
|
||||
"duration_minutes": 122,
|
||||
"witness_count": 13,
|
||||
"message_received": "Unknown language pattern identified",
|
||||
"is_verified": true
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_009",
|
||||
"timestamp": "2024-09-27T00:00:00",
|
||||
"location": "Mauna Kea Observatory, Hawaii",
|
||||
"contact_type": "visual",
|
||||
"signal_strength": 2.1,
|
||||
"duration_minutes": 25,
|
||||
"witness_count": 13,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_010",
|
||||
"timestamp": "2024-06-12T00:00:00",
|
||||
"location": "Area 51, Nevada",
|
||||
"contact_type": "physical",
|
||||
"signal_strength": 4.3,
|
||||
"duration_minutes": 52,
|
||||
"witness_count": 11,
|
||||
"message_received": null,
|
||||
"is_verified": true
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_011",
|
||||
"timestamp": "2024-11-05T00:00:00",
|
||||
"location": "Roswell, New Mexico",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 3.7,
|
||||
"duration_minutes": 235,
|
||||
"witness_count": 13,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_012",
|
||||
"timestamp": "2024-07-04T00:00:00",
|
||||
"location": "International Space Station",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 5.3,
|
||||
"duration_minutes": 111,
|
||||
"witness_count": 10,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_013",
|
||||
"timestamp": "2024-02-12T00:00:00",
|
||||
"location": "Antarctic Research Station",
|
||||
"contact_type": "visual",
|
||||
"signal_strength": 6.8,
|
||||
"duration_minutes": 228,
|
||||
"witness_count": 11,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_014",
|
||||
"timestamp": "2024-10-20T00:00:00",
|
||||
"location": "Atacama Desert, Chile",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 7.2,
|
||||
"duration_minutes": 113,
|
||||
"witness_count": 8,
|
||||
"message_received": "Mathematical sequence detected: prime numbers",
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_015",
|
||||
"timestamp": "2024-01-02T00:00:00",
|
||||
"location": "Roswell, New Mexico",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 2.1,
|
||||
"duration_minutes": 9,
|
||||
"witness_count": 13,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
}
|
||||
]
|
||||
171
09/generated_data/alien_contacts.py
Normal file
171
09/generated_data/alien_contacts.py
Normal file
@@ -0,0 +1,171 @@
|
||||
"""
|
||||
Generated test data for alien_contacts
|
||||
"""
|
||||
|
||||
ALIEN_CONTACTS = [
|
||||
{
|
||||
'contact_id': 'AC_2024_001',
|
||||
'timestamp': '2024-01-20T00:00:00',
|
||||
'location': 'Atacama Desert, Chile',
|
||||
'contact_type': 'visual',
|
||||
'signal_strength': 9.6,
|
||||
'duration_minutes': 99,
|
||||
'witness_count': 11,
|
||||
'message_received': 'Greetings from Zeta Reticuli',
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_002',
|
||||
'timestamp': '2024-08-20T00:00:00',
|
||||
'location': 'Mauna Kea Observatory, Hawaii',
|
||||
'contact_type': 'radio',
|
||||
'signal_strength': 5.6,
|
||||
'duration_minutes': 152,
|
||||
'witness_count': 6,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_003',
|
||||
'timestamp': '2024-11-15T00:00:00',
|
||||
'location': 'Very Large Array, New Mexico',
|
||||
'contact_type': 'telepathic',
|
||||
'signal_strength': 4.5,
|
||||
'duration_minutes': 19,
|
||||
'witness_count': 14,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_004',
|
||||
'timestamp': '2024-02-24T00:00:00',
|
||||
'location': 'Roswell, New Mexico',
|
||||
'contact_type': 'telepathic',
|
||||
'signal_strength': 2.4,
|
||||
'duration_minutes': 46,
|
||||
'witness_count': 9,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_005',
|
||||
'timestamp': '2024-09-10T00:00:00',
|
||||
'location': 'SETI Institute, California',
|
||||
'contact_type': 'telepathic',
|
||||
'signal_strength': 6.4,
|
||||
'duration_minutes': 134,
|
||||
'witness_count': 5,
|
||||
'message_received': 'Warning about solar flare activity',
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_006',
|
||||
'timestamp': '2024-02-02T00:00:00',
|
||||
'location': 'Area 51, Nevada',
|
||||
'contact_type': 'radio',
|
||||
'signal_strength': 2.7,
|
||||
'duration_minutes': 20,
|
||||
'witness_count': 14,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_007',
|
||||
'timestamp': '2024-03-25T00:00:00',
|
||||
'location': 'Atacama Desert, Chile',
|
||||
'contact_type': 'physical',
|
||||
'signal_strength': 9.0,
|
||||
'duration_minutes': 138,
|
||||
'witness_count': 10,
|
||||
'message_received': 'Request for peaceful contact',
|
||||
'is_verified': True
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_008',
|
||||
'timestamp': '2024-11-30T00:00:00',
|
||||
'location': 'Area 51, Nevada',
|
||||
'contact_type': 'radio',
|
||||
'signal_strength': 8.6,
|
||||
'duration_minutes': 122,
|
||||
'witness_count': 13,
|
||||
'message_received': 'Unknown language pattern identified',
|
||||
'is_verified': True
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_009',
|
||||
'timestamp': '2024-09-27T00:00:00',
|
||||
'location': 'Mauna Kea Observatory, Hawaii',
|
||||
'contact_type': 'visual',
|
||||
'signal_strength': 2.1,
|
||||
'duration_minutes': 25,
|
||||
'witness_count': 13,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_010',
|
||||
'timestamp': '2024-06-12T00:00:00',
|
||||
'location': 'Area 51, Nevada',
|
||||
'contact_type': 'physical',
|
||||
'signal_strength': 4.3,
|
||||
'duration_minutes': 52,
|
||||
'witness_count': 11,
|
||||
'message_received': None,
|
||||
'is_verified': True
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_011',
|
||||
'timestamp': '2024-11-05T00:00:00',
|
||||
'location': 'Roswell, New Mexico',
|
||||
'contact_type': 'radio',
|
||||
'signal_strength': 3.7,
|
||||
'duration_minutes': 235,
|
||||
'witness_count': 13,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_012',
|
||||
'timestamp': '2024-07-04T00:00:00',
|
||||
'location': 'International Space Station',
|
||||
'contact_type': 'radio',
|
||||
'signal_strength': 5.3,
|
||||
'duration_minutes': 111,
|
||||
'witness_count': 10,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_013',
|
||||
'timestamp': '2024-02-12T00:00:00',
|
||||
'location': 'Antarctic Research Station',
|
||||
'contact_type': 'visual',
|
||||
'signal_strength': 6.8,
|
||||
'duration_minutes': 228,
|
||||
'witness_count': 11,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_014',
|
||||
'timestamp': '2024-10-20T00:00:00',
|
||||
'location': 'Atacama Desert, Chile',
|
||||
'contact_type': 'radio',
|
||||
'signal_strength': 7.2,
|
||||
'duration_minutes': 113,
|
||||
'witness_count': 8,
|
||||
'message_received': 'Mathematical sequence detected: prime numbers',
|
||||
'is_verified': False
|
||||
},
|
||||
{
|
||||
'contact_id': 'AC_2024_015',
|
||||
'timestamp': '2024-01-02T00:00:00',
|
||||
'location': 'Roswell, New Mexico',
|
||||
'contact_type': 'radio',
|
||||
'signal_strength': 2.1,
|
||||
'duration_minutes': 9,
|
||||
'witness_count': 13,
|
||||
'message_received': None,
|
||||
'is_verified': False
|
||||
}
|
||||
]
|
||||
24
09/generated_data/invalid_contacts.json
Normal file
24
09/generated_data/invalid_contacts.json
Normal file
@@ -0,0 +1,24 @@
|
||||
[
|
||||
{
|
||||
"contact_id": "WRONG_FORMAT",
|
||||
"timestamp": "2024-01-15T14:30:00",
|
||||
"location": "Area 51",
|
||||
"contact_type": "radio",
|
||||
"signal_strength": 8.5,
|
||||
"duration_minutes": 45,
|
||||
"witness_count": 5,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
},
|
||||
{
|
||||
"contact_id": "AC_2024_002",
|
||||
"timestamp": "2024-01-16T09:15:00",
|
||||
"location": "Roswell",
|
||||
"contact_type": "telepathic",
|
||||
"signal_strength": 6.2,
|
||||
"duration_minutes": 30,
|
||||
"witness_count": 1,
|
||||
"message_received": null,
|
||||
"is_verified": false
|
||||
}
|
||||
]
|
||||
20
09/generated_data/invalid_stations.json
Normal file
20
09/generated_data/invalid_stations.json
Normal file
@@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"station_id": "TOOLONG123456",
|
||||
"name": "Test Station",
|
||||
"crew_size": 25,
|
||||
"power_level": 85.0,
|
||||
"oxygen_level": 92.0,
|
||||
"last_maintenance": "2024-01-15T10:30:00",
|
||||
"is_operational": true
|
||||
},
|
||||
{
|
||||
"station_id": "TS",
|
||||
"name": "",
|
||||
"crew_size": 0,
|
||||
"power_level": -10.0,
|
||||
"oxygen_level": 150.0,
|
||||
"last_maintenance": "2024-01-15T10:30:00",
|
||||
"is_operational": true
|
||||
}
|
||||
]
|
||||
309
09/generated_data/space_missions.json
Normal file
309
09/generated_data/space_missions.json
Normal file
@@ -0,0 +1,309 @@
|
||||
[
|
||||
{
|
||||
"mission_id": "M2024_TITAN",
|
||||
"mission_name": "Solar Observatory Research Mission",
|
||||
"destination": "Solar Observatory",
|
||||
"launch_date": "2024-03-30T00:00:00",
|
||||
"duration_days": 451,
|
||||
"crew": [
|
||||
{
|
||||
"member_id": "CM001",
|
||||
"name": "Sarah Williams",
|
||||
"rank": "captain",
|
||||
"age": 43,
|
||||
"specialization": "Mission Command",
|
||||
"years_experience": 19,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM002",
|
||||
"name": "James Hernandez",
|
||||
"rank": "captain",
|
||||
"age": 43,
|
||||
"specialization": "Pilot",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM003",
|
||||
"name": "Anna Jones",
|
||||
"rank": "cadet",
|
||||
"age": 35,
|
||||
"specialization": "Communications",
|
||||
"years_experience": 15,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM004",
|
||||
"name": "David Smith",
|
||||
"rank": "commander",
|
||||
"age": 27,
|
||||
"specialization": "Security",
|
||||
"years_experience": 15,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM005",
|
||||
"name": "Maria Jones",
|
||||
"rank": "cadet",
|
||||
"age": 55,
|
||||
"specialization": "Research",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
}
|
||||
],
|
||||
"mission_status": "planned",
|
||||
"budget_millions": 2208.1
|
||||
},
|
||||
{
|
||||
"mission_id": "M2024_MARS",
|
||||
"mission_name": "Jupiter Orbit Colony Mission",
|
||||
"destination": "Jupiter Orbit",
|
||||
"launch_date": "2024-10-01T00:00:00",
|
||||
"duration_days": 1065,
|
||||
"crew": [
|
||||
{
|
||||
"member_id": "CM011",
|
||||
"name": "Emma Brown",
|
||||
"rank": "commander",
|
||||
"age": 49,
|
||||
"specialization": "Mission Command",
|
||||
"years_experience": 27,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM012",
|
||||
"name": "John Hernandez",
|
||||
"rank": "lieutenant",
|
||||
"age": 36,
|
||||
"specialization": "Science Officer",
|
||||
"years_experience": 22,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM013",
|
||||
"name": "Sofia Rodriguez",
|
||||
"rank": "commander",
|
||||
"age": 29,
|
||||
"specialization": "Life Support",
|
||||
"years_experience": 20,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM014",
|
||||
"name": "Sofia Lopez",
|
||||
"rank": "lieutenant",
|
||||
"age": 44,
|
||||
"specialization": "Systems Analysis",
|
||||
"years_experience": 25,
|
||||
"is_active": true
|
||||
}
|
||||
],
|
||||
"mission_status": "planned",
|
||||
"budget_millions": 4626.0
|
||||
},
|
||||
{
|
||||
"mission_id": "M2024_EUROPA",
|
||||
"mission_name": "Europa Colony Mission",
|
||||
"destination": "Europa",
|
||||
"launch_date": "2024-02-07T00:00:00",
|
||||
"duration_days": 666,
|
||||
"crew": [
|
||||
{
|
||||
"member_id": "CM021",
|
||||
"name": "Lisa Garcia",
|
||||
"rank": "captain",
|
||||
"age": 36,
|
||||
"specialization": "Medical Officer",
|
||||
"years_experience": 12,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM022",
|
||||
"name": "John Garcia",
|
||||
"rank": "cadet",
|
||||
"age": 46,
|
||||
"specialization": "Security",
|
||||
"years_experience": 25,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM023",
|
||||
"name": "Michael Johnson",
|
||||
"rank": "officer",
|
||||
"age": 54,
|
||||
"specialization": "Research",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM024",
|
||||
"name": "Sarah Rodriguez",
|
||||
"rank": "lieutenant",
|
||||
"age": 54,
|
||||
"specialization": "Research",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM025",
|
||||
"name": "Maria Smith",
|
||||
"rank": "cadet",
|
||||
"age": 38,
|
||||
"specialization": "Communications",
|
||||
"years_experience": 15,
|
||||
"is_active": true
|
||||
}
|
||||
],
|
||||
"mission_status": "planned",
|
||||
"budget_millions": 4976.0
|
||||
},
|
||||
{
|
||||
"mission_id": "M2024_LUNA",
|
||||
"mission_name": "Mars Colony Mission",
|
||||
"destination": "Mars",
|
||||
"launch_date": "2024-06-13T00:00:00",
|
||||
"duration_days": 222,
|
||||
"crew": [
|
||||
{
|
||||
"member_id": "CM031",
|
||||
"name": "Anna Davis",
|
||||
"rank": "commander",
|
||||
"age": 27,
|
||||
"specialization": "Communications",
|
||||
"years_experience": 14,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM032",
|
||||
"name": "Elena Garcia",
|
||||
"rank": "lieutenant",
|
||||
"age": 42,
|
||||
"specialization": "Science Officer",
|
||||
"years_experience": 23,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM033",
|
||||
"name": "Anna Brown",
|
||||
"rank": "officer",
|
||||
"age": 55,
|
||||
"specialization": "Engineering",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM034",
|
||||
"name": "Emma Smith",
|
||||
"rank": "captain",
|
||||
"age": 37,
|
||||
"specialization": "Research",
|
||||
"years_experience": 23,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM035",
|
||||
"name": "Sofia Smith",
|
||||
"rank": "lieutenant",
|
||||
"age": 53,
|
||||
"specialization": "Security",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM036",
|
||||
"name": "Maria Hernandez",
|
||||
"rank": "commander",
|
||||
"age": 41,
|
||||
"specialization": "Medical Officer",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM037",
|
||||
"name": "John Hernandez",
|
||||
"rank": "officer",
|
||||
"age": 42,
|
||||
"specialization": "Science Officer",
|
||||
"years_experience": 20,
|
||||
"is_active": true
|
||||
}
|
||||
],
|
||||
"mission_status": "planned",
|
||||
"budget_millions": 4984.6
|
||||
},
|
||||
{
|
||||
"mission_id": "M2024_EUROPA",
|
||||
"mission_name": "Saturn Rings Research Mission",
|
||||
"destination": "Saturn Rings",
|
||||
"launch_date": "2024-09-18T00:00:00",
|
||||
"duration_days": 602,
|
||||
"crew": [
|
||||
{
|
||||
"member_id": "CM041",
|
||||
"name": "William Davis",
|
||||
"rank": "captain",
|
||||
"age": 35,
|
||||
"specialization": "Medical Officer",
|
||||
"years_experience": 14,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM042",
|
||||
"name": "Sarah Smith",
|
||||
"rank": "captain",
|
||||
"age": 55,
|
||||
"specialization": "Research",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM043",
|
||||
"name": "Elena Garcia",
|
||||
"rank": "commander",
|
||||
"age": 55,
|
||||
"specialization": "Research",
|
||||
"years_experience": 30,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM044",
|
||||
"name": "Sofia Williams",
|
||||
"rank": "officer",
|
||||
"age": 30,
|
||||
"specialization": "Systems Analysis",
|
||||
"years_experience": 9,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM045",
|
||||
"name": "Sarah Jones",
|
||||
"rank": "lieutenant",
|
||||
"age": 25,
|
||||
"specialization": "Maintenance",
|
||||
"years_experience": 11,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM046",
|
||||
"name": "Lisa Rodriguez",
|
||||
"rank": "officer",
|
||||
"age": 30,
|
||||
"specialization": "Life Support",
|
||||
"years_experience": 12,
|
||||
"is_active": true
|
||||
},
|
||||
{
|
||||
"member_id": "CM047",
|
||||
"name": "Sarah Smith",
|
||||
"rank": "cadet",
|
||||
"age": 28,
|
||||
"specialization": "Pilot",
|
||||
"years_experience": 8,
|
||||
"is_active": true
|
||||
}
|
||||
],
|
||||
"mission_status": "planned",
|
||||
"budget_millions": 1092.6
|
||||
}
|
||||
]
|
||||
313
09/generated_data/space_missions.py
Normal file
313
09/generated_data/space_missions.py
Normal file
@@ -0,0 +1,313 @@
|
||||
"""
|
||||
Generated test data for space_missions
|
||||
"""
|
||||
|
||||
SPACE_MISSIONS = [
|
||||
{
|
||||
'mission_id': 'M2024_TITAN',
|
||||
'mission_name': 'Solar Observatory Research Mission',
|
||||
'destination': 'Solar Observatory',
|
||||
'launch_date': '2024-03-30T00:00:00',
|
||||
'duration_days': 451,
|
||||
'crew': [
|
||||
{
|
||||
'member_id': 'CM001',
|
||||
'name': 'Sarah Williams',
|
||||
'rank': 'captain',
|
||||
'age': 43,
|
||||
'specialization': 'Mission Command',
|
||||
'years_experience': 19,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM002',
|
||||
'name': 'James Hernandez',
|
||||
'rank': 'captain',
|
||||
'age': 43,
|
||||
'specialization': 'Pilot',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM003',
|
||||
'name': 'Anna Jones',
|
||||
'rank': 'cadet',
|
||||
'age': 35,
|
||||
'specialization': 'Communications',
|
||||
'years_experience': 15,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM004',
|
||||
'name': 'David Smith',
|
||||
'rank': 'commander',
|
||||
'age': 27,
|
||||
'specialization': 'Security',
|
||||
'years_experience': 15,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM005',
|
||||
'name': 'Maria Jones',
|
||||
'rank': 'cadet',
|
||||
'age': 55,
|
||||
'specialization': 'Research',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
}
|
||||
],
|
||||
'mission_status': 'planned',
|
||||
'budget_millions': 2208.1
|
||||
},
|
||||
{
|
||||
'mission_id': 'M2024_MARS',
|
||||
'mission_name': 'Jupiter Orbit Colony Mission',
|
||||
'destination': 'Jupiter Orbit',
|
||||
'launch_date': '2024-10-01T00:00:00',
|
||||
'duration_days': 1065,
|
||||
'crew': [
|
||||
{
|
||||
'member_id': 'CM011',
|
||||
'name': 'Emma Brown',
|
||||
'rank': 'commander',
|
||||
'age': 49,
|
||||
'specialization': 'Mission Command',
|
||||
'years_experience': 27,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM012',
|
||||
'name': 'John Hernandez',
|
||||
'rank': 'lieutenant',
|
||||
'age': 36,
|
||||
'specialization': 'Science Officer',
|
||||
'years_experience': 22,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM013',
|
||||
'name': 'Sofia Rodriguez',
|
||||
'rank': 'commander',
|
||||
'age': 29,
|
||||
'specialization': 'Life Support',
|
||||
'years_experience': 20,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM014',
|
||||
'name': 'Sofia Lopez',
|
||||
'rank': 'lieutenant',
|
||||
'age': 44,
|
||||
'specialization': 'Systems Analysis',
|
||||
'years_experience': 25,
|
||||
'is_active': True
|
||||
}
|
||||
],
|
||||
'mission_status': 'planned',
|
||||
'budget_millions': 4626.0
|
||||
},
|
||||
{
|
||||
'mission_id': 'M2024_EUROPA',
|
||||
'mission_name': 'Europa Colony Mission',
|
||||
'destination': 'Europa',
|
||||
'launch_date': '2024-02-07T00:00:00',
|
||||
'duration_days': 666,
|
||||
'crew': [
|
||||
{
|
||||
'member_id': 'CM021',
|
||||
'name': 'Lisa Garcia',
|
||||
'rank': 'captain',
|
||||
'age': 36,
|
||||
'specialization': 'Medical Officer',
|
||||
'years_experience': 12,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM022',
|
||||
'name': 'John Garcia',
|
||||
'rank': 'cadet',
|
||||
'age': 46,
|
||||
'specialization': 'Security',
|
||||
'years_experience': 25,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM023',
|
||||
'name': 'Michael Johnson',
|
||||
'rank': 'officer',
|
||||
'age': 54,
|
||||
'specialization': 'Research',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM024',
|
||||
'name': 'Sarah Rodriguez',
|
||||
'rank': 'lieutenant',
|
||||
'age': 54,
|
||||
'specialization': 'Research',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM025',
|
||||
'name': 'Maria Smith',
|
||||
'rank': 'cadet',
|
||||
'age': 38,
|
||||
'specialization': 'Communications',
|
||||
'years_experience': 15,
|
||||
'is_active': True
|
||||
}
|
||||
],
|
||||
'mission_status': 'planned',
|
||||
'budget_millions': 4976.0
|
||||
},
|
||||
{
|
||||
'mission_id': 'M2024_LUNA',
|
||||
'mission_name': 'Mars Colony Mission',
|
||||
'destination': 'Mars',
|
||||
'launch_date': '2024-06-13T00:00:00',
|
||||
'duration_days': 222,
|
||||
'crew': [
|
||||
{
|
||||
'member_id': 'CM031',
|
||||
'name': 'Anna Davis',
|
||||
'rank': 'commander',
|
||||
'age': 27,
|
||||
'specialization': 'Communications',
|
||||
'years_experience': 14,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM032',
|
||||
'name': 'Elena Garcia',
|
||||
'rank': 'lieutenant',
|
||||
'age': 42,
|
||||
'specialization': 'Science Officer',
|
||||
'years_experience': 23,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM033',
|
||||
'name': 'Anna Brown',
|
||||
'rank': 'officer',
|
||||
'age': 55,
|
||||
'specialization': 'Engineering',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM034',
|
||||
'name': 'Emma Smith',
|
||||
'rank': 'captain',
|
||||
'age': 37,
|
||||
'specialization': 'Research',
|
||||
'years_experience': 23,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM035',
|
||||
'name': 'Sofia Smith',
|
||||
'rank': 'lieutenant',
|
||||
'age': 53,
|
||||
'specialization': 'Security',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM036',
|
||||
'name': 'Maria Hernandez',
|
||||
'rank': 'commander',
|
||||
'age': 41,
|
||||
'specialization': 'Medical Officer',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM037',
|
||||
'name': 'John Hernandez',
|
||||
'rank': 'officer',
|
||||
'age': 42,
|
||||
'specialization': 'Science Officer',
|
||||
'years_experience': 20,
|
||||
'is_active': True
|
||||
}
|
||||
],
|
||||
'mission_status': 'planned',
|
||||
'budget_millions': 4984.6
|
||||
},
|
||||
{
|
||||
'mission_id': 'M2024_EUROPA',
|
||||
'mission_name': 'Saturn Rings Research Mission',
|
||||
'destination': 'Saturn Rings',
|
||||
'launch_date': '2024-09-18T00:00:00',
|
||||
'duration_days': 602,
|
||||
'crew': [
|
||||
{
|
||||
'member_id': 'CM041',
|
||||
'name': 'William Davis',
|
||||
'rank': 'captain',
|
||||
'age': 35,
|
||||
'specialization': 'Medical Officer',
|
||||
'years_experience': 14,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM042',
|
||||
'name': 'Sarah Smith',
|
||||
'rank': 'captain',
|
||||
'age': 55,
|
||||
'specialization': 'Research',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM043',
|
||||
'name': 'Elena Garcia',
|
||||
'rank': 'commander',
|
||||
'age': 55,
|
||||
'specialization': 'Research',
|
||||
'years_experience': 30,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM044',
|
||||
'name': 'Sofia Williams',
|
||||
'rank': 'officer',
|
||||
'age': 30,
|
||||
'specialization': 'Systems Analysis',
|
||||
'years_experience': 9,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM045',
|
||||
'name': 'Sarah Jones',
|
||||
'rank': 'lieutenant',
|
||||
'age': 25,
|
||||
'specialization': 'Maintenance',
|
||||
'years_experience': 11,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM046',
|
||||
'name': 'Lisa Rodriguez',
|
||||
'rank': 'officer',
|
||||
'age': 30,
|
||||
'specialization': 'Life Support',
|
||||
'years_experience': 12,
|
||||
'is_active': True
|
||||
},
|
||||
{
|
||||
'member_id': 'CM047',
|
||||
'name': 'Sarah Smith',
|
||||
'rank': 'cadet',
|
||||
'age': 28,
|
||||
'specialization': 'Pilot',
|
||||
'years_experience': 8,
|
||||
'is_active': True
|
||||
}
|
||||
],
|
||||
'mission_status': 'planned',
|
||||
'budget_millions': 1092.6
|
||||
}
|
||||
]
|
||||
11
09/generated_data/space_stations.csv
Normal file
11
09/generated_data/space_stations.csv
Normal file
@@ -0,0 +1,11 @@
|
||||
crew_size,is_operational,last_maintenance,name,notes,oxygen_level,power_level,station_id
|
||||
6,True,2023-07-11T00:00:00,Titan Mining Outpost,,95.5,76.4,LGW125
|
||||
3,False,2023-08-24T00:00:00,Deep Space Observatory,System diagnostics required,88.1,70.8,QCH189
|
||||
11,True,2023-10-21T00:00:00,Europa Research Station,,91.4,82.0,ISS674
|
||||
9,False,2023-10-06T00:00:00,Mars Orbital Platform,System diagnostics required,87.2,79.7,ISS877
|
||||
4,False,2023-10-25T00:00:00,Deep Space Observatory,System diagnostics required,89.9,80.2,LGW194
|
||||
11,False,2023-12-11T00:00:00,Solar Wind Monitor,System diagnostics required,98.1,73.6,ISS847
|
||||
12,False,2023-07-15T00:00:00,Asteroid Belt Relay,System diagnostics required,86.0,75.5,QCH400
|
||||
4,True,2023-09-25T00:00:00,Titan Mining Outpost,All systems nominal,97.3,94.4,ERS891
|
||||
8,False,2023-07-10T00:00:00,Asteroid Belt Relay,System diagnostics required,88.8,76.0,ABR266
|
||||
11,False,2023-09-25T00:00:00,Mars Orbital Platform,System diagnostics required,87.3,90.8,LGW723
|
||||
|
102
09/generated_data/space_stations.json
Normal file
102
09/generated_data/space_stations.json
Normal file
@@ -0,0 +1,102 @@
|
||||
[
|
||||
{
|
||||
"station_id": "LGW125",
|
||||
"name": "Titan Mining Outpost",
|
||||
"crew_size": 6,
|
||||
"power_level": 76.4,
|
||||
"oxygen_level": 95.5,
|
||||
"last_maintenance": "2023-07-11T00:00:00",
|
||||
"is_operational": true,
|
||||
"notes": null
|
||||
},
|
||||
{
|
||||
"station_id": "QCH189",
|
||||
"name": "Deep Space Observatory",
|
||||
"crew_size": 3,
|
||||
"power_level": 70.8,
|
||||
"oxygen_level": 88.1,
|
||||
"last_maintenance": "2023-08-24T00:00:00",
|
||||
"is_operational": false,
|
||||
"notes": "System diagnostics required"
|
||||
},
|
||||
{
|
||||
"station_id": "ISS674",
|
||||
"name": "Europa Research Station",
|
||||
"crew_size": 11,
|
||||
"power_level": 82.0,
|
||||
"oxygen_level": 91.4,
|
||||
"last_maintenance": "2023-10-21T00:00:00",
|
||||
"is_operational": true,
|
||||
"notes": null
|
||||
},
|
||||
{
|
||||
"station_id": "ISS877",
|
||||
"name": "Mars Orbital Platform",
|
||||
"crew_size": 9,
|
||||
"power_level": 79.7,
|
||||
"oxygen_level": 87.2,
|
||||
"last_maintenance": "2023-10-06T00:00:00",
|
||||
"is_operational": false,
|
||||
"notes": "System diagnostics required"
|
||||
},
|
||||
{
|
||||
"station_id": "LGW194",
|
||||
"name": "Deep Space Observatory",
|
||||
"crew_size": 4,
|
||||
"power_level": 80.2,
|
||||
"oxygen_level": 89.9,
|
||||
"last_maintenance": "2023-10-25T00:00:00",
|
||||
"is_operational": false,
|
||||
"notes": "System diagnostics required"
|
||||
},
|
||||
{
|
||||
"station_id": "ISS847",
|
||||
"name": "Solar Wind Monitor",
|
||||
"crew_size": 11,
|
||||
"power_level": 73.6,
|
||||
"oxygen_level": 98.1,
|
||||
"last_maintenance": "2023-12-11T00:00:00",
|
||||
"is_operational": false,
|
||||
"notes": "System diagnostics required"
|
||||
},
|
||||
{
|
||||
"station_id": "QCH400",
|
||||
"name": "Asteroid Belt Relay",
|
||||
"crew_size": 12,
|
||||
"power_level": 75.5,
|
||||
"oxygen_level": 86.0,
|
||||
"last_maintenance": "2023-07-15T00:00:00",
|
||||
"is_operational": false,
|
||||
"notes": "System diagnostics required"
|
||||
},
|
||||
{
|
||||
"station_id": "ERS891",
|
||||
"name": "Titan Mining Outpost",
|
||||
"crew_size": 4,
|
||||
"power_level": 94.4,
|
||||
"oxygen_level": 97.3,
|
||||
"last_maintenance": "2023-09-25T00:00:00",
|
||||
"is_operational": true,
|
||||
"notes": "All systems nominal"
|
||||
},
|
||||
{
|
||||
"station_id": "ABR266",
|
||||
"name": "Asteroid Belt Relay",
|
||||
"crew_size": 8,
|
||||
"power_level": 76.0,
|
||||
"oxygen_level": 88.8,
|
||||
"last_maintenance": "2023-07-10T00:00:00",
|
||||
"is_operational": false,
|
||||
"notes": "System diagnostics required"
|
||||
},
|
||||
{
|
||||
"station_id": "LGW723",
|
||||
"name": "Mars Orbital Platform",
|
||||
"crew_size": 11,
|
||||
"power_level": 90.8,
|
||||
"oxygen_level": 87.3,
|
||||
"last_maintenance": "2023-09-25T00:00:00",
|
||||
"is_operational": false,
|
||||
"notes": "System diagnostics required"
|
||||
}
|
||||
]
|
||||
106
09/generated_data/space_stations.py
Normal file
106
09/generated_data/space_stations.py
Normal file
@@ -0,0 +1,106 @@
|
||||
"""
|
||||
Generated test data for space_stations
|
||||
"""
|
||||
|
||||
SPACE_STATIONS = [
|
||||
{
|
||||
'station_id': 'LGW125',
|
||||
'name': 'Titan Mining Outpost',
|
||||
'crew_size': 6,
|
||||
'power_level': 76.4,
|
||||
'oxygen_level': 95.5,
|
||||
'last_maintenance': '2023-07-11T00:00:00',
|
||||
'is_operational': True,
|
||||
'notes': None
|
||||
},
|
||||
{
|
||||
'station_id': 'QCH189',
|
||||
'name': 'Deep Space Observatory',
|
||||
'crew_size': 3,
|
||||
'power_level': 70.8,
|
||||
'oxygen_level': 88.1,
|
||||
'last_maintenance': '2023-08-24T00:00:00',
|
||||
'is_operational': False,
|
||||
'notes': 'System diagnostics required'
|
||||
},
|
||||
{
|
||||
'station_id': 'ISS674',
|
||||
'name': 'Europa Research Station',
|
||||
'crew_size': 11,
|
||||
'power_level': 82.0,
|
||||
'oxygen_level': 91.4,
|
||||
'last_maintenance': '2023-10-21T00:00:00',
|
||||
'is_operational': True,
|
||||
'notes': None
|
||||
},
|
||||
{
|
||||
'station_id': 'ISS877',
|
||||
'name': 'Mars Orbital Platform',
|
||||
'crew_size': 9,
|
||||
'power_level': 79.7,
|
||||
'oxygen_level': 87.2,
|
||||
'last_maintenance': '2023-10-06T00:00:00',
|
||||
'is_operational': False,
|
||||
'notes': 'System diagnostics required'
|
||||
},
|
||||
{
|
||||
'station_id': 'LGW194',
|
||||
'name': 'Deep Space Observatory',
|
||||
'crew_size': 4,
|
||||
'power_level': 80.2,
|
||||
'oxygen_level': 89.9,
|
||||
'last_maintenance': '2023-10-25T00:00:00',
|
||||
'is_operational': False,
|
||||
'notes': 'System diagnostics required'
|
||||
},
|
||||
{
|
||||
'station_id': 'ISS847',
|
||||
'name': 'Solar Wind Monitor',
|
||||
'crew_size': 11,
|
||||
'power_level': 73.6,
|
||||
'oxygen_level': 98.1,
|
||||
'last_maintenance': '2023-12-11T00:00:00',
|
||||
'is_operational': False,
|
||||
'notes': 'System diagnostics required'
|
||||
},
|
||||
{
|
||||
'station_id': 'QCH400',
|
||||
'name': 'Asteroid Belt Relay',
|
||||
'crew_size': 12,
|
||||
'power_level': 75.5,
|
||||
'oxygen_level': 86.0,
|
||||
'last_maintenance': '2023-07-15T00:00:00',
|
||||
'is_operational': False,
|
||||
'notes': 'System diagnostics required'
|
||||
},
|
||||
{
|
||||
'station_id': 'ERS891',
|
||||
'name': 'Titan Mining Outpost',
|
||||
'crew_size': 4,
|
||||
'power_level': 94.4,
|
||||
'oxygen_level': 97.3,
|
||||
'last_maintenance': '2023-09-25T00:00:00',
|
||||
'is_operational': True,
|
||||
'notes': 'All systems nominal'
|
||||
},
|
||||
{
|
||||
'station_id': 'ABR266',
|
||||
'name': 'Asteroid Belt Relay',
|
||||
'crew_size': 8,
|
||||
'power_level': 76.0,
|
||||
'oxygen_level': 88.8,
|
||||
'last_maintenance': '2023-07-10T00:00:00',
|
||||
'is_operational': False,
|
||||
'notes': 'System diagnostics required'
|
||||
},
|
||||
{
|
||||
'station_id': 'LGW723',
|
||||
'name': 'Mars Orbital Platform',
|
||||
'crew_size': 11,
|
||||
'power_level': 90.8,
|
||||
'oxygen_level': 87.3,
|
||||
'last_maintenance': '2023-09-25T00:00:00',
|
||||
'is_operational': False,
|
||||
'notes': 'System diagnostics required'
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user