== User stories == US1: Контекст с дашборда/датасета → /agent с URL params US2: Guardrails card — env badge, 7 risk tones, countdown, permission_denied US3: Tools optimization — retry, timeout, summarise, RBAC + context affinity == Backend == - _context.py (NEW): UIContext validation (7 checks) - _tool_filter.py (NEW): RBAC + context affinity pipeline - _confirmation.py: build_confirmation_contract_v2, permission_denied_payload - tools.py: superset_list_databases, retry/summarise/timeout wrappers - app.py: _inject_uicontext, _inject_env_id_into_tools, database prefetch в runtime context - _persistence.py: prefetch_databases() - agent_superset_explore.py: GET /databases endpoint - _llm_async_http.py, _persistence.py: fix double /v1 в LLM URL (LM Studio Unexpected endpoint) == Frontend == - AgentChatModel.svelte.ts: 5 atoms, 3 actions, countdown, context - AgentChat.svelte: production banner, process steps, debug panel - ConfirmationCard.svelte: 7 risk tones, permission_denied, countdown - ToolCallCard.svelte: retrying/timeout/cancelled states - StreamProcessor.svelte.ts: tool_retry, timeout, permission_denied - TopNavbar: sparkles icon + Ассистент - sidebarNavigation: AI section - DashboardHeader, datasets/+page: contextual AI buttons - Icon: sparkles, brain, cpu icons - tailwind: assistant category colors - i18n: en/ru nav keys == Tests == - 159 backend agent tests (+16 US3: retry, timeout, summarise, contracts) - 2544 frontend tests (+11 model + component tests) - 15 JSON fixtures (10 API + 5 model) == Specs == - specs/035-agent-chat-context/: spec, UX, plan, tasks, research, data-model, contracts, quickstart, traceability, fixtures, checklists Closes #035
3.0 KiB
3.0 KiB
#region Traceability [C:3] [TYPE ADR] [SEMANTICS traceability,rtm,agent-chat] @defgroup Trace Matrix v2 — Requirements → Model → API → Task → Test for 035-agent-chat-context.
Traceability Matrix
| Story | Requirement | Model/Contract | API/SSE | Backend Task | Frontend Task | Test |
|---|---|---|---|---|---|---|
| US1 | AGCTX-FR-001, FR-003 | AgentChat.Model | — | — | T010, T011, T012 | T007 |
| US1 | AGCTX-FR-002, FR-004 | AgentChat.Context.Inject, Validate | Gradio submit (uicontext at pos 6) | T005, T013, T014 | — | T008 |
| US1 | AGCTX-FR-005 | AgentChat.ToolFilter.Pipeline | — | T006 (build_tool_pipeline) | — | T009 |
| US1 | prod warning | AgentChat.Model | — | — | T015, T016 | T007 |
| US2 | AGGRD-FR-001, FR-002 | AgentChat.Confirmation.GuardV2 | confirm_required (extended) | T022 | T025, T026, T027 | T020, T021 |
| US2 | AGGRD-FR-003 | AgentChat.Confirmation.PermissionDenied | permission_denied (NEW) | T023, T024 | T028 | T020 |
| US2 | AGGRD-FR-004 | AgentChat.StreamProcessor | confirm_resolved (denied) | — | T029 | T021 |
| US3 | AGTL-FR-001, FR-005 | AgentChat.ToolFilter.InvocationGuard | permission_denied | T006, T024 | — | T009 |
| US3 | AGTL-FR-002 | AgentChat.Tools.Retry | tool_retry (NEW) | T037 | T040, T041 | T033, T036 |
| US3 | AGTL-FR-003 | AgentChat.Tools.Summarise | — | T038 | — | T034 |
| US3 | AGTL-FR-004 | AgentChat.Tools.Timeout | tool_timeout (extended) | T039 | T040, T041 | T035, T036 |
| US3 | AGTL-FR-006 (SHOULD) | AgentChat.EmbeddingRouter | — | post-MVP | — | — |
| SC-006 | AGCTX-FR-004 (validation) | AgentChat.Context.Validate | — | T005 | — | T008 |
Impact Analysis
| If you change... | Contracts verify | Tests verify | Screens depend |
|---|---|---|---|
| agent_handler uicontext pos | AgentChat.LangGraph.Handler | T008 | AgentChat panel |
| _CONTEXT_TOOL_AFFINITY | AgentChat.ToolFilter.Pipeline | T009 | AgentChat panel |
| _TOOL_PERMISSIONS | AgentChat.ToolFilter.InvocationGuard | T020 | AgentChat panel |
| build_confirmation_contract_v2 | AgentChat.Confirmation.GuardV2 | T020, T021 | ConfirmationCard |
| yield_permission_denied | AgentChat.Confirmation.PermissionDenied | T020 | ConfirmationCard |
| _retry_read_tool | AgentChat.Tools.Retry | T033 | ToolCallCard |
| _execute_with_timeout | AgentChat.Tools.Timeout | T035 | ToolCallCard |
Contract → Fixture Mapping
| Production Contract | Fixture |
|---|---|
| AgentChat.LangGraph.Handler | FX_AgentChat.Handler.* (3 fixtures) |
| AgentChat.Confirmation.GuardV2 | FX_AgentChat.Guard.* (4 fixtures) |
| AgentChat.ToolFilter.Pipeline | FX_AgentChat.Filter.* (3 fixtures) |
| AgentChat.Tools.Retry | FX_AgentChat.Retry.* (3 fixtures) |
| AgentChat.Model.SetContext | FX_AgentChat.SetContext.* (2 fixtures) |
| AgentChat.Context.Validate | FX_AgentChat.Validate.* (4 fixtures — valid, invalid_type, oversized, long_name) |
#endregion Traceability