Round 15: /admin/scans observability + handled-timeout console cleanup#82
Conversation
…ilter Closes the /admin/scans item from KNOWN_ISSUES 0b. The PII design decision the item was blocked on: metadata only. Photos were never stored (analyze writes imageUrl: null by design), rows show truncated userIds and item counts — no emails, no food-name lists. Read-only, same philosophy as /admin/users. To make the page useful for its stated purpose (spotting AI-pipeline regressions), /api/analyze now persists a failure row at the single 503 funnel with errorClass derived from the failure (timeout / parse_error / provider_error / binding_missing) — the errorClass column existed since the first schema cut but had zero writers, so failures were only ever visible in the ephemeral CF log stream. Best-effort insert: a DB hiccup can never mask the 503 the user is receiving. https://claude.ai/code/session_01RaziyjCxHgKcqvTqss7bXS
KNOWN_ISSUES 'benign console-error noise' pattern 2: the scan UI fully absorbs cascade timeouts (renders the retry card), but the logger reported them via console.error, polluting every console-error assertion — the e2e suites carried a dedicated filter entry just for this line. Timeout-category telemetry now emits at warn; genuinely unhandled categories stay at error. KNOWN_ISSUES updated for both Round-15 items. https://claude.ai/code/session_01RaziyjCxHgKcqvTqss7bXS
|
Caution Review failedPull request was closed or merged during review No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThis PR adds admin visibility into food scan failures through a new ChangesAdmin scans visibility and telemetry
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Deploying eatinorder with
|
| Latest commit: |
f48d82a
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://5027b2fe.eatinorder.pages.dev |
| Branch Preview URL: | https://claude-webapp-review-improve.eatinorder.pages.dev |
Round 15 — admin observability + console-noise cleanup
Two items from KNOWN_ISSUES, each its own commit:
1.
/admin/scans— metadata-only scan feed (KNOWN_ISSUES 0b)The item was blocked on "a read-only design decision on PII exposure (photos)". The decision: metadata only — photos were never stored anyway (
/api/analyzewritesimageUrl: nullby design), rows show truncated userIds and item counts, no emails, no food-name lists. Read-only page, filter chips byerrorClass, same offset pagination as/admin/users.To make it useful for its stated purpose (spotting AI-pipeline regressions):
/api/analyzenow persists a failure row at the single 503 funnel witherrorClass∈timeout / parse_error / provider_error / binding_missing. TheerrorClasscolumn existed since the first schema cut with zero writers — failures were only visible in the ephemeral CF log stream. The insert is best-effort (its own try/catch); a DB hiccup can never mask the 503 the user is receiving.2. Handled scan timeouts log at
warn, noterror(KNOWN_ISSUES "benign console noise" pattern 2)The scan UI fully absorbs cascade timeouts (renders the retry card), but the logger emitted them via
console.error, polluting every console-error assertion — the e2e suites carried a dedicated filter entry just for this line. Timeout-category telemetry now emits at warn; genuinely unhandled categories stay at error.Validation
npm run check:all: 193/193 unit, i18n parity, type-check — greennext build: green;/[locale]/admin/scanscompiles as a dynamic routeMerge with Merge, not Squash (ITERATION_PROCESS §4).
https://claude.ai/code/session_01RaziyjCxHgKcqvTqss7bXS
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation
Improvements