docs: философия TEXT_RULES (типовые) vs asserts (специфичные), §3.6

This commit is contained in:
Maksim Totmin 2026-06-23 13:39:55 +07:00
parent 4867e4cebc
commit 5ecdb71ae1

View File

@ -72,6 +72,10 @@ TEXT_RULES = [
] ]
``` ```
**TEXT_RULES покрывает только типовые модели** (fio, date, phone, mfc, zags...) — те, для которых по ключевому слову можно угадать подходящий текст. Одно правило покрывает десятки похожих моделей.
Для узкоспецифичных моделей проекта, где ключевое слово не даёт нужной точности, используй `text` в asserts (см. [Шаг 3.6](#36-когда-text_rules-не-хватает)).
## Шаг 2: Первый запуск без asserts ## Шаг 2: Первый запуск без asserts
Запусти тест с `-v` (verbose), чтобы увидеть каждую модель и её ответ: Запусти тест с `-v` (verbose), чтобы увидеть каждую модель и её ответ:
@ -218,6 +222,34 @@ SMC возвращает классы с полями `class` и `confidence`:
{"model": "zags~ffb403fff9f5802d53aac8a5c844af26", "text": "загс центрального района", "checks": {"min_found": 0}} {"model": "zags~ffb403fff9f5802d53aac8a5c844af26", "text": "загс центрального района", "checks": {"min_found": 0}}
``` ```
### 3.6 Когда TEXT_RULES не хватает
**Философия тестов — два уровня проверки:**
| Уровень | Инструмент | Вопрос |
|---------|-----------|--------|
| 1 — санитарный | TEXT_RULES | Модель живая? Отвечает хоть что-то? |
| 2 — проверочный | asserts | Модель отвечает **правильно**? |
TEXT_RULES даёт быстрый ответ «живая/мёртвая» для типовых моделей. Но есть модели, которым нужен специфичный текст, недоступный для угадывания по ключевому слову.
**Пример:** модель `Конкретика по УК~ffb403...` — TEXT_RULES по ключевому слову `"конкретик"` возвращает `"конкретный вопрос"`. Текст слишком размытый, модель не находит сущностей и возвращает пустой ответ.
**Решение:** добавить `text` в assert с точной формулировкой:
```json
{
"model": "Конкретика по УК~ffb403fff9f5802d53aac8a5c844af26",
"text": "Найти свою УК",
"checks": {"min_found": 0}
}
```
**Это не баг, а дизайн:**
- TEXT_RULES универсален и переносим между проектами (скопировал тесты — работает)
- asserts пишется под конкретный проект и покрывает специфичные модели
- Без asserts — быстрый санитарный прогон, с asserts — полная валидация
## Шаг 4: Запуск с asserts ## Шаг 4: Запуск с asserts
```bash ```bash