Я хочу изменить логику формирования Markdown-отчета в методе `buildMarkdownFromReport` класса `MarketingAnalysisService`. Сейчас метод создает Markdown-таблицы (ASCII tables) для отображения данных (сезонность, конкуренты и т.д.). Мне нужно изменить это поведение: вместо таблиц я хочу встраивать JSON-данные для графиков прямо в текст отчета, используя Markdown code blocks. **Требования:** 1. Найди метод `buildMarkdownFromReport`. 2. В местах, где сейчас формируются таблицы (например, для "seasonality", "competitors", "audienceSegmentation", "channelsPotential", "conversionFunnel"), замени генерацию таблиц на вставку JSON-блока. 3. Формат блока должен быть таким: ```json:chart-type { ... json data ... } ``` ```` Где `chart-type` — это идентификатор типа графика (например, `json:seasonality`, `json:competitors`, `json:funnel`). Это поможет фронтенду понять, какой компонент графика рисовать. 4\. Используй поле `objectMapper` для сериализации соответствующих карт/списков (chartsData) в JSON-строку перед вставкой. 5\. Убедись, что JSON отформатирован красиво (pretty print), чтобы он был читаемым, если смотреть на raw text. **Пример желаемого результата в Markdown:** Вместо таблицы с месяцами, должно получиться: ### 1️⃣ Сезонность спроса (12 месяцев) ```json:seasonality { "Январь": 70, "Февраль": 60, ... } ``` Пожалуйста, рефактори метод `buildMarkdownFromReport` соответствующим образом. ```` --- ### Как это будет работать (для твоего понимания) После того как Cursor применит изменения, твой метод `buildMarkdownFromReport` будет выглядеть примерно так (псевдокод): ````java // Внутри buildMarkdownFromReport // ... заголовки ... if (chartsData.containsKey("seasonality")) { markdown.append("### 1️⃣ Сезонность спроса (12 месяцев)\n\n"); // Сериализуем данные в JSON String jsonStr = objectMapper.writerWithDefaultPrettyPrinter() .writeValueAsString(chartsData.get("seasonality")); // Вставляем как блок кода с уникальным идентификатором языка markdown.append("```json:seasonality\n"); markdown.append(jsonStr); markdown.append("\n```\n\n"); } ```` ### Что нужно сделать на Фронтенде? Так как мы изменили подход, фронтенд (React/Vue) должен использовать библиотеку для рендеринга Markdown (например, `react-markdown`). Тебе нужно будет написать кастомный рендерер для элементов `code`. **Пример логики для фронтенда (React + react-markdown):** ```javascript import ReactMarkdown from 'react-markdown'; import { SeasonalityChart, FunnelChart } from './MyCharts'; // Твои компоненты графиков const MarkdownRender = ({ content }) => { return ( ; case 'funnel': return ; default: return
{children}
; // Фоллбек } } return ( {children} ); }, }} > {content}
); }; ```