Я внимательно изучил поле `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.  Твой кастомный рендерер на фронтенде (о котором я писал выше) увидит эти блоки и нарисует графики.
