Skip to content

feat(search-ui): grounded AI answer card with citation chips#939

Open
seonghobae wants to merge 1 commit into
developfrom
feat/search-answer-card
Open

feat(search-ui): grounded AI answer card with citation chips#939
seonghobae wants to merge 1 commit into
developfrom
feat/search-answer-card

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

What (pairs with #938 — makes the moat demoable end-to-end)

Surfaces /api/search/answer in the Search workspace: an AI 답변 card with the grounded answer, provenance label, and citation chips that activate the cited email in the result list.

Graceful by design

The card is an enhancement: when the answer endpoint is unavailable (e.g. #938 not merged yet) or returns no answer, the card hides and search behaves exactly as before — verified by the pre-existing 5 search page tests passing unchanged with the endpoint 404ing. Safe to merge independently of #938 in either order.

Compliance

State updates only in promise callbacks (react-hooks/set-state-in-effect); empty queries hide via render guard.

Verification (local)

  • New page test: card renders (answer + citation chip + provenance) + POST body asserted → 6/6 passed
  • eslint clean · tsc clean

🤖 Generated with Claude Code

Surfaces /api/search/answer in the Search workspace: an answer card above
the result detail with the grounded answer, provenance label, and citation
chips that activate the cited email in the result list.

Graceful by design: the card is an enhancement — when the answer endpoint is
unavailable or returns no answer, the card hides and search behaves exactly
as before (verified: all pre-existing search page tests pass unchanged with
the endpoint 404ing). State updates only happen in promise callbacks
(react-hooks/set-state-in-effect compliant); empty queries hide the card via
a render guard.

Tests: new page test renders the card (answer + citation chip + provenance)
and asserts the POST body; existing 5 tests green; eslint + tsc clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017RkKdtHRLG4wSLh6PVsp8J
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant