import asyncio

from app.modules.takeoff.application.debate_engine import MultiAgentTakeoffDebateEngine


def test_multi_agent_takeoff_debate_engine():
    # Mock base parsed from Quynh
    base_parsed = {
        "drawing_type": "hydraulic_culvert",
        "items": [
            {
                "item_name": "Bê tông móng",
                "quantity": 100,
                "unit_price_vnd": 350000,
                "total_amount_vnd": 35000000,
            }
        ],
    }

    engine = MultiAgentTakeoffDebateEngine(erp_client=None)
    result = asyncio.run(engine.execute_debate(base_parsed))

    # Assert Lam's contribution (TEMP)
    assert any("TEMP" in item.get("wbs_code", "") for item in result["items"]), (
        "Missing Lam's temporary works"
    )

    # Assert Tuan's pricing contribution (350k -> 350k * 1.05 = 367500)
    bt_item = next(i for i in result["items"] if "Bê tông" in i["item_name"])
    assert bt_item["unit_price_vnd"] == 350000 * 1.05, (
        "Missing Tuan's unit price update"
    )

    # Assert Tung's audit trail
    assert "debate_audit_trail" in result
    assert len(result["debate_audit_trail"]) == 3
    assert result["confidence_level"] == "multi_agent_verified"
    assert result["confidence_score"] == 99


if __name__ == "__main__":
    test_multi_agent_takeoff_debate_engine()
