{
    "ok": true,
    "version": "5.17.12",
    "scenario_id": 1,
    "generated_at": "2026-07-29 12:49:10",
    "summary": {
        "readiness_percent": 75,
        "quality_score": 61,
        "issue_errors": 0,
        "issue_warnings": 14,
        "issue_info": 0,
        "total_issues": 14,
        "node_count": 94,
        "link_count": 99,
        "reservoir_nodes": 27,
        "demand_nodes": 4,
        "lowflow_nodes": 4
    },
    "readiness": {
        "ok": true,
        "version": "5.17.6",
        "scenario_id": 1,
        "generated_at": "2026-07-29 12:49:10",
        "summary": {
            "node_count": 94,
            "link_count": 99,
            "type_counts": {
                "CONFLUENCE": 11,
                "DIVERSION": 10,
                "END": 11,
                "IRRIGATION": 4,
                "LOWFLOW": 4,
                "RESERVOIR": 27,
                "START": 27
            },
            "reservoir_nodes": 27,
            "hydropower_candidate_nodes": 27,
            "demand_nodes": 4,
            "lowflow_nodes": 4,
            "overall_readiness_percent": 75,
            "weight_used": 100,
            "hydropower_assumption": ""
        },
        "categories": [
            {
                "key": "guide_curve",
                "label": "Guide curve cho hồ",
                "required": 27,
                "full": 27,
                "partial": 0,
                "missing": 0,
                "percent": 100,
                "weight": 25,
                "unit": "hồ",
                "note": "Cần đủ 12 tháng/hồ trong webbassim_reservoir_guide_curves."
            },
            {
                "key": "energy_target",
                "label": "Energy target hồ thủy điện",
                "required": 27,
                "full": 27,
                "partial": 0,
                "missing": 0,
                "percent": 100,
                "weight": 15,
                "unit": "hồ",
                "note": "Cần đủ 12 tháng/hồ thủy điện trong webbassim_hydropower_monthly_targets."
            },
            {
                "key": "demand_monthly",
                "label": "Demand tháng node tưới/cấp nước",
                "required": 4,
                "full": 4,
                "partial": 0,
                "missing": 0,
                "percent": 100,
                "weight": 20,
                "unit": "node",
                "note": "Đọc từ nhóm demand_monthly trong webbassim_node_params."
            },
            {
                "key": "lowflow_qmin",
                "label": "Qmin tháng LOWFLOW",
                "required": 4,
                "full": 4,
                "partial": 0,
                "missing": 0,
                "percent": 100,
                "weight": 15,
                "unit": "node",
                "note": "Đọc từ nhóm lowflow_monthly trong webbassim_node_params."
            },
            {
                "key": "link_routing",
                "label": "Routing cho link",
                "required": 99,
                "full": 0,
                "partial": 0,
                "missing": 99,
                "percent": 0,
                "weight": 25,
                "unit": "link",
                "note": "Link ready nếu static, lag_loss có travel_time, hoặc Muskingum có K/X hợp lệ."
            }
        ],
        "routing": {
            "none": 99,
            "static": 0,
            "lag_loss": 0,
            "muskingum": 0,
            "partial": 0,
            "other": 0,
            "ready": 0,
            "not_ready": 99
        },
        "link_geometry": {
            "exists": true,
            "rows": 0,
            "with_length": 0,
            "with_effective": 0,
            "with_factor": 0
        },
        "table_status": {
            "webbassim_node_params": true,
            "webbassim_reservoir_guide_curves": true,
            "webbassim_hydropower_monthly_targets": true,
            "webbassim_link_geometries": true,
            "webbassim_links": true,
            "webbassim_nodes": true
        },
        "details": {
            "missing_guide_curve": [],
            "missing_energy_target": [],
            "missing_demand_monthly": [],
            "missing_lowflow_qmin": [],
            "links_not_ready": [
                {
                    "link_id": 301,
                    "from_order": 1,
                    "to_order": 2,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 302,
                    "from_order": 2,
                    "to_order": 3,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 303,
                    "from_order": 3,
                    "to_order": 4,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 304,
                    "from_order": 3,
                    "to_order": 5,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 305,
                    "from_order": 5,
                    "to_order": 6,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 306,
                    "from_order": 6,
                    "to_order": 7,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 307,
                    "from_order": 7,
                    "to_order": 8,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 308,
                    "from_order": 7,
                    "to_order": 9,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 309,
                    "from_order": 9,
                    "to_order": 10,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 310,
                    "from_order": 10,
                    "to_order": 11,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 311,
                    "from_order": 11,
                    "to_order": 12,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 312,
                    "from_order": 12,
                    "to_order": 13,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 313,
                    "from_order": 13,
                    "to_order": 14,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 314,
                    "from_order": 14,
                    "to_order": 19,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 315,
                    "from_order": 15,
                    "to_order": 16,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 316,
                    "from_order": 16,
                    "to_order": 17,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 317,
                    "from_order": 17,
                    "to_order": 18,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 318,
                    "from_order": 18,
                    "to_order": 19,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 319,
                    "from_order": 19,
                    "to_order": 20,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 320,
                    "from_order": 20,
                    "to_order": 21,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 321,
                    "from_order": 21,
                    "to_order": 22,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 322,
                    "from_order": 22,
                    "to_order": 23,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 323,
                    "from_order": 23,
                    "to_order": 24,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 324,
                    "from_order": 24,
                    "to_order": 25,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 325,
                    "from_order": 25,
                    "to_order": 26,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 326,
                    "from_order": 26,
                    "to_order": 27,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 327,
                    "from_order": 27,
                    "to_order": 28,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 328,
                    "from_order": 28,
                    "to_order": 29,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 329,
                    "from_order": 29,
                    "to_order": 30,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 330,
                    "from_order": 30,
                    "to_order": 31,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 331,
                    "from_order": 31,
                    "to_order": 32,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 332,
                    "from_order": 32,
                    "to_order": 33,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 333,
                    "from_order": 33,
                    "to_order": 34,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 334,
                    "from_order": 34,
                    "to_order": 35,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 335,
                    "from_order": 35,
                    "to_order": 63,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 336,
                    "from_order": 36,
                    "to_order": 37,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 337,
                    "from_order": 37,
                    "to_order": 38,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 338,
                    "from_order": 38,
                    "to_order": 39,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 339,
                    "from_order": 38,
                    "to_order": 43,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 340,
                    "from_order": 39,
                    "to_order": 41,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 341,
                    "from_order": 40,
                    "to_order": 41,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 342,
                    "from_order": 41,
                    "to_order": 42,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 343,
                    "from_order": 42,
                    "to_order": 43,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 344,
                    "from_order": 43,
                    "to_order": 44,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 345,
                    "from_order": 44,
                    "to_order": 45,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 346,
                    "from_order": 45,
                    "to_order": 46,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 347,
                    "from_order": 46,
                    "to_order": 47,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 348,
                    "from_order": 46,
                    "to_order": 48,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 349,
                    "from_order": 48,
                    "to_order": 49,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 350,
                    "from_order": 49,
                    "to_order": 50,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 351,
                    "from_order": 50,
                    "to_order": 51,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 352,
                    "from_order": 50,
                    "to_order": 53,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 353,
                    "from_order": 51,
                    "to_order": 52,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 354,
                    "from_order": 52,
                    "to_order": 53,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 355,
                    "from_order": 53,
                    "to_order": 54,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 356,
                    "from_order": 54,
                    "to_order": 55,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 357,
                    "from_order": 55,
                    "to_order": 56,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 358,
                    "from_order": 56,
                    "to_order": 57,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 359,
                    "from_order": 56,
                    "to_order": 58,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 360,
                    "from_order": 58,
                    "to_order": 59,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 361,
                    "from_order": 58,
                    "to_order": 61,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 362,
                    "from_order": 59,
                    "to_order": 60,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 363,
                    "from_order": 60,
                    "to_order": 61,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 364,
                    "from_order": 61,
                    "to_order": 62,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 365,
                    "from_order": 62,
                    "to_order": 63,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 366,
                    "from_order": 63,
                    "to_order": 64,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 367,
                    "from_order": 64,
                    "to_order": 65,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 368,
                    "from_order": 65,
                    "to_order": 91,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 369,
                    "from_order": 66,
                    "to_order": 67,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 370,
                    "from_order": 67,
                    "to_order": 68,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 371,
                    "from_order": 68,
                    "to_order": 69,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 372,
                    "from_order": 69,
                    "to_order": 70,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 373,
                    "from_order": 70,
                    "to_order": 71,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 374,
                    "from_order": 71,
                    "to_order": 72,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 375,
                    "from_order": 72,
                    "to_order": 73,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 376,
                    "from_order": 73,
                    "to_order": 74,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 377,
                    "from_order": 74,
                    "to_order": 75,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 378,
                    "from_order": 74,
                    "to_order": 77,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 379,
                    "from_order": 75,
                    "to_order": 76,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 380,
                    "from_order": 76,
                    "to_order": 77,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 381,
                    "from_order": 77,
                    "to_order": 78,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 382,
                    "from_order": 78,
                    "to_order": 79,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 383,
                    "from_order": 78,
                    "to_order": 88,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 384,
                    "from_order": 79,
                    "to_order": 81,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 385,
                    "from_order": 80,
                    "to_order": 81,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 386,
                    "from_order": 81,
                    "to_order": 82,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 387,
                    "from_order": 82,
                    "to_order": 83,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 388,
                    "from_order": 83,
                    "to_order": 86,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 389,
                    "from_order": 83,
                    "to_order": 84,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 390,
                    "from_order": 84,
                    "to_order": 85,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 391,
                    "from_order": 85,
                    "to_order": 86,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 392,
                    "from_order": 86,
                    "to_order": 87,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 393,
                    "from_order": 87,
                    "to_order": 93,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 394,
                    "from_order": 88,
                    "to_order": 89,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 395,
                    "from_order": 89,
                    "to_order": 90,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 396,
                    "from_order": 90,
                    "to_order": 91,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 397,
                    "from_order": 91,
                    "to_order": 92,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 398,
                    "from_order": 92,
                    "to_order": 93,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                },
                {
                    "link_id": 399,
                    "from_order": 93,
                    "to_order": 94,
                    "routing_method": "none",
                    "muskingum_k": null,
                    "muskingum_x": null,
                    "travel_time": null,
                    "loss_rate": null,
                    "reason": "Chưa chọn routing_method."
                }
            ]
        },
        "imports": [
            {
                "key": "guide_curve",
                "version": "v5.17.2",
                "label": "Batch import guide curve",
                "template": "templates/webbassim_batch_guide_curve_template.csv",
                "planned_page": "phase5_import_guide_curve.php"
            },
            {
                "key": "energy_target",
                "version": "v5.17.3",
                "label": "Batch import energy target",
                "template": "templates/webbassim_batch_hydropower_energy_template.csv",
                "planned_page": "phase5_import_energy_target.php"
            },
            {
                "key": "demand_monthly",
                "version": "v5.17.4",
                "label": "Batch import demand tháng",
                "template": "templates/webbassim_batch_demand_monthly_template.csv",
                "planned_page": "phase5_import_demand_monthly.php"
            },
            {
                "key": "lowflow_qmin",
                "version": "v5.17.5",
                "label": "Batch import Qmin LOWFLOW",
                "template": "templates/webbassim_batch_lowflow_qmin_template.csv",
                "planned_page": "phase5_import_lowflow_qmin.php"
            },
            {
                "key": "link_routing",
                "version": "v5.17.6",
                "label": "Batch import routing link",
                "template": "templates/webbassim_batch_link_routing_template.csv",
                "planned_page": "phase5_import_link_routing.php"
            }
        ],
        "note": "v5.17.6 đã bật đủ 5 nhóm batch import: guide curve, energy target, demand tháng, Qmin LOWFLOW và routing link."
    },
    "data_tables": {
        "guide_curve": {
            "rows": 324,
            "nodes": 27
        },
        "safety_levels": {
            "rows": 27,
            "nodes": 27
        },
        "energy_target": {
            "rows": 324,
            "nodes": 27
        },
        "node_params": {
            "rows": 1690,
            "demand_monthly": 288,
            "lowflow_monthly": 96,
            "other": 1306
        },
        "links": {
            "rows": 99,
            "static": 0,
            "lag_loss": 0,
            "muskingum": 0,
            "none": 99,
            "partial": 0,
            "invalid": 0
        },
        "webbassim_nodes": {
            "rows": 94
        },
        "webbassim_link_geometries": {
            "rows": 0
        }
    },
    "issues": [
        {
            "severity": "warning",
            "group": "link_routing",
            "title": "Nhóm dữ liệu chưa có đối tượng nào đủ điều kiện",
            "detail": "0/99 đủ; thiếu 99",
            "object": "Routing cho link",
            "action": "Mở trang import tương ứng và nạp CSV mẫu."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "flood_guide_z=589 nhỏ hơn guide_z_m=589.5",
            "object": "node_id=12, month=11",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=1",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=2",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=3",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=4",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=5",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=6",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=7",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=8",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=9",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=10",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=11",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        },
        {
            "severity": "warning",
            "group": "guide_curve",
            "title": "Thứ tự mực nước guide curve có khả năng bị đảo",
            "detail": "conservation_min_z=0 nhỏ hơn hard_min_z=17",
            "object": "node_id=82, month=12",
            "action": "Kiểm tra thứ tự: hard_min ≤ conservation_min ≤ guide ≤ flood_guide ≤ z_max ≤ emergency."
        }
    ],
    "missing_monthly": {
        "guide_curve": [],
        "energy_target": [],
        "demand_monthly": [],
        "lowflow_qmin": []
    },
    "link_not_ready": [
        {
            "link_id": 301,
            "from_order": 1,
            "to_order": 2,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 302,
            "from_order": 2,
            "to_order": 3,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 303,
            "from_order": 3,
            "to_order": 4,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 304,
            "from_order": 3,
            "to_order": 5,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 305,
            "from_order": 5,
            "to_order": 6,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 306,
            "from_order": 6,
            "to_order": 7,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 307,
            "from_order": 7,
            "to_order": 8,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 308,
            "from_order": 7,
            "to_order": 9,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 309,
            "from_order": 9,
            "to_order": 10,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 310,
            "from_order": 10,
            "to_order": 11,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 311,
            "from_order": 11,
            "to_order": 12,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 312,
            "from_order": 12,
            "to_order": 13,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 313,
            "from_order": 13,
            "to_order": 14,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 314,
            "from_order": 14,
            "to_order": 19,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 315,
            "from_order": 15,
            "to_order": 16,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 316,
            "from_order": 16,
            "to_order": 17,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 317,
            "from_order": 17,
            "to_order": 18,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 318,
            "from_order": 18,
            "to_order": 19,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 319,
            "from_order": 19,
            "to_order": 20,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 320,
            "from_order": 20,
            "to_order": 21,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 321,
            "from_order": 21,
            "to_order": 22,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 322,
            "from_order": 22,
            "to_order": 23,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 323,
            "from_order": 23,
            "to_order": 24,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 324,
            "from_order": 24,
            "to_order": 25,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 325,
            "from_order": 25,
            "to_order": 26,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 326,
            "from_order": 26,
            "to_order": 27,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 327,
            "from_order": 27,
            "to_order": 28,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 328,
            "from_order": 28,
            "to_order": 29,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 329,
            "from_order": 29,
            "to_order": 30,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 330,
            "from_order": 30,
            "to_order": 31,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 331,
            "from_order": 31,
            "to_order": 32,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 332,
            "from_order": 32,
            "to_order": 33,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 333,
            "from_order": 33,
            "to_order": 34,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 334,
            "from_order": 34,
            "to_order": 35,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 335,
            "from_order": 35,
            "to_order": 63,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 336,
            "from_order": 36,
            "to_order": 37,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 337,
            "from_order": 37,
            "to_order": 38,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 338,
            "from_order": 38,
            "to_order": 39,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 339,
            "from_order": 38,
            "to_order": 43,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 340,
            "from_order": 39,
            "to_order": 41,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 341,
            "from_order": 40,
            "to_order": 41,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 342,
            "from_order": 41,
            "to_order": 42,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 343,
            "from_order": 42,
            "to_order": 43,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 344,
            "from_order": 43,
            "to_order": 44,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 345,
            "from_order": 44,
            "to_order": 45,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 346,
            "from_order": 45,
            "to_order": 46,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 347,
            "from_order": 46,
            "to_order": 47,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 348,
            "from_order": 46,
            "to_order": 48,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 349,
            "from_order": 48,
            "to_order": 49,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 350,
            "from_order": 49,
            "to_order": 50,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 351,
            "from_order": 50,
            "to_order": 51,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 352,
            "from_order": 50,
            "to_order": 53,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 353,
            "from_order": 51,
            "to_order": 52,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 354,
            "from_order": 52,
            "to_order": 53,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 355,
            "from_order": 53,
            "to_order": 54,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 356,
            "from_order": 54,
            "to_order": 55,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 357,
            "from_order": 55,
            "to_order": 56,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 358,
            "from_order": 56,
            "to_order": 57,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 359,
            "from_order": 56,
            "to_order": 58,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 360,
            "from_order": 58,
            "to_order": 59,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 361,
            "from_order": 58,
            "to_order": 61,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 362,
            "from_order": 59,
            "to_order": 60,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 363,
            "from_order": 60,
            "to_order": 61,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 364,
            "from_order": 61,
            "to_order": 62,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 365,
            "from_order": 62,
            "to_order": 63,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 366,
            "from_order": 63,
            "to_order": 64,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 367,
            "from_order": 64,
            "to_order": 65,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 368,
            "from_order": 65,
            "to_order": 91,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 369,
            "from_order": 66,
            "to_order": 67,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 370,
            "from_order": 67,
            "to_order": 68,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 371,
            "from_order": 68,
            "to_order": 69,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 372,
            "from_order": 69,
            "to_order": 70,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 373,
            "from_order": 70,
            "to_order": 71,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 374,
            "from_order": 71,
            "to_order": 72,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 375,
            "from_order": 72,
            "to_order": 73,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 376,
            "from_order": 73,
            "to_order": 74,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 377,
            "from_order": 74,
            "to_order": 75,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 378,
            "from_order": 74,
            "to_order": 77,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 379,
            "from_order": 75,
            "to_order": 76,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 380,
            "from_order": 76,
            "to_order": 77,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 381,
            "from_order": 77,
            "to_order": 78,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 382,
            "from_order": 78,
            "to_order": 79,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 383,
            "from_order": 78,
            "to_order": 88,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 384,
            "from_order": 79,
            "to_order": 81,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 385,
            "from_order": 80,
            "to_order": 81,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 386,
            "from_order": 81,
            "to_order": 82,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 387,
            "from_order": 82,
            "to_order": 83,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 388,
            "from_order": 83,
            "to_order": 86,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 389,
            "from_order": 83,
            "to_order": 84,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 390,
            "from_order": 84,
            "to_order": 85,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 391,
            "from_order": 85,
            "to_order": 86,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 392,
            "from_order": 86,
            "to_order": 87,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 393,
            "from_order": 87,
            "to_order": 93,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 394,
            "from_order": 88,
            "to_order": 89,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 395,
            "from_order": 89,
            "to_order": 90,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 396,
            "from_order": 90,
            "to_order": 91,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 397,
            "from_order": 91,
            "to_order": 92,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 398,
            "from_order": 92,
            "to_order": 93,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        },
        {
            "link_id": 399,
            "from_order": 93,
            "to_order": 94,
            "routing_method": "none",
            "muskingum_k": null,
            "muskingum_x": null,
            "travel_time": null,
            "loss_rate": null,
            "reason": "Chưa chọn routing_method."
        }
    ],
    "action_plan": [
        {
            "priority": 1,
            "key": "link_routing",
            "label": "Routing cho link",
            "percent": 0,
            "missing": 99,
            "partial": 0,
            "suggested_page": "phase5_import_link_routing.php",
            "action": "Bổ sung dữ liệu còn thiếu, import đủ 12 tháng hoặc hoàn thiện thông số link rồi tải lại readiness."
        }
    ],
    "note": "v5.17.12 là báo cáo đọc-only để kiểm tra readiness, lỗi dữ liệu, dữ liệu thiếu và thứ tự ưu tiên import tiếp theo. Không ghi database."
}