@@ -55,11 +55,16 @@ def get_issue_counts():
55
55
return None
56
56
57
57
58
- def get_internal_issues_by_day ():
59
- sql = """SELECT COUNT(*) as count, [entry-date] as date
60
- FROM operational_issue
61
- GROUP BY [entry-date]
62
- ORDER BY date ASC"""
58
+ def get_internal_issues_by_week ():
59
+ """
60
+ returns a list of weeks and unknown entity counts,
61
+ to include "invalid organisation" when integrated into table
62
+ """
63
+ sql = """SELECT COUNT(*) as count, [entry-date] as date, "issue-type"
64
+ FROM operational_issue
65
+ WHERE "issue-type" = "unknown entity"
66
+ GROUP BY [entry-date]
67
+ ORDER BY date ASC"""
63
68
64
69
internal_issues_df = get_datasette_query ("digital-land" , sql )
65
70
@@ -70,20 +75,36 @@ def get_internal_issues_by_day():
70
75
start_date = datetime (2024 , 9 , 27 ).date ()
71
76
end_date = datetime .now (timezone .utc ).date ()
72
77
73
- all_days = pd .DataFrame ({"date" : pd .date_range (start = start_date , end = end_date )})
74
-
75
- # Ensure datetime for the 'date' column for merge
76
- all_days ["date" ] = pd .to_datetime (all_days ["date" ])
77
78
internal_issues_df ["date" ] = pd .to_datetime (internal_issues_df ["date" ])
79
+ # set start of the week to Monday
80
+ internal_issues_df ["week_start" ] = internal_issues_df ["date" ] - pd .to_timedelta (
81
+ internal_issues_df ["date" ].dt .dayofweek , unit = "D"
82
+ )
83
+
84
+ weekly_issues = (
85
+ internal_issues_df .groupby ("week_start" )["count" ].sum ().reset_index ()
86
+ )
87
+
88
+ all_weeks = pd .DataFrame (
89
+ {
90
+ "week_start" : pd .date_range (
91
+ start = start_date - pd .Timedelta (days = start_date .weekday ()),
92
+ end = end_date ,
93
+ freq = "W-MON" ,
94
+ )
95
+ }
96
+ )
97
+
98
+ all_weeks_issues = pd .merge (all_weeks , weekly_issues , on = "week_start" , how = "left" )
78
99
79
- all_days_issues = pd . merge ( all_days , internal_issues_df , on = "date" , how = "left" )
100
+ all_weeks_issues [ "count" ]. fillna ( 0 , inplace = True )
80
101
81
- all_days_issues [ "count" ]. fillna ( 0 , inplace = True )
102
+ all_weeks_issues . rename ( columns = { "week_start" : "date" } , inplace = True )
82
103
83
- all_days_issues ["date" ] = all_days_issues ["date" ].dt .strftime ("%Y-%m-%d" )
104
+ all_weeks_issues ["date" ] = all_weeks_issues ["date" ].dt .strftime ("%Y-%m-%d" )
84
105
85
- internal_issues = all_days_issues .to_dict (orient = "records" )
86
- return internal_issues
106
+ weekly_issues_list = all_weeks_issues .to_dict (orient = "records" )
107
+ return weekly_issues_list
87
108
88
109
89
110
def get_contributions_and_erroring_endpoints (contributions_and_errors_df ):
0 commit comments