Я внимательно изучил поле `fullAnalysis` в присланном JSON. Там всё ещё обычный текст и списки, а не Markdown-блоки с JSON. **Вот пример того, что мы видим сейчас (в `fullAnalysis`):** ```markdown ## VIII. Воронка спроса Воронка продаж показывает следующие этапы: - Охват: 1000 - Вовлечённость: 300 (30%) ... ``` **А должны были увидеть (согласно плану):** ````markdown ## VIII. Воронка спроса ```json:conversionFunnel [ { "stage": "Охват", "value": 1000, "conversion": 0 }, ... ] ``` ```` ```` --- ### Почему так произошло? Проблема в архитектуре метода `processAnalysis` в вашем Java-коде. 1. Вы изменили метод `buildMarkdownFromReport`, и он, скорее всего, работает правильно и генерирует строку с JSON-блоками. 2. **НО** эта строка (`markdownContent`) используется **только для генерации PDF**. 3. В базу данных и во фронтенд (в поле `reportData`) сохраняется старая версия текста, сгенерированная AI (Промпт №2), которая не знает о нашей новой логике встраивания графиков. ### Как исправить? Нам нужно сказать Cursor'у, чтобы он **перезаписал** поле `fullAnalysis` внутри `reportData` тем Markdown-контентом, который генерирует метод `buildMarkdownFromReport`. **Промпт для Cursor (отправь это, чтобы починить):** ```text Я не вижу изменений в JSON-ответе для фронтенда. Проблема в методе `processAnalysis` класса `MarketingAnalysisService`. Сейчас переменная `markdownContent` (результат метода `buildMarkdownFromReport`) используется только для генерации PDF. А в `analysis.setReportData(reportData)` попадает старый текст, сгенерированный AI. Пожалуйста, сделай следующее изменение в методе `processAnalysis`: 1. После вызова: String markdownContent = buildMarkdownFromReport(reportData, request); 2. Добавь строку, которая обновляет reportData: reportData.put("fullAnalysis", markdownContent); Это нужно, чтобы фронтенд получал именно сформированный Markdown с JSON-блоками (charts), а не просто текст от AI. ```` ### Что произойдет после этого исправления: 1. Backend сгенерирует Markdown с JSON-блоками. 2. Этот Markdown сохранится в базу данных как `fullAnalysis`. 3. Фронтенд получит JSON, где внутри поля `report.fullAnalysis` будут блоки кода ` ```json:seasonality... `. 4. Твой кастомный рендерер на фронтенде (о котором я писал выше) увидит эти блоки и нарисует графики.