1cb0d868c8
Три массива в instrument были comma-separated текстом с подсказкой «businessKey'и из X». Пользователь не знал что туда вписать — справочника доступных значений рядом нет. UI: добавлен ReferenceMultiSelectField — array-аналог ReferenceSelectField. Триггер — `items["x-references"]` на string-массиве. Под капотом — готовый MultiSelect (popover + cmdk-поиск). Fallback на comma-separated TextInput сохраняется когда target dict недоступен (scope-hide / 403 / 404), сервер всё равно валидирует FK через ReferenceValidator. Schema: - spacecraft_codes → items.x-references: spacecraft.designator - supported_format_codes → items.x-references: data_format.code - supported_level_codes → items.x-references: processing_level.code instrument schemaVersion 1.0.0 → 1.1.0, bundle 1.3.2 → 1.3.3 — CuodBundleImporter перепишет schema_json в БД на старте writer'а, admin-ui подхватит свежую схему через /api/v1/dictionaries/instrument. Tests: 2 новых кейса в SchemaDrivenForm.test.tsx — happy path (MultiSelect рендерится, запрос ушёл на правильный dict) + fallback (comma-separated с подсказкой «список недоступен»). 171/171 passed.