import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/scripts/Classes/AiDocItemClasses - Генератор документации классов через ИИ'/>

# Класс AiDocItemClasses

Специализированный класс для генерации и обновления документации TypeScript-классов с помощью ИИ. Он автоматизирует весь процесс: от чтения исходного кода и сбора контекста до взаимодействия с моделями ИИ и создания стандартизированных MDX-файлов документации.

## Ключевые особенности

- **Автоматизированная генерация** — управляет полным циклом создания документации на основе определения класса.
- **На основе шаблонов** — использует специализированные шаблоны промптов (`aiDocClassPrompt.en.txt`) для обеспечения согласованных ответов ИИ.
- **Демо-ориентированность** — использует эталонные демонстрационные файлы (`demoClassEn.mdx`), чтобы помочь ИИ в визуальном форматировании.
- **Умная логика** — автоматически определяет пути в Wiki и заголовки на основе структуры исходного файла.
- **Защита процесса сборки** — интегрируется с системой сборки, гарантируя, что документируется только корректный, компилируемый код.

## Инициализация

Инициализируйте `AiDocItemClasses`, указав путь к исходному коду и информацию о целевом файле.

**Параметры:**
- `path: string` — базовый путь к директории проекта.
- `item: GitFileItem` — информация о конкретном TypeScript-файле класса.

```typescript
import { AiDocItemClasses } from '@dxtmisha/scripts'

const classDoc = new AiDocItemClasses('/src/classes', gitFileItem)

// Запуск генерации документации
await classDoc.make()
```

## Методы

### Управление

- `make(): Promise<void>` — запускает цикл документирования: проверяет наличие обновлений, подготавливает контекст, вызывает ИИ и записывает результаты.

### Метаданные

- `getTitle(): string` — формирует стандартизированный заголовок для страницы документации.
- `getPathWiki(): string[]` — рассчитывает путь хранения в Wiki на основе расположения файла.
- `isBuildDisabled(): boolean` — проверяет, помечен ли файл маркером `// wiki:build-none` для пропуска обработки.

## Типы

### GitFileItem
Представляет информацию о файле, управляемом Git.
- `path: string` — относительный путь к файлу.
- `pathByOS: string` — абсолютный путь, специфичный для ОС.
- `date: string` — дата последнего изменения.
- `item: any` — зарезервировано для дополнительных метаданных.
