Add apology opening to first-payment email (broken link recovery) #477
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/basketball-api#477
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Follow-up to
forgejo_admin/basketball-api#473(the 409 fix). Parents who clicked the original April blast link got 409 errors and couldn't pay. We need to acknowledge that before re-sending.Repo
forgejo_admin/basketball-apiUser Story
As a parent
I want an acknowledgment that the previous payment link was broken
So that I trust the new link and understand why I'm getting a second email
Context
The April 11 first-payment blast went out with checkout links that failed (100% 409). Parents clicked, got errors, lost trust. Fix merged (#473) and deployed. Now we need to re-send the email with an apology opening.
Marcus (admin) proposed the exact wording via GroupMe. Adopt it verbatim, insert as a new opening paragraph above the existing template body. Keep everything else the same — same branded HTML, same fee display, same checkout URL.
Both HTML and plaintext versions must be updated.
File Targets
Files to modify:
src/basketball_api/services/email.py—send_first_payment_email()function. Add apology paragraph at the top of bothbody_html(inside the branded wrapper) andplain_body.Files to NOT touch:
src/basketball_api/routes/checkout.py— already fixedsrc/basketball_api/routes/admin.py— blast endpoint unchangedAcceptance Criteria
Test Expectations
test_send_first_payment_email_180_feeor addtest_send_first_payment_email_contains_apology— assert apology string in both html_body and bodypytest tests/test_first_payment_email.py -vConstraints
body_htmlChecklist
Related
westside-basketball— project this affectsforgejo_admin/basketball-api#473— the underlying bug that triggered this needScope Review: READY
Review note:
review-1005-2026-04-13Tightly-scoped, agent-ready. Single function (
send_first_payment_emailatsrc/basketball_api/services/email.py:1021), Marcus-approved verbatim copy, 5 verifiable AC, existing test file attests/test_first_payment_email.pywith an anchor test (test_send_first_payment_email_180_feeat L116).Traceability verified:
arch-basketball-apinote still missing in pal-e-docs — standing [SCOPE] recommendation (non-blocking, flagged across prior reviews)No decomposition needed. Dispatch dev agent.