Files
gitmost/docs/backlog/ai-chat-stream-integration-coverage.md
claude_code ce60498a90 docs: track post-0.93.0 share-AI cap change + deferred stream-coverage debt
Follow-ups from the multi-aspect review of the e5bc82c7..d4658d4c range.

- CHANGELOG: document under [Unreleased] that the default per-workspace
  hourly public-share assistant cap was lowered 300 -> 100 after the
  v0.93.0 tag (#62). v0.93.0 shipped 300, so existing deployments that
  never set SHARE_AI_WORKSPACE_MAX_PER_HOUR drop to 100 on upgrade.
- Recreate the still-open Section 3 (AiChatService.stream integration
  coverage) of the deleted feature-test-coverage-deferred.md as a focused
  backlog doc so the test debt stays tracked; Sections 1-2 are already
  closed by the integration harness (PR #115).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 16:54:56 +03:00

2.5 KiB

Отложенные интеграционные тесты 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.