from __future__ import annotations

from dataclasses import asdict
from typing import Iterable

from .decision import OpportunityDecision
from .validators import decision_coherence_flags


def audit_decisions(decisions: Iterable[OpportunityDecision]) -> list[dict[str, object]]:
    """Return workflow inconsistencies from already computed decisions.

    This foundation helper is intentionally data-source agnostic. A later admin
    page can feed production opportunities into it and render a coherence panel.
    """
    findings: list[dict[str, object]] = []
    for index, decision in enumerate(decisions):
        for code in decision_coherence_flags(decision):
            findings.append({"index": index, "code": code, "decision": asdict(decision.next_action)})
    return findings
