Fix modal overflow and search timeout warning
build-push / docker (push) Successful in 4m1s

This commit is contained in:
AI Assistant
2026-03-17 12:05:44 +09:00
parent 70c975c231
commit 0b68feff80
11 changed files with 367 additions and 45 deletions
+20
View File
@@ -30,6 +30,7 @@
- Frontend now logs more useful API and debug information than earlier versions.
- A local self-test workflow now exists and should be run before container builds or pushes.
- A fresh-machine bootstrap was revalidated in a user-local toolchain setup on `2026-03-17`; `go test ./...` and `bash scripts/selftest.sh` now pass in that setup.
- Result modal sizing is now being constrained to the viewport, and modal-only source-summary translation is now part of the active implementation path.
## Current Architecture
- `backend/main.go`
@@ -225,6 +226,7 @@
- Frontend JavaScript still has no Node-based lint/build step in this environment.
- Search cards now separate source snippet from AI reason, but metadata fidelity still depends on source enrichment quality.
- Gemini notes are now intended to be Korean, but final output quality still depends on Gemini response consistency.
- Source Summary translation now depends on Google Translate HTTP availability; frontend silently falls back to original summary text if translation fails.
- The local self-test script is better than before, but it is still a smoke test, not full integration coverage.
## Current Risks Around Search Quality
@@ -547,6 +549,7 @@
- [ ] Reduce `/api/search` latency further without collapsing result count
- [ ] Build a repeatable repo-local bootstrap script or documented setup command set for non-root machines so fresh PC setup does not depend on shell history
- [ ] Improve Envato / Artgrid preview acquisition reliability so Gemini Vision sees real frames more often
- [ ] Browser-verify the new result modal at multiple viewport heights and confirm translated Source Summary readability on real long descriptions
- [ ] Revisit Google Video UX:
- current YouTube embed was abandoned due error `153`
- current in-app panel is more reliable but less rich than a true embedded watch page
@@ -612,6 +615,23 @@
- If behavior in the browser does not match the latest backend/frontend code, the first assumption should be stale frontend assets until proven otherwise
## Recent Change Log
- Date: `2026-03-17`
- What changed:
- Added `POST /api/translate/summary` so the result modal can translate `Source Summary` text to Korean on demand with in-process caching.
- Reworked result modal sizing so the popup stays within the viewport and the summary area scrolls internally instead of stretching the whole dialog off-screen.
- Replaced the false-positive near-deadline warning heuristic with explicit deadline metadata from search collection / enrichment / Gemini stages.
- Added an Artgrid API `403` cooldown guard so repeated clip enrichments stop re-hitting the same blocked JSON endpoint for a while and fall back to HTML parsing directly.
- Added backend tests for timeout-warning gating, summary translation caching, and Artgrid `403` skip behavior.
- Why it changed:
- The provided browser log showed a successful `~55s` search still surfacing `search returned partial results to avoid gateway timeout`, and the user reported that the result popup could overflow the viewport and that untranslated / very long source summaries made the modal feel too large.
- How it was verified:
- `go test ./...`
- `bash scripts/selftest.sh`
- `python3 -m py_compile worker/downloader.py scripts/mock_searxng.py`
- What is still risky or incomplete:
- Full browser-level confirmation of the resized modal and lazy summary translation still needs live UI validation.
- The Artgrid `403` guard reduces repeated waste, but it does not solve the underlying upstream access restriction.
- Date: `2026-03-17`
- What changed:
- Re-audited the repository structure and `TODO.md` handover state on a fresh machine.