Improve modal fit and Gemini search refinement
build-push / docker (push) Successful in 4m8s

This commit is contained in:
AI Assistant
2026-03-17 12:30:50 +09:00
parent 0b68feff80
commit 556d4d6c1b
8 changed files with 353 additions and 77 deletions
+22
View File
@@ -31,6 +31,7 @@
- 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.
- Card summaries now also translate lazily to Korean, and Gemini negative-assessment handling now drives stronger follow-up search behavior than before.
## Current Architecture
- `backend/main.go`
@@ -227,6 +228,7 @@
- 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 result modal should now stay within viewport height, but this still needs real browser confirmation on multiple short-height displays because CSS-only constraints were the source of the latest user-visible regression.
- 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
@@ -550,6 +552,7 @@
- [ ] 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
- [ ] Evaluate whether the new Gemini supplemental-query generation is reducing irrelevant results on a small fixed benchmark query set
- [ ] 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
@@ -615,6 +618,25 @@
- 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:
- Removed the visible `AI Recommended` badge from search cards.
- Extended lazy summary translation so result cards, not just the modal, now request Korean `Source Summary` text as they come into view.
- Reworked Gemini vision parsing and recommendation metadata so candidate assessments now distinguish `positive`, `unclear`, `irrelevant`, and `inappropriate`, with short search hints for weak/negative results.
- Removed the direct `Preview evidence pending` filler path from normal merge behavior and moved fallback filling to a later, more neutral stage.
- Upgraded supplemental search behavior so follow-up queries can be generated from Gemini feedback and provider/source mix instead of relying only on the old fixed fallback list.
- Tightened modal height handling again so the overlay and internal panels can scroll without pushing the popup past the viewport.
- Why it changed:
- The user reported that the modal could still overflow the browser, that the `AI Recommended` chip was unnecessary noise, that card-level source summaries should also be translated, and that weak/negative Gemini evaluations should trigger smarter additional searching instead of surfacing low-confidence filler results.
- 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:
- The new supplemental-query generation depends on Gemini availability for the smartest path and falls back to deterministic query building when Gemini text generation is unavailable.
- Card-level lazy translation reduces request burst compared with translating everything during `/api/search`, but still adds client-side translation traffic during scrolling.
- Real browser validation is still needed to confirm the modal no longer exceeds the viewport on the exact user display conditions shown in the screenshot.
- 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.