[test][ai-chat] Отложенные интеграционные тесты AiChatService.stream (рефактор R1-stream) #192

Closed
opened 2026-06-25 22:40:45 +03:00 by Ghost · 0 comments

Перенесено из docs/backlog/ai-chat-stream-integration-coverage.md (файл удалён; этот issue — единственный носитель тест-долга).


Отложенные интеграционные тесты AiChatService.stream

Статус: открыто. Это остаток от прежнего документа
feature-test-coverage-deferred.md (хвост тест-плана PR #49). Два из трёх
его разделов уже закрыты новой интеграционной обвязкой против реального
Postgres/Redis (apps/server/test/integration/, PR #115):

  • Раздел 1 — repo-тесты против БД. Закрыт ai-agent-roles-repo,
    ai-chat-repo-find-by-creator, page-template-references-cascade,
    workspace-repo-update-setting (*.int-spec.ts).
  • Раздел 2 — достоверность Lua-окна cost-cap против реального Redis.
    Закрыт public-share-workspace-limiter.int-spec.ts.
  • Раздел 3 (ниже) — полная интеграция AiChatService.stream. Всё ещё
    не реализован; держим запись открытой, чтобы тест-долг не потерялся при
    удалении исходного документа.

Полная интеграция AiChatService.stream (рефактор R1-stream)

apps/server/src/core/ai-chat/ai-chat.service.ts. В PR #49 извлечён и
покрыт только чистый buildErrorAssistantRecord. Полные интеграционные
сценарии всё ещё отложены:

  • Запись чата, упавшего на первом ходу (onError) — ассистентская
    запись об ошибке должна сохраняться, даже когда первый ход стрима падает.
  • Жизненный цикл external-MCP клиентов — клиенты закрываются и при
    throw, и при onFinish (нет утечки соединений).
  • Анти-tamper: история восстанавливается из БД, а не из body.messages
    клиент не может подменить историю через тело запроса.

Эти сценарии требуют сидирования SDK streamText (инъекция/seam колбэков
onError / onFinish / onAbort + res.hijack). Отложено, чтобы не
дестабилизировать 287-строчный stream(); делать вместе с выносом testable
turn-pipeline.

> Перенесено из `docs/backlog/ai-chat-stream-integration-coverage.md` (файл удалён; этот issue — единственный носитель тест-долга). --- # Отложенные интеграционные тесты `AiChatService.stream` Статус: **открыто.** Это остаток от прежнего документа `feature-test-coverage-deferred.md` (хвост тест-плана PR #49). Два из трёх его разделов уже закрыты новой интеграционной обвязкой против реального Postgres/Redis (`apps/server/test/integration/`, PR #115): - ✅ **Раздел 1 — repo-тесты против БД.** Закрыт `ai-agent-roles-repo`, `ai-chat-repo-find-by-creator`, `page-template-references-cascade`, `workspace-repo-update-setting` (`*.int-spec.ts`). - ✅ **Раздел 2 — достоверность Lua-окна cost-cap против реального Redis.** Закрыт `public-share-workspace-limiter.int-spec.ts`. - ⬜ **Раздел 3 (ниже) — полная интеграция `AiChatService.stream`.** Всё ещё не реализован; держим запись открытой, чтобы тест-долг не потерялся при удалении исходного документа. ## Полная интеграция `AiChatService.stream` (рефактор R1-stream) `apps/server/src/core/ai-chat/ai-chat.service.ts`. В PR #49 извлечён и покрыт только чистый `buildErrorAssistantRecord`. Полные интеграционные сценарии всё ещё отложены: - **Запись чата, упавшего на первом ходу** (`onError`) — ассистентская запись об ошибке должна сохраняться, даже когда первый ход стрима падает. - **Жизненный цикл external-MCP клиентов** — клиенты закрываются и при `throw`, и при `onFinish` (нет утечки соединений). - **Анти-tamper: история восстанавливается из БД, а не из `body.messages`** — клиент не может подменить историю через тело запроса. Эти сценарии требуют сидирования SDK `streamText` (инъекция/seam колбэков `onError` / `onFinish` / `onAbort` + `res.hijack`). Отложено, чтобы не дестабилизировать 287-строчный `stream()`; делать вместе с выносом testable turn-pipeline.
Ghost added the test label 2026-06-25 22:40:45 +03:00
Ghost closed this issue 2026-06-28 03:43:28 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#192