Module 9 ex0 done + ex1 WIP

This commit is contained in:
2026-03-09 16:35:41 +01:00
parent e460d7507e
commit 384ad04a08
14 changed files with 2006 additions and 0 deletions

237
09/data_exporter.py Normal file
View 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
View 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
View 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
View 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()

View 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
1 contact_id contact_type duration_minutes is_verified location message_received signal_strength timestamp witness_count
2 AC_2024_001 visual 99 False Atacama Desert, Chile Greetings from Zeta Reticuli 9.6 2024-01-20T00:00:00 11
3 AC_2024_002 radio 152 False Mauna Kea Observatory, Hawaii 5.6 2024-08-20T00:00:00 6
4 AC_2024_003 telepathic 19 False Very Large Array, New Mexico 4.5 2024-11-15T00:00:00 14
5 AC_2024_004 telepathic 46 False Roswell, New Mexico 2.4 2024-02-24T00:00:00 9
6 AC_2024_005 telepathic 134 False SETI Institute, California Warning about solar flare activity 6.4 2024-09-10T00:00:00 5
7 AC_2024_006 radio 20 False Area 51, Nevada 2.7 2024-02-02T00:00:00 14
8 AC_2024_007 physical 138 True Atacama Desert, Chile Request for peaceful contact 9.0 2024-03-25T00:00:00 10
9 AC_2024_008 radio 122 True Area 51, Nevada Unknown language pattern identified 8.6 2024-11-30T00:00:00 13
10 AC_2024_009 visual 25 False Mauna Kea Observatory, Hawaii 2.1 2024-09-27T00:00:00 13
11 AC_2024_010 physical 52 True Area 51, Nevada 4.3 2024-06-12T00:00:00 11
12 AC_2024_011 radio 235 False Roswell, New Mexico 3.7 2024-11-05T00:00:00 13
13 AC_2024_012 radio 111 False International Space Station 5.3 2024-07-04T00:00:00 10
14 AC_2024_013 visual 228 False Antarctic Research Station 6.8 2024-02-12T00:00:00 11
15 AC_2024_014 radio 113 False Atacama Desert, Chile Mathematical sequence detected: prime numbers 7.2 2024-10-20T00:00:00 8
16 AC_2024_015 radio 9 False Roswell, New Mexico 2.1 2024-01-02T00:00:00 13

View 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
}
]

View 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
}
]

View 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
}
]

View 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
}
]

View 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
}
]

View 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
}
]

View 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
1 crew_size is_operational last_maintenance name notes oxygen_level power_level station_id
2 6 True 2023-07-11T00:00:00 Titan Mining Outpost 95.5 76.4 LGW125
3 3 False 2023-08-24T00:00:00 Deep Space Observatory System diagnostics required 88.1 70.8 QCH189
4 11 True 2023-10-21T00:00:00 Europa Research Station 91.4 82.0 ISS674
5 9 False 2023-10-06T00:00:00 Mars Orbital Platform System diagnostics required 87.2 79.7 ISS877
6 4 False 2023-10-25T00:00:00 Deep Space Observatory System diagnostics required 89.9 80.2 LGW194
7 11 False 2023-12-11T00:00:00 Solar Wind Monitor System diagnostics required 98.1 73.6 ISS847
8 12 False 2023-07-15T00:00:00 Asteroid Belt Relay System diagnostics required 86.0 75.5 QCH400
9 4 True 2023-09-25T00:00:00 Titan Mining Outpost All systems nominal 97.3 94.4 ERS891
10 8 False 2023-07-10T00:00:00 Asteroid Belt Relay System diagnostics required 88.8 76.0 ABR266
11 11 False 2023-09-25T00:00:00 Mars Orbital Platform System diagnostics required 87.3 90.8 LGW723

View 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"
}
]

View 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'
}
]