165 lines
16 KiB
Markdown
165 lines
16 KiB
Markdown
# Runtime Trace: 20260413-185533-2ffc120d1d63
|
||
|
||
- active_rag_session_id: cac16675-546d-46af-a792-2ffc120d1d63
|
||
|
||
## request
|
||
```json
|
||
{
|
||
"request_id": "req_0bf6382e1ac04a5ead2847c02802f580",
|
||
"session_id": "as_9d6518890b834bba9eb687b6acc5d212",
|
||
"active_rag_session_id": "cac16675-546d-46af-a792-2ffc120d1d63",
|
||
"process_version": "v2",
|
||
"created_at": "2026-04-13T18:55:33.279163+00:00",
|
||
"message": "Собери документацию из аналитики\n/Users/alex/Dev_projects_v2/ai driven app process/v2/test_doc/features/order_list.md"
|
||
}
|
||
```
|
||
|
||
## process.v2
|
||
```json
|
||
{
|
||
"event": "intent_routed",
|
||
"routing_domain": "DOCS",
|
||
"intent": "DOC_UPDATE",
|
||
"subintent": "FROM_FEATURE",
|
||
"normalized_query": "Собери документацию из аналитики /Users/alex/Dev_projects_v2/ai driven app process/v2/test_doc/features/order_list.md",
|
||
"target_terms": [
|
||
"/users/alex/dev_projects_v2/ai"
|
||
],
|
||
"anchors": {
|
||
"entity_names": [
|
||
"Users",
|
||
"Dev_projects_v2"
|
||
],
|
||
"file_names": [
|
||
"process/v2/test_doc/features/order_list.md"
|
||
],
|
||
"endpoint_paths": [
|
||
"/users/alex/dev_projects_v2/ai"
|
||
],
|
||
"target_doc_hints": [
|
||
"/users/alex/dev_projects_v2/ai",
|
||
"users-alex-dev_projects_v2-ai",
|
||
"users-alex-dev_projects_v2-ai-endpoint",
|
||
"users-alex-dev_projects_v2-ai endpoint",
|
||
"ai",
|
||
"ai-endpoint",
|
||
"ai endpoint",
|
||
"docs/logic/telegram-notification-loop.md"
|
||
],
|
||
"matched_aliases": [],
|
||
"process_domain": null,
|
||
"process_subdomain": null,
|
||
"scope_type": "entity",
|
||
"candidate_domains": [],
|
||
"candidate_subdomains": [],
|
||
"candidate_entities": [
|
||
"list"
|
||
],
|
||
"candidate_apis": [],
|
||
"signal_types": [
|
||
"API_ENDPOINT",
|
||
"DOMAIN_ENTITY",
|
||
"LOGIC_FLOW"
|
||
]
|
||
},
|
||
"confidence": 0.9,
|
||
"routing_mode": "llm_default",
|
||
"llm_router_used": true,
|
||
"reason_short": "Запрос содержит указание на конкретный md-файл с аналитикой и требует собрать документацию.",
|
||
"rag_session_id": "cac16675-546d-46af-a792-2ffc120d1d63"
|
||
}
|
||
```
|
||
|
||
## process.v2.pipeline
|
||
```json
|
||
{
|
||
"event": "router_resolved",
|
||
"domain": "DOCS",
|
||
"intent": "DOC_UPDATE",
|
||
"subintent": "FROM_FEATURE",
|
||
"confidence": 0.9
|
||
}
|
||
```
|
||
|
||
## process.v2.pipeline
|
||
```json
|
||
{
|
||
"event": "anchors_extracted",
|
||
"signal_types": [
|
||
"API_ENDPOINT",
|
||
"DOMAIN_ENTITY",
|
||
"LOGIC_FLOW"
|
||
],
|
||
"endpoint_paths": [
|
||
"/users/alex/dev_projects_v2/ai"
|
||
],
|
||
"target_doc_hints": [
|
||
"/users/alex/dev_projects_v2/ai",
|
||
"users-alex-dev_projects_v2-ai",
|
||
"users-alex-dev_projects_v2-ai-endpoint",
|
||
"users-alex-dev_projects_v2-ai endpoint",
|
||
"ai",
|
||
"ai-endpoint",
|
||
"ai endpoint",
|
||
"docs/logic/telegram-notification-loop.md"
|
||
],
|
||
"matched_aliases": [],
|
||
"target_terms": [
|
||
"/users/alex/dev_projects_v2/ai"
|
||
]
|
||
}
|
||
```
|
||
|
||
## process.v2.pipeline
|
||
```json
|
||
{
|
||
"event": "alias_resolution",
|
||
"resolved_aliases": [],
|
||
"target_doc_hints": [
|
||
"/users/alex/dev_projects_v2/ai",
|
||
"users-alex-dev_projects_v2-ai",
|
||
"users-alex-dev_projects_v2-ai-endpoint",
|
||
"users-alex-dev_projects_v2-ai endpoint",
|
||
"ai",
|
||
"ai-endpoint",
|
||
"ai endpoint",
|
||
"docs/logic/telegram-notification-loop.md"
|
||
]
|
||
}
|
||
```
|
||
|
||
## workflow.v2.docs_update.from_feature_v2
|
||
```json
|
||
{
|
||
"event": "workflow_started",
|
||
"workflow_id": "v2.docs_update.from_feature_v2"
|
||
}
|
||
```
|
||
|
||
## workflow.v2.docs_update.from_feature_v2
|
||
```json
|
||
{
|
||
"event": "workflow_completed",
|
||
"workflow_id": "v2.docs_update.from_feature_v2"
|
||
}
|
||
```
|
||
|
||
## process.v2.pipeline
|
||
```json
|
||
{
|
||
"event": "answer_generated",
|
||
"answer_mode": "docs_update_changeset_v2",
|
||
"changeset_items": 3,
|
||
"apply_changeset": true
|
||
}
|
||
```
|
||
|
||
## result
|
||
```json
|
||
{
|
||
"status": "done",
|
||
"answer": "DOC_UPDATE/FROM_FEATURE v2: сформирован changeset.\n\nIssues:\n- Не найден metadata-тег analysis_id в начале аналитики.\n- Пропущен DELETE для docs/orders_web/web/ui_page/orders.ui.list.md: не найден текущий файл.\n\nTasks:\n- 6.3 create: docs/orders_pprb/pprb/api_method/orders.api.pprb.list.md [pprb | api_method]\n- 6.2 create: docs/orders_ufs/ufs/api_method/orders.api.ufs.list.md [ufs | api_method]\n- 6.4 create: docs/orders_ufs/ufs/logic_block/orders.logic.list.mapping.md [ufs | logic_block]\n- 6.1 delete: docs/orders_web/web/ui_page/orders.ui.list.md [web | ui_page]\n\nChangeset:\n```json\n[\n {\n \"op\": \"create\",\n \"path\": \"docs/orders_pprb/pprb/api_method/orders.api.pprb.list.md\",\n \"base_hash\": null,\n \"proposed_content\": \"---\\nid: orders.api.pprb.list\\ntitle: Метод PPRB получения списка заказов\\ndoc_type: api_method\\nstatus: draft\\ndomain: orders\\nsub_domain: list_read\\nrelated_docs:\\n - orders.api.ufs.list\\n - orders.logic.list.mapping\\n - orders.ui.list\\n---\\n\\n## Summary\\n\\n- Документ описывает метод PPRB для получения списка заказов через API.\\n- Используется HTTP-метод GET с обязательным указанием параметров пагинации и уникального идентификатора запроса.\\n- Метод возвращает список заказов с подробной информацией о каждом заказе и общее количество заказов в системе.\\n- Реализованы метрики мониторинга успешных запросов, технических и бизнес-ошибок.\\n\\n## Details\\n\\n### Технический use case\\n\\n**Предусловия:** \\n- Пользователь аутентифицирован и авторизован в системе.\\n- Передан валидный сквозной идентификатор запроса.\\n\\n**Триггер:** \\n- Поступает HTTP-запрос типа GET с параметрами пагинации на endpoint `/orders`.\\n\\n**Основной сценарий:**\\n\\n1. Система принимает запрос на получение списка заказов.\\n2. Выполняется проверка обязательных параметров (идентификатора запроса, номера страницы, размера страницы).\\n3. Формируется SQL-запрос с учетом пагинации и фильтрации.\\n4. Выполняется чтение данных из базы данных.\\n5. Происходит формирование JSON-ответа с данными о заказах и общим количеством записей.\\n6. Отправляется ответ клиенту.\\n\\n**Альтернативный сценарий (в случае технической ошибки):**\\n\\n1. При возникновении ошибки БД, таймаута или недоступности инфраструктуры фиксируются метрики мониторинга.\\n2. Формируется сообщение об ошибке.\\n3. Отправляется ответ с кодом состояния 5xx.\\n\\n**Постусловие:** \\n- Запись успешно обработана и возвращен корректный ответ либо зафиксирована ошибка и отправлено соответствующее сообщение.\\n\\n### Функциональные требования\\n\\nФункциональные требования для данного метода не выявлены.\\n\\n### Нефункциональные требования\\n\\n#### Мониторинг\\n\\nМониторинг осуществляется через следующие метрики:\\n\\n| Метрика | Описание | Условие срабатывания |\\n| --------------------------------- | --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |\\n| `ORDERS_LIST_PPRB_SUCCESS` | Метрика успешной обработки запроса на стороне PPRB. | Фиксируется при успешном чтении данных из БД и возврате корректного ответа без ошибок. |\\n| `ORDERS_LIST_PPRB_FAIL` | Метрика технической ошибки на стороне PPRB. | Фиксируется при техническом сбое (ошибка БД, таймаут, недоступность инфраструктуры, необработанное исключение, ошибка 5xx). |\\n| `ORDERS_LIST_PPRB_BUSINESS_ERROR` | Метрика бизнес-ошибки доступа на стороне PPRB. | Фиксируется, если проверка ролевой модели завершилась отказом (нет требуемого экшена). |\\n\",\n \"reason\": \"Метод PPRB получения списка заказов\",\n \"hunks\": []\n },\n {\n \"op\": \"create\",\n \"path\": \"docs/orders_ufs/ufs/api_method/orders.api.ufs.list.md\",\n \"base_hash\": null,\n \"proposed_content\": \"---\\nid: orders.api.ufs.list\\ntitle: Метод UFS получения списка заказов\\ndoc_type: api_method\\nstatus: draft\\ndomain: orders\\nsub_domain: list_read\\nrelated_docs:\\n - orders.api.pprb.list\\n - orders.logic.list.mapping\\n - orders.ui.list\\n---\\n\\n## Summary\\n\\n- Описывает метод UFS для получения списка заказов через API.\\n- Использует HTTP-метод GET с обязательными параметрами пагинации и уникальным идентификатором запроса.\\n- Включает проверку авторизации пользователя согласно ролевой модели.\\n- Осуществляет интеграцию с методом PPRB для получения исходных данных.\\n- Возвращает смаппенные данные в формате контракта UFS.\\n- Реализована система аудита запросов и мониторинг технических, бизнес-ошибок и успешных операций.\\n\\n## Details\\n\\n### Технический use case\\n\\n**Предусловия:** \\n- Пользователь аутентифицирован и авторизован в системе.\\n- Переданы валидные параметры запроса, включая уникальный идентификатор запроса, номер страницы и размер страницы.\\n\\n**Триггер:** \\n- Поступает HTTP-запрос типа GET на endpoint `/api/v1/orders`.\\n\\n**Основной сценарий:**\\n\\n1. Система принимает запрос и проверяет наличие и корректность обязательных header- и query-параметров.\\n2. Выполняется проверка прав пользователя на выполнение действия `Role.Orders.List`.\\n3. В случае успешного прохождения проверки выполняется HTTP-запрос методом GET на сервис PPRB с endpoint `/orders`.\\n4. Полученные данные обрабатываются и преобразуются в формат контракта UFS.\\n5. Формируется JSON-ответ с перечнем заказов, включающий информацию о наименовании заказа, клиенте, сумме и статусе, а также сведения о текущей странице, размере страницы и общем количестве заказов.\\n6. Ответ отправляется клиенту.\\n\\n**Альтернативный сценарий (при отсутствии необходимых прав доступа):**\\n\\n1. В случае отсутствия у пользователя необходимого экшена ролевой модели генерируется событие аудита с типом `ORDERS_LIST_REQUESTED` и устанавливается статус ошибки.\\n2. Клиенту возвращается соответствующий статус ошибки и сообщение.\\n\\n**Альтернативный сценарий (в случае технической ошибки):**\\n\\n1. При возникновении ошибки со стороны PPRB, сетевого взаимодействия или других технических проблем система фиксирует соответствующую метрику мониторинга.\\n2. Формируется сообщение об ошибке.\\n3. Отправляется ответ с соответствующим статусом ошибки (например, 5xx).\\n\\n**Постусловие:** \\n- Запрос успешно обработан и отправлен корректный ответ пользователю, либо зафиксировано возникновение ошибки и отправлено соответствующее сообщение.\\n\",\n \"reason\": \"Метод UFS получения списка заказов\",\n \"hunks\": []\n },\n {\n \"op\": \"create\",\n \"path\": \"docs/orders_ufs/ufs/logic_block/orders.logic.list.mapping.md\",\n \"base_hash\": null,\n \"proposed_content\": \"---\\nid: orders.logic.list.mapping\\ntitle: Маппинг модели PPRB в модель UFS\\ndoc_type: logic_block\\nstatus: draft\\ndomain: orders\\nsub_domain: list_read\\nrelated_docs:\\n - orders.api.pprb.list\\n - orders.api.ufs.list\\n - orders.ui.list\\n---\\n\\n## Summary\\n\\n- Описывает маппинг модели PPRB в модель UFS для нормализации структуры данных при получении списка заказов.\\n- Ключевые маппинги включают переназначение полей `orderName -> name`, `clientDisplayName -> clientName`, `orderAmount -> amount`, `orderStatus -> status`.\\n- Обеспечивает обработку пустых строковых значений, возвращая пустую строку `\\\" \\\"` и сохраняя исходный порядок элементов списка.\\n- Не требует учета аудита и включает мониторинг времени выполнения маппинга на уровне debug/trace.\\n\\n## Details\\n\\n### Детализированное описание маппинга\\n\\nРеализация маппинга включает:\\n\\n- Преобразование полей модели PPRB в соответствующие поля контракта UFS:\\n - Поле `orderName` модели PPRB преобразуется в поле `name`.\\n - Поле `clientDisplayName` модели PPRB преобразуется в поле `clientName`.\\n - Поле `orderAmount` модели PPRB преобразуется в поле `amount`.\\n - Поле `orderStatus` модели PPRB преобразуется в поле `status`.\\n \\n- Обработка пустых строковых значений: \\n - Все пустые строки должны возвращаться как пустая строка `\\\"\\\"`\\n\\n- Сохранение порядка элементов списка:\\n - Порядок элементов входящего списка PPRB сохраняется неизменным после преобразования в модель UFS.\\n\\nТаким образом, обеспечивается корректное и последовательное преобразование данных для дальнейшей передачи их в пользовательский интерфейс.\\n\",\n \"reason\": \"Маппинг модели PPRB в модель UFS\",\n \"hunks\": []\n }\n]\n```\n\napply_changeset: true",
|
||
"completed_at": "2026-04-13T18:56:15.938987+00:00"
|
||
}
|
||
```
|