Merge main into f/updates

Resolved conflicts by keeping f/updates changes:
- Keep Angular frontend with dark theme styling
- Keep updated quickstart scripts at root level
- Remove static HTML/JS files (replaced by Angular)
- Keep sim_source_id field implementation
- Merge backend improvements from main

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
pratik
2025-10-15 11:44:01 -05:00
8 changed files with 149 additions and 11 deletions

View File

@@ -129,7 +129,7 @@ def generate_pcap_content() -> bytes:
return bytes(pcap_header)
def create_artifact_data(index: int) -> Dict[str, Any]:
def create_artifact_data(index: int, sim_source_id: str = None) -> Dict[str, Any]:
"""Generate metadata for an artifact"""
test_name = random.choice(TEST_NAMES)
test_suite = random.choice(TEST_SUITES)
@@ -164,6 +164,7 @@ def create_artifact_data(index: int) -> Dict[str, Any]:
"test_name": test_name,
"test_suite": test_suite,
"test_result": test_result,
"sim_source_id": sim_source_id,
"tags": artifact_tags,
"test_config": test_config,
"custom_metadata": custom_metadata,
@@ -265,6 +266,27 @@ async def generate_seed_data(num_artifacts: int = 50) -> List[int]:
print(f"Deployment mode: {settings.deployment_mode}")
print(f"Storage backend: {settings.storage_backend}")
# Generate SIM source IDs - each source will have 2-4 artifacts
num_sim_sources = max(num_artifacts // 3, 1)
sim_sources = [f"sim_run_{uuid.uuid4().hex[:8]}" for _ in range(num_sim_sources)]
# Pre-assign artifacts to SIM sources to ensure grouping
sim_source_assignments = []
for sim_source in sim_sources:
# Each SIM source gets 2-4 artifacts
num_artifacts_for_source = random.randint(2, 4)
sim_source_assignments.extend([sim_source] * num_artifacts_for_source)
# Pad remaining artifacts with None (ungrouped) or random sources
while len(sim_source_assignments) < num_artifacts:
if random.random() < 0.3: # 30% ungrouped
sim_source_assignments.append(None)
else:
sim_source_assignments.append(random.choice(sim_sources))
# Shuffle to randomize order
random.shuffle(sim_source_assignments)
for i in range(num_artifacts):
# Randomly choose file type
file_type_choice = random.choice(['csv', 'json', 'binary', 'pcap'])
@@ -289,8 +311,11 @@ async def generate_seed_data(num_artifacts: int = 50) -> List[int]:
# Upload to storage
storage_path = await upload_artifact_to_storage(content, filename)
# Get pre-assigned SIM source ID for this artifact
sim_source_id = sim_source_assignments[i]
# Generate metadata
artifact_data = create_artifact_data(i)
artifact_data = create_artifact_data(i, sim_source_id)
# Create database record
artifact = Artifact(
@@ -303,6 +328,7 @@ async def generate_seed_data(num_artifacts: int = 50) -> List[int]:
test_suite=artifact_data["test_suite"],
test_config=artifact_data["test_config"],
test_result=artifact_data["test_result"],
sim_source_id=artifact_data["sim_source_id"],
custom_metadata=artifact_data["custom_metadata"],
description=artifact_data["description"],
tags=artifact_data["tags"],