-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcoverage.json
More file actions
executable file
·1 lines (1 loc) · 349 KB
/
Copy pathcoverage.json
File metadata and controls
executable file
·1 lines (1 loc) · 349 KB
1
{"meta": {"format": 3, "version": "7.13.0", "timestamp": "2026-01-20T07:14:27.733348", "branch_coverage": false, "show_contexts": false}, "files": {"backend/app/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/api/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/api/dependencies/auth.py": {"executed_lines": [1, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 24, 28, 57, 67, 68, 83, 98, 99, 101, 119, 124, 125, 126], "summary": {"covered_lines": 25, "num_statements": 44, "percent_covered": 56.81818181818182, "percent_covered_display": "57", "missing_lines": 19, "excluded_lines": 1, "percent_statements_covered": 56.81818181818182, "percent_statements_covered_display": "57"}, "missing_lines": [25, 33, 39, 40, 43, 44, 45, 47, 48, 50, 51, 52, 54, 61, 62, 64, 120, 121, 129], "excluded_lines": [68], "functions": {"get_user_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [25], "excluded_lines": []}, "get_current_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [33, 39, 40, 43, 44, 45, 47, 48, 50, 51, 52, 54], "excluded_lines": []}, "get_current_active_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [61, 62, 64], "excluded_lines": []}, "RoleChecker.__init__": {"executed_lines": [98, 99], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "RoleChecker.__call__": {"executed_lines": [119, 124, 125, 126], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 57.142857142857146, "percent_statements_covered_display": "57"}, "missing_lines": [120, 121, 129], "excluded_lines": []}, "": {"executed_lines": [1, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 24, 28, 57, 67, 68, 83, 101], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [68]}}, "classes": {"RoleChecker": {"executed_lines": [98, 99, 119, 124, 125, 126], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [120, 121, 129], "excluded_lines": []}, "": {"executed_lines": [1, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 24, 28, 57, 67, 68, 83, 101], "summary": {"covered_lines": 19, "num_statements": 35, "percent_covered": 54.285714285714285, "percent_covered_display": "54", "missing_lines": 16, "excluded_lines": 1, "percent_statements_covered": 54.285714285714285, "percent_statements_covered_display": "54"}, "missing_lines": [25, 33, 39, 40, 43, 44, 45, 47, 48, 50, 51, 52, 54, 61, 62, 64], "excluded_lines": [68]}}}, "backend/app/api/routes/auth.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 23, 59, 60, 85, 86], "summary": {"covered_lines": 17, "num_statements": 38, "percent_covered": 44.73684210526316, "percent_covered_display": "45", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 44.73684210526316, "percent_statements_covered_display": "45"}, "missing_lines": [30, 32, 33, 34, 44, 46, 49, 51, 52, 53, 67, 68, 71, 72, 77, 78, 81, 82, 95, 97, 98], "excluded_lines": [], "functions": {"register": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [30, 32, 33, 34, 44, 46, 49, 51, 52, 53], "excluded_lines": []}, "login": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [67, 68, 71, 72, 77, 78, 81, 82], "excluded_lines": []}, "read_users_me": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [95, 97, 98], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 23, 59, 60, 85, 86], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 17, 23, 59, 60, 85, 86], "summary": {"covered_lines": 17, "num_statements": 38, "percent_covered": 44.73684210526316, "percent_covered_display": "45", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 44.73684210526316, "percent_statements_covered_display": "45"}, "missing_lines": [30, 32, 33, 34, 44, 46, 49, 51, 52, 53, 67, 68, 71, 72, 77, 78, 81, 82, 95, 97, 98], "excluded_lines": []}}}, "backend/app/api/routes/change_orders.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 21, 22, 23, 25, 27, 30, 36, 42, 48, 117, 124, 167, 173, 204, 210, 231, 237, 280, 286, 310, 316, 336, 341, 369, 375, 461, 467, 491, 497], "summary": {"covered_lines": 40, "num_statements": 130, "percent_covered": 30.76923076923077, "percent_covered_display": "31", "missing_lines": 90, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "31"}, "missing_lines": [33, 39, 78, 81, 83, 85, 98, 101, 108, 110, 111, 141, 143, 146, 147, 152, 157, 158, 159, 160, 161, 189, 191, 194, 196, 197, 201, 221, 223, 224, 228, 251, 254, 255, 262, 265, 266, 268, 269, 270, 271, 273, 274, 277, 300, 301, 306, 307, 327, 328, 329, 333, 355, 356, 361, 362, 363, 390, 392, 395, 396, 401, 404, 410, 412, 421, 428, 429, 431, 434, 443, 444, 446, 447, 448, 450, 452, 453, 454, 455, 477, 478, 483, 484, 485, 517, 518, 519, 520, 521], "excluded_lines": [], "functions": {"get_change_order_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [33], "excluded_lines": []}, "get_impact_analysis_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [39], "excluded_lines": []}, "read_change_orders": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [78, 81, 83, 85, 98, 101, 108, 110, 111], "excluded_lines": []}, "create_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [141, 143, 146, 147, 152, 157, 158, 159, 160, 161], "excluded_lines": []}, "read_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [189, 191, 194, 196, 197, 201], "excluded_lines": []}, "read_change_order_by_code": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [221, 223, 224, 228], "excluded_lines": []}, "update_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [251, 254, 255, 262, 265, 266, 268, 269, 270, 271, 273, 274, 277], "excluded_lines": []}, "delete_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [300, 301, 306, 307], "excluded_lines": []}, "read_change_order_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [327, 328, 329, 333], "excluded_lines": []}, "get_merge_conflicts": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [355, 356, 361, 362, 363], "excluded_lines": []}, "merge_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [390, 392, 395, 396, 401, 404, 410, 412, 421, 428, 429, 431, 434, 443, 444, 446, 447, 448, 450, 452, 453, 454, 455], "excluded_lines": []}, "revert_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [477, 478, 483, 484, 485], "excluded_lines": []}, "get_change_order_impact": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [517, 518, 519, 520, 521], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 21, 22, 23, 25, 27, 30, 36, 42, 48, 117, 124, 167, 173, 204, 210, 231, 237, 280, 286, 310, 316, 336, 341, 369, 375, 461, 467, 491, 497], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 21, 22, 23, 25, 27, 30, 36, 42, 48, 117, 124, 167, 173, 204, 210, 231, 237, 280, 286, 310, 316, 336, 341, 369, 375, 461, 467, 491, 497], "summary": {"covered_lines": 40, "num_statements": 130, "percent_covered": 30.76923076923077, "percent_covered_display": "31", "missing_lines": 90, "excluded_lines": 0, "percent_statements_covered": 30.76923076923077, "percent_statements_covered_display": "31"}, "missing_lines": [33, 39, 78, 81, 83, 85, 98, 101, 108, 110, 111, 141, 143, 146, 147, 152, 157, 158, 159, 160, 161, 189, 191, 194, 196, 197, 201, 221, 223, 224, 228, 251, 254, 255, 262, 265, 266, 268, 269, 270, 271, 273, 274, 277, 300, 301, 306, 307, 327, 328, 329, 333, 355, 356, 361, 362, 363, 390, 392, 395, 396, 401, 404, 410, 412, 421, 428, 429, 431, 434, 443, 444, 446, 447, 448, 450, 452, 453, 454, 455, 477, 478, 483, 484, 485, 517, 518, 519, 520, 521], "excluded_lines": []}}}, "backend/app/api/routes/cost_element_types.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 17, 19, 22, 25, 28, 34, 84, 91, 97, 98, 107, 113, 127, 133, 157, 163, 186, 192], "summary": {"covered_lines": 28, "num_statements": 58, "percent_covered": 48.275862068965516, "percent_covered_display": "48", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 48.275862068965516, "percent_statements_covered_display": "48"}, "missing_lines": [52, 53, 55, 56, 57, 59, 64, 74, 76, 99, 101, 118, 119, 120, 124, 140, 141, 142, 143, 148, 153, 154, 169, 170, 171, 174, 179, 182, 183, 197], "excluded_lines": [], "functions": {"get_cost_element_type_service": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "read_cost_element_types": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [52, 53, 55, 56, 57, 59, 64, 74, 76], "excluded_lines": []}, "create_cost_element_type": {"executed_lines": [97, 98], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [99, 101], "excluded_lines": []}, "read_cost_element_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [118, 119, 120, 124], "excluded_lines": []}, "update_cost_element_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [140, 141, 142, 143, 148, 153, 154], "excluded_lines": []}, "delete_cost_element_type": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [169, 170, 171, 174, 179, 182, 183], "excluded_lines": []}, "get_cost_element_type_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [197], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 17, 19, 22, 28, 34, 84, 91, 107, 113, 127, 133, 157, 163, 186, 192], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 17, 19, 22, 25, 28, 34, 84, 91, 97, 98, 107, 113, 127, 133, 157, 163, 186, 192], "summary": {"covered_lines": 28, "num_statements": 58, "percent_covered": 48.275862068965516, "percent_covered_display": "48", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 48.275862068965516, "percent_statements_covered_display": "48"}, "missing_lines": [52, 53, 55, 56, 57, 59, 64, 74, 76, 99, 101, 118, 119, 120, 124, 140, 141, 142, 143, 148, 153, 154, 169, 170, 171, 174, 179, 182, 183, 197], "excluded_lines": []}}}, "backend/app/api/routes/cost_elements.py": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 25, 28, 31, 34, 40, 46, 77, 78, 79, 82, 85, 86, 87, 88, 91, 93, 120, 127, 133, 134, 147, 153, 167, 172, 183, 189, 196, 198, 200, 207, 211, 217, 227, 228, 245, 251, 264, 269, 286, 294, 300, 351, 358, 413, 419, 485, 491, 521, 528, 534, 590, 596, 680, 686, 813, 819, 1653, 1662, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 73, "num_statements": 233, "percent_covered": 31.330472103004293, "percent_covered_display": "31", "missing_lines": 160, "excluded_lines": 0, "percent_statements_covered": 31.330472103004293, "percent_statements_covered_display": "31"}, "missing_lines": [37, 89, 107, 110, 117, 140, 141, 169, 174, 175, 180, 208, 229, 230, 235, 241, 242, 261, 274, 275, 276, 277, 289, 291, 310, 315, 316, 323, 325, 329, 331, 341, 342, 344, 345, 346, 348, 371, 373, 378, 379, 381, 382, 384, 385, 402, 404, 406, 407, 431, 434, 435, 437, 438, 441, 442, 443, 450, 451, 452, 453, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 468, 471, 480, 482, 504, 505, 506, 513, 525, 568, 569, 571, 572, 578, 579, 580, 618, 620, 625, 629, 630, 636, 637, 645, 647, 654, 658, 659, 667, 669, 672, 673, 674, 675, 677, 700, 702, 703, 706, 707, 710, 715, 718, 719, 720, 721, 722, 723, 724, 725, 726, 729, 739, 740, 741, 744, 746, 753, 754, 755, 757, 758, 760, 762, 763, 764, 765, 767, 768, 775, 776, 782, 784, 787, 789, 801, 802, 804, 805, 806, 807, 808, 810, 834, 839, 840, 847], "excluded_lines": [], "functions": {"get_cost_element_service": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "get_forecast_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [37], "excluded_lines": []}, "read_cost_elements": {"executed_lines": [77, 78, 79, 82, 85, 86, 87, 88, 91, 93], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 71.42857142857143, "percent_statements_covered_display": "71"}, "missing_lines": [89, 107, 110, 117], "excluded_lines": []}, "create_cost_element": {"executed_lines": [133, 134], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [140, 141], "excluded_lines": []}, "read_cost_element": {"executed_lines": [167, 172], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [169, 174, 175, 180], "excluded_lines": []}, "update_cost_element": {"executed_lines": [196, 198, 200, 207], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [208], "excluded_lines": []}, "delete_cost_element": {"executed_lines": [227, 228], "summary": {"covered_lines": 2, "num_statements": 7, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 28.571428571428573, "percent_statements_covered_display": "29"}, "missing_lines": [229, 230, 235, 241, 242], "excluded_lines": []}, "get_cost_element_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [261], "excluded_lines": []}, "get_cost_element_breadcrumb": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [274, 275, 276, 277], "excluded_lines": []}, "get_schedule_baseline_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [289, 291], "excluded_lines": []}, "get_cost_element_schedule_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [310, 315, 316, 323, 325, 329, 331, 341, 342, 344, 345, 346, 348], "excluded_lines": []}, "create_cost_element_schedule_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [371, 373, 378, 379, 381, 382, 384, 385, 402, 404, 406, 407], "excluded_lines": []}, "update_cost_element_schedule_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [431, 434, 435, 437, 438, 441, 442, 443, 450, 451, 452, 453, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 468, 471, 480, 482], "excluded_lines": []}, "delete_cost_element_schedule_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [504, 505, 506, 513], "excluded_lines": []}, "get_evm_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [525], "excluded_lines": []}, "read_evm_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [568, 569, 571, 572, 578, 579, 580], "excluded_lines": []}, "get_cost_element_forecast": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [618, 620, 625, 629, 630, 636, 637, 645, 647, 654, 658, 659, 667, 669, 672, 673, 674, 675, 677], "excluded_lines": []}, "update_cost_element_forecast": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 48, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 48, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [700, 702, 703, 706, 707, 710, 715, 718, 719, 720, 721, 722, 723, 724, 725, 726, 729, 739, 740, 741, 744, 746, 753, 754, 755, 757, 758, 760, 762, 763, 764, 765, 767, 768, 775, 776, 782, 784, 787, 789, 801, 802, 804, 805, 806, 807, 808, 810], "excluded_lines": []}, "delete_cost_element_forecast": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [834, 839, 840, 847], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 25, 28, 34, 40, 46, 120, 127, 147, 153, 183, 189, 211, 217, 245, 251, 264, 269, 286, 294, 300, 351, 358, 413, 419, 485, 491, 521, 528, 534, 590, 596, 680, 686, 813, 819], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 25, 28, 31, 34, 40, 46, 77, 78, 79, 82, 85, 86, 87, 88, 91, 93, 120, 127, 133, 134, 147, 153, 167, 172, 183, 189, 196, 198, 200, 207, 211, 217, 227, 228, 245, 251, 264, 269, 286, 294, 300, 351, 358, 413, 419, 485, 491, 521, 528, 534, 590, 596, 680, 686, 813, 819], "summary": {"covered_lines": 73, "num_statements": 233, "percent_covered": 31.330472103004293, "percent_covered_display": "31", "missing_lines": 160, "excluded_lines": 0, "percent_statements_covered": 31.330472103004293, "percent_statements_covered_display": "31"}, "missing_lines": [37, 89, 107, 110, 117, 140, 141, 169, 174, 175, 180, 208, 229, 230, 235, 241, 242, 261, 274, 275, 276, 277, 289, 291, 310, 315, 316, 323, 325, 329, 331, 341, 342, 344, 345, 346, 348, 371, 373, 378, 379, 381, 382, 384, 385, 402, 404, 406, 407, 431, 434, 435, 437, 438, 441, 442, 443, 450, 451, 452, 453, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 468, 471, 480, 482, 504, 505, 506, 513, 525, 568, 569, 571, 572, 578, 579, 580, 618, 620, 625, 629, 630, 636, 637, 645, 647, 654, 658, 659, 667, 669, 672, 673, 674, 675, 677, 700, 702, 703, 706, 707, 710, 715, 718, 719, 720, 721, 722, 723, 724, 725, 726, 729, 739, 740, 741, 744, 746, 753, 754, 755, 757, 758, 760, 762, 763, 764, 765, 767, 768, 775, 776, 782, 784, 787, 789, 801, 802, 804, 805, 806, 807, 808, 810, 834, 839, 840, 847], "excluded_lines": []}}}, "backend/app/api/routes/cost_registrations.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 21, 26, 29, 36, 42, 97, 104, 144, 149, 174, 179, 222, 227, 267, 273, 304, 310, 340, 346, 375, 381], "summary": {"covered_lines": 33, "num_statements": 83, "percent_covered": 39.75903614457831, "percent_covered_display": "40", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 39.75903614457831, "percent_statements_covered_display": "40"}, "missing_lines": [33, 71, 72, 73, 75, 77, 84, 87, 94, 117, 118, 123, 124, 133, 134, 158, 159, 160, 167, 168, 206, 207, 214, 215, 216, 249, 250, 256, 257, 258, 286, 288, 294, 296, 297, 301, 324, 325, 331, 332, 333, 334, 358, 359, 360, 361, 366, 371, 372, 390], "excluded_lines": [], "functions": {"get_cost_registration_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [33], "excluded_lines": []}, "read_cost_registrations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [71, 72, 73, 75, 77, 84, 87, 94], "excluded_lines": []}, "create_cost_registration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [117, 118, 123, 124, 133, 134], "excluded_lines": []}, "get_budget_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [158, 159, 160, 167, 168], "excluded_lines": []}, "get_aggregated_costs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [206, 207, 214, 215, 216], "excluded_lines": []}, "get_cumulative_costs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [249, 250, 256, 257, 258], "excluded_lines": []}, "read_cost_registration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [286, 288, 294, 296, 297, 301], "excluded_lines": []}, "update_cost_registration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [324, 325, 331, 332, 333, 334], "excluded_lines": []}, "delete_cost_registration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [358, 359, 360, 361, 366, 371, 372], "excluded_lines": []}, "get_cost_registration_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [390], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 21, 26, 29, 36, 42, 97, 104, 144, 149, 174, 179, 222, 227, 267, 273, 304, 310, 340, 346, 375, 381], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 21, 26, 29, 36, 42, 97, 104, 144, 149, 174, 179, 222, 227, 267, 273, 304, 310, 340, 346, 375, 381], "summary": {"covered_lines": 33, "num_statements": 83, "percent_covered": 39.75903614457831, "percent_covered_display": "40", "missing_lines": 50, "excluded_lines": 0, "percent_statements_covered": 39.75903614457831, "percent_statements_covered_display": "40"}, "missing_lines": [33, 71, 72, 73, 75, 77, 84, 87, 94, 117, 118, 123, 124, 133, 134, 158, 159, 160, 167, 168, 206, 207, 214, 215, 216, 249, 250, 256, 257, 258, 286, 288, 294, 296, 297, 301, 324, 325, 331, 332, 333, 334, 358, 359, 360, 361, 366, 371, 372, 390], "excluded_lines": []}}}, "backend/app/api/routes/departments.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 17, 19, 22, 25, 28, 34, 74, 81, 87, 88, 99, 105, 119, 125, 143, 149, 163, 169], "summary": {"covered_lines": 28, "num_statements": 50, "percent_covered": 56.0, "percent_covered_display": "56", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 56.0, "percent_statements_covered_display": "56"}, "missing_lines": [51, 53, 55, 64, 66, 91, 92, 93, 110, 111, 112, 116, 132, 133, 138, 139, 140, 155, 156, 159, 160, 174], "excluded_lines": [], "functions": {"get_department_service": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "read_departments": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [51, 53, 55, 64, 66], "excluded_lines": []}, "create_department": {"executed_lines": [87, 88], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 40.0, "percent_statements_covered_display": "40"}, "missing_lines": [91, 92, 93], "excluded_lines": []}, "read_department": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [110, 111, 112, 116], "excluded_lines": []}, "update_department": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [132, 133, 138, 139, 140], "excluded_lines": []}, "delete_department": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [155, 156, 159, 160], "excluded_lines": []}, "get_department_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [174], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 17, 19, 22, 28, 34, 74, 81, 99, 105, 119, 125, 143, 149, 163, 169], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 17, 19, 22, 25, 28, 34, 74, 81, 87, 88, 99, 105, 119, 125, 143, 149, 163, 169], "summary": {"covered_lines": 28, "num_statements": 50, "percent_covered": 56.0, "percent_covered_display": "56", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 56.0, "percent_statements_covered_display": "56"}, "missing_lines": [51, 53, 55, 64, 66, 91, 92, 93, 110, 111, 112, 116, 132, 133, 138, 139, 140, 155, 156, 159, 160, 174], "excluded_lines": []}}}, "backend/app/api/routes/forecasts.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 24, 30, 61, 68, 90, 96, 122, 128, 151, 157, 183, 189, 210, 216], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "76"}, "missing_lines": [21, 47, 80, 112, 141, 173, 200, 228], "excluded_lines": [], "functions": {"get_forecast_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [21], "excluded_lines": []}, "read_forecasts": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [47], "excluded_lines": []}, "create_forecast": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [80], "excluded_lines": []}, "read_forecast": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [112], "excluded_lines": []}, "update_forecast": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [141], "excluded_lines": []}, "delete_forecast": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [173], "excluded_lines": []}, "get_forecast_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [200], "excluded_lines": []}, "get_forecast_comparison": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [228], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 24, 30, 61, 68, 90, 96, 122, 128, 151, 157, 183, 189, 210, 216], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 18, 24, 30, 61, 68, 90, 96, 122, 128, 151, 157, 183, 189, 210, 216], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "76", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 75.75757575757575, "percent_statements_covered_display": "76"}, "missing_lines": [21, 47, 80, 112, 141, 173, 200, 228], "excluded_lines": []}}}, "backend/app/api/routes/progress_entries.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 20, 22, 25, 32, 38, 80, 87, 115, 121, 152, 158, 187, 193, 209, 215, 238, 244], "summary": {"covered_lines": 28, "num_statements": 63, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [29, 54, 55, 56, 58, 60, 67, 70, 77, 102, 103, 107, 108, 109, 133, 135, 141, 143, 144, 149, 171, 172, 177, 178, 179, 183, 184, 203, 230, 235, 257, 259, 266, 269, 276], "excluded_lines": [], "functions": {"get_progress_entry_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29], "excluded_lines": []}, "read_progress_entries": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [54, 55, 56, 58, 60, 67, 70, 77], "excluded_lines": []}, "create_progress_entry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [102, 103, 107, 108, 109], "excluded_lines": []}, "read_progress_entry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [133, 135, 141, 143, 144, 149], "excluded_lines": []}, "update_progress_entry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [171, 172, 177, 178, 179, 183, 184], "excluded_lines": []}, "delete_progress_entry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [203], "excluded_lines": []}, "read_latest_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [230, 235], "excluded_lines": []}, "read_progress_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [257, 259, 266, 269, 276], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 20, 22, 25, 32, 38, 80, 87, 115, 121, 152, 158, 187, 193, 209, 215, 238, 244], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 20, 22, 25, 32, 38, 80, 87, 115, 121, 152, 158, 187, 193, 209, 215, 238, 244], "summary": {"covered_lines": 28, "num_statements": 63, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 35, "excluded_lines": 0, "percent_statements_covered": 44.44444444444444, "percent_statements_covered_display": "44"}, "missing_lines": [29, 54, 55, 56, 58, 60, 67, 70, 77, 102, 103, 107, 108, 109, 133, 135, 141, 143, 144, 149, 171, 172, 177, 178, 179, 183, 184, 203, 230, 235, 257, 259, 266, 269, 276], "excluded_lines": []}}}, "backend/app/api/routes/projects.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 21, 23, 26, 29, 32, 38, 120, 127, 133, 135, 155, 161, 189, 195, 214, 220, 239, 245, 259, 265, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 32, "num_statements": 70, "percent_covered": 45.714285714285715, "percent_covered_display": "46", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 45.714285714285715, "percent_statements_covered_display": "46"}, "missing_lines": [75, 76, 79, 82, 84, 86, 99, 101, 104, 111, 113, 114, 136, 137, 142, 147, 148, 149, 174, 176, 179, 181, 182, 186, 202, 203, 209, 210, 211, 229, 230, 235, 236, 250, 251, 252, 256, 276], "excluded_lines": [], "functions": {"get_project_service": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "read_projects": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [75, 76, 79, 82, 84, 86, 99, 101, 104, 111, 113, 114], "excluded_lines": []}, "create_project": {"executed_lines": [133, 135], "summary": {"covered_lines": 2, "num_statements": 8, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25"}, "missing_lines": [136, 137, 142, 147, 148, 149], "excluded_lines": []}, "read_project": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [174, 176, 179, 181, 182, 186], "excluded_lines": []}, "update_project": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [202, 203, 209, 210, 211], "excluded_lines": []}, "delete_project": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [229, 230, 235, 236], "excluded_lines": []}, "read_project_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [250, 251, 252, 256], "excluded_lines": []}, "read_project_branches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [276], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 21, 23, 26, 32, 38, 120, 127, 155, 161, 189, 195, 214, 220, 239, 245, 259, 265], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 21, 23, 26, 29, 32, 38, 120, 127, 133, 135, 155, 161, 189, 195, 214, 220, 239, 245, 259, 265], "summary": {"covered_lines": 32, "num_statements": 70, "percent_covered": 45.714285714285715, "percent_covered_display": "46", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 45.714285714285715, "percent_statements_covered_display": "46"}, "missing_lines": [75, 76, 79, 82, 84, 86, 99, 101, 104, 111, 113, 114, 136, 137, 142, 147, 148, 149, 174, 176, 179, 181, 182, 186, 202, 203, 209, 210, 211, 229, 230, 235, 236, 250, 251, 252, 256, 276], "excluded_lines": []}}}, "backend/app/api/routes/schedule_baselines.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 21, 23, 26, 32, 38, 93, 100, 125, 131, 165, 171, 205, 211, 239, 245, 253, 258], "summary": {"covered_lines": 29, "num_statements": 90, "percent_covered": 32.22222222222222, "percent_covered_display": "32", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 32.22222222222222, "percent_statements_covered_display": "32"}, "missing_lines": [29, 46, 48, 50, 52, 55, 62, 63, 66, 68, 69, 70, 73, 76, 77, 80, 83, 90, 106, 109, 110, 112, 118, 119, 145, 147, 154, 156, 157, 162, 178, 180, 181, 184, 185, 186, 192, 194, 201, 202, 221, 222, 223, 224, 229, 235, 236, 250, 291, 292, 293, 299, 300, 301, 304, 310, 311, 312, 318, 323, 325], "excluded_lines": [], "functions": {"get_schedule_baseline_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29], "excluded_lines": []}, "read_schedule_baselines": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 48, 50, 52, 55, 62, 63, 66, 68, 69, 70, 73, 76, 77, 80, 83, 90], "excluded_lines": []}, "create_schedule_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [106, 109, 110, 112, 118, 119], "excluded_lines": []}, "read_schedule_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [145, 147, 154, 156, 157, 162], "excluded_lines": []}, "update_schedule_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [178, 180, 181, 184, 185, 186, 192, 194, 201, 202], "excluded_lines": []}, "delete_schedule_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [221, 222, 223, 224, 229, 235, 236], "excluded_lines": []}, "get_schedule_baseline_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [250], "excluded_lines": []}, "calculate_planned_value": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [291, 292, 293, 299, 300, 301, 304, 310, 311, 312, 318, 323, 325], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 21, 23, 26, 32, 38, 93, 100, 125, 131, 165, 171, 205, 211, 239, 245, 253, 258], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 21, 23, 26, 32, 38, 93, 100, 125, 131, 165, 171, 205, 211, 239, 245, 253, 258], "summary": {"covered_lines": 29, "num_statements": 90, "percent_covered": 32.22222222222222, "percent_covered_display": "32", "missing_lines": 61, "excluded_lines": 0, "percent_statements_covered": 32.22222222222222, "percent_statements_covered_display": "32"}, "missing_lines": [29, 46, 48, 50, 52, 55, 62, 63, 66, 68, 69, 70, 73, 76, 77, 80, 83, 90, 106, 109, 110, 112, 118, 119, 145, 147, 154, 156, 157, 162, 178, 180, 181, 184, 185, 186, 192, 194, 201, 202, 221, 222, 223, 224, 229, 235, 236, 250, 291, 292, 293, 299, 300, 301, 304, 310, 311, 312, 318, 323, 325], "excluded_lines": []}}}, "backend/app/api/routes/users.py": {"executed_lines": [1, 2, 3, 5, 7, 12, 13, 17, 18, 20, 23, 29, 41, 48, 69, 75, 91, 97, 119, 125, 151, 157, 187, 193, 211, 217], "summary": {"covered_lines": 26, "num_statements": 62, "percent_covered": 41.935483870967744, "percent_covered_display": "42", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 41.935483870967744, "percent_statements_covered_display": "42"}, "missing_lines": [38, 57, 60, 61, 62, 63, 83, 84, 85, 86, 88, 106, 108, 111, 112, 113, 136, 137, 142, 143, 144, 148, 169, 170, 175, 176, 179, 180, 181, 202, 203, 204, 205, 228, 229, 234], "excluded_lines": [], "functions": {"read_users": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [38], "excluded_lines": []}, "create_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [57, 60, 61, 62, 63], "excluded_lines": []}, "get_my_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [83, 84, 85, 86, 88], "excluded_lines": []}, "update_my_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [106, 108, 111, 112, 113], "excluded_lines": []}, "read_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136, 137, 142, 143, 144, 148], "excluded_lines": []}, "update_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [169, 170, 175, 176, 179, 180, 181], "excluded_lines": []}, "delete_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [202, 203, 204, 205], "excluded_lines": []}, "get_user_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [228, 229, 234], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 7, 12, 13, 17, 18, 20, 23, 29, 41, 48, 69, 75, 91, 97, 119, 125, 151, 157, 187, 193, 211, 217], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 7, 12, 13, 17, 18, 20, 23, 29, 41, 48, 69, 75, 91, 97, 119, 125, 151, 157, 187, 193, 211, 217], "summary": {"covered_lines": 26, "num_statements": 62, "percent_covered": 41.935483870967744, "percent_covered_display": "42", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 41.935483870967744, "percent_statements_covered_display": "42"}, "missing_lines": [38, 57, 60, 61, 62, 63, 83, 84, 85, 86, 88, 106, 108, 111, 112, 113, 136, 137, 142, 143, 144, 148, 169, 170, 175, 176, 179, 180, 181, 202, 203, 204, 205, 228, 229, 234], "excluded_lines": []}}}, "backend/app/api/routes/wbes.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 21, 23, 26, 29, 32, 38, 164, 171, 177, 183, 186, 206, 212, 241, 247, 267, 273, 290, 296, 310, 316, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 32, "num_statements": 88, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [88, 89, 90, 93, 96, 97, 99, 100, 101, 102, 104, 105, 106, 107, 115, 116, 119, 122, 124, 127, 129, 145, 148, 155, 157, 158, 189, 190, 195, 198, 199, 200, 226, 228, 231, 233, 234, 238, 254, 255, 256, 262, 263, 264, 282, 283, 286, 287, 301, 302, 303, 304, 321, 322, 323, 327], "excluded_lines": [], "functions": {"get_wbe_service": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "read_wbes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [88, 89, 90, 93, 96, 97, 99, 100, 101, 102, 104, 105, 106, 107, 115, 116, 119, 122, 124, 127, 129, 145, 148, 155, 157, 158], "excluded_lines": []}, "create_wbe": {"executed_lines": [177, 183, 186], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 33.333333333333336, "percent_statements_covered_display": "33"}, "missing_lines": [189, 190, 195, 198, 199, 200], "excluded_lines": []}, "read_wbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [226, 228, 231, 233, 234, 238], "excluded_lines": []}, "update_wbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [254, 255, 256, 262, 263, 264], "excluded_lines": []}, "delete_wbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [282, 283, 286, 287], "excluded_lines": []}, "read_wbe_breadcrumb": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [301, 302, 303, 304], "excluded_lines": []}, "read_wbe_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [321, 322, 323, 327], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 21, 23, 26, 32, 38, 164, 171, 206, 212, 241, 247, 267, 273, 290, 296, 310, 316], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 21, 23, 26, 29, 32, 38, 164, 171, 177, 183, 186, 206, 212, 241, 247, 267, 273, 290, 296, 310, 316], "summary": {"covered_lines": 32, "num_statements": 88, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 36.36363636363637, "percent_statements_covered_display": "36"}, "missing_lines": [88, 89, 90, 93, 96, 97, 99, 100, 101, 102, 104, 105, 106, 107, 115, 116, 119, 122, 124, 127, 129, 145, 148, 155, 157, 158, 189, 190, 195, 198, 199, 200, 226, 228, 231, 233, 234, 238, 254, 255, 256, 262, 263, 264, 282, 283, 286, 287, 301, 302, 303, 304, 321, 322, 323, 327], "excluded_lines": []}}}, "backend/app/commands/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/base/__init__.py": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/base/base.py": {"executed_lines": [1, 9, 10, 12, 13, 14, 17, 18, 20, 23, 24, 29, 31, 34, 35, 43, 45, 48], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 9, 10, 12, 13, 14, 17, 18, 20, 23, 24, 29, 31, 34, 35, 43, 45, 48], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Base": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "EntityBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "SimpleEntityBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 9, 10, 12, 13, 14, 17, 18, 20, 23, 24, 29, 31, 34, 35, 43, 45, 48], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/branching/__init__.py": {"executed_lines": [1, 6, 7, 9], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 6, 7, 9], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 6, 7, 9], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/branching/commands.py": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 21, 26, 28, 37, 51, 52, 54, 95, 96, 98, 112, 154, 155, 157, 173, 295, 296, 298, 310, 372, 373, 375, 387, 451, 452, 459, 467, 468, 469, 471, 473, 474, 479, 480, 481, 482, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 40, "num_statements": 145, "percent_covered": 27.586206896551722, "percent_covered_display": "28", "missing_lines": 105, "excluded_lines": 0, "percent_statements_covered": 27.586206896551722, "percent_statements_covered_display": "28"}, "missing_lines": [66, 72, 73, 76, 83, 84, 86, 87, 107, 108, 109, 110, 119, 122, 123, 124, 129, 132, 133, 136, 137, 146, 149, 150, 151, 166, 167, 168, 171, 178, 181, 182, 183, 187, 188, 190, 191, 199, 204, 207, 208, 212, 213, 222, 236, 237, 242, 248, 257, 261, 262, 267, 271, 272, 281, 289, 290, 292, 306, 307, 308, 313, 314, 315, 321, 322, 323, 329, 340, 342, 347, 349, 350, 353, 354, 363, 366, 367, 369, 383, 384, 385, 390, 391, 392, 395, 396, 397, 398, 399, 401, 402, 408, 419, 421, 426, 428, 429, 432, 433, 442, 445, 446, 448, 475], "excluded_lines": [], "functions": {"BranchCommandABC._get_current_on_branch": {"executed_lines": [37, 51, 52], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "BranchCommandABC._check_overlap": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [66, 72, 73, 76, 83, 84, 86, 87], "excluded_lines": []}, "CreateBranchCommand.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [107, 108, 109, 110], "excluded_lines": []}, "CreateBranchCommand.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [119, 122, 123, 124, 129, 132, 133, 136, 137, 146, 149, 150, 151], "excluded_lines": []}, "UpdateCommand.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [166, 167, 168, 171], "excluded_lines": []}, "UpdateCommand.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [178, 181, 182, 183, 187, 188, 190, 191, 199, 204, 207, 208, 212, 213, 222, 236, 237, 242, 248, 257, 261, 262, 267, 271, 272, 281, 289, 290, 292], "excluded_lines": []}, "MergeBranchCommand.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [306, 307, 308], "excluded_lines": []}, "MergeBranchCommand.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [313, 314, 315, 321, 322, 323, 329, 340, 342, 347, 349, 350, 353, 354, 363, 366, 367, 369], "excluded_lines": []}, "RevertCommand.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [383, 384, 385], "excluded_lines": []}, "RevertCommand.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [390, 391, 392, 395, 396, 397, 398, 399, 401, 402, 408, 419, 421, 426, 428, 429, 432, 433, 442, 445, 446, 448], "excluded_lines": []}, "BranchableSoftDeleteCommand.__init__": {"executed_lines": [467, 468, 469], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "BranchableSoftDeleteCommand.execute": {"executed_lines": [473, 474, 479, 480, 481, 482], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [475], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 21, 26, 28, 54, 95, 96, 98, 112, 154, 155, 157, 173, 295, 296, 298, 310, 372, 373, 375, 387, 451, 452, 459, 471], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BranchCommandABC": {"executed_lines": [37, 51, 52], "summary": {"covered_lines": 3, "num_statements": 11, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 27.272727272727273, "percent_statements_covered_display": "27"}, "missing_lines": [66, 72, 73, 76, 83, 84, 86, 87], "excluded_lines": []}, "CreateBranchCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [107, 108, 109, 110, 119, 122, 123, 124, 129, 132, 133, 136, 137, 146, 149, 150, 151], "excluded_lines": []}, "UpdateCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 33, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 33, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [166, 167, 168, 171, 178, 181, 182, 183, 187, 188, 190, 191, 199, 204, 207, 208, 212, 213, 222, 236, 237, 242, 248, 257, 261, 262, 267, 271, 272, 281, 289, 290, 292], "excluded_lines": []}, "MergeBranchCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [306, 307, 308, 313, 314, 315, 321, 322, 323, 329, 340, 342, 347, 349, 350, 353, 354, 363, 366, 367, 369], "excluded_lines": []}, "RevertCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [383, 384, 385, 390, 391, 392, 395, 396, 397, 398, 399, 401, 402, 408, 419, 421, 426, 428, 429, 432, 433, 442, 445, 446, 448], "excluded_lines": []}, "BranchableSoftDeleteCommand": {"executed_lines": [467, 468, 469, 473, 474, 479, 480, 481, 482], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 90.0, "percent_statements_covered_display": "90"}, "missing_lines": [475], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 15, 17, 20, 21, 26, 28, 54, 95, 96, 98, 112, 154, 155, 157, 173, 295, 296, 298, 310, 372, 373, 375, 387, 451, 452, 459, 471], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/branching/exceptions.py": {"executed_lines": [1, 7, 10, 11, 24, 57, 58, 80], "summary": {"covered_lines": 5, "num_statements": 21, "percent_covered": 23.80952380952381, "percent_covered_display": "24", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 23.80952380952381, "percent_statements_covered_display": "24"}, "missing_lines": [37, 38, 39, 41, 42, 48, 54, 86, 87, 89, 90, 91, 92, 93, 99, 104], "excluded_lines": [], "functions": {"BranchLockedException.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [37, 38, 39, 41, 42, 48, 54], "excluded_lines": []}, "MergeConflictError.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [86, 87, 89, 90, 91, 92, 93, 99, 104], "excluded_lines": []}, "": {"executed_lines": [1, 7, 10, 11, 24, 57, 58, 80], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BranchLockedException": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [37, 38, 39, 41, 42, 48, 54], "excluded_lines": []}, "MergeConflictError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [86, 87, 89, 90, 91, 92, 93, 99, 104], "excluded_lines": []}, "": {"executed_lines": [1, 7, 10, 11, 24, 57, 58, 80], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/branching/service.py": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 16, 23, 24, 25, 26, 29, 30, 32, 33, 34, 36, 44, 45, 49, 50, 52, 54, 79, 80, 112, 158, 162, 193, 227, 249, 276, 289, 306, 329, 331, 338, 340, 369, 404, 426, 428, 431, 433, 477, 479, 570, 608, 649, 789, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 50, "num_statements": 211, "percent_covered": 23.696682464454977, "percent_covered_display": "24", "missing_lines": 161, "excluded_lines": 0, "percent_statements_covered": 23.696682464454977, "percent_statements_covered_display": "24"}, "missing_lines": [46, 83, 84, 86, 89, 90, 92, 95, 97, 98, 99, 100, 101, 102, 107, 110, 132, 133, 136, 137, 139, 142, 144, 145, 146, 147, 148, 149, 154, 156, 160, 172, 173, 174, 175, 177, 190, 191, 207, 210, 211, 212, 213, 215, 217, 225, 237, 239, 247, 266, 274, 280, 287, 297, 304, 353, 355, 357, 382, 384, 386, 436, 440, 451, 464, 472, 474, 495, 498, 512, 513, 521, 522, 526, 534, 535, 537, 538, 542, 551, 552, 554, 556, 559, 567, 568, 572, 575, 578, 579, 586, 599, 600, 601, 602, 603, 604, 606, 626, 629, 630, 635, 636, 639, 645, 646, 647, 671, 674, 675, 676, 678, 679, 680, 684, 685, 686, 687, 688, 689, 690, 691, 694, 695, 696, 697, 698, 700, 701, 702, 703, 704, 705, 709, 712, 715, 716, 721, 728, 732, 745, 748, 749, 750, 752, 753, 755, 756, 758, 759, 760, 766, 771, 787, 816, 817, 824, 827, 828, 835, 837], "excluded_lines": [], "functions": {"BranchableService.__init__": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "BranchableService._get_root_field_name": {"executed_lines": [44, 45, 49, 50, 52], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [46], "excluded_lines": []}, "BranchableService._check_branch_lock": {"executed_lines": [79, 80], "summary": {"covered_lines": 2, "num_statements": 17, "percent_covered": 11.764705882352942, "percent_covered_display": "12", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 11.764705882352942, "percent_statements_covered_display": "12"}, "missing_lines": [83, 84, 86, 89, 90, 92, 95, 97, 98, 99, 100, 101, 102, 107, 110], "excluded_lines": []}, "BranchableService._check_branch_lock_for_create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [132, 133, 136, 137, 139, 142, 144, 145, 146, 147, 148, 149, 154, 156], "excluded_lines": []}, "BranchableService.get_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [160], "excluded_lines": []}, "BranchableService.get_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [172, 173, 174, 175, 177, 190, 191], "excluded_lines": []}, "BranchableService.create_root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [207, 210, 211, 212, 213, 215, 217, 225], "excluded_lines": []}, "BranchableService.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [237, 239, 247], "excluded_lines": []}, "BranchableService.create_branch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [266, 274], "excluded_lines": []}, "BranchableService.merge_branch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [280, 287], "excluded_lines": []}, "BranchableService.revert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [297, 304], "excluded_lines": []}, "BranchableService.soft_delete": {"executed_lines": [329, 331, 338], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "BranchableService._apply_bitemporal_filter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [353, 355, 357], "excluded_lines": []}, "BranchableService._apply_bitemporal_filter_for_time_travel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [382, 384, 386], "excluded_lines": []}, "BranchableService._apply_branch_mode_filter": {"executed_lines": [426, 428, 431, 433, 477], "summary": {"covered_lines": 5, "num_statements": 11, "percent_covered": 45.45454545454545, "percent_covered_display": "45", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 45.45454545454545, "percent_statements_covered_display": "45"}, "missing_lines": [436, 440, 451, 464, 472, 474], "excluded_lines": []}, "BranchableService.get_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [495, 498, 512, 513, 521, 522, 526, 534, 535, 537, 538, 542, 551, 552, 554, 556, 559, 567, 568], "excluded_lines": []}, "BranchableService.get_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [572, 575, 578, 579, 586, 599, 600, 601, 602, 603, 604, 606], "excluded_lines": []}, "BranchableService.list_branches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [626, 629, 630, 635, 636, 639, 645, 646, 647], "excluded_lines": []}, "BranchableService._detect_merge_conflicts": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 47, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [671, 674, 675, 676, 678, 679, 680, 684, 685, 686, 687, 688, 689, 690, 691, 694, 695, 696, 697, 698, 700, 701, 702, 703, 704, 705, 709, 712, 715, 716, 721, 728, 732, 745, 748, 749, 750, 752, 753, 755, 756, 758, 759, 760, 766, 771, 787], "excluded_lines": []}, "BranchableService.compare_branches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [816, 817, 824, 827, 828, 835, 837], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 16, 23, 24, 25, 26, 29, 30, 32, 36, 54, 112, 158, 162, 193, 227, 249, 276, 289, 306, 340, 369, 404, 479, 570, 608, 649, 789], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BranchableService": {"executed_lines": [33, 34, 44, 45, 49, 50, 52, 79, 80, 329, 331, 338, 426, 428, 431, 433, 477], "summary": {"covered_lines": 17, "num_statements": 178, "percent_covered": 9.55056179775281, "percent_covered_display": "10", "missing_lines": 161, "excluded_lines": 0, "percent_statements_covered": 9.55056179775281, "percent_statements_covered_display": "10"}, "missing_lines": [46, 83, 84, 86, 89, 90, 92, 95, 97, 98, 99, 100, 101, 102, 107, 110, 132, 133, 136, 137, 139, 142, 144, 145, 146, 147, 148, 149, 154, 156, 160, 172, 173, 174, 175, 177, 190, 191, 207, 210, 211, 212, 213, 215, 217, 225, 237, 239, 247, 266, 274, 280, 287, 297, 304, 353, 355, 357, 382, 384, 386, 436, 440, 451, 464, 472, 474, 495, 498, 512, 513, 521, 522, 526, 534, 535, 537, 538, 542, 551, 552, 554, 556, 559, 567, 568, 572, 575, 578, 579, 586, 599, 600, 601, 602, 603, 604, 606, 626, 629, 630, 635, 636, 639, 645, 646, 647, 671, 674, 675, 676, 678, 679, 680, 684, 685, 686, 687, 688, 689, 690, 691, 694, 695, 696, 697, 698, 700, 701, 702, 703, 704, 705, 709, 712, 715, 716, 721, 728, 732, 745, 748, 749, 750, 752, 753, 755, 756, 758, 759, 760, 766, 771, 787, 816, 817, 824, 827, 828, 835, 837], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 16, 23, 24, 25, 26, 29, 30, 32, 36, 54, 112, 158, 162, 193, 227, 249, 276, 289, 306, 340, 369, 404, 479, 570, 608, 649, 789], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/config.py": {"executed_lines": [1, 2, 5, 6, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 27, 28, 29, 30, 33, 34, 35, 38], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"Settings.ASYNC_DATABASE_URI": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 6, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 27, 28, 29, 33, 34, 35, 38], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Settings": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 5, 6, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 27, 28, 29, 33, 34, 35, 38], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/exceptions/filtering.py": {"executed_lines": [1, 2, 4, 7, 8, 10, 17, 18, 20], "summary": {"covered_lines": 6, "num_statements": 11, "percent_covered": 54.54545454545455, "percent_covered_display": "55", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 54.54545454545455, "percent_statements_covered_display": "55"}, "missing_lines": [11, 12, 13, 14, 21], "excluded_lines": [], "functions": {"FilterFieldNotAllowedError.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": []}, "FilterValueTypeError.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [21], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 7, 8, 10, 17, 18, 20], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FilterError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "FilterFieldNotAllowedError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [11, 12, 13, 14], "excluded_lines": []}, "FilterValueTypeError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [21], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 7, 8, 10, 17, 18, 20], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/filtering.py": {"executed_lines": [1, 22, 24, 25, 28, 29, 31, 32, 82, 83], "summary": {"covered_lines": 8, "num_statements": 54, "percent_covered": 14.814814814814815, "percent_covered_display": "15", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 14.814814814814815, "percent_statements_covered_display": "15"}, "missing_lines": [55, 56, 58, 61, 62, 63, 64, 67, 68, 69, 71, 72, 75, 77, 78, 80, 92, 97, 99, 101, 106, 111, 112, 115, 118, 119, 123, 124, 125, 126, 128, 129, 130, 131, 132, 134, 136, 137, 138, 144, 147, 149, 152, 154, 157, 159], "excluded_lines": [], "functions": {"FilterParser.parse_filters": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [55, 56, 58, 61, 62, 63, 64, 67, 68, 69, 71, 72, 75, 77, 78, 80], "excluded_lines": []}, "FilterParser.build_sqlalchemy_filters": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 30, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [92, 97, 99, 101, 106, 111, 112, 115, 118, 119, 123, 124, 125, 126, 128, 129, 130, 131, 132, 134, 136, 137, 138, 144, 147, 149, 152, 154, 157, 159], "excluded_lines": []}, "": {"executed_lines": [1, 22, 24, 25, 28, 29, 31, 32, 82, 83], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FilterParser": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 46, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 46, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [55, 56, 58, 61, 62, 63, 64, 67, 68, 69, 71, 72, 75, 77, 78, 80, 92, 97, 99, 101, 106, 111, 112, 115, 118, 119, 123, 124, 125, 126, 128, 129, 130, 131, 132, 134, 136, 137, 138, 144, 147, 149, 152, 154, 157, 159], "excluded_lines": []}, "": {"executed_lines": [1, 22, 24, 25, 28, 29, 31, 32, 82, 83], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/logging.py": {"executed_lines": [1, 2, 3, 4, 5, 7, 10], "summary": {"covered_lines": 7, "num_statements": 22, "percent_covered": 31.818181818181817, "percent_covered_display": "32", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 31.818181818181817, "percent_statements_covered_display": "32"}, "missing_lines": [16, 17, 18, 19, 22, 23, 26, 29, 32, 33, 34, 37, 40, 41, 44], "excluded_lines": [], "functions": {"setup_logging": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [16, 17, 18, 19, 22, 23, 26, 29, 32, 33, 34, 37, 40, 41, 44], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 7, 10], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 4, 5, 7, 10], "summary": {"covered_lines": 7, "num_statements": 22, "percent_covered": 31.818181818181817, "percent_covered_display": "32", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 31.818181818181817, "percent_statements_covered_display": "32"}, "missing_lines": [16, 17, 18, 19, 22, 23, 26, 29, 32, 33, 34, 37, 40, 41, 44], "excluded_lines": []}}}, "backend/app/core/rbac.py": {"executed_lines": [1, 7, 8, 9, 10, 11, 13, 15, 18, 19, 25, 26, 38, 39, 51, 52, 64, 65, 83, 103, 123, 138, 157, 177, 180, 201], "summary": {"covered_lines": 23, "num_statements": 60, "percent_covered": 38.333333333333336, "percent_covered_display": "38", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 38.333333333333336, "percent_statements_covered_display": "38"}, "missing_lines": [36, 49, 61, 94, 96, 97, 99, 100, 101, 113, 114, 118, 119, 121, 133, 134, 136, 148, 149, 151, 152, 154, 155, 166, 167, 169, 170, 172, 173, 191, 192, 193, 195, 196, 197, 198, 210], "excluded_lines": [], "functions": {"RBACServiceABC.has_role": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [36], "excluded_lines": []}, "RBACServiceABC.has_permission": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [49], "excluded_lines": []}, "RBACServiceABC.get_user_permissions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [61], "excluded_lines": []}, "JsonRBACService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [94, 96, 97, 99, 100, 101], "excluded_lines": []}, "JsonRBACService._load_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [113, 114, 118, 119, 121], "excluded_lines": []}, "JsonRBACService.has_role": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [133, 134, 136], "excluded_lines": []}, "JsonRBACService.has_permission": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [148, 149, 151, 152, 154, 155], "excluded_lines": []}, "JsonRBACService.get_user_permissions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [166, 167, 169, 170, 172, 173], "excluded_lines": []}, "get_rbac_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [191, 192, 193, 195, 196, 197, 198], "excluded_lines": []}, "set_rbac_service": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [210], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 11, 13, 15, 18, 19, 25, 26, 38, 39, 51, 52, 64, 65, 83, 103, 123, 138, 157, 177, 180, 201], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"RBACServiceABC": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [36, 49, 61], "excluded_lines": []}, "JsonRBACService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [94, 96, 97, 99, 100, 101, 113, 114, 118, 119, 121, 133, 134, 136, 148, 149, 151, 152, 154, 155, 166, 167, 169, 170, 172, 173], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 11, 13, 15, 18, 19, 25, 26, 38, 39, 51, 52, 64, 65, 83, 103, 123, 138, 157, 177, 180, 201], "summary": {"covered_lines": 23, "num_statements": 31, "percent_covered": 74.19354838709677, "percent_covered_display": "74", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 74.19354838709677, "percent_statements_covered_display": "74"}, "missing_lines": [191, 192, 193, 195, 196, 197, 198, 210], "excluded_lines": []}}}, "backend/app/core/security.py": {"executed_lines": [1, 2, 3, 5, 6, 8, 11, 12, 14, 17, 22, 27, 45], "summary": {"covered_lines": 13, "num_statements": 27, "percent_covered": 48.148148148148145, "percent_covered_display": "48", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 48.148148148148145, "percent_statements_covered_display": "48"}, "missing_lines": [19, 24, 31, 32, 34, 38, 39, 42, 47, 48, 51, 52, 53, 54], "excluded_lines": [], "functions": {"get_password_hash": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [19], "excluded_lines": []}, "verify_password": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [24], "excluded_lines": []}, "create_access_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [31, 32, 34, 38, 39, 42], "excluded_lines": []}, "decode_access_token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [47, 48, 51, 52, 53, 54], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 6, 8, 11, 12, 14, 17, 22, 27, 45], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 2, 3, 5, 6, 8, 11, 12, 14, 17, 22, 27, 45], "summary": {"covered_lines": 13, "num_statements": 27, "percent_covered": 48.148148148148145, "percent_covered_display": "48", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 48.148148148148145, "percent_statements_covered_display": "48"}, "missing_lines": [19, 24, 31, 32, 34, 38, 39, 42, 47, 48, 51, 52, 53, 54], "excluded_lines": []}}}, "backend/app/core/simple/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [3, 9, 11], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [3, 9, 11], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [3, 9, 11], "excluded_lines": []}}}, "backend/app/core/simple/commands.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 43, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 43, "excluded_lines": 3, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [9, 10, 11, 13, 15, 17, 20, 26, 28, 29, 37, 40, 41, 42, 44, 46, 47, 48, 49, 52, 55, 58, 59, 60, 62, 64, 65, 66, 67, 68, 69, 70, 73, 76, 77, 78, 80, 82, 83, 84, 85, 86, 87], "excluded_lines": [34, 35, 36], "functions": {"SimpleCommandABC.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34]}, "SimpleCreateCommand.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [41, 42], "excluded_lines": []}, "SimpleCreateCommand.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 47, 48, 49], "excluded_lines": []}, "SimpleUpdateCommand.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [58, 59, 60], "excluded_lines": []}, "SimpleUpdateCommand.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [64, 65, 66, 67, 68, 69, 70], "excluded_lines": []}, "SimpleDeleteCommand.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [77, 78], "excluded_lines": []}, "SimpleDeleteCommand.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [82, 83, 84, 85, 86, 87], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [9, 10, 11, 13, 15, 17, 20, 26, 28, 29, 37, 40, 44, 52, 55, 62, 73, 76, 80], "excluded_lines": [35, 36]}}, "classes": {"SimpleCommandABC": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34]}, "SimpleCreateCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [41, 42, 46, 47, 48, 49], "excluded_lines": []}, "SimpleUpdateCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [58, 59, 60, 64, 65, 66, 67, 68, 69, 70], "excluded_lines": []}, "SimpleDeleteCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [77, 78, 82, 83, 84, 85, 86, 87], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [9, 10, 11, 13, 15, 17, 20, 26, 28, 29, 37, 40, 44, 52, 55, 62, 73, 76, 80], "excluded_lines": [35, 36]}}}, "backend/app/core/simple/service.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 9, 10, 12, 17, 19, 22, 28, 29, 30, 32, 34, 36, 38, 39, 40, 42, 44, 45, 47, 49, 50, 52, 54, 55, 56, 57, 58], "excluded_lines": [], "functions": {"SimpleService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29, 30], "excluded_lines": []}, "SimpleService.get": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [34], "excluded_lines": []}, "SimpleService.list_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [38, 39, 40], "excluded_lines": []}, "SimpleService.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [44, 45], "excluded_lines": []}, "SimpleService.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [49, 50], "excluded_lines": []}, "SimpleService.delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [54, 55, 56, 57, 58], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 9, 10, 12, 17, 19, 22, 28, 32, 36, 42, 47, 52], "excluded_lines": []}}, "classes": {"SimpleService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29, 30, 34, 38, 39, 40, 44, 45, 49, 50, 54, 55, 56, 57, 58], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 9, 10, 12, 17, 19, 22, 28, 32, 36, 42, 47, 52], "excluded_lines": []}}}, "backend/app/core/uuid_utils.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 13, 16, 17, 18, 19, 20, 21, 24, 34, 46, 47, 52, 53, 56, 87, 88, 91, 100, 103, 112, 115, 124, 127, 136, 139, 148, 151, 160], "excluded_lines": [], "functions": {"get_entity_namespace": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 47, 52, 53], "excluded_lines": []}, "generate_entity_uuid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [87, 88], "excluded_lines": []}, "generate_project_uuid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [100], "excluded_lines": []}, "generate_wbe_uuid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [112], "excluded_lines": []}, "generate_cost_element_uuid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [124], "excluded_lines": []}, "generate_department_uuid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136], "excluded_lines": []}, "generate_cost_element_type_uuid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [148], "excluded_lines": []}, "generate_user_uuid": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [160], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 13, 16, 17, 18, 19, 20, 21, 24, 34, 56, 91, 103, 115, 127, 139, 151], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [10, 13, 16, 17, 18, 19, 20, 21, 24, 34, 46, 47, 52, 53, 56, 87, 88, 91, 100, 103, 112, 115, 124, 127, 136, 139, 148, 151, 160], "excluded_lines": []}}}, "backend/app/core/versioning/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/versioning/commands.py": {"executed_lines": [1, 10, 11, 12, 13, 15, 16, 17, 19, 20, 22, 30, 31, 36, 37, 39, 41, 44, 45, 46, 48, 49, 53, 56, 58, 59, 63, 64, 66, 68, 82, 84, 85, 86, 91, 96, 97, 102, 105, 106, 115, 126, 127, 130, 131, 133, 141, 142, 143, 145, 156, 158, 159, 160, 162, 167, 168, 173, 180, 181, 182, 195, 196, 197, 200, 201, 205, 206, 215, 218, 219, 220, 223, 224, 226, 234, 235, 236, 238, 249, 250, 255, 260, 261, 264, 271, 274, 278, 280, 283, 288, 289, 290, 292, 293, 295, 296, 298, 302, 303, 304, 306, 307, 308, 309, 314, 315, 317, 324, 336, 361, 362, 364, 374, 385, 1971, 1981, 1983, 1990, 4429, 4465, 4466, 4467], "summary": {"covered_lines": 110, "num_statements": 137, "percent_covered": 80.2919708029197, "percent_covered_display": "80", "missing_lines": 27, "excluded_lines": 2, "percent_statements_covered": 80.2919708029197, "percent_statements_covered_display": "80"}, "missing_lines": [60, 99, 183, 189, 192, 251, 272, 325, 328, 331, 332, 334, 338, 357, 358, 371, 372, 376, 377, 378, 380, 381, 382, 383, 389, 406, 407], "excluded_lines": [51, 52], "functions": {"VersionedCommandABC.__init__": {"executed_lines": [44, 45, 46], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "VersionedCommandABC.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [51]}, "VersionedCommandABC._root_field_name": {"executed_lines": [56, 58, 59, 63, 64, 66], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 85.71428571428571, "percent_statements_covered_display": "86"}, "missing_lines": [60], "excluded_lines": []}, "VersionedCommandABC._close_version": {"executed_lines": [82, 84, 85, 86, 91, 96, 97, 102, 105, 106, 115, 126, 127], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 92.85714285714286, "percent_statements_covered_display": "93"}, "missing_lines": [99], "excluded_lines": []}, "CreateVersionCommand.__init__": {"executed_lines": [141, 142, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CreateVersionCommand.execute": {"executed_lines": [156, 158, 159, 160, 162, 167, 168, 173, 180, 181, 182, 195, 196, 197, 200, 201, 205, 206, 215, 218, 219, 220], "summary": {"covered_lines": 22, "num_statements": 25, "percent_covered": 88.0, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 88.0, "percent_statements_covered_display": "88"}, "missing_lines": [183, 189, 192], "excluded_lines": []}, "UpdateVersionCommand.__init__": {"executed_lines": [234, 235, 236], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UpdateVersionCommand.execute": {"executed_lines": [249, 250, 255, 260, 261, 264, 271, 274, 278, 280, 283, 288, 289, 290, 292, 293, 295, 296, 298, 302, 303, 304, 306, 307, 308, 309, 314, 315, 317, 324], "summary": {"covered_lines": 30, "num_statements": 37, "percent_covered": 81.08108108108108, "percent_covered_display": "81", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 81.08108108108108, "percent_statements_covered_display": "81"}, "missing_lines": [251, 272, 325, 328, 331, 332, 334], "excluded_lines": []}, "UpdateVersionCommand._get_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [338, 357, 358], "excluded_lines": []}, "SoftDeleteCommand.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [371, 372], "excluded_lines": []}, "SoftDeleteCommand.execute": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [376, 377, 378, 380, 381, 382, 383], "excluded_lines": []}, "SoftDeleteCommand._get_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [389, 406, 407], "excluded_lines": []}, "": {"executed_lines": [1, 10, 11, 12, 13, 15, 16, 17, 19, 20, 22, 30, 31, 36, 37, 39, 41, 48, 49, 53, 68, 130, 131, 133, 145, 223, 224, 226, 238, 336, 361, 362, 364, 374, 385], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [52]}}, "classes": {"VersionedCommandABC": {"executed_lines": [44, 45, 46, 56, 58, 59, 63, 64, 66, 82, 84, 85, 86, 91, 96, 97, 102, 105, 106, 115, 126, 127], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 1, "percent_statements_covered": 91.66666666666667, "percent_statements_covered_display": "92"}, "missing_lines": [60, 99], "excluded_lines": [51]}, "CreateVersionCommand": {"executed_lines": [141, 142, 143, 156, 158, 159, 160, 162, 167, 168, 173, 180, 181, 182, 195, 196, 197, 200, 201, 205, 206, 215, 218, 219, 220], "summary": {"covered_lines": 25, "num_statements": 28, "percent_covered": 89.28571428571429, "percent_covered_display": "89", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 89.28571428571429, "percent_statements_covered_display": "89"}, "missing_lines": [183, 189, 192], "excluded_lines": []}, "UpdateVersionCommand": {"executed_lines": [234, 235, 236, 249, 250, 255, 260, 261, 264, 271, 274, 278, 280, 283, 288, 289, 290, 292, 293, 295, 296, 298, 302, 303, 304, 306, 307, 308, 309, 314, 315, 317, 324], "summary": {"covered_lines": 33, "num_statements": 43, "percent_covered": 76.74418604651163, "percent_covered_display": "77", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 76.74418604651163, "percent_statements_covered_display": "77"}, "missing_lines": [251, 272, 325, 328, 331, 332, 334, 338, 357, 358], "excluded_lines": []}, "SoftDeleteCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [371, 372, 376, 377, 378, 380, 381, 382, 383, 389, 406, 407], "excluded_lines": []}, "": {"executed_lines": [1, 10, 11, 12, 13, 15, 16, 17, 19, 20, 22, 30, 31, 36, 37, 39, 41, 48, 49, 53, 68, 130, 131, 133, 145, 223, 224, 226, 238, 336, 361, 362, 364, 374, 385], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [52]}}}, "backend/app/core/versioning/enums.py": {"executed_lines": [1, 3, 6, 7, 14, 15], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 6, 7, 14, 15], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BranchMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 6, 7, 14, 15], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/versioning/exceptions.py": {"executed_lines": [1, 4, 5, 17], "summary": {"covered_lines": 3, "num_statements": 12, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 25.0, "percent_statements_covered_display": "25"}, "missing_lines": [24, 25, 26, 27, 29, 30, 31, 32, 36], "excluded_lines": [], "functions": {"OverlappingVersionError.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [24, 25, 26, 27, 29, 30, 31, 32, 36], "excluded_lines": []}, "": {"executed_lines": [1, 4, 5, 17], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"OverlappingVersionError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [24, 25, 26, 27, 29, 30, 31, 32, 36], "excluded_lines": []}, "": {"executed_lines": [1, 4, 5, 17], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/core/versioning/service.py": {"executed_lines": [1, 7, 8, 9, 11, 12, 14, 16, 20, 21, 34, 35, 36, 38, 58, 62, 79, 114, 142, 199, 223, 259, 351, 393, 415, 453, 472, 486], "summary": {"covered_lines": 25, "num_statements": 131, "percent_covered": 19.083969465648856, "percent_covered_display": "19", "missing_lines": 106, "excluded_lines": 2, "percent_statements_covered": 19.083969465648856, "percent_statements_covered_display": "19"}, "missing_lines": [46, 48, 49, 50, 53, 54, 56, 60, 77, 90, 92, 95, 97, 111, 112, 120, 122, 124, 139, 140, 175, 178, 179, 182, 185, 186, 189, 192, 194, 197, 203, 205, 207, 212, 213, 217, 219, 220, 221, 236, 238, 239, 240, 245, 247, 289, 291, 294, 296, 299, 301, 302, 305, 307, 310, 313, 324, 336, 344, 346, 349, 364, 366, 367, 368, 373, 375, 397, 399, 402, 408, 409, 411, 412, 413, 423, 425, 428, 431, 432, 433, 435, 438, 441, 442, 444, 451, 461, 463, 470, 476, 478, 484, 488, 490, 493, 498, 501, 508, 521, 522, 523, 524, 526, 527, 529], "excluded_lines": [16, 17], "functions": {"TemporalService.__init__": {"executed_lines": [35, 36], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "TemporalService._get_root_field_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 48, 49, 50, 53, 54, 56], "excluded_lines": []}, "TemporalService.get_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [60], "excluded_lines": []}, "TemporalService.get_by_root_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [77], "excluded_lines": []}, "TemporalService.get_current_version": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [90, 92, 95, 97, 111, 112], "excluded_lines": []}, "TemporalService.get_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [120, 122, 124, 139, 140], "excluded_lines": []}, "TemporalService.get_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [175, 178, 179, 182, 185, 186, 189, 192, 194, 197], "excluded_lines": []}, "TemporalService._get_as_of_from_branch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [203, 205, 207, 212, 213, 217, 219, 220, 221], "excluded_lines": []}, "TemporalService._apply_bitemporal_filter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [236, 238, 239, 240, 245, 247], "excluded_lines": []}, "TemporalService._apply_branch_mode_filter": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [289, 291, 294, 296, 299, 301, 302, 305, 307, 310, 313, 324, 336, 344, 346, 349], "excluded_lines": []}, "TemporalService._apply_bitemporal_filter_for_time_travel": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [364, 366, 367, 368, 373, 375], "excluded_lines": []}, "TemporalService._is_deleted_on_branch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [397, 399, 402, 408, 409, 411, 412, 413], "excluded_lines": []}, "TemporalService.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [423, 425, 428, 431, 432, 433, 435, 438, 441, 442, 444, 451], "excluded_lines": []}, "TemporalService.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [461, 463, 470], "excluded_lines": []}, "TemporalService.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [476, 478, 484], "excluded_lines": []}, "TemporalService.get_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [488, 490, 493, 498, 501, 508, 521, 522, 523, 524, 526, 527, 529], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 11, 12, 14, 16, 20, 21, 34, 38, 58, 62, 79, 114, 142, 199, 223, 259, 351, 393, 415, 453, 472, 486], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [16, 17]}}, "classes": {"TemporalService": {"executed_lines": [35, 36], "summary": {"covered_lines": 2, "num_statements": 108, "percent_covered": 1.8518518518518519, "percent_covered_display": "2", "missing_lines": 106, "excluded_lines": 0, "percent_statements_covered": 1.8518518518518519, "percent_statements_covered_display": "2"}, "missing_lines": [46, 48, 49, 50, 53, 54, 56, 60, 77, 90, 92, 95, 97, 111, 112, 120, 122, 124, 139, 140, 175, 178, 179, 182, 185, 186, 189, 192, 194, 197, 203, 205, 207, 212, 213, 217, 219, 220, 221, 236, 238, 239, 240, 245, 247, 289, 291, 294, 296, 299, 301, 302, 305, 307, 310, 313, 324, 336, 344, 346, 349, 364, 366, 367, 368, 373, 375, 397, 399, 402, 408, 409, 411, 412, 413, 423, 425, 428, 431, 432, 433, 435, 438, 441, 442, 444, 451, 461, 463, 470, 476, 478, 484, 488, 490, 493, 498, 501, 508, 521, 522, 523, 524, 526, 527, 529], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 11, 12, 14, 16, 20, 21, 34, 38, 58, 62, 79, 114, 142, 199, 223, 259, 351, 393, 415, 453, 472, 486], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [16, 17]}}}, "backend/app/db/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/db/seed_context.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [9, 10, 11, 15, 18, 19, 46, 47, 48, 50, 53, 59], "excluded_lines": [20], "functions": {"seed_operation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [46, 47, 48, 50], "excluded_lines": [20]}, "is_seed_operation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [59], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [9, 10, 11, 15, 18, 19, 53], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [9, 10, 11, 15, 18, 19, 46, 47, 48, 50, 53, 59], "excluded_lines": [20]}}}, "backend/app/db/seeder.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 207, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 207, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 21, 24, 31, 33, 34, 36, 37, 39, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 74, 76, 77, 79, 80, 81, 83, 84, 85, 87, 88, 89, 91, 94, 95, 96, 97, 98, 101, 103, 104, 105, 106, 108, 109, 110, 112, 116, 122, 124, 125, 127, 128, 129, 131, 132, 133, 135, 136, 137, 139, 142, 143, 144, 147, 148, 151, 153, 154, 155, 156, 158, 159, 160, 162, 167, 173, 174, 176, 177, 179, 180, 181, 183, 184, 185, 188, 190, 192, 193, 194, 196, 199, 200, 201, 203, 204, 205, 207, 211, 217, 218, 220, 221, 223, 224, 225, 227, 228, 229, 231, 233, 235, 236, 237, 239, 240, 241, 242, 243, 249, 250, 251, 252, 254, 255, 256, 258, 262, 268, 269, 271, 272, 274, 275, 276, 279, 281, 282, 283, 285, 287, 290, 292, 293, 294, 296, 302, 305, 307, 308, 310, 311, 312, 314, 318, 324, 325, 327, 328, 330, 331, 332, 334, 336, 338, 340, 341, 343, 344, 345, 347, 348, 349, 350, 352, 353, 354, 356, 360, 366, 368, 370, 373, 376, 379, 382, 385, 390, 391, 393, 394, 395, 396], "excluded_lines": [], "functions": {"DataSeeder.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [31, 33, 34, 36, 37], "excluded_lines": []}, "DataSeeder.load_seed_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], "excluded_lines": []}, "DataSeeder.seed_users": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [74, 76, 77, 79, 80, 81, 83, 84, 85, 87, 88, 89, 91, 94, 95, 96, 97, 98, 101, 103, 104, 105, 106, 108, 109, 110, 112], "excluded_lines": []}, "DataSeeder.seed_departments": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [122, 124, 125, 127, 128, 129, 131, 132, 133, 135, 136, 137, 139, 142, 143, 144, 147, 148, 151, 153, 154, 155, 156, 158, 159, 160, 162], "excluded_lines": []}, "DataSeeder.seed_cost_element_types": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [173, 174, 176, 177, 179, 180, 181, 183, 184, 185, 188, 190, 192, 193, 194, 196, 199, 200, 201, 203, 204, 205, 207], "excluded_lines": []}, "DataSeeder.seed_projects": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [217, 218, 220, 221, 223, 224, 225, 227, 228, 229, 231, 233, 235, 236, 237, 239, 240, 241, 242, 243, 249, 250, 251, 252, 254, 255, 256, 258], "excluded_lines": []}, "DataSeeder.seed_wbes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [268, 269, 271, 272, 274, 275, 276, 279, 281, 282, 283, 285, 287, 290, 292, 293, 294, 296, 302, 305, 307, 308, 310, 311, 312, 314], "excluded_lines": []}, "DataSeeder.seed_cost_elements": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [324, 325, 327, 328, 330, 331, 332, 334, 336, 338, 340, 341, 343, 344, 345, 347, 348, 349, 350, 352, 353, 354, 356], "excluded_lines": []}, "DataSeeder.seed_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [366, 368, 370, 373, 376, 379, 382, 385, 390, 391, 393, 394, 395, 396], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 21, 24, 39, 68, 116, 167, 211, 262, 318, 360], "excluded_lines": []}}, "classes": {"DataSeeder": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 187, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 187, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [31, 33, 34, 36, 37, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 74, 76, 77, 79, 80, 81, 83, 84, 85, 87, 88, 89, 91, 94, 95, 96, 97, 98, 101, 103, 104, 105, 106, 108, 109, 110, 112, 122, 124, 125, 127, 128, 129, 131, 132, 133, 135, 136, 137, 139, 142, 143, 144, 147, 148, 151, 153, 154, 155, 156, 158, 159, 160, 162, 173, 174, 176, 177, 179, 180, 181, 183, 184, 185, 188, 190, 192, 193, 194, 196, 199, 200, 201, 203, 204, 205, 207, 217, 218, 220, 221, 223, 224, 225, 227, 228, 229, 231, 233, 235, 236, 237, 239, 240, 241, 242, 243, 249, 250, 251, 252, 254, 255, 256, 258, 268, 269, 271, 272, 274, 275, 276, 279, 281, 282, 283, 285, 287, 290, 292, 293, 294, 296, 302, 305, 307, 308, 310, 311, 312, 314, 324, 325, 327, 328, 330, 331, 332, 334, 336, 338, 340, 341, 343, 344, 345, 347, 348, 349, 350, 352, 353, 354, 356, 366, 368, 370, 373, 376, 379, 382, 385, 390, 391, 393, 394, 395, 396], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 21, 24, 39, 68, 116, 167, 211, 262, 318, 360], "excluded_lines": []}}}, "backend/app/db/session.py": {"executed_lines": [1, 3, 9, 11, 19, 28], "summary": {"covered_lines": 6, "num_statements": 14, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [29, 30, 31, 32, 33, 34, 35, 37], "excluded_lines": [], "functions": {"get_db": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [29, 30, 31, 32, 33, 34, 35, 37], "excluded_lines": []}, "": {"executed_lines": [1, 3, 9, 11, 19, 28], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 9, 11, 19, 28], "summary": {"covered_lines": 6, "num_statements": 14, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 42.857142857142854, "percent_statements_covered_display": "43"}, "missing_lines": [29, 30, 31, 32, 33, 34, 35, 37], "excluded_lines": []}}}, "backend/app/main.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 28, 29, 30, 31, 33, 39, 40, 49, 57, 69, 70, 78, 79, 94, 95, 121, 122, 126, 127, 128, 133, 138, 143, 148, 153, 158, 163, 168, 173], "summary": {"covered_lines": 38, "num_statements": 49, "percent_covered": 77.55102040816327, "percent_covered_display": "78", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 77.55102040816327, "percent_statements_covered_display": "78"}, "missing_lines": [42, 45, 72, 83, 99, 101, 102, 103, 104, 112, 123], "excluded_lines": [], "functions": {"lifespan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [42, 45], "excluded_lines": []}, "filter_exception_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [72], "excluded_lines": []}, "branch_locked_exception_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [83], "excluded_lines": []}, "validation_exception_handler": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [99, 101, 102, 103, 104, 112], "excluded_lines": []}, "root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [123], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 28, 29, 30, 31, 33, 39, 40, 49, 57, 69, 70, 78, 79, 94, 95, 121, 122, 126, 127, 128, 133, 138, 143, 148, 153, 158, 163, 168, 173], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 28, 29, 30, 31, 33, 39, 40, 49, 57, 69, 70, 78, 79, 94, 95, 121, 122, 126, 127, 128, 133, 138, 143, 148, 153, 158, 163, 168, 173], "summary": {"covered_lines": 38, "num_statements": 49, "percent_covered": 77.55102040816327, "percent_covered_display": "78", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 77.55102040816327, "percent_statements_covered_display": "78"}, "missing_lines": [42, 45, 72, 83, 99, 101, 102, 103, 104, 112, 123], "excluded_lines": []}}}, "backend/app/models/domain/branch.py": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 15, 18, 19, 32, 35, 36, 46, 47, 50, 53, 54, 59, 63], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95"}, "missing_lines": [64], "excluded_lines": [], "functions": {"Branch.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [64], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 15, 18, 19, 32, 35, 36, 46, 47, 50, 53, 54, 59, 63], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Branch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [64], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 15, 18, 19, 32, 35, 36, 46, 47, 50, 53, 54, 59, 63], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/domain/change_order.py": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 14, 16, 17, 20, 21, 40, 43, 47, 50, 53, 54, 55, 56, 61, 64, 78, 79, 88], "summary": {"covered_lines": 23, "num_statements": 29, "percent_covered": 79.3103448275862, "percent_covered_display": "79", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 79.3103448275862, "percent_statements_covered_display": "79"}, "missing_lines": [81, 83, 84, 85, 86, 89], "excluded_lines": [], "functions": {"ChangeOrder.created_at": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [81, 83, 84, 85, 86], "excluded_lines": []}, "ChangeOrder.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [89], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 14, 16, 17, 20, 21, 40, 43, 47, 50, 53, 54, 55, 56, 61, 64, 78, 79, 88], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ChangeOrder": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [81, 83, 84, 85, 86, 89], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 14, 16, 17, 20, 21, 40, 43, 47, 50, 53, 54, 55, 56, 61, 64, 78, 79, 88], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/domain/change_order_audit_log.py": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 34, 37, 40, 43, 48, 53, 54, 60], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94"}, "missing_lines": [61], "excluded_lines": [], "functions": {"ChangeOrderAuditLog.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [61], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 34, 37, 40, 43, 48, 53, 54, 60], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ChangeOrderAuditLog": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [61], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 13, 14, 16, 19, 20, 34, 37, 40, 43, 48, 53, 54, 60], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/domain/cost_element.py": {"executed_lines": [1, 7, 8, 9, 11, 12, 13, 15, 16, 18, 22, 23, 52, 55, 58, 64, 72, 73, 76, 84, 95, 103, 111], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [112], "excluded_lines": [18, 19], "functions": {"CostElement.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [112], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 11, 12, 13, 15, 16, 18, 22, 23, 52, 55, 58, 64, 72, 73, 76, 84, 95, 103, 111], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [18, 19]}}, "classes": {"CostElement": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [112], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 11, 12, 13, 15, 16, 18, 22, 23, 52, 55, 58, 64, 72, 73, 76, 84, 95, 103, 111], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [18, 19]}}}, "backend/app/models/domain/cost_element_type.py": {"executed_lines": [1, 7, 8, 10, 11, 12, 14, 15, 17, 21, 22, 46, 49, 54, 62, 63, 66, 75, 76], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [17, 18], "functions": {"CostElementType.__repr__": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 14, 15, 17, 21, 22, 46, 49, 54, 62, 63, 66, 75], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [17, 18]}}, "classes": {"CostElementType": {"executed_lines": [76], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 14, 15, 17, 21, 22, 46, 49, 54, 62, 63, 66, 75], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [17, 18]}}}, "backend/app/models/domain/cost_registration.py": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 16, 17, 19, 23, 24, 50, 53, 58, 66, 71, 76, 79, 84, 85, 86, 97], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 95.45454545454545, "percent_statements_covered_display": "95"}, "missing_lines": [98], "excluded_lines": [19, 20], "functions": {"CostRegistration.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [98], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 16, 17, 19, 23, 24, 50, 53, 58, 66, 71, 76, 79, 84, 85, 86, 97], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [19, 20]}}, "classes": {"CostRegistration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [98], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 16, 17, 19, 23, 24, 50, 53, 58, 66, 71, 76, 79, 84, 85, 86, 97], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [19, 20]}}}, "backend/app/models/domain/department.py": {"executed_lines": [1, 7, 8, 10, 11, 12, 14, 15, 17, 21, 22, 34, 37, 40, 43, 44, 47, 48, 56, 60, 61], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [17, 18], "functions": {"Department.__repr__": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 14, 15, 17, 21, 22, 34, 37, 40, 43, 44, 47, 48, 56, 60], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [17, 18]}}, "classes": {"Department": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 11, 12, 14, 15, 17, 21, 22, 34, 37, 40, 43, 44, 47, 48, 56, 60], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [17, 18]}}}, "backend/app/models/domain/forecast.py": {"executed_lines": [1, 13, 14, 15, 16, 18, 19, 20, 22, 23, 25, 29, 30, 49, 52, 55, 60, 63, 66, 80], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 94.44444444444444, "percent_statements_covered_display": "94"}, "missing_lines": [81], "excluded_lines": [25, 26], "functions": {"Forecast.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [81], "excluded_lines": []}, "": {"executed_lines": [1, 13, 14, 15, 16, 18, 19, 20, 22, 23, 25, 29, 30, 49, 52, 55, 60, 63, 66, 80], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [25, 26]}}, "classes": {"Forecast": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [81], "excluded_lines": []}, "": {"executed_lines": [1, 13, 14, 15, 16, 18, 19, 20, 22, 23, 25, 29, 30, 49, 52, 55, 60, 63, 66, 80], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [25, 26]}}}, "backend/app/models/domain/progress_entry.py": {"executed_lines": [1, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 24, 25, 48, 51, 56, 64, 69, 74, 79, 90], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 94.73684210526316, "percent_statements_covered_display": "95"}, "missing_lines": [91], "excluded_lines": [20, 21], "functions": {"ProgressEntry.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [91], "excluded_lines": []}, "": {"executed_lines": [1, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 24, 25, 48, 51, 56, 64, 69, 74, 79, 90], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [20, 21]}}, "classes": {"ProgressEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [91], "excluded_lines": []}, "": {"executed_lines": [1, 8, 9, 10, 11, 13, 14, 15, 17, 18, 20, 24, 25, 48, 51, 56, 64, 69, 74, 79, 90], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [20, 21]}}}, "backend/app/models/domain/project.py": {"executed_lines": [1, 7, 8, 9, 11, 12, 13, 14, 16, 17, 20, 21, 34, 37, 40, 41, 44, 45, 50, 53, 56, 60, 70, 71], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"Project.__repr__": {"executed_lines": [71], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 11, 12, 13, 14, 16, 17, 20, 21, 34, 37, 40, 41, 44, 45, 50, 53, 56, 60, 70], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Project": {"executed_lines": [71], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 11, 12, 13, 14, 16, 17, 20, 21, 34, 37, 40, 41, 44, 45, 50, 53, 56, 60, 70], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/domain/schedule_baseline.py": {"executed_lines": [1, 15, 16, 17, 19, 20, 21, 22, 24, 25, 30, 35, 44, 45, 74, 77, 84, 93, 96, 101, 108, 115, 129], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 95.23809523809524, "percent_statements_covered_display": "95"}, "missing_lines": [130], "excluded_lines": [30, 31], "functions": {"ScheduleBaseline.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [130], "excluded_lines": []}, "": {"executed_lines": [1, 15, 16, 17, 19, 20, 21, 22, 24, 25, 30, 35, 44, 45, 74, 77, 84, 93, 96, 101, 108, 115, 129], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [30, 31]}}, "classes": {"ScheduleBaseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [130], "excluded_lines": []}, "": {"executed_lines": [1, 15, 16, 17, 19, 20, 21, 22, 24, 25, 30, 35, 44, 45, 74, 77, 84, 93, 96, 101, 108, 115, 129], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [30, 31]}}}, "backend/app/models/domain/user.py": {"executed_lines": [1, 6, 7, 8, 10, 11, 12, 13, 15, 16, 18, 25, 26, 37, 40, 43, 46, 47, 52, 53, 54, 55, 58, 67], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 2, "percent_statements_covered": 95.45454545454545, "percent_statements_covered_display": "95"}, "missing_lines": [68], "excluded_lines": [18, 19], "functions": {"User.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 12, 13, 15, 16, 18, 25, 26, 37, 40, 43, 46, 47, 52, 53, 54, 55, 58, 67], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [18, 19]}}, "classes": {"User": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 12, 13, 15, 16, 18, 25, 26, 37, 40, 43, 46, 47, 52, 53, 54, 55, 58, 67], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [18, 19]}}}, "backend/app/models/domain/wbe.py": {"executed_lines": [1, 7, 10, 11, 13, 14, 15, 17, 18, 20, 24, 25, 40, 43, 46, 54, 61, 62, 65, 68, 69, 87, 88], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [20, 21], "functions": {"WBE.__repr__": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 10, 11, 13, 14, 15, 17, 18, 20, 24, 25, 40, 43, 46, 54, 61, 62, 65, 68, 69, 87], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [20, 21]}}, "classes": {"WBE": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 10, 11, 13, 14, 15, 17, 18, 20, 24, 25, 40, 43, 46, 54, 61, 62, 65, 68, 69, 87], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [20, 21]}}}, "backend/app/models/mixins.py": {"executed_lines": [1, 8, 9, 10, 12, 13, 14, 15, 18, 19, 29, 35, 41, 46, 47, 49, 50, 52, 54, 58, 62, 64, 65, 66, 67, 68, 69, 72, 73, 83, 84, 85, 87, 88], "summary": {"covered_lines": 31, "num_statements": 34, "percent_covered": 91.17647058823529, "percent_covered_display": "91", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 91.17647058823529, "percent_statements_covered_display": "91"}, "missing_lines": [56, 60, 90], "excluded_lines": [], "functions": {"VersionableMixin.is_deleted": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "VersionableMixin.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [56], "excluded_lines": []}, "VersionableMixin.undelete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [60], "excluded_lines": []}, "VersionableMixin.clone": {"executed_lines": [64, 65, 66, 67, 68, 69], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "BranchableMixin.is_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [90], "excluded_lines": []}, "": {"executed_lines": [1, 8, 9, 10, 12, 13, 14, 15, 18, 19, 29, 35, 41, 46, 47, 49, 50, 54, 58, 62, 72, 73, 83, 84, 85, 87, 88], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"VersionableMixin": {"executed_lines": [52, 64, 65, 66, 67, 68, 69], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 77.77777777777777, "percent_statements_covered_display": "78"}, "missing_lines": [56, 60], "excluded_lines": []}, "BranchableMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [90], "excluded_lines": []}, "": {"executed_lines": [1, 8, 9, 10, 12, 13, 14, 15, 18, 19, 29, 35, 41, 46, 47, 49, 50, 54, 58, 62, 72, 73, 83, 84, 85, 87, 88], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/protocols.py": {"executed_lines": [1, 12, 13, 14, 27, 28, 30, 31, 33, 34, 42, 43, 44, 46, 54, 55, 56, 61, 62, 70, 71, 72, 78, 79, 80, 81, 82, 84, 85, 89, 93, 97, 107, 108, 109, 115, 116, 117, 119, 120], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 12, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [87, 88, 91, 92, 95, 96, 99, 100, 101, 102, 122, 123], "functions": {"VersionableProtocol.is_deleted": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [87]}, "VersionableProtocol.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [91]}, "VersionableProtocol.undelete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [95]}, "VersionableProtocol.clone": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [99]}, "BranchableProtocol.is_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [122]}, "": {"executed_lines": [1, 12, 13, 14, 27, 28, 30, 31, 33, 34, 42, 43, 44, 46, 54, 55, 56, 61, 62, 70, 71, 72, 78, 79, 80, 81, 82, 84, 85, 89, 93, 97, 107, 108, 109, 115, 116, 117, 119, 120], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [88, 92, 96, 100, 101, 102]}}, "classes": {"EntityProtocol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "SimpleEntityProtocol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "VersionableProtocol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [87, 91, 95, 99]}, "BranchableProtocol": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [122]}, "": {"executed_lines": [1, 12, 13, 14, 27, 28, 30, 31, 33, 34, 42, 43, 44, 46, 54, 55, 56, 61, 62, 70, 71, 72, 78, 79, 80, 81, 82, 84, 85, 89, 93, 97, 107, 108, 109, 115, 116, 117, 119, 120], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 6, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [88, 92, 96, 100, 101, 102]}}}, "backend/app/models/schemas/__init__.py": {"executed_lines": [1, 3, 15], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 15], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 15], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/branch.py": {"executed_lines": [1, 2, 4, 7, 8, 10, 11, 12, 15, 18, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 2, 4, 7, 8, 10, 11, 12, 15, 18, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BranchPublic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 4, 7, 8, 10, 11, 12, 15, 18, 21], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/change_order.py": {"executed_lines": [1, 7, 8, 10, 12, 15, 16, 18, 24, 25, 26, 27, 28, 31, 34, 35, 42, 47, 48, 56, 57, 58, 59, 60, 61, 62, 65, 68, 74, 75, 80, 84, 90, 91, 93, 95, 96, 97, 98, 102, 103, 104, 105, 106, 109, 113, 117, 124], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 7, 8, 10, 12, 15, 16, 18, 24, 25, 26, 27, 28, 31, 34, 35, 42, 47, 48, 56, 57, 58, 59, 60, 61, 62, 65, 68, 74, 75, 80, 84, 90, 91, 93, 95, 96, 97, 98, 102, 103, 104, 105, 106, 109, 113, 117, 124], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ChangeOrderBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ChangeOrderCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ChangeOrderUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "MergeRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ChangeOrderPublic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 12, 15, 16, 18, 24, 25, 26, 27, 28, 31, 34, 35, 42, 47, 48, 56, 57, 58, 59, 60, 61, 62, 65, 68, 74, 75, 80, 84, 90, 91, 93, 95, 96, 97, 98, 102, 103, 104, 105, 106, 109, 113, 117, 124], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/common.py": {"executed_lines": [1, 3, 5, 7, 10, 11, 34, 35, 36, 37, 39, 40, 46], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 78.57142857142857, "percent_statements_covered_display": "79"}, "missing_lines": [42, 43, 44], "excluded_lines": [], "functions": {"PaginatedResponse.pages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [42, 43, 44], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 7, 10, 11, 34, 35, 36, 37, 39, 40, 46], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"PaginatedResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [42, 43, 44], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 7, 10, 11, 34, 35, 36, 37, 39, 40, 46], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/cost_element.py": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 19, 20, 22, 27, 28, 29, 33, 38, 39, 41, 42, 43, 44, 45, 46, 49, 54, 55, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 74, 75, 79, 80, 82, 83, 84, 85], "summary": {"covered_lines": 46, "num_statements": 47, "percent_covered": 97.87234042553192, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.87234042553192, "percent_statements_covered_display": "98"}, "missing_lines": [76], "excluded_lines": [], "functions": {"CostElementRead.convert_range_to_str": {"executed_lines": [74, 75], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [76], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 19, 20, 22, 27, 28, 29, 33, 38, 39, 41, 42, 43, 44, 45, 46, 49, 54, 55, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 79, 80, 82, 83, 84, 85], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CostElementBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementRead": {"executed_lines": [74, 75], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [76], "excluded_lines": []}, "CostElementReadWithType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 19, 20, 22, 27, 28, 29, 33, 38, 39, 41, 42, 43, 44, 45, 46, 49, 54, 55, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 79, 80, 82, 83, 84, 85], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/cost_element_type.py": {"executed_lines": [1, 3, 5, 8, 9, 11, 12, 13, 16, 17, 19, 24, 27, 28, 30, 31, 32, 33, 36, 37, 39, 41, 42, 43, 44], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5, 8, 9, 11, 12, 13, 16, 17, 19, 24, 27, 28, 30, 31, 32, 33, 36, 37, 39, 41, 42, 43, 44], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CostElementTypeBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementTypeCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementTypeUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementTypeRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 8, 9, 11, 12, 13, 16, 17, 19, 24, 27, 28, 30, 31, 32, 33, 36, 37, 39, 41, 42, 43, 44], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/cost_registration.py": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 16, 22, 27, 31, 34, 37, 42, 43, 45, 50, 51, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 71, 72, 74, 76, 77, 78, 79], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 16, 22, 27, 31, 34, 37, 42, 43, 45, 50, 51, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 71, 72, 74, 76, 77, 78, 79], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CostRegistrationBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostRegistrationCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostRegistrationUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostRegistrationRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 16, 22, 27, 31, 34, 37, 42, 43, 45, 50, 51, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 71, 72, 74, 76, 77, 78, 79], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/department.py": {"executed_lines": [1, 2, 3, 5, 7, 11, 12, 13, 14, 15, 20, 21, 26, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 54, 58], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [7, 8], "functions": {"": {"executed_lines": [1, 2, 3, 5, 7, 11, 12, 13, 14, 15, 20, 21, 26, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 54, 58], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [7, 8]}}, "classes": {"DepartmentBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "DepartmentCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "DepartmentUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "DepartmentRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 7, 11, 12, 13, 14, 15, 20, 21, 26, 34, 35, 36, 37, 38, 39, 42, 43, 45, 46, 47, 48, 49, 50, 51, 52, 54, 58], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [7, 8]}}}, "backend/app/models/schemas/evm.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 46, 49, 52, 55, 56, 61, 64, 69, 72, 77, 78, 81, 84, 87, 90], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 46, 49, 52, 55, 56, 61, 64, 69, 72, 77, 78, 81, 84, 87, 90], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EVMMetricsRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 46, 49, 52, 55, 56, 61, 64, 69, 72, 77, 78, 81, 84, 87, 90], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/forecast.py": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 16, 21, 22, 24, 29, 33, 38, 39, 41, 42, 43, 44, 45, 48, 53, 54, 56, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 80, 81, 88, 90, 91, 94, 95, 98, 99], "summary": {"covered_lines": 43, "num_statements": 46, "percent_covered": 93.47826086956522, "percent_covered_display": "93", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 93.47826086956522, "percent_statements_covered_display": "93"}, "missing_lines": [75, 76, 77], "excluded_lines": [], "functions": {"ForecastRead.convert_range_to_str": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [75, 76, 77], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 16, 21, 22, 24, 29, 33, 38, 39, 41, 42, 43, 44, 45, 48, 53, 54, 56, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 80, 81, 88, 90, 91, 94, 95, 98, 99], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ForecastBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ForecastCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ForecastUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ForecastRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [75, 76, 77], "excluded_lines": []}, "ForecastComparison": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 16, 21, 22, 24, 29, 33, 38, 39, 41, 42, 43, 44, 45, 48, 53, 54, 56, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 74, 80, 81, 88, 90, 91, 94, 95, 98, 99], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/impact_analysis.py": {"executed_lines": [1, 14, 15, 16, 17, 19, 22, 25, 26, 28, 30, 34, 38, 42, 48, 49, 51, 53, 54, 55, 56, 63, 64, 66, 68, 69, 70, 72, 76, 80, 86, 87, 89, 91, 95, 99, 105, 106, 108, 110, 111, 112, 118, 119, 121, 123, 124, 128, 134, 135, 137, 139, 140, 146, 147, 149, 151, 152, 155, 156, 157, 158, 162], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 14, 15, 16, 17, 19, 22, 25, 26, 28, 30, 34, 38, 42, 48, 49, 51, 53, 54, 55, 56, 63, 64, 66, 68, 69, 70, 72, 76, 80, 86, 87, 89, 91, 95, 99, 105, 106, 108, 110, 111, 112, 118, 119, 121, 123, 124, 128, 134, 135, 137, 139, 140, 146, 147, 149, 151, 152, 155, 156, 157, 158, 162], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"KPIMetric": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "KPIScorecard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "EntityChange": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "EntityChanges": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "WaterfallSegment": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "TimeSeriesPoint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "TimeSeriesData": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ImpactAnalysisResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 14, 15, 16, 17, 19, 22, 25, 26, 28, 30, 34, 38, 42, 48, 49, 51, 53, 54, 55, 56, 63, 64, 66, 68, 69, 70, 72, 76, 80, 86, 87, 89, 91, 95, 99, 105, 106, 108, 110, 111, 112, 118, 119, 121, 123, 124, 128, 134, 135, 137, 139, 140, 146, 147, 149, 151, 152, 155, 156, 157, 158, 162], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/preference.py": {"executed_lines": [1, 3, 6, 7, 14, 19, 22, 23, 26, 31, 32, 37, 40, 41, 44], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 6, 7, 14, 19, 22, 23, 26, 31, 32, 37, 40, 41, 44], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"UserPreferenceBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UserPreferenceCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UserPreferenceUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UserPreferenceResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 6, 7, 14, 19, 22, 23, 26, 31, 32, 37, 40, 41, 44], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/progress_entry.py": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 20, 24, 29, 30, 31, 38, 39, 41, 46, 49, 54, 55, 57, 63, 64, 67, 68, 70, 72, 73, 74, 75, 76], "summary": {"covered_lines": 26, "num_statements": 29, "percent_covered": 89.65517241379311, "percent_covered_display": "90", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 89.65517241379311, "percent_statements_covered_display": "90"}, "missing_lines": [33, 34, 35], "excluded_lines": [], "functions": {"ProgressEntryBase.validate_progress_percentage": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [33, 34, 35], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 20, 24, 29, 30, 31, 38, 39, 41, 46, 49, 54, 55, 57, 63, 64, 67, 68, 70, 72, 73, 74, 75, 76], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ProgressEntryBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [33, 34, 35], "excluded_lines": []}, "ProgressEntryCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ProgressEntryUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ProgressEntryRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 20, 24, 29, 30, 31, 38, 39, 41, 46, 49, 54, 55, 57, 63, 64, 67, 68, 70, 72, 73, 74, 75, 76], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/project.py": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 26, 31, 35, 40, 41, 43, 44, 45, 46, 47, 48, 49, 52, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73, 74, 77, 81], "summary": {"covered_lines": 43, "num_statements": 44, "percent_covered": 97.72727272727273, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 97.72727272727273, "percent_statements_covered_display": "98"}, "missing_lines": [75], "excluded_lines": [], "functions": {"ProjectRead.convert_range_to_str": {"executed_lines": [73, 74], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [75], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 26, 31, 35, 40, 41, 43, 44, 45, 46, 47, 48, 49, 52, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 77, 81], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ProjectBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ProjectCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ProjectUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ProjectRead": {"executed_lines": [73, 74], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [75], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 26, 31, 35, 40, 41, 43, 44, 45, 46, 47, 48, 49, 52, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, 77, 81], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/schedule_baseline.py": {"executed_lines": [1, 3, 4, 6, 9, 10, 12, 13, 14, 17, 24, 25, 27, 28, 29, 30, 34, 39, 40, 46, 51, 55, 60, 61, 63, 64, 65, 66, 67, 68, 69, 74, 75, 77, 79, 80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6, 9, 10, 12, 13, 14, 17, 24, 25, 27, 28, 29, 30, 34, 39, 40, 46, 51, 55, 60, 61, 63, 64, 65, 66, 67, 68, 69, 74, 75, 77, 79, 80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ProgressionType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ScheduleBaselineBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ScheduleBaselineCreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ScheduleBaselineUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ScheduleBaselineRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 9, 10, 12, 13, 14, 17, 24, 25, 27, 28, 29, 30, 34, 39, 40, 46, 51, 55, 60, 61, 63, 64, 65, 66, 67, 68, 69, 74, 75, 77, 79, 80, 81, 82, 83, 84, 85], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/models/schemas/user.py": {"executed_lines": [1, 2, 3, 5, 7, 12, 22, 28, 29, 31, 32, 33, 34, 38, 39, 41, 46, 52, 53, 55, 56, 57, 58, 59, 63, 64, 66, 67, 68, 69, 70, 71, 73, 77, 78, 80, 81, 82, 83, 84, 85, 86, 91, 93, 94, 117, 118, 120, 123, 126, 127, 128, 130, 134, 135, 137, 138, 142, 143, 145, 146, 149, 150, 152], "summary": {"covered_lines": 54, "num_statements": 61, "percent_covered": 88.52459016393442, "percent_covered_display": "89", "missing_lines": 7, "excluded_lines": 3, "percent_statements_covered": 88.52459016393442, "percent_statements_covered_display": "89"}, "missing_lines": [14, 15, 16, 17, 18, 104, 105], "excluded_lines": [7, 8, 9], "functions": {"convert_range_to_list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [14, 15, 16, 17, 18], "excluded_lines": []}, "UserPublic.from_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [104, 105], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 7, 12, 22, 28, 29, 31, 32, 33, 34, 38, 39, 41, 46, 52, 53, 55, 56, 57, 58, 59, 63, 64, 66, 67, 68, 69, 70, 71, 73, 77, 78, 80, 81, 82, 83, 84, 85, 86, 91, 93, 94, 117, 118, 120, 123, 126, 127, 128, 130, 134, 135, 137, 138, 142, 143, 145, 146, 149, 150, 152], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [7, 8, 9]}}, "classes": {"UserBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UserRegister": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UserUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UserRead": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UserPublic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [104, 105], "excluded_lines": []}, "UserHistory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "UserLogin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "Token": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "TokenPayload": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 5, 7, 12, 22, 28, 29, 31, 32, 33, 34, 38, 39, 41, 46, 52, 53, 55, 56, 57, 58, 59, 63, 64, 66, 67, 68, 69, 70, 71, 73, 77, 78, 80, 81, 82, 83, 84, 85, 86, 91, 93, 94, 117, 118, 120, 123, 126, 127, 128, 130, 134, 135, 137, 138, 142, 143, 145, 146, 149, 150, 152], "summary": {"covered_lines": 54, "num_statements": 59, "percent_covered": 91.52542372881356, "percent_covered_display": "92", "missing_lines": 5, "excluded_lines": 3, "percent_statements_covered": 91.52542372881356, "percent_statements_covered_display": "92"}, "missing_lines": [14, 15, 16, 17, 18], "excluded_lines": [7, 8, 9]}}}, "backend/app/models/schemas/wbe.py": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 19, 20, 21, 24, 25, 27, 32, 36, 41, 42, 44, 45, 46, 47, 48, 49, 52, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 74, 75, 78, 82, 83, 85, 86, 87, 88, 91, 92, 94, 95, 96, 97, 100, 101, 103, 104, 111], "summary": {"covered_lines": 55, "num_statements": 56, "percent_covered": 98.21428571428571, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 98.21428571428571, "percent_statements_covered_display": "98"}, "missing_lines": [76], "excluded_lines": [], "functions": {"WBERead.convert_range_to_str": {"executed_lines": [74, 75], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [76], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 19, 20, 21, 24, 25, 27, 32, 36, 41, 42, 44, 45, 46, 47, 48, 49, 52, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 78, 82, 83, 85, 86, 87, 88, 91, 92, 94, 95, 96, 97, 100, 101, 103, 104, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"WBEBase": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "WBECreate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "WBEUpdate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "WBERead": {"executed_lines": [74, 75], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [76], "excluded_lines": []}, "ProjectBreadcrumbItem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "WBEBreadcrumbItem": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "WBEBreadcrumb": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 10, 11, 13, 14, 15, 16, 19, 20, 21, 24, 25, 27, 32, 36, 41, 42, 44, 45, 46, 47, 48, 49, 52, 57, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 78, 82, 83, 85, 86, 87, 88, 91, 92, 94, 95, 96, 97, 100, 101, 103, 104, 111], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/__init__.py": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/auth.py": {"executed_lines": [1, 6, 8, 10, 11, 12, 13, 16, 17, 19, 22, 34], "summary": {"covered_lines": 10, "num_statements": 20, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 50.0, "percent_statements_covered_display": "50"}, "missing_lines": [20, 24, 26, 27, 29, 30, 32, 36, 37, 40], "excluded_lines": [], "functions": {"AuthService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [20], "excluded_lines": []}, "AuthService.authenticate_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [24, 26, 27, 29, 30, 32], "excluded_lines": []}, "AuthService.create_access_token_for_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [36, 37, 40], "excluded_lines": []}, "": {"executed_lines": [1, 6, 8, 10, 11, 12, 13, 16, 17, 19, 22, 34], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AuthService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [20, 24, 26, 27, 29, 30, 32, 36, 37, 40], "excluded_lines": []}, "": {"executed_lines": [1, 6, 8, 10, 11, 12, 13, 16, 17, 19, 22, 34], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/branch_service.py": {"executed_lines": [1, 3, 5, 6, 7, 9, 12, 13, 21, 29, 48, 67], "summary": {"covered_lines": 10, "num_statements": 27, "percent_covered": 37.03703703703704, "percent_covered_display": "37", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 37.03703703703704, "percent_statements_covered_display": "37"}, "missing_lines": [27, 42, 43, 44, 45, 46, 61, 62, 63, 64, 65, 80, 85, 86, 88, 89, 93], "excluded_lines": [], "functions": {"BranchService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [27], "excluded_lines": []}, "BranchService.lock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [42, 43, 44, 45, 46], "excluded_lines": []}, "BranchService.unlock": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [61, 62, 63, 64, 65], "excluded_lines": []}, "BranchService.get_by_name_and_project": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [80, 85, 86, 88, 89, 93], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 9, 12, 13, 21, 29, 48, 67], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BranchService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [27, 42, 43, 44, 45, 46, 61, 62, 63, 64, 65, 80, 85, 86, 88, 89, 93], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 9, 12, 13, 21, 29, 48, 67], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/change_order_service.py": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 46, 51, 81, 116, 188, 396, 425, 528, 555, 607, 629], "summary": {"covered_lines": 27, "num_statements": 165, "percent_covered": 16.363636363636363, "percent_covered_display": "16", "missing_lines": 138, "excluded_lines": 2, "percent_statements_covered": 16.363636363636363, "percent_statements_covered_display": "16"}, "missing_lines": [47, 48, 49, 63, 76, 77, 79, 104, 106, 114, 140, 141, 142, 143, 148, 151, 154, 157, 166, 170, 172, 179, 182, 183, 184, 186, 218, 222, 226, 238, 239, 241, 242, 247, 248, 249, 254, 257, 260, 272, 273, 276, 279, 281, 293, 294, 296, 297, 302, 304, 312, 313, 316, 319, 320, 323, 324, 325, 326, 331, 334, 335, 339, 340, 346, 348, 349, 351, 352, 353, 356, 365, 367, 374, 377, 378, 379, 383, 386, 391, 392, 394, 418, 453, 455, 457, 460, 466, 467, 470, 477, 478, 479, 487, 489, 491, 492, 495, 496, 499, 500, 501, 504, 506, 507, 509, 510, 511, 513, 517, 520, 523, 524, 526, 540, 552, 553, 575, 584, 589, 591, 594, 595, 596, 600, 623, 641, 644, 647, 650, 651, 652, 653, 657, 658, 660, 663, 685], "excluded_lines": [24, 25], "functions": {"ChangeOrderService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [47, 48, 49], "excluded_lines": []}, "ChangeOrderService.get_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [63, 76, 77, 79], "excluded_lines": []}, "ChangeOrderService.create_root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [104, 106, 114], "excluded_lines": []}, "ChangeOrderService.create_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [140, 141, 142, 143, 148, 151, 154, 157, 166, 170, 172, 179, 182, 183, 184, 186], "excluded_lines": []}, "ChangeOrderService.update_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 56, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [218, 222, 226, 238, 239, 241, 242, 247, 248, 249, 254, 257, 260, 272, 273, 276, 279, 281, 293, 294, 296, 297, 302, 304, 312, 313, 316, 319, 320, 323, 324, 325, 326, 331, 334, 335, 339, 340, 346, 348, 349, 351, 352, 353, 356, 365, 367, 374, 377, 378, 379, 383, 386, 391, 392, 394], "excluded_lines": []}, "ChangeOrderService.delete_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [418], "excluded_lines": []}, "ChangeOrderService.get_change_orders": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 31, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [453, 455, 457, 460, 466, 467, 470, 477, 478, 479, 487, 489, 491, 492, 495, 496, 499, 500, 501, 504, 506, 507, 509, 510, 511, 513, 517, 520, 523, 524, 526], "excluded_lines": []}, "ChangeOrderService.get_current_by_code": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [540, 552, 553], "excluded_lines": []}, "ChangeOrderService.merge_change_order": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [575, 584, 589, 591, 594, 595, 596, 600], "excluded_lines": []}, "ChangeOrderService.revert_change_order_version": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [623], "excluded_lines": []}, "ChangeOrderService._to_public": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [641, 644, 647, 650, 651, 652, 653, 657, 658, 660, 663, 685], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 46, 51, 81, 116, 188, 396, 425, 528, 555, 607, 629], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [24, 25]}}, "classes": {"ChangeOrderService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 138, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 138, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [47, 48, 49, 63, 76, 77, 79, 104, 106, 114, 140, 141, 142, 143, 148, 151, 154, 157, 166, 170, 172, 179, 182, 183, 184, 186, 218, 222, 226, 238, 239, 241, 242, 247, 248, 249, 254, 257, 260, 272, 273, 276, 279, 281, 293, 294, 296, 297, 302, 304, 312, 313, 316, 319, 320, 323, 324, 325, 326, 331, 334, 335, 339, 340, 346, 348, 349, 351, 352, 353, 356, 365, 367, 374, 377, 378, 379, 383, 386, 391, 392, 394, 418, 453, 455, 457, 460, 466, 467, 470, 477, 478, 479, 487, 489, 491, 492, 495, 496, 499, 500, 501, 504, 506, 507, 509, 510, 511, 513, 517, 520, 523, 524, 526, 540, 552, 553, 575, 584, 589, 591, 594, 595, 596, 600, 623, 641, 644, 647, 650, 651, 652, 653, 657, 658, 660, 663, 685], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 46, 51, 81, 116, 188, 396, 425, 528, 555, 607, 629], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [24, 25]}}}, "backend/app/services/change_order_workflow_service.py": {"executed_lines": [1, 12, 13, 26, 36, 41, 46, 48, 63, 74, 86, 100, 111], "summary": {"covered_lines": 11, "num_statements": 19, "percent_covered": 57.89473684210526, "percent_covered_display": "58", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 57.89473684210526, "percent_statements_covered_display": "58"}, "missing_lines": [60, 61, 72, 84, 98, 109, 121, 122], "excluded_lines": [], "functions": {"ChangeOrderWorkflowService.get_next_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [60, 61], "excluded_lines": []}, "ChangeOrderWorkflowService.get_available_transitions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [72], "excluded_lines": []}, "ChangeOrderWorkflowService.should_lock_on_transition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [84], "excluded_lines": []}, "ChangeOrderWorkflowService.should_unlock_on_transition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [98], "excluded_lines": []}, "ChangeOrderWorkflowService.can_edit_on_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [109], "excluded_lines": []}, "ChangeOrderWorkflowService.is_valid_transition": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [121, 122], "excluded_lines": []}, "": {"executed_lines": [1, 12, 13, 26, 36, 41, 46, 48, 63, 74, 86, 100, 111], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ChangeOrderWorkflowService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [60, 61, 72, 84, 98, 109, 121, 122], "excluded_lines": []}, "": {"executed_lines": [1, 12, 13, 26, 36, 41, 46, 48, 63, 74, 86, 100, 111], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/cost_element_service.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 18, 21, 22, 24, 30, 32, 54, 89, 91, 93, 94, 97, 107, 120, 134, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 158, 160, 171, 172, 175, 176, 179, 180, 181, 184, 191, 194, 196, 197, 205, 208, 210, 211, 219, 220, 222, 224, 233, 234, 237, 238, 242, 244, 248, 249, 258, 265, 267, 268, 270, 271, 285, 286, 288, 296, 304, 305, 312, 318, 327, 328, 331, 334, 335, 338, 345, 378, 392, 394, 396, 398, 399, 406, 408, 410, 411, 419, 426, 430, 441, 442, 443, 445, 490, 492, 495, 498, 503, 507, 513, 514, 515, 516, 517, 522, 532, 544, 545, 546, 549, 561, 564, 567, 568, 570, 572, 584, 591, 593, 678, 777, 1653, 1662, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 133, "num_statements": 226, "percent_covered": 58.849557522123895, "percent_covered_display": "59", "missing_lines": 93, "excluded_lines": 0, "percent_statements_covered": 58.849557522123895, "percent_statements_covered_display": "59"}, "missing_lines": [40, 51, 52, 77, 79, 87, 149, 151, 152, 153, 155, 157, 307, 348, 350, 351, 359, 362, 364, 365, 373, 374, 376, 504, 523, 524, 534, 536, 537, 540, 541, 551, 552, 554, 555, 556, 558, 605, 607, 610, 611, 619, 620, 630, 631, 644, 666, 667, 668, 669, 670, 671, 672, 673, 674, 676, 712, 714, 715, 718, 719, 720, 722, 726, 732, 733, 734, 736, 740, 751, 770, 772, 773, 774, 775, 792, 794, 796, 797, 800, 801, 802, 805, 816, 817, 819, 820, 823, 834, 835, 837, 838, 841], "excluded_lines": [], "functions": {"CostElementService.__init__": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService.get_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [40, 51, 52], "excluded_lines": []}, "CostElementService.create_root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [77, 79, 87], "excluded_lines": []}, "CostElementService._get_base_stmt": {"executed_lines": [91, 93, 94, 97, 107, 120], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService._resolve_relations": {"executed_lines": [138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 158], "summary": {"covered_lines": 11, "num_statements": 17, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 64.70588235294117, "percent_statements_covered_display": "65"}, "missing_lines": [149, 151, 152, 153, 155, 157], "excluded_lines": []}, "CostElementService.create": {"executed_lines": [171, 172, 175, 176, 179, 180, 181, 184, 191, 194, 196, 197, 205, 208, 210, 211, 219, 220, 222], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService.update": {"executed_lines": [233, 234, 237, 238, 242, 244, 248, 249, 267, 270, 288, 296, 304, 305, 312, 318, 327, 328, 331, 334, 335, 338, 345], "summary": {"covered_lines": 23, "num_statements": 34, "percent_covered": 67.6470588235294, "percent_covered_display": "68", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 67.6470588235294, "percent_statements_covered_display": "68"}, "missing_lines": [307, 348, 350, 351, 359, 362, 364, 365, 373, 374, 376], "excluded_lines": []}, "CostElementService.update.CostElementUpdateCommand.__init__": {"executed_lines": [258, 265], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService.update.CostElementUpdateCommand._root_field_name": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService.update.CostElementUpdateCommand._get_current": {"executed_lines": [271, 285, 286], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService.soft_delete": {"executed_lines": [392, 394, 396, 398, 399, 406, 408, 410, 411, 419], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService.get_by_id": {"executed_lines": [430, 441, 442, 443], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService.get_cost_elements": {"executed_lines": [490, 492, 495, 498, 503, 507, 513, 514, 515, 516, 517, 522, 532, 544, 545, 546, 549, 561, 564, 567, 568, 570], "summary": {"covered_lines": 22, "num_statements": 36, "percent_covered": 61.111111111111114, "percent_covered_display": "61", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 61.111111111111114, "percent_statements_covered_display": "61"}, "missing_lines": [504, 523, 524, 534, 536, 537, 540, 541, 551, 552, 554, 555, 556, 558], "excluded_lines": []}, "CostElementService.list": {"executed_lines": [584, 591], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementService.get_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [605, 607, 610, 611, 619, 620, 630, 631, 644, 666, 667, 668, 669, 670, 671, 672, 673, 674, 676], "excluded_lines": []}, "CostElementService.get_cost_element_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [712, 714, 715, 718, 719, 720, 722, 726, 732, 733, 734, 736, 740, 751, 770, 772, 773, 774, 775], "excluded_lines": []}, "CostElementService.get_breadcrumb": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [792, 794, 796, 797, 800, 801, 802, 805, 816, 817, 819, 820, 823, 834, 835, 837, 838, 841], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 18, 21, 22, 24, 32, 54, 89, 134, 160, 224, 378, 426, 445, 572, 593, 678, 777], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CostElementService": {"executed_lines": [30, 91, 93, 94, 97, 107, 120, 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 158, 171, 172, 175, 176, 179, 180, 181, 184, 191, 194, 196, 197, 205, 208, 210, 211, 219, 220, 222, 233, 234, 237, 238, 242, 244, 248, 249, 267, 270, 288, 296, 304, 305, 312, 318, 327, 328, 331, 334, 335, 338, 345, 392, 394, 396, 398, 399, 406, 408, 410, 411, 419, 430, 441, 442, 443, 490, 492, 495, 498, 503, 507, 513, 514, 515, 516, 517, 522, 532, 544, 545, 546, 549, 561, 564, 567, 568, 570, 584, 591], "summary": {"covered_lines": 98, "num_statements": 191, "percent_covered": 51.30890052356021, "percent_covered_display": "51", "missing_lines": 93, "excluded_lines": 0, "percent_statements_covered": 51.30890052356021, "percent_statements_covered_display": "51"}, "missing_lines": [40, 51, 52, 77, 79, 87, 149, 151, 152, 153, 155, 157, 307, 348, 350, 351, 359, 362, 364, 365, 373, 374, 376, 504, 523, 524, 534, 536, 537, 540, 541, 551, 552, 554, 555, 556, 558, 605, 607, 610, 611, 619, 620, 630, 631, 644, 666, 667, 668, 669, 670, 671, 672, 673, 674, 676, 712, 714, 715, 718, 719, 720, 722, 726, 732, 733, 734, 736, 740, 751, 770, 772, 773, 774, 775, 792, 794, 796, 797, 800, 801, 802, 805, 816, 817, 819, 820, 823, 834, 835, 837, 838, 841], "excluded_lines": []}, "CostElementService.update.CostElementUpdateCommand": {"executed_lines": [258, 265, 268, 271, 285, 286], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 13, 14, 15, 16, 17, 18, 21, 22, 24, 32, 54, 89, 134, 160, 224, 378, 426, 445, 572, 593, 678, 777], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/cost_element_type_service.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 15, 16, 17, 18, 24, 25, 27, 33, 35, 39, 42, 43, 45, 51, 53, 75, 95, 110, 178, 187, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 25, "num_statements": 70, "percent_covered": 35.714285714285715, "percent_covered_display": "36", "missing_lines": 45, "excluded_lines": 0, "percent_statements_covered": 35.714285714285715, "percent_statements_covered_display": "36"}, "missing_lines": [60, 63, 64, 65, 67, 73, 83, 84, 85, 87, 93, 97, 107, 108, 121, 123, 125, 127, 132, 133, 134, 138, 139, 140, 147, 148, 149, 150, 155, 156, 159, 160, 161, 164, 165, 166, 167, 169, 171, 173, 175, 176, 182, 185, 220], "excluded_lines": [], "functions": {"CostElementTypeService.__init__": {"executed_lines": [33], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementTypeService.create": {"executed_lines": [39, 42, 43, 45, 51], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostElementTypeService.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [60, 63, 64, 67, 73], "excluded_lines": []}, "CostElementTypeService.update.CostElementTypeUpdateCommand._root_field_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [65], "excluded_lines": []}, "CostElementTypeService.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [83, 84, 87, 93], "excluded_lines": []}, "CostElementTypeService.soft_delete.CostElementTypeSoftDeleteCommand._root_field_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [85], "excluded_lines": []}, "CostElementTypeService.get_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [97, 107, 108], "excluded_lines": []}, "CostElementTypeService.get_cost_element_types": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 28, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 28, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [121, 123, 125, 127, 132, 133, 134, 138, 139, 140, 147, 148, 149, 150, 155, 156, 159, 160, 161, 164, 165, 166, 167, 169, 171, 173, 175, 176], "excluded_lines": []}, "CostElementTypeService.list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [182, 185], "excluded_lines": []}, "CostElementTypeService.get_cost_element_type_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [220], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 15, 16, 17, 18, 24, 25, 27, 35, 53, 75, 95, 110, 178, 187], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CostElementTypeService": {"executed_lines": [33, 39, 42, 43, 45, 51], "summary": {"covered_lines": 6, "num_statements": 49, "percent_covered": 12.244897959183673, "percent_covered_display": "12", "missing_lines": 43, "excluded_lines": 0, "percent_statements_covered": 12.244897959183673, "percent_statements_covered_display": "12"}, "missing_lines": [60, 63, 64, 67, 73, 83, 84, 87, 93, 97, 107, 108, 121, 123, 125, 127, 132, 133, 134, 138, 139, 140, 147, 148, 149, 150, 155, 156, 159, 160, 161, 164, 165, 166, 167, 169, 171, 173, 175, 176, 182, 185, 220], "excluded_lines": []}, "CostElementTypeService.update.CostElementTypeUpdateCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [65], "excluded_lines": []}, "CostElementTypeService.soft_delete.CostElementTypeSoftDeleteCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [85], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 15, 16, 17, 18, 24, 25, 27, 35, 53, 75, 95, 110, 178, 187], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/cost_registration_service.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 17, 18, 19, 20, 21, 27, 28, 36, 45, 46, 48, 49, 50, 51, 52, 55, 56, 62, 70, 142, 180, 200, 215, 246, 296, 328, 369, 449], "summary": {"covered_lines": 33, "num_statements": 140, "percent_covered": 23.571428571428573, "percent_covered_display": "24", "missing_lines": 107, "excluded_lines": 1, "percent_statements_covered": 23.571428571428573, "percent_statements_covered_display": "24"}, "missing_lines": [37, 38, 39, 40, 68, 82, 85, 91, 92, 95, 99, 102, 103, 106, 107, 110, 115, 116, 118, 119, 121, 122, 131, 133, 140, 158, 161, 167, 168, 169, 171, 178, 188, 189, 190, 192, 198, 202, 212, 213, 222, 228, 229, 230, 235, 236, 237, 240, 241, 243, 244, 269, 272, 277, 279, 282, 290, 291, 293, 294, 318, 323, 325, 326, 340, 345, 346, 348, 349, 351, 354, 355, 358, 359, 361, 402, 404, 405, 410, 415, 418, 428, 429, 430, 437, 438, 441, 443, 444, 467, 469, 470, 473, 483, 484, 485, 492, 493, 496, 499, 500, 503, 504, 505, 506, 507, 513], "excluded_lines": [377], "functions": {"BudgetExceededError.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [37, 38, 39, 40], "excluded_lines": []}, "CostRegistrationService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68], "excluded_lines": []}, "CostRegistrationService.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [82, 85, 91, 92, 95, 99, 102, 103, 106, 107, 110, 115, 116, 118, 119, 121, 122, 131, 133, 140], "excluded_lines": []}, "CostRegistrationService.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [158, 161, 167, 168, 171, 178], "excluded_lines": []}, "CostRegistrationService.update.CostRegistrationUpdateCommand._root_field_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [169], "excluded_lines": []}, "CostRegistrationService.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [188, 189, 192, 198], "excluded_lines": []}, "CostRegistrationService.soft_delete.CostRegistrationSoftDeleteCommand._root_field_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [190], "excluded_lines": []}, "CostRegistrationService.get_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [202, 212, 213], "excluded_lines": []}, "CostRegistrationService.get_cost_registrations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [222, 228, 229, 230, 235, 236, 237, 240, 241, 243, 244], "excluded_lines": []}, "CostRegistrationService.get_total_for_cost_element": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [269, 272, 277, 279, 282, 290, 291, 293, 294], "excluded_lines": []}, "CostRegistrationService.get_cost_registration_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [318, 323, 325, 326], "excluded_lines": []}, "CostRegistrationService.get_budget_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [340, 345, 346, 348, 349, 351, 354, 355, 358, 359, 361], "excluded_lines": []}, "CostRegistrationService.get_costs_by_period": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [402, 404, 405, 410, 415, 418, 428, 429, 430, 437, 438, 441, 443, 444], "excluded_lines": [377]}, "CostRegistrationService.get_cumulative_costs": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [467, 469, 470, 473, 483, 484, 485, 492, 493, 496, 499, 500, 503, 504, 505, 506, 507, 513], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 17, 18, 19, 20, 21, 27, 28, 36, 45, 46, 48, 49, 50, 51, 52, 55, 56, 62, 70, 142, 180, 200, 215, 246, 296, 328, 369, 449], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BudgetExceededError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [37, 38, 39, 40], "excluded_lines": []}, "BudgetStatus": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "CostRegistrationService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 101, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 101, "excluded_lines": 1, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68, 82, 85, 91, 92, 95, 99, 102, 103, 106, 107, 110, 115, 116, 118, 119, 121, 122, 131, 133, 140, 158, 161, 167, 168, 171, 178, 188, 189, 192, 198, 202, 212, 213, 222, 228, 229, 230, 235, 236, 237, 240, 241, 243, 244, 269, 272, 277, 279, 282, 290, 291, 293, 294, 318, 323, 325, 326, 340, 345, 346, 348, 349, 351, 354, 355, 358, 359, 361, 402, 404, 405, 410, 415, 418, 428, 429, 430, 437, 438, 441, 443, 444, 467, 469, 470, 473, 483, 484, 485, 492, 493, 496, 499, 500, 503, 504, 505, 506, 507, 513], "excluded_lines": [377]}, "CostRegistrationService.update.CostRegistrationUpdateCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [169], "excluded_lines": []}, "CostRegistrationService.soft_delete.CostRegistrationSoftDeleteCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [190], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 17, 18, 19, 20, 21, 27, 28, 36, 45, 46, 48, 49, 50, 51, 52, 55, 56, 62, 70, 142, 180, 200, 215, 246, 296, 328, 369, 449], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/department.py": {"executed_lines": [1, 6, 7, 9, 10, 12, 17, 18, 19, 20, 23, 24, 29, 30, 32, 36, 103, 114, 118, 121, 122, 124, 130, 132, 145, 154, 158, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 25, "num_statements": 61, "percent_covered": 40.98360655737705, "percent_covered_display": "41", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 40.98360655737705, "percent_statements_covered_display": "41"}, "missing_lines": [34, 50, 52, 54, 57, 63, 64, 65, 73, 74, 75, 76, 79, 80, 83, 84, 85, 88, 89, 90, 91, 93, 95, 98, 100, 101, 105, 111, 112, 136, 137, 143, 147, 152, 156, 191], "excluded_lines": [], "functions": {"DepartmentService.__init__": {"executed_lines": [30], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "DepartmentService.get_department": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [34], "excluded_lines": []}, "DepartmentService.get_departments": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 25, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 25, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [50, 52, 54, 57, 63, 64, 65, 73, 74, 75, 76, 79, 80, 83, 84, 85, 88, 89, 90, 91, 93, 95, 98, 100, 101], "excluded_lines": []}, "DepartmentService.get_by_code": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [105, 111, 112], "excluded_lines": []}, "DepartmentService.create_department": {"executed_lines": [118, 121, 122, 124, 130], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "DepartmentService.update_department": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [136, 137, 143], "excluded_lines": []}, "DepartmentService.delete_department": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [147, 152], "excluded_lines": []}, "DepartmentService.get_department_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [156], "excluded_lines": []}, "DepartmentService.get_department_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [191], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 9, 10, 12, 17, 18, 19, 20, 23, 24, 29, 32, 36, 103, 114, 132, 145, 154, 158], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DepartmentService": {"executed_lines": [30, 118, 121, 122, 124, 130], "summary": {"covered_lines": 6, "num_statements": 42, "percent_covered": 14.285714285714286, "percent_covered_display": "14", "missing_lines": 36, "excluded_lines": 0, "percent_statements_covered": 14.285714285714286, "percent_statements_covered_display": "14"}, "missing_lines": [34, 50, 52, 54, 57, 63, 64, 65, 73, 74, 75, 76, 79, 80, 83, 84, 85, 88, 89, 90, 91, 93, 95, 98, 100, 101, 105, 111, 112, 136, 137, 143, 147, 152, 156, 191], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 9, 10, 12, 17, 18, 19, 20, 23, 24, 29, 32, 36, 103, 114, 132, 145, 154, 158], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/evm_service.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 17, 18, 31, 43, 111, 132, 197, 214, 244, 263], "summary": {"covered_lines": 19, "num_statements": 75, "percent_covered": 25.333333333333332, "percent_covered_display": "25", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 25.333333333333332, "percent_statements_covered_display": "25"}, "missing_lines": [37, 38, 39, 40, 41, 68, 71, 72, 73, 76, 79, 82, 85, 86, 89, 92, 94, 125, 128, 129, 130, 150, 152, 156, 158, 161, 168, 170, 173, 174, 175, 178, 180, 182, 190, 192, 193, 195, 209, 212, 230, 234, 236, 238, 240, 242, 259, 260, 261, 279, 280, 282, 285, 286, 288, 290], "excluded_lines": [], "functions": {"EVMService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [37, 38, 39, 40, 41], "excluded_lines": []}, "EVMService.calculate_evm_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [68, 71, 72, 73, 76, 79, 82, 85, 86, 89, 92, 94], "excluded_lines": []}, "EVMService._get_bac_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [125, 128, 129, 130], "excluded_lines": []}, "EVMService._get_pv_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [150, 152, 156, 158, 161, 168, 170, 173, 174, 175, 178, 180, 182, 190, 192, 193, 195], "excluded_lines": []}, "EVMService._get_ac_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [209, 212], "excluded_lines": []}, "EVMService._get_ev_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [230, 234, 236, 238, 240, 242], "excluded_lines": []}, "EVMService._calculate_variances": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [259, 260, 261], "excluded_lines": []}, "EVMService._calculate_indices": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [279, 280, 282, 285, 286, 288, 290], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 17, 18, 31, 43, 111, 132, 197, 214, 244, 263], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EVMService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 56, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 56, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [37, 38, 39, 40, 41, 68, 71, 72, 73, 76, 79, 82, 85, 86, 89, 92, 94, 125, 128, 129, 130, 150, 152, 156, 158, 161, 168, 170, 173, 174, 175, 178, 180, 182, 190, 192, 193, 195, 209, 212, 230, 234, 236, 238, 240, 242, 259, 260, 261, 279, 280, 282, 285, 286, 288, 290], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 17, 18, 31, 43, 111, 132, 197, 214, 244, 263], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/forecast_service.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 18, 19, 26, 34, 35, 37, 43, 45, 65, 100, 128, 146, 158, 165, 203, 219, 235, 236, 238, 262, 263, 269, 270, 271, 273, 280, 284, 295, 296, 298, 299, 300, 302, 304, 323, 324, 328, 329, 1653, 1662, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 47, "num_statements": 74, "percent_covered": 63.513513513513516, "percent_covered_display": "64", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 63.513513513513516, "percent_statements_covered_display": "64"}, "missing_lines": [27, 28, 29, 51, 62, 63, 88, 90, 98, 108, 109, 112, 113, 116, 117, 119, 126, 132, 143, 144, 184, 195, 198, 200, 201, 264, 325], "excluded_lines": [], "functions": {"ForecastAlreadyExistsError.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [27, 28, 29], "excluded_lines": []}, "ForecastService.__init__": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ForecastService.get_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [51, 62, 63], "excluded_lines": []}, "ForecastService.create_root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [88, 90, 98], "excluded_lines": []}, "ForecastService.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [108, 109, 112, 113, 116, 117, 119, 126], "excluded_lines": []}, "ForecastService.get_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [132, 143, 144], "excluded_lines": []}, "ForecastService.soft_delete": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ForecastService.list": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [184, 195, 198, 200, 201], "excluded_lines": []}, "ForecastService.get_for_cost_element": {"executed_lines": [219, 235, 236], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ForecastService.create_for_cost_element": {"executed_lines": [262, 263, 269, 270, 271, 273, 280, 284, 295, 296, 298, 299, 300, 302], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [264], "excluded_lines": []}, "ForecastService.ensure_exists": {"executed_lines": [323, 324, 328, 329], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [325], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 18, 19, 26, 34, 35, 37, 45, 65, 100, 128, 146, 165, 203, 238, 304], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ForecastAlreadyExistsError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [27, 28, 29], "excluded_lines": []}, "ForecastService": {"executed_lines": [43, 158, 219, 235, 236, 262, 263, 269, 270, 271, 273, 280, 284, 295, 296, 298, 299, 300, 302, 323, 324, 328, 329], "summary": {"covered_lines": 23, "num_statements": 47, "percent_covered": 48.93617021276596, "percent_covered_display": "49", "missing_lines": 24, "excluded_lines": 0, "percent_statements_covered": 48.93617021276596, "percent_statements_covered_display": "49"}, "missing_lines": [51, 62, 63, 88, 90, 98, 108, 109, 112, 113, 116, 117, 119, 126, 132, 143, 144, 184, 195, 198, 200, 201, 264, 325], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 18, 19, 26, 34, 35, 37, 45, 65, 100, 128, 146, 165, 203, 238, 304], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/impact_analysis_service.py": {"executed_lines": [1, 13, 14, 15, 16, 18, 19, 21, 22, 23, 24, 25, 37, 38, 45, 53, 178, 229, 346, 413, 480, 555, 587], "summary": {"covered_lines": 21, "num_statements": 143, "percent_covered": 14.685314685314685, "percent_covered_display": "15", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 14.685314685314685, "percent_statements_covered_display": "15"}, "missing_lines": [51, 69, 81, 82, 84, 85, 87, 90, 96, 97, 100, 106, 107, 110, 111, 114, 124, 125, 131, 135, 136, 139, 151, 154, 155, 158, 161, 168, 206, 207, 209, 210, 211, 212, 214, 215, 222, 242, 252, 253, 256, 266, 267, 270, 273, 284, 285, 288, 299, 300, 303, 308, 319, 320, 323, 336, 337, 340, 344, 359, 360, 362, 363, 365, 366, 367, 369, 371, 374, 384, 386, 398, 399, 400, 411, 426, 427, 429, 430, 432, 433, 434, 436, 438, 441, 451, 453, 465, 466, 467, 478, 493, 494, 496, 497, 499, 500, 501, 504, 505, 506, 507, 509, 511, 513, 516, 526, 528, 540, 541, 542, 553, 567, 569, 600, 606, 607, 610, 616, 617, 622, 626], "excluded_lines": [], "functions": {"ImpactAnalysisService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [51], "excluded_lines": []}, "ImpactAnalysisService.analyze_impact": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 27, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 27, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [69, 81, 82, 84, 85, 87, 90, 96, 97, 100, 106, 107, 110, 111, 114, 124, 125, 131, 135, 136, 139, 151, 154, 155, 158, 161, 168], "excluded_lines": []}, "ImpactAnalysisService._compare_kpis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [206, 222], "excluded_lines": []}, "ImpactAnalysisService._compare_kpis._calculate_metric": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [207, 209, 210, 211, 212, 214, 215], "excluded_lines": []}, "ImpactAnalysisService._compare_entities": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [242, 252, 253, 256, 266, 267, 270, 273, 284, 285, 288, 299, 300, 303, 308, 319, 320, 323, 336, 337, 340, 344], "excluded_lines": []}, "ImpactAnalysisService._compare_wbe_lists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [359, 360, 362, 363, 365, 366, 367, 369, 371, 374, 384, 386, 398, 399, 400, 411], "excluded_lines": []}, "ImpactAnalysisService._compare_cost_element_lists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [426, 427, 429, 430, 432, 433, 434, 436, 438, 441, 451, 453, 465, 466, 467, 478], "excluded_lines": []}, "ImpactAnalysisService._compare_cost_registration_lists": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [493, 494, 496, 497, 499, 500, 501, 504, 505, 506, 507, 509, 511, 513, 516, 526, 528, 540, 541, 542, 553], "excluded_lines": []}, "ImpactAnalysisService._build_waterfall": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [567, 569], "excluded_lines": []}, "ImpactAnalysisService._generate_time_series": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [600, 606, 607, 610, 616, 617, 622, 626], "excluded_lines": []}, "": {"executed_lines": [1, 13, 14, 15, 16, 18, 19, 21, 22, 23, 24, 25, 37, 38, 45, 53, 178, 229, 346, 413, 480, 555, 587], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ImpactAnalysisService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 122, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 122, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [51, 69, 81, 82, 84, 85, 87, 90, 96, 97, 100, 106, 107, 110, 111, 114, 124, 125, 131, 135, 136, 139, 151, 154, 155, 158, 161, 168, 206, 207, 209, 210, 211, 212, 214, 215, 222, 242, 252, 253, 256, 266, 267, 270, 273, 284, 285, 288, 299, 300, 303, 308, 319, 320, 323, 336, 337, 340, 344, 359, 360, 362, 363, 365, 366, 367, 369, 371, 374, 384, 386, 398, 399, 400, 411, 426, 427, 429, 430, 432, 433, 434, 436, 438, 441, 451, 453, 465, 466, 467, 478, 493, 494, 496, 497, 499, 500, 501, 504, 505, 506, 507, 509, 511, 513, 516, 526, 528, 540, 541, 542, 553, 567, 569, 600, 606, 607, 610, 616, 617, 622, 626], "excluded_lines": []}, "": {"executed_lines": [1, 13, 14, 15, 16, 18, 19, 21, 22, 23, 24, 25, 37, 38, 45, 53, 178, 229, 346, 413, 480, 555, 587], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/progress_entry_service.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 14, 15, 16, 17, 23, 24, 30, 38, 75, 112, 132, 146, 182, 215], "summary": {"covered_lines": 18, "num_statements": 67, "percent_covered": 26.865671641791046, "percent_covered_display": "27", "missing_lines": 49, "excluded_lines": 0, "percent_statements_covered": 26.865671641791046, "percent_statements_covered_display": "27"}, "missing_lines": [36, 49, 52, 53, 57, 58, 59, 64, 66, 73, 90, 93, 94, 95, 96, 99, 100, 101, 103, 110, 120, 121, 122, 124, 130, 134, 143, 144, 158, 161, 166, 168, 171, 177, 179, 180, 195, 198, 204, 205, 206, 209, 210, 212, 213, 237, 242, 244, 245], "excluded_lines": [], "functions": {"ProgressEntryService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [36], "excluded_lines": []}, "ProgressEntryService.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [49, 52, 53, 57, 58, 59, 64, 66, 73], "excluded_lines": []}, "ProgressEntryService.update": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [90, 93, 94, 95, 96, 99, 100, 103, 110], "excluded_lines": []}, "ProgressEntryService.update.ProgressEntryUpdateCommand._root_field_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [101], "excluded_lines": []}, "ProgressEntryService.soft_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [120, 121, 124, 130], "excluded_lines": []}, "ProgressEntryService.soft_delete.ProgressEntrySoftDeleteCommand._root_field_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [122], "excluded_lines": []}, "ProgressEntryService.get_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [134, 143, 144], "excluded_lines": []}, "ProgressEntryService.get_latest_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [158, 161, 166, 168, 171, 177, 179, 180], "excluded_lines": []}, "ProgressEntryService.get_progress_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [195, 198, 204, 205, 206, 209, 210, 212, 213], "excluded_lines": []}, "ProgressEntryService.get_progress_entry_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [237, 242, 244, 245], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 14, 15, 16, 17, 23, 24, 30, 38, 75, 112, 132, 146, 182, 215], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ProgressEntryService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 47, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 47, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [36, 49, 52, 53, 57, 58, 59, 64, 66, 73, 90, 93, 94, 95, 96, 99, 100, 103, 110, 120, 121, 124, 130, 134, 143, 144, 158, 161, 166, 168, 171, 177, 179, 180, 195, 198, 204, 205, 206, 209, 210, 212, 213, 237, 242, 244, 245], "excluded_lines": []}, "ProgressEntryService.update.ProgressEntryUpdateCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [101], "excluded_lines": []}, "ProgressEntryService.soft_delete.ProgressEntrySoftDeleteCommand": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [122], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 14, 15, 16, 17, 23, 24, 30, 38, 75, 112, 132, 146, 182, 215], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/progression/__init__.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 12, 21, 33, 39, 40, 41, 46], "excluded_lines": [], "functions": {"get_progression_strategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [33, 39, 40, 41, 46], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 12, 21], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 9, 10, 12, 21, 33, 39, 40, 41, 46], "excluded_lines": []}}}, "backend/app/services/progression/base.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 2, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 10, 17, 18], "excluded_lines": [34, 35], "functions": {"ProgressionStrategy.calculate_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34]}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 10, 17, 18], "excluded_lines": []}}, "classes": {"ProgressionStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [34]}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 7, 10, 17, 18], "excluded_lines": []}}}, "backend/app/services/progression/gaussian.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 10, 13, 25, 27, 45, 46, 47, 49, 51, 52, 56, 57, 58, 59, 62, 63, 67, 68, 71], "excluded_lines": [], "functions": {"GaussianProgression.calculate_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 49, 51, 52, 56, 57, 58, 59, 62, 63, 67, 68, 71], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 10, 13, 25, 27], "excluded_lines": []}}, "classes": {"GaussianProgression": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 49, 51, 52, 56, 57, 58, 59, 62, 63, 67, 68, 71], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 10, 13, 25, 27], "excluded_lines": []}}}, "backend/app/services/progression/linear.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 8, 11, 18, 35, 36, 37, 39, 41, 42, 44, 45, 48], "excluded_lines": [], "functions": {"LinearProgression.calculate_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [35, 36, 37, 39, 41, 42, 44, 45, 48], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 8, 11, 18], "excluded_lines": []}}, "classes": {"LinearProgression": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [35, 36, 37, 39, 41, 42, 44, 45, 48], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [6, 8, 11, 18], "excluded_lines": []}}}, "backend/app/services/progression/logarithmic.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 10, 13, 25, 27, 45, 46, 47, 49, 51, 52, 55, 56, 62, 65], "excluded_lines": [], "functions": {"LogarithmicProgression.calculate_progress": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 49, 51, 52, 55, 56, 62, 65], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 10, 13, 25, 27], "excluded_lines": []}}, "classes": {"LogarithmicProgression": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 46, 47, 49, 51, 52, 55, 56, 62, 65], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [7, 8, 10, 13, 25, 27], "excluded_lines": []}}}, "backend/app/services/project.py": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 18, 19, 20, 21, 23, 27, 28, 34, 35, 37, 160, 162, 164, 166, 177, 180, 187, 188, 191, 192, 194, 201, 203, 224, 236, 240, 275, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 31, "num_statements": 98, "percent_covered": 31.632653061224488, "percent_covered_display": "32", "missing_lines": 67, "excluded_lines": 2, "percent_statements_covered": 31.632653061224488, "percent_statements_covered_display": "32"}, "missing_lines": [85, 87, 89, 92, 95, 100, 101, 104, 110, 111, 112, 120, 122, 124, 125, 128, 129, 132, 133, 134, 137, 139, 140, 142, 143, 144, 146, 149, 152, 155, 156, 158, 178, 212, 213, 215, 222, 228, 234, 238, 273, 282, 284, 286, 287, 288, 291, 296, 305, 306, 308, 310, 311, 314, 315, 316, 318, 320, 323, 338, 339, 341, 342, 343, 344, 346, 357], "excluded_lines": [23, 24], "functions": {"ProjectService.__init__": {"executed_lines": [35], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ProjectService.get_projects": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 32, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 32, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [85, 87, 89, 92, 95, 100, 101, 104, 110, 111, 112, 120, 122, 124, 125, 128, 129, 132, 133, 134, 137, 139, 140, 142, 143, 144, 146, 149, 152, 155, 156, 158], "excluded_lines": []}, "ProjectService.get_by_code": {"executed_lines": [162, 164, 166, 177], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 80.0, "percent_statements_covered_display": "80"}, "missing_lines": [178], "excluded_lines": []}, "ProjectService.create_project": {"executed_lines": [187, 188, 191, 192, 194, 201], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ProjectService.update_project": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [212, 213, 215, 222], "excluded_lines": []}, "ProjectService.delete_project": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [228, 234], "excluded_lines": []}, "ProjectService.get_project_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [238], "excluded_lines": []}, "ProjectService.get_project_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [273], "excluded_lines": []}, "ProjectService.get_project_branches": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 26, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [282, 284, 286, 287, 288, 291, 296, 305, 306, 308, 310, 311, 314, 315, 316, 318, 320, 323, 338, 339, 341, 342, 343, 344, 346, 357], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 18, 19, 20, 21, 23, 27, 28, 34, 37, 160, 180, 203, 224, 236, 240, 275], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24]}}, "classes": {"ProjectService": {"executed_lines": [35, 162, 164, 166, 177, 187, 188, 191, 192, 194, 201], "summary": {"covered_lines": 11, "num_statements": 78, "percent_covered": 14.102564102564102, "percent_covered_display": "14", "missing_lines": 67, "excluded_lines": 0, "percent_statements_covered": 14.102564102564102, "percent_statements_covered_display": "14"}, "missing_lines": [85, 87, 89, 92, 95, 100, 101, 104, 110, 111, 112, 120, 122, 124, 125, 128, 129, 132, 133, 134, 137, 139, 140, 142, 143, 144, 146, 149, 152, 155, 156, 158, 178, 212, 213, 215, 222, 228, 234, 238, 273, 282, 284, 286, 287, 288, 291, 296, 305, 306, 308, 310, 311, 314, 315, 316, 318, 320, 323, 338, 339, 341, 342, 343, 344, 346, 357], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 18, 19, 20, 21, 23, 27, 28, 34, 37, 160, 180, 203, 224, 236, 240, 275], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": [23, 24]}}}, "backend/app/services/schedule_baseline_service.py": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 15, 16, 17, 20, 21, 31, 46, 47, 53, 59, 61, 90, 113, 115, 123, 125, 159, 177, 185, 192, 208, 214, 215, 218, 219, 224, 245, 246, 250, 251, 253, 254, 256, 269, 280, 281, 283, 284, 285, 287, 289, 368, 1653, 1662, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 47, "num_statements": 76, "percent_covered": 61.8421052631579, "percent_covered_display": "62", "missing_lines": 29, "excluded_lines": 0, "percent_statements_covered": 61.8421052631579, "percent_statements_covered_display": "62"}, "missing_lines": [38, 39, 40, 76, 87, 88, 143, 145, 147, 163, 174, 175, 222, 247, 324, 325, 326, 331, 333, 334, 348, 359, 360, 362, 363, 364, 366, 375, 386], "excluded_lines": [], "functions": {"BaselineAlreadyExistsError.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [38, 39, 40], "excluded_lines": []}, "ScheduleBaselineService.__init__": {"executed_lines": [59], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ScheduleBaselineService.get_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [76, 87, 88], "excluded_lines": []}, "ScheduleBaselineService.create_root": {"executed_lines": [113, 115, 123], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ScheduleBaselineService.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [143, 145, 147], "excluded_lines": []}, "ScheduleBaselineService.get_by_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [163, 174, 175], "excluded_lines": []}, "ScheduleBaselineService.soft_delete": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "ScheduleBaselineService.get_for_cost_element": {"executed_lines": [208, 214, 215, 218, 219], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 83.33333333333333, "percent_statements_covered_display": "83"}, "missing_lines": [222], "excluded_lines": []}, "ScheduleBaselineService.ensure_exists": {"executed_lines": [245, 246, 250, 251, 253, 254, 256, 269, 280, 281, 283, 284, 285, 287], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 93.33333333333333, "percent_statements_covered_display": "93"}, "missing_lines": [247], "excluded_lines": []}, "ScheduleBaselineService.create_for_cost_element": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [324, 325, 326, 331, 333, 334, 348, 359, 360, 362, 363, 364, 366], "excluded_lines": []}, "ScheduleBaselineService._get_base_stmt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [375, 386], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 15, 16, 17, 20, 21, 31, 46, 47, 53, 61, 90, 125, 159, 177, 192, 224, 289, 368], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BaselineAlreadyExistsError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [38, 39, 40], "excluded_lines": []}, "ScheduleBaselineService": {"executed_lines": [59, 113, 115, 123, 185, 208, 214, 215, 218, 219, 245, 246, 250, 251, 253, 254, 256, 269, 280, 281, 283, 284, 285, 287], "summary": {"covered_lines": 24, "num_statements": 50, "percent_covered": 48.0, "percent_covered_display": "48", "missing_lines": 26, "excluded_lines": 0, "percent_statements_covered": 48.0, "percent_statements_covered_display": "48"}, "missing_lines": [76, 87, 88, 143, 145, 147, 163, 174, 175, 222, 247, 324, 325, 326, 331, 333, 334, 348, 359, 360, 362, 363, 364, 366, 375, 386], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 15, 16, 17, 20, 21, 31, 46, 47, 53, 61, 90, 125, 159, 177, 192, 224, 289, 368], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/user.py": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 19, 20, 21, 22, 25, 26, 31, 34, 38, 42, 62, 83, 108, 117, 121, 156, 163], "summary": {"covered_lines": 23, "num_statements": 61, "percent_covered": 37.704918032786885, "percent_covered_display": "38", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 37.704918032786885, "percent_statements_covered_display": "38"}, "missing_lines": [32, 36, 40, 45, 47, 49, 59, 60, 64, 67, 68, 69, 72, 73, 75, 81, 88, 90, 91, 92, 100, 106, 110, 115, 119, 154, 158, 159, 160, 161, 167, 168, 169, 172, 173, 176, 177, 179], "excluded_lines": [], "functions": {"UserService.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [32], "excluded_lines": []}, "UserService.get_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [36], "excluded_lines": []}, "UserService.get_users": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [40], "excluded_lines": []}, "UserService.get_by_email": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [45, 47, 49, 59, 60], "excluded_lines": []}, "UserService.create_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [64, 67, 68, 69, 72, 73, 75, 81], "excluded_lines": []}, "UserService.update_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [88, 90, 91, 92, 100, 106], "excluded_lines": []}, "UserService.delete_user": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [110, 115], "excluded_lines": []}, "UserService.get_user_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [119], "excluded_lines": []}, "UserService.get_user_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [154], "excluded_lines": []}, "UserService.get_user_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [158, 159, 160, 161], "excluded_lines": []}, "UserService.update_user_preferences": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [167, 168, 169, 172, 173, 176, 177, 179], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 19, 20, 21, 22, 25, 26, 31, 34, 38, 42, 62, 83, 108, 117, 121, 156, 163], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"UserService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 38, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 38, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [32, 36, 40, 45, 47, 49, 59, 60, 64, 67, 68, 69, 72, 73, 75, 81, 88, 90, 91, 92, 100, 106, 110, 115, 119, 154, 158, 159, 160, 161, 167, 168, 169, 172, 173, 176, 177, 179], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 10, 11, 13, 14, 19, 20, 21, 22, 25, 26, 31, 34, 38, 42, 62, 83, 108, 117, 121, 156, 163], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}, "backend/app/services/wbe.py": {"executed_lines": [1, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 23, 24, 30, 31, 33, 57, 92, 101, 102, 119, 121, 127, 129, 131, 134, 136, 141, 145, 151, 155, 280, 299, 342, 346, 348, 350, 361, 365, 369, 371, 374, 375, 378, 384, 386, 393, 395, 436, 481, 550, 579, 685, 710, 761, 1971, 1981, 1983, 1990], "summary": {"covered_lines": 56, "num_statements": 220, "percent_covered": 25.454545454545453, "percent_covered_display": "25", "missing_lines": 164, "excluded_lines": 0, "percent_statements_covered": 25.454545454545453, "percent_statements_covered_display": "25"}, "missing_lines": [39, 41, 43, 54, 55, 80, 82, 90, 106, 108, 109, 110, 111, 112, 113, 114, 116, 118, 138, 192, 194, 196, 200, 203, 209, 211, 214, 220, 221, 224, 225, 228, 229, 230, 238, 240, 242, 243, 246, 247, 251, 252, 253, 254, 257, 259, 260, 262, 263, 264, 266, 269, 272, 275, 276, 278, 282, 284, 286, 296, 297, 315, 317, 320, 327, 328, 331, 333, 336, 338, 339, 340, 362, 363, 379, 380, 381, 382, 403, 405, 408, 414, 416, 417, 418, 419, 420, 421, 422, 425, 427, 434, 457, 458, 459, 462, 465, 466, 474, 493, 495, 496, 500, 519, 520, 537, 538, 539, 542, 543, 544, 545, 546, 548, 562, 564, 566, 576, 577, 593, 595, 596, 598, 601, 602, 603, 606, 617, 618, 620, 621, 625, 644, 645, 662, 663, 664, 667, 687, 689, 691, 701, 702, 703, 704, 706, 707, 708, 712, 714, 715, 718, 726, 727, 736, 751, 752, 753, 754, 755, 756, 757, 759, 794], "excluded_lines": [], "functions": {"WBEService.__init__": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}, "WBEService.get_current": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [39, 41, 43, 54, 55], "excluded_lines": []}, "WBEService.create_root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [80, 82, 90], "excluded_lines": []}, "WBEService._resolve_parent_names": {"executed_lines": [101, 102, 119], "summary": {"covered_lines": 3, "num_statements": 13, "percent_covered": 23.076923076923077, "percent_covered_display": "23", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 23.076923076923077, "percent_statements_covered_display": "23"}, "missing_lines": [106, 108, 109, 110, 111, 112, 113, 114, 116, 118], "excluded_lines": []}, "WBEService._get_base_stmt": {"executed_lines": [127, 129, 131, 134, 136, 141, 145, 151], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 88.88888888888889, "percent_statements_covered_display": "89"}, "missing_lines": [138], "excluded_lines": []}, "WBEService.get_wbes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 37, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 37, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [192, 194, 196, 200, 203, 209, 211, 214, 220, 221, 224, 225, 228, 229, 230, 238, 240, 242, 243, 246, 247, 251, 252, 253, 254, 257, 259, 260, 262, 263, 264, 266, 269, 272, 275, 276, 278], "excluded_lines": []}, "WBEService.get_by_project": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [282, 284, 286, 296, 297], "excluded_lines": []}, "WBEService.get_by_parent": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [315, 317, 320, 327, 328, 331, 333, 336, 338, 339, 340], "excluded_lines": []}, "WBEService.get_by_code": {"executed_lines": [346, 348, 350, 361], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [362, 363], "excluded_lines": []}, "WBEService.create_wbe": {"executed_lines": [369, 371, 374, 375, 378, 384, 386, 393], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0, "percent_statements_covered": 66.66666666666667, "percent_statements_covered_display": "67"}, "missing_lines": [379, 380, 381, 382], "excluded_lines": []}, "WBEService.update_wbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [403, 405, 408, 414, 416, 417, 418, 419, 420, 421, 422, 425, 427, 434], "excluded_lines": []}, "WBEService.delete_wbe": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [457, 458, 459, 462, 465, 466, 474], "excluded_lines": []}, "WBEService._get_all_descendants": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [493, 495, 496, 500, 519, 520, 537, 538, 539, 542, 543, 544, 545, 546, 548], "excluded_lines": []}, "WBEService.get_children_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [562, 564, 566, 576, 577], "excluded_lines": []}, "WBEService.get_breadcrumb": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [593, 595, 596, 598, 601, 602, 603, 606, 617, 618, 620, 621, 625, 644, 645, 662, 663, 664, 667], "excluded_lines": []}, "WBEService.get_by_root_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [687, 689, 691, 701, 702, 703, 704, 706, 707, 708], "excluded_lines": []}, "WBEService.get_wbe_history": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [712, 714, 715, 718, 726, 727, 736, 751, 752, 753, 754, 755, 756, 757, 759], "excluded_lines": []}, "WBEService.get_wbe_as_of": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0, "percent_statements_covered": 0.0, "percent_statements_covered_display": "0"}, "missing_lines": [794], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 23, 24, 30, 33, 57, 92, 121, 155, 280, 299, 342, 365, 395, 436, 481, 550, 579, 685, 710, 761], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}, "classes": {"WBEService": {"executed_lines": [31, 101, 102, 119, 127, 129, 131, 134, 136, 141, 145, 151, 346, 348, 350, 361, 369, 371, 374, 375, 378, 384, 386, 393], "summary": {"covered_lines": 24, "num_statements": 188, "percent_covered": 12.76595744680851, "percent_covered_display": "13", "missing_lines": 164, "excluded_lines": 0, "percent_statements_covered": 12.76595744680851, "percent_statements_covered_display": "13"}, "missing_lines": [39, 41, 43, 54, 55, 80, 82, 90, 106, 108, 109, 110, 111, 112, 113, 114, 116, 118, 138, 192, 194, 196, 200, 203, 209, 211, 214, 220, 221, 224, 225, 228, 229, 230, 238, 240, 242, 243, 246, 247, 251, 252, 253, 254, 257, 259, 260, 262, 263, 264, 266, 269, 272, 275, 276, 278, 282, 284, 286, 296, 297, 315, 317, 320, 327, 328, 331, 333, 336, 338, 339, 340, 362, 363, 379, 380, 381, 382, 403, 405, 408, 414, 416, 417, 418, 419, 420, 421, 422, 425, 427, 434, 457, 458, 459, 462, 465, 466, 474, 493, 495, 496, 500, 519, 520, 537, 538, 539, 542, 543, 544, 545, 546, 548, 562, 564, 566, 576, 577, 593, 595, 596, 598, 601, 602, 603, 606, 617, 618, 620, 621, 625, 644, 645, 662, 663, 664, 667, 687, 689, 691, 701, 702, 703, 704, 706, 707, 708, 712, 714, 715, 718, 726, 727, 736, 751, 752, 753, 754, 755, 756, 757, 759, 794], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 23, 24, 30, 33, 57, 92, 121, 155, 280, 299, 342, 365, 395, 436, 481, 550, 579, 685, 710, 761], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0, "percent_statements_covered": 100.0, "percent_statements_covered_display": "100"}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 2186, "num_statements": 4803, "percent_covered": 45.51322090360191, "percent_covered_display": "46", "missing_lines": 2617, "excluded_lines": 51, "percent_statements_covered": 45.51322090360191, "percent_statements_covered_display": "46"}}