Commit f7ab3c5
authored
Feature/metrics/rich text links (#787)
This pull request introduces a comprehensive set of features for link
checking and reporting within the BetterTogether metrics system. It adds
new models, background jobs, controllers, and mailers to support
automated link validation, reporting, and visualization. The changes are
grouped into three main themes: link checking jobs, reporting and
controller logic, and metrics visualization.
**Link Checking Infrastructure:**
* Added background jobs for checking external and internal links
(`ExternalLinkCheckerJob`, `InternalLinkCheckerJob`), including queueing
logic for distributing link checks across hosts and time windows to
avoid overload (`RichTextLinkCheckerQueueJob` and its subclasses).
[[1]](diffhunk://#diff-892afcf9e3cfd685faa3728292aa5ed13c702044e463e59ecd17d80f96e2294cR1-R36)
[[2]](diffhunk://#diff-3730260488b5742d6a5347f090b2fe1b59912fdeee917619322f35b89141e641R1-R36)
[[3]](diffhunk://#diff-1d331c511cdc570fc77a99bb25535df3a08978c61df959203e2851f4193e6e4cR1-R72)
[[4]](diffhunk://#diff-5a0fdabb875d8c63dd7b51d2f6df28fd2997f78490bde8957e0282d2fc0e6355R1-R20)
[[5]](diffhunk://#diff-ac53c5dee8b264f713f404351d664e61dbe89219a8ee72875d0501795fab0decR1-R24)
* Introduced the `BetterTogether::Content::Link` model to persist
discovered links and their metadata, and a namespace helper for
links-related tables.
[[1]](diffhunk://#diff-3fc39697bcc3a4d31a333d88732f189e98265dc7ffc2fa29ee337dff304e17d6R1-R22)
[[2]](diffhunk://#diff-fb999437387b6d81186947f52d8c17a9399c270af2f106e469615284be454f06R1-R11)
**Reporting and Controller Logic:**
* Implemented `LinkCheckerReportsController` to support creating,
listing, and downloading link checker reports, including Turbo Stream
support for dynamic updates.
* Added a scheduler job for generating and emailing link checker reports
(`LinkCheckerReportSchedulerJob`) and a mailer for delivering these
reports.
[[1]](diffhunk://#diff-64c7d345d921d3b7820f2dd9e270c04cdf3c4bace7e649e4c9de41c4dc109a89R1-R20)
[[2]](diffhunk://#diff-116ca85b0e59523938b0694f2fd80d23c50bfa970460b583222f3ca0e5519729R1-R25)
* Added an event reminder scan job to periodically enqueue reminders for
upcoming events.
**Metrics Visualization and Testing:**
* Enhanced metrics reporting by aggregating link data for charts (links
by host, invalid links by host, failures over time) and exposed these in
the metrics reports controller.
* Updated the metrics charts controller and JavaScript to render new
charts for link-related metrics.
[[1]](diffhunk://#diff-92ebbff7abacb731625c22d4c9c4a62d0de515eab1fb84c6bb6f8cc6160dbae3L61-R61)
[[2]](diffhunk://#diff-92ebbff7abacb731625c22d4c9c4a62d0de515eab1fb84c6bb6f8cc6160dbae3R71-R73)
[[3]](diffhunk://#diff-92ebbff7abacb731625c22d4c9c4a62d0de515eab1fb84c6bb6f8cc6160dbae3R209-R262)
* Added the `webmock` gem for stubbing external HTTP requests in specs,
improving test reliability.File tree
64 files changed
+2037
-20
lines changed- app
- controllers/better_together/metrics
- javascript/controllers/better_together
- jobs/better_together
- metrics
- mailers/better_together/metrics
- models/better_together
- content
- metrics
- services/better_together/metrics
- views/better_together/metrics
- link_checker_reports
- report_mailer
- reports
- config
- initializers
- locales
- db/migrate
- diagrams/source
- docs
- lib/tasks
- spec
- dummy/db
- factories/better_together
- content
- metrics
- jobs/better_together/metrics
- mailers/better_together/metrics
- models/better_together/metrics
- requests/better_together/metrics
- services/better_together/metrics
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
64 files changed
+2037
-20
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
98 | 98 | | |
99 | 99 | | |
100 | 100 | | |
| 101 | + | |
| 102 | + | |
101 | 103 | | |
102 | 104 | | |
103 | 105 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
60 | 61 | | |
61 | 62 | | |
62 | 63 | | |
| |||
229 | 230 | | |
230 | 231 | | |
231 | 232 | | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
232 | 236 | | |
233 | 237 | | |
234 | 238 | | |
| |||
297 | 301 | | |
298 | 302 | | |
299 | 303 | | |
| 304 | + | |
| 305 | + | |
300 | 306 | | |
301 | 307 | | |
302 | 308 | | |
| |||
343 | 349 | | |
344 | 350 | | |
345 | 351 | | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
346 | 355 | | |
347 | 356 | | |
348 | 357 | | |
| |||
362 | 371 | | |
363 | 372 | | |
364 | 373 | | |
| 374 | + | |
365 | 375 | | |
366 | 376 | | |
367 | 377 | | |
| |||
521 | 531 | | |
522 | 532 | | |
523 | 533 | | |
| 534 | + | |
524 | 535 | | |
525 | 536 | | |
526 | 537 | | |
| |||
699 | 710 | | |
700 | 711 | | |
701 | 712 | | |
| 713 | + | |
| 714 | + | |
702 | 715 | | |
703 | 716 | | |
704 | 717 | | |
| |||
732 | 745 | | |
733 | 746 | | |
734 | 747 | | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
735 | 751 | | |
736 | 752 | | |
737 | 753 | | |
| |||
801 | 817 | | |
802 | 818 | | |
803 | 819 | | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
804 | 824 | | |
805 | 825 | | |
806 | 826 | | |
| |||
873 | 893 | | |
874 | 894 | | |
875 | 895 | | |
| 896 | + | |
876 | 897 | | |
877 | 898 | | |
878 | 899 | | |
| |||
Lines changed: 109 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
70 | 76 | | |
71 | 77 | | |
72 | 78 | | |
| |||
Lines changed: 58 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
71 | 74 | | |
72 | 75 | | |
73 | 76 | | |
| |||
203 | 206 | | |
204 | 207 | | |
205 | 208 | | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
206 | 263 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
Lines changed: 36 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
Lines changed: 36 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
0 commit comments