# General Translation Platform: Диагностика
URL: https://generaltranslation.com/ru/docs/platform/core/reference/diagnostics.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Форматирование диагностического текста без записи в журнал и отправки отчётов. Справочник API по createDiagnosticMessage и formatDiagnosticErrorDetails.

Импортируйте эти функции и типы из `generaltranslation/diagnostics`. Они только формируют строки: ничего не записывают в журнал, не отправляют отчёты об исключениях, не передают телеметрию и не маскируют секреты.

| Экспорт                                          | Описание                                                     |
| ------------------------------------------------ | ------------------------------------------------------------ |
| [`createDiagnosticMessage`](#create-message)     | Объединяет диагностический текст в сообщение.                |
| [`DiagnosticMessageInput`](#message-input)       | Поля сообщения и необязательный контекст.                    |
| [`DiagnosticSeverity`](#severity)                | Поддерживаемые подписи уровня серьёзности.                     |
| [`formatDiagnosticErrorDetails`](#error-details) | Преобразует ошибку неизвестного типа в необязательный текст. |

## `createDiagnosticMessage` [#create-message]

**Сигнатура** `(input: DiagnosticMessageInput) => string`

Объединяет переданные поля в следующем порядке: что произошло и почему, успокаивающее пояснение, способ исправления и выход из ситуации, подробности и URL документации. Удаляет лишние пробелы по краям предложений и при необходимости добавляет знаки препинания. Необязательные источник и уровень серьёзности образуют префикс; `wayOut`, начинающийся со строчной буквы, может присоединяться к предложению с исправлением.

```ts
import { createDiagnosticMessage } from 'generaltranslation/diagnostics';

const message = createDiagnosticMessage({
  source: 'Importer',
  severity: 'Warning',
  whatHappened: 'The file was skipped',
  fix: 'Choose a supported format',
});
// Возвращает строку; автоматически в лог ничего не выводится.
console.log(message);
```

## `DiagnosticMessageInput` [#message-input]

**Тип** object · **Обязательный** входной объект для форматтера сообщений

| Поле           | Описание                                                              | Тип                  | Необязательно | По умолчанию |
| -------------- | --------------------------------------------------------------------- | -------------------- | ------------- | ------------ |
| `whatHappened` | Основное пояснение.                                                   | `string`             | Нет           | —            |
| `source`       | Префикс, указывающий вызывающую сторону.                              | `string`             | Да            | —            |
| `severity`     | Подпись-префикс.                                                        | `DiagnosticSeverity` | Да            | —            |
| `reassurance`  | Что остаётся безопасным или неизменным.                               | `string`             | Да            | —            |
| `why`          | Причина; присоединяется к основному пояснению.                        | `string`             | Да            | —            |
| `fix`          | Рекомендуемое исправление.                                            | `string`             | Да            | —            |
| `wayOut`       | Альтернативное действие.                                              | `string`             | Да            | —            |
| `details`      | Дополнительные сведения; элементы массива объединяются через запятую. | `string \| string[]` | Да            | —            |
| `docsUrl`      | URL документации, добавляемый в конец сообщения.                      | `string`             | Да            | —            |

Обязательно только поле `whatHappened`; опущенные необязательные поля не добавляют в сообщение текста. Передавайте фрагменты в том регистре, в котором они должны стоять внутри предложения. Не передавайте секреты в `details` и других полях: форматтер их не маскирует.

```ts
import type { DiagnosticMessageInput } from 'generaltranslation/diagnostics';

const input: DiagnosticMessageInput = { whatHappened: 'No files matched' };
```

## `DiagnosticSeverity` [#severity]

**Тип** `'Error' | 'Warning'`

Определяет только необязательную текстовую подпись и не влияет на уровень логирования или поведение исключений. Если severity не указан, префикс уровня серьёзности не добавляется.

```ts
import type { DiagnosticSeverity } from 'generaltranslation/diagnostics';

const severity: DiagnosticSeverity = 'Warning';
```

## `formatDiagnosticErrorDetails` [#error-details]

**Сигнатура** `(error: unknown) => string | undefined`

Возвращает `undefined` для `null` или `undefined`, в остальных случаях — `String(error)`. Функция не извлекает структурированные поля ошибки и не маскирует их содержимое.

```ts
import { formatDiagnosticErrorDetails } from 'generaltranslation/diagnostics';

console.log(formatDiagnosticErrorDetails(new Error('Invalid file'))); // Error: Invalid file
console.log(formatDiagnosticErrorDetails(null)); // undefined
```

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
