Справочник конфигурации¶
English · Русский
Код: core/dataset.py, core/field.py, core/entity.py, core/settings.py, limits.py, postgres_config.py, trino_config.py. JSON Schema: dataset_spec.schema.json. Версия пакета 1.6.0 и DatasetSpec schema_version: "1.1" — разные версии. Совместимость с 1.0 сохраняется без decimal; при импорте payload без schema_version используется legacy 1.0, тогда как новый Python DatasetSpec по умолчанию создаёт 1.1. Указывайте версию явно.
DatasetSpec¶
| Ключ | Тип / значение по умолчанию | Назначение и проверка |
|---|---|---|
| schema_version | строка "1.1"; совместимая "1.0" |
decimal требует 1.1; при импорте без ключа действует legacy 1.0 |
| entities | список EntitySpec | Таблицы; имена не дублируются |
| entities[].name | непустая строка | Имя сущности; служебные имена артефактов зарезервированы |
| entities[].row_count | целое >0 | Число генерируемых строк |
| entities[].primary_key | строка или null | Поле существует и имеет is_identifier=true |
| entities[].fields | список FieldSpec | Поля с неповторяющимися именами |
| fields[].name | строка | Имя столбца |
| fields[].data_type | integer/float/decimal/boolean/string/date/datetime | Поддерживаемые скалярные типы |
| fields[].nullable | bool, false | Разрешён ли null |
| fields[].null_ratio | число [0,1], 0 | Доля null; согласуйте с nullable |
| fields[].sensitive | bool, false | Поле требует защиты |
| fields[].semantic_type | строка или null | Семантика; например email |
| fields[].is_identifier | bool, false | Синтетический идентификатор |
| fields[].distribution | объект, {} | Типизированное правило распределения |
| relationships | список, [] | Проверяемые ссылки parent/child |
| constraints | список, [] | Структурированные ограничения |
| business_rules | объект BusinessRules или null | Встроенные правила, общие для интерфейсов и форматов |
| privacy_rules | список, [] | Явные правила приватности; ссылки должны существовать |
| privacy_settings | объект | Политика приватности |
| local_category_fields | список, [] | Отдельные локально разрешённые нечувствительные категории |
| generation_settings | объект | Параметры генерации ниже |
| validation_settings | объект | Какие секции включить в отчёт |
| generation_settings | По умолчанию | Ограничение |
|---|---|---|
| seed | null | Целое 0…2**63-1 для сохранённого spec; укажите явно |
| mode | valid | valid, mixed, negative, edge, load_test |
| invalid_ratio | 0.0 | От 0 до 1; имеет смысл для отрицательных режимов |
| output_format | json | csv, json, sql, parquet |
| load_multiplier | 10 | Целое ≥1; масштаб load_test при отсутствии явного count |
| locale | null | Окружение генерации; фиксируйте вместе с зависимостями |
В validation_settings validate_schema, validate_relationships, validate_constraints, validate_privacy по умолчанию true, fail_fast — false. Не отключайте секции для получения положительного результата. Обязательные post-solve type/privacy проверки генератора не отменяются настройками отчёта.
synthetic_identifier может задавать pool_size — положительное целое число синтетических ключей для повторяемого ID. Для primary key pool не может быть меньше row_count. Это число, а не сохранённая карта реальных идентификаторов. Типы распределений и полные вложенные модели: DatasetProfile и DatasetSpec.
Приоритет¶
Явный CLI override меняет соответствующий параметр spec: count, seed, mode, invalid_ratio, format. Если override не задан, используются сохранённые настройки и defaults конкретного пути. Значения defaults команд перечислены в CLI; для generate не переносите defaults сокращённой CSV-команды по догадке. Переменные окружения управляют только перечисленными в коде интеграциями и бюджетами; они сами по себе не включают AI.
Основные локальные бюджеты¶
Байты — целые байты; время — секунды. Значения должны быть положительными, время — конечным. Превышение означает остановку, а не разрешение частичного доверенного результата.
| Переменная | По умолчанию | Что ограничивает |
|---|---|---|
| TEST_DATA_AGENT_MAX_GENERATION_COUNT | 100000 | Строк на сущность |
| TEST_DATA_AGENT_MAX_INPUT_FILE_BYTES | 134217728 | Байт на входной файл |
| TEST_DATA_AGENT_MAX_TOTAL_INPUT_BYTES | 536870912 | Суммарный вход |
| TEST_DATA_AGENT_MAX_INPUT_ROWS | 1000000 | Входных строк |
| TEST_DATA_AGENT_MAX_INPUT_COLUMNS | 1000 | Столбцов |
| TEST_DATA_AGENT_MAX_INPUT_CELLS | 10000000 | Ячеек |
| TEST_DATA_AGENT_MAX_INPUT_FILES | 100 | Файлов |
| TEST_DATA_AGENT_MAX_INPUT_CELL_CHARS | 1000000 | Символов в ячейке/строке JSON |
| TEST_DATA_AGENT_MAX_PARQUET_EXPANDED_BYTES | 536870912 | Оценка распакованного Parquet |
| TEST_DATA_AGENT_MAX_YAML_ALIASES | 50 | YAML aliases |
| TEST_DATA_AGENT_MAX_YAML_DEPTH | 100 | Глубина YAML |
| TEST_DATA_AGENT_MAX_JSON_DEPTH | 100 | Глубина JSON |
| TEST_DATA_AGENT_MAX_BUSINESS_RULES_BYTES | 1048576 | Размер правил |
| TEST_DATA_AGENT_MAX_BUSINESS_RULE_EVALUATIONS | 5000000 | Оценка строк × правил |
| TEST_DATA_AGENT_MAX_OUTPUT_BYTES | 536870912 | Полный выходной bundle |
| TEST_DATA_AGENT_MIN_FREE_DISK_BYTES | 134217728 | Резерв диска |
| TEST_DATA_AGENT_MAX_GENERATION_SECONDS | 300 | Время генерации |
| TEST_DATA_AGENT_MAX_LOCAL_PROFILE_SECONDS | 120 | Время профиля папки |
| TEST_DATA_AGENT_MAX_LOCAL_PROFILE_SAMPLE_ROWS | 1000000 | Общая выборка для правил |
Интеграционные настройки¶
| Группа | Обязательные / ключевые настройки | Безопасный смысл |
|---|---|---|
| Generator MCP | TEST_DATA_AGENT_WORKSPACE_ROOT | Явный узкий корень; без настройки используется cwd |
| MCP deadline | TEST_DATA_AGENT_MCP_MAX_INVOCATION_SECONDS=120 | Конечные положительные секунды, server-side настройка |
| Inline profile | TEST_DATA_AGENT_MAX_PROFILE_PAYLOAD_BYTES | По умолчанию 4 MiB, не безграничный payload |
| MCP audit | TEST_DATA_AGENT_AUDIT_LOG; TEST_DATA_AGENT_AUDIT_HMAC_KEY либо TEST_DATA_AGENT_AUDIT_HMAC_KEY_FILE | Ровно один источник ключа, base64 ≥32 случайных байт; key file ≤4096 байт без ссылок и групповой/общей записи |
| PostgreSQL | POSTGRES_ALLOWED_SCHEMAS, POSTGRES_ALLOWED_TABLES, POSTGRES_ALLOWED_COLUMNS | Обязательные явные scopes |
| PostgreSQL endpoint | POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DATABASE, POSTGRES_USER, POSTGRES_SSLMODE либо POSTGRES_JDBC_URL | URL без credentials, конфликтующие компоненты отклоняются |
| PostgreSQL secret | POSTGRES_PASSWORD_ENV | Имя runtime переменной с паролем, не пароль |
| PostgreSQL work | POSTGRES_MAX_TABLES=100, POSTGRES_MAX_COLUMNS=1000, POSTGRES_MAX_STATEMENTS=1500, POSTGRES_MAX_RESULT_ROWS=10000, POSTGRES_MAX_RESULT_CELLS=100000, POSTGRES_MAX_SECONDS=120 | Бюджеты одного профиля |
| PostgreSQL timeout | POSTGRES_STATEMENT_TIMEOUT_MS=30000, POSTGRES_LOCK_TIMEOUT_MS=5000 | Миллисекунды; роль отдельно должна быть read-only |
| Trino scope | TRINO_ALLOWED_CATALOGS, TRINO_ALLOWED_SCHEMAS, TRINO_ALLOWED_TABLE_COLUMNS | Первые два обязательны по умолчанию; для query-source обязателен также столбцовый scope |
| Trino endpoint | TRINO_HOST, TRINO_PORT, TRINO_USER, TRINO_HTTP_SCHEME либо TRINO_JDBC_URL | По умолчанию HTTPS; JDBC URL без секретов |
| Trino work | TRINO_MAX_INVOCATION_PROFILED_COLUMNS=100, TRINO_MAX_INVOCATION_STATEMENTS=150, TRINO_MAX_INVOCATION_SECONDS=120 | Общие бюджеты вызова, включая вложенные helpers |
| Trino hardened | TRINO_DEPLOYMENT_PROFILE=shared-hardened и конечный TRINO_MAX_INVOCATION_ESTIMATED_SCAN_BYTES | Нужна явная оценка суммарного scan |
| Query file | SQL_QUERY_MAX_BYTES=65536, SQL_QUERY_MAX_AST_NODES=500, SQL_QUERY_MAX_AST_DEPTH=32, SQL_QUERY_MAX_PROJECTED_COLUMNS=100 | Локальный разбор ограниченного SQL |
| OpenAI | OPENAI_API_KEY | Runtime secret только после согласования передачи |
| GigaChat | GIGACHAT_CREDENTIALS либо GIGACHAT_ACCESS_TOKEN, GIGACHAT_SCOPE, GIGACHAT_CA_BUNDLE_FILE | Ровно один credential, обязательный TLS; experimental |
Полный перечень параметров подключения, per-query scan/time limits, допустимых единиц, audit actor/size и transport budgets сохранён в расширенном справочнике. Перед изменением конкретного интеграционного параметра прочитайте его строку там; значения из разных единиц не взаимозаменяемы. Не включайте insecure/unrestricted overrides ради обхода ошибки.
Проверка локальной конфигурации: диагностика. Проверка результата: валидация.
Режимы и точные значения 1.6.0¶
edge создаёт валидные границы, но constraints и business rules могут заменить отдельную границу; маленький count не покрывает всё. load_test умножает row_count на load_multiplier (по умолчанию 10); явный --count задаёт точное число без умножения. Повторяемость требует тот же порядок entities в spec, seed и окружение. Python core дополнительно поддерживает signed 64-bit отрицательный seed для совместимости; сохранённый spec — только 0…2**63-1.
decimal требует schema_version 1.1 и distribution.kind=decimal_range с precision≤38, scale и строковыми min/max. numeric_measure разрешён только для явно проверенной нечувствительной numeric меры; sensitive flags, names и identifiers имеют veto. Пример: DECIMAL.
Трансформация использует отдельные BehaviorPolicy/BatchProfile schema_version 0.1; их нельзя подавать вместо DatasetSpec. resource_limits и TEST_DATA_AGENT_TRANSFORM_* настраивают её acquisition/decoding, а run caps могут понижать, не молча расширять session/profile ceilings. Полный перечень и единицы: transformation input limits. Receipt и точный snapshot не заменяются переменной окружения.