Merge dev → main: per-post body-capture diagnostics in the event UI (#842) #105

Merged
bvandeusen merged 1 commits from dev into main 2026-06-14 23:14:15 -04:00
Owner

Surfaces how each post was handled ON THE EVENT in the UI — no worker-log hunting.

The feed already requests post_type, so ingest_core records {post_id, title, post_type, body_chars} per post with zero extra fetching, threaded through DownloadResultDownloadEvent.metadata_['post_diagnostics']. The download detail modal gains a Post capture section: totals, an empty-body table (post_type + chars, flagged), an all-posts table, and it's in Copy-all.

This exposes the post_type of the StickySpoodge empty-body posts so the next fetch fix is exact. No migrations. CI green on dev head bcc7266 (run 1106).

After merge: re-pull :latest, re-run Recapture on StickySpoodge, open the event → Post capture → read the 9 empties' post_type.

Surfaces how each post was handled ON THE EVENT in the UI — no worker-log hunting. The feed already requests `post_type`, so `ingest_core` records `{post_id, title, post_type, body_chars}` per post with zero extra fetching, threaded through `DownloadResult` → `DownloadEvent.metadata_['post_diagnostics']`. The download detail modal gains a **Post capture** section: totals, an empty-body table (post_type + chars, flagged), an all-posts table, and it's in Copy-all. This exposes the `post_type` of the StickySpoodge empty-body posts so the next fetch fix is exact. No migrations. CI green on dev head `bcc7266` (run 1106). After merge: re-pull `:latest`, re-run Recapture on StickySpoodge, open the event → Post capture → read the 9 empties' post_type.
bvandeusen added 1 commit 2026-06-14 23:14:09 -04:00
feat(downloads): per-post body-capture diagnostics in the event UI (#842)
CI / lint (push) Successful in 2s
CI / frontend-build (push) Successful in 21s
CI / backend-lint-and-test (push) Successful in 28s
CI / integration (push) Successful in 3m32s
bcc7266021
Operator can't (and shouldn't have to) hunt worker logs to see why a recapture
left a post body empty. Surface per-post handling ON THE EVENT, in the UI.

The feed already requests post_type (in _FIELDS_POST), so ingest_core builds a
per-post diagnostic {post_id, title, post_type, body_chars} with zero extra
fetching — a 0-char body next to its post_type explains an empty post at a
glance (e.g. polls/embeds whose body the API never returns).

- ingest_core: accumulate post_diagnostics; thread via DownloadResult
- download_service: write to DownloadEvent.metadata_['post_diagnostics']
- DownloadDetailModal: 'Post capture' section — totals + empty-body table
  (post_type + chars, flagged) + all-posts table; included in Copy-all
- tests: ingester diag (post_type + body_chars), download_service metadata

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
bvandeusen merged commit 428ecd8642 into main 2026-06-14 23:14:15 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/FabledCurator#105