legco_ai_assistant/.playwright-mcp
Woody 3b741c1844 feat(query): stream extracted questions immediately via SSE
Convert /query endpoint from synchronous JSON to Server-Sent Events (SSE)
streaming. The frontend now receives extracted_questions as soon as the
first LLM call completes, without waiting for retrieval, filtering, and
answer generation.

Backend:
- Add StreamingQueryEvent union type (Decomposed, Retrieving, Filtering,
  Generating, Completed, Error)
- Convert /query to return StreamingResponse with SSE format
- Yield events after each pipeline phase

Frontend:
- Add queryDocumentStream() using fetch + ReadableStream
- Add useQueryDocumentStream() hook with phase-aware state
- Update LTTPage to use streaming instead of mutation
- Update ResponsePanel to show phase messages (Searching documents...,
  Filtering passages..., Generating answer...)
- Update ExtractedQuestionsDisplay to accept null

Tests:
- Update query_flow e2e test to mock queryDocumentStream
- 84/85 tests pass (1 pre-existing failure from removed file-input)
2026-04-25 18:29:22 +08:00
..
frontend-state.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-23T04-04-47-009Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-23T04-06-45-294Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-23T04-06-54-071Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-24T01-59-42-371Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-24T02-00-11-873Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-24T02-00-49-145Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-24T02-01-07-790Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-24T02-01-53-452Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-24T02-02-21-161Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-24T08-39-07-948Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-24T08-42-08-014Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-25T06-20-17-555Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-25T06-20-27-139Z.png feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-25T06-23-32-244Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-25T06-23-38-851Z.png feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-25T06-25-19-538Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-25T06-27-12-978Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-25T06-28-21-255Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00
page-2026-04-25T06-31-56-729Z.yml feat(query): stream extracted questions immediately via SSE 2026-04-25 18:29:22 +08:00