"""Named pipeline step identifiers.

All Celery tasks and render scripts reference these constants so that log
messages, DB records, and UI labels stay consistent across the codebase.
"""
from enum import StrEnum


class StepName(StrEnum):
    # ── STEP file processing ──────────────────────────────────────────
    RESOLVE_STEP_PATH = "resolve_step_path"
    OCC_OBJECT_EXTRACT = "occ_object_extract"
    OCC_GLB_EXPORT = "occ_glb_export"
    GLB_BBOX = "glb_bbox"
    MATERIAL_MAP_RESOLVE = "material_map_resolve"
    AUTO_POPULATE_MATERIALS = "auto_populate_materials"

    # ── Thumbnail generation ─────────────────────────────────────────
    BLENDER_RENDER = "blender_render"
    THREEJS_RENDER = "threejs_render"
    THUMBNAIL_SAVE = "thumbnail_save"

    # ── Order line render ─────────────────────────────────────────────
    ORDER_LINE_SETUP = "order_line_setup"
    RESOLVE_TEMPLATE = "resolve_template"
    BLENDER_STILL = "blender_still"
    BLENDER_TURNTABLE = "blender_turntable"
    OUTPUT_SAVE = "output_save"

    # ── Asset export ──────────────────────────────────────────────────
    EXPORT_BLEND = "export_blend"

    # ── STL cache ────────────────────────────────────────────────────
    STL_CACHE_GENERATE = "stl_cache_generate"

    # ── Notifications ─────────────────────────────────────────────────
    NOTIFY = "notify"
