from __future__ import annotations

from app.services.scenes.gate_rules import GateRule, SceneRoute
from app.services.scenes.scene_descriptor import SceneDescriptor
from app.services.scenes.scene_registry import register_scene


def register() -> None:
    register_scene(
        SceneDescriptor(
            scene_id="reimbursement",
            label="费用报销",
            assigned_agent="reimbursement_assistant",
            signal_keywords=(
                "报销", "报账", "票据", "发票", "凭证", "行程单", "付款截图", "小票", "收据",
            ),
            ontology_fields=(),  # 沿用全局 BUSINESS_CANONICAL_FIELDS
            gate=GateRule.MODEL_ONLY,
            route=SceneRoute.MODEL_INTENT,
            handler=None,
            action_steps_builder=None,
            can_resume=False,
            flow_id="travel_reimbursement",
            side_effect_actions=(
                "create_reimbursement_draft",
                "link_existing_application",
                "associate_attachments",
            ),
            noop_actions=(
                "fill_reimbursement_fields",
                "build_reimbursement_preview",
                "validate_required_fields",
            ),
            executor=None,
            prompt_fragment=(
                "用户描述已经发生的费用、昨天/前天费用、票据或明确报销诉求时,"
                "才识别为 reimbursement。"
            ),
            priority=100,
        )
    )
