.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
### Инструкция (Промпт) для AI Агента
|
||||
|
||||
Ты — Senior Vue.js разработчик. Мне нужно исправить рендеринг Markdown в компоненте.
|
||||
|
||||
**Проблема:**
|
||||
Компонент отображает сырой Markdown (символы #, \*, таблицы в виде текста), вместо HTML разметки. Стили CSS есть, но они не применяются, так как HTML не генерируется.
|
||||
|
||||
**Анализ кода:**
|
||||
|
||||
1. В секции imports из 'vue' забыли добавить `computed`.
|
||||
2. Функция `renderMarkdown` скорее всего падает в `catch` и возвращает исходную строку.
|
||||
3. Библиотека `marked` в последних версиях изменила API (удален `setOptions`, используется `marked.parse`).
|
||||
|
||||
**Задача:**
|
||||
Перепиши секцию `<script setup>` и исправь логику рендеринга.
|
||||
|
||||
**Требования к исправлению:**
|
||||
|
||||
1. Добавь `computed` в импорты из 'vue'.
|
||||
2. Обнови использование библиотеки `marked`. Убедись, что используется `marked.parse(text)`. Вместо устаревшего `setOptions` используй современный подход (или `marked.use()`, или просто дефолтный парсинг, так как `gfm` и `breaks` обычно включены по умолчанию).
|
||||
3. Убедись, что переменная `renderedSummary` корректно обрабатывает `report.summary` и возвращает безопасный HTML (если summary нет, возвращать пустую строку).
|
||||
4. (Опционально) Добавь импорт `DomPurify` (если он есть в проекте) для очистки HTML перед выводом в `v-html`, но если нет — оставь просто парсинг.
|
||||
|
||||
**Ожидаемый результат:**
|
||||
Код компонента, где `renderedSummary` возвращает корректный HTML, и заголовки/таблицы отображаются красиво согласно CSS стилям `.markdown-content`.
|
||||
|
||||
````
|
||||
|
||||
### Что именно должен изменить агент (для вашего понимания):
|
||||
|
||||
Агент должен изменить блок скрипта примерно так:
|
||||
|
||||
```javascript
|
||||
// Было
|
||||
import { onBeforeUnmount, onMounted, ref } from 'vue';
|
||||
// Станет (добавится computed)
|
||||
import { onBeforeUnmount, onMounted, ref, computed } from 'vue';
|
||||
|
||||
// Было (конфигурация marked)
|
||||
if (marked.setOptions) { ... }
|
||||
// Станет (упрощенно и надежно)
|
||||
const renderMarkdown = (markdown) => {
|
||||
if (!markdown) return '';
|
||||
try {
|
||||
// Просто парсим, так как в новых версиях gfm включен по умолчанию
|
||||
return marked.parse(markdown, { breaks: true });
|
||||
} catch (e) {
|
||||
console.error('Markdown parsing error:', e);
|
||||
return markdown;
|
||||
}
|
||||
};
|
||||
````
|
||||
Reference in New Issue
Block a user