69 lines
2.2 KiB
Python
69 lines
2.2 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from .config import GeneratorConfig
|
|
from .contract_fixture import build_contract_fixture
|
|
from .models import DatasetBundle, business_digest
|
|
|
|
|
|
def build_synthetic_dataset(
|
|
config: GeneratorConfig,
|
|
*,
|
|
validate: bool = True,
|
|
) -> DatasetBundle:
|
|
"""Build the complete canonical synthetic shipyard dataset in dependency order."""
|
|
from .alternatives import generate_alternatives
|
|
from .engineering import generate_engineering
|
|
from .execution_quality import generate_execution_quality
|
|
from .master_data import generate_master
|
|
from .materials import generate_materials
|
|
from .mrp import generate_mrp
|
|
from .orders import generate_orders
|
|
from .projects import generate_projects
|
|
from .rag_skills import generate_rag_and_skills
|
|
from .scenarios import generate_scenarios
|
|
from .scheduler import generate_schedule
|
|
from .sourcing import generate_sourcing
|
|
|
|
bundle = build_contract_fixture(config)
|
|
for generator in (
|
|
generate_master,
|
|
generate_projects,
|
|
generate_engineering,
|
|
generate_materials,
|
|
generate_mrp,
|
|
generate_orders,
|
|
generate_sourcing,
|
|
generate_schedule,
|
|
generate_execution_quality,
|
|
generate_alternatives,
|
|
generate_scenarios,
|
|
generate_rag_and_skills,
|
|
):
|
|
bundle = generator(bundle, config)
|
|
bundle.metadata["businessDigest"] = business_digest(bundle)
|
|
if validate:
|
|
from .validation import validate_bundle
|
|
|
|
report = validate_bundle(bundle, config)
|
|
bundle.artifacts["validation-report"] = report
|
|
if not report.get("valid"):
|
|
raise ValueError(
|
|
"synthetic shipyard dataset validation failed: "
|
|
+ ", ".join(report.get("blockingIssues") or ["unknown error"])
|
|
)
|
|
return bundle
|
|
|
|
|
|
def generate_to_directory(
|
|
config: GeneratorConfig,
|
|
output: Path,
|
|
*,
|
|
validate: bool = True,
|
|
) -> dict:
|
|
from .exporter import export_bundle
|
|
|
|
bundle = build_synthetic_dataset(config, validate=validate)
|
|
return export_bundle(bundle, config, output, incremental=config.incremental)
|