Skip to content

Commit c5f262d

Browse files
Merge pull request #51 from digital-land/internal_error_graph_weekly
Internal Error Day to Week
2 parents 64721f1 + 2df7bae commit c5f262d

File tree

3 files changed

+40
-19
lines changed

3 files changed

+40
-19
lines changed

application/blueprints/report/views.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
get_contributions_and_errors_by_day,
5151
get_endpoint_errors_and_successes_by_week,
5252
get_endpoints_added_by_week,
53-
get_internal_issues_by_day,
53+
get_internal_issues_by_week,
5454
get_issue_counts,
5555
)
5656
from application.utils import (
@@ -80,7 +80,7 @@ def overview():
8080
endpoint_errors_percentages_timeseries,
8181
) = get_endpoint_errors_and_successes_by_week(contributions_and_errors_by_day_df)
8282

83-
internal_errors_timeseries = get_internal_issues_by_day()
83+
internal_errors_timeseries = get_internal_issues_by_week()
8484

8585
summary_metrics = {
8686
"contributions": summary_contributions,

application/data_access/summary_queries.py

+35-14
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,16 @@ def get_issue_counts():
5555
return None
5656

5757

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"""
6368

6469
internal_issues_df = get_datasette_query("digital-land", sql)
6570

@@ -70,20 +75,36 @@ def get_internal_issues_by_day():
7075
start_date = datetime(2024, 9, 27).date()
7176
end_date = datetime.now(timezone.utc).date()
7277

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"])
7778
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")
7899

79-
all_days_issues = pd.merge(all_days, internal_issues_df, on="date", how="left")
100+
all_weeks_issues["count"].fillna(0, inplace=True)
80101

81-
all_days_issues["count"].fillna(0, inplace=True)
102+
all_weeks_issues.rename(columns={"week_start": "date"}, inplace=True)
82103

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")
84105

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
87108

88109

89110
def get_contributions_and_erroring_endpoints(contributions_and_errors_df):

application/templates/reporting/overview.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ <h2>Endpoint errors and successes per week:</h2>
6969
<canvas id="endpoint_error_graph"></canvas>
7070
</div>
7171

72-
<h2>Interal errors per day:</h2>
72+
<h2>Interal errors per week:</h2>
7373
<div>
7474
<canvas id="internal_error_graph"></canvas>
7575
</div>
@@ -138,10 +138,10 @@ <h2>Interal errors per day:</h2>
138138
const interal_error_timeseries = new TimeseriesChart(
139139
{
140140
...baseOptions,
141-
xAxisTitle: "Day",
141+
xAxisTitle: "Week",
142142
yAxisTitle: "Internal errors",
143143
datasets: [{
144-
label: "# of internal errors per day",
144+
label: "# of internal errors per week",
145145
data: {{graphs.internal_errors_timeseries | safe}},
146146
borderWidth: 1,
147147
pointRadius: 0

0 commit comments

Comments
 (0)