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

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

# Класс AiDocItem

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

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

- **Оптимизация для функций** — использует специальные шаблоны (`aiDocFunctionPrompt.en.txt`), разработанные для документирования логики и алгоритмов.
- **Визуальное единство** — использует эталонные данные из `demoDocEn.mdx` для создания документации, соответствующей стандартам проекта.
- **Полный рабочий процесс** — берет на себя все этапы: от чтения исходной функции до записи финального MDX-файла.
- **Умные метаданные** — автоматически определяет корректный путь в Wiki и формирует стандартизированный заголовок страницы.

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

Инициализируйте `AiDocItem`, указав путь к проекту и метаданные целевого файла.

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

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

const functionDoc = new AiDocItem('/src/functions', gitFileItem)

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

## Методы

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

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

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

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

## Типы

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