Fix watch alert delivery model wiring and webhook failure handling - #68
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Userinstead of belonging to watch runs, which caused runtime errors during watch execution.Description
alert_delivery_status,alert_delivered_at, andalert_error_messagefrom theUsermodel and added them to theWatchRunmodel with nullable types matching the migration.backend/alembic/versions/0005_providers_and_changecase_workflow.pyso ORM and migration are consistent.send_watch_webhookinbackend/app/services/alerting.pyto useresponse.raise_for_status(), retry based onALERT_WEBHOOK_MAX_RETRIES, truncate error messages to a safe length, and return delivery status strings (sent/failed/skipped_*) instead of raising.backend/app/models.py,backend/app/services/alerting.py(no API endpoints removed or behavioral breaking changes introduced).Testing
cd backend && pytest -q, result:102 passed, 0 failed.cd frontend && npm run build, result: build completed successfully.WatchServicecontinues to write delivery status toWatchRunand that webhook failures are non-fatal and produce truncated error messages saved on the run.Codex Task