[I128-2258] Новый редактор записей ИРБИС (he3)


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2 >> [I128-2258] Новый редактор записей ИРБИС (he3)📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Новые возможности 2026.2 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль he3 - Табличная форма ввода данных, Комплексное решение АБИС ИРБИС64/128

Завершено: 08.06.2026 12:48

Модуль he3 - Современный Web-редактор записей ИРБИС64 (на базе технологии WS)

ИДЕОЛОГИЯ И АРХИТЕКТУРНЫЕ ЦЕЛИ:

  1. Чистое API и разделение слоев (Separation of Concerns):    - Бэкенд (PHP) не генерирует JS-код или HTML (отказ от паттернов he2).    - Модуль работает как API: отдает строгий JSON (UI Schema и данные записи) и принимает JSON для сохранения.    - Фронтенд (ExtJS 3) читает схему и динамически строит интерфейс на клиенте.

  2. Единый источник истины (Single Source of Truth) - рабочие листы:    - Полный отказ от дублирующей системы FieldTypes (.field файлов).    - Все формы ввода строятся исключительно на основе файлов конфигурации ИРБИС (.ws / .wss).    - Специфичный Web-функционал (WYSIWYG, File Upload) реализуется через выделение пула       пользовательских InMode (зарезервирован диапазон 128000-128999). Это сохраняет 100% совместимость       с десктопным АРМ Каталогизатор, который игнорирует неизвестные методы ввода.

  3. Плоский (табличный) интерфейс ИРБИС:    - Замена перегруженного древовидного редактора со "спойлерами" на классический вид.    - Общая компоновка (Border Layout):       Сверху (North) — панель инструментов (сохранение, ФЛК, добавление полей).       По центру (Center) — рабочая область, разделенная на вкладки согласно конфигурации WS.         На каждой вкладке располагается своя плоская таблица (грид) с полями записи.      * Снизу (South) — панель предпросмотра редактируемой записи с выбором формата просмотра.    - Гибкая механика редактирования (по Enter или двойному клику): в зависимости от настроек       может открываться вспомогательный инструмент (например, модальное окно редактора подполей       по WSS) либо предоставляться возможность прямого inline-редактирования склеенной строки поля.    - Автоматическая синхронизация повторений полей между вкладками и умная разбивка       многострочного текста (textarea) на повторяющиеся поля на лету.

  4. Строгая структура директорий модуля:    - classes/ - вспомогательные PHPклассы (парсеры, DTO, бизнеслогика).    - JS/ - JS-компоненты фронтенда (ExtJS).    - Actions/ - классы обработки API-запросов (endpoints).

  5. Агностичность UIсхемы (FrameworkAgnostic):    - Генерируемый JSON Schema не должен содержать привязок к ExtJS (никаких xtype или layout).    - Только семантическое описание: тип данных, правила валидации, семантика виджета (например, "dictionary", "file").

  6. Безопасность данных и UX:    - Оптимистичные блокировки (Optimistic Locking) для предотвращения затирания данных при параллельном редактировании.    - Поддержка восстановления из LocalStorage при обрыве связи (Автосохранение).    - Локальная история изменений (Стек состояний Undo/Redo) для безопасной отмены (Ctrl+Z)       и повтора (Ctrl+Y) пользовательских действий с автоматической синхронизацией черновика.

  7. Производительность (Lazy Loading):    - Ленивая подгрузка больших справочников (.mnu, .tre) и связанных записей только по мере необходимости (поиск/скроллинг).

  8. Двухуровневая валидация (ФЛК):    - Правила из WS валидируются на лету в браузере (клиент) и строго проверяются в API при сохранении (сервер).

  9. Принцип единой ответственности (SRP) и делегирование:    - Модуль he3 выступает только оркестратором. Вся низкоуровневая работа со специфичными структурами       данных делегируется профильным модулям (парсинг .ws -> в модуль WS, чтение .tre -> в модуль Tre и т.д.).

  10. Строгая типизация (DTO) и унифицированный контракт API:    - Отказ от неструктурированных массивов. Внутренний обмен данными использует типизированные DTO.    - Все API-ответы оборачиваются в единый конверт (например, {success: bool, data: mixed, message: string}).    - Централизованный перехват исключений (Exception Handling) на уровне Actions.

  11. Серверные черновики (Drafts) и отсутствие сессионного состояния:    - Сервер не хранит промежуточное состояние формы в оперативной памяти (сессиях PHP).    - При начале редактирования создается временная копия записи (Черновик) в выделенной БД (например, DRAFTS).    - Клиент взаимодействует с API, передавая ID черновика (DraftID) и изменения (дельты).    - Это обеспечивает надежное автосохранение, защиту от потери данных при обрыве связи и решает       проблему передачи тяжеловесных бинарных полей при каждом запросе предпросмотра/ФЛК.    - Бизнеслогика преобразования (WS -> UI Schema) должна быть изолирована и покрыта Unitтестами.

  12. Непрерывная документация (DocsasCode):    - Документация является неотъемлемой частью кодовой базы (папка Help).    - Обязательный минимум:       Root.help - структура и оглавление.       General.md - общее описание модуля и архитектуры.       UserGuide.md - руководство пользователя (в т.ч. навигация с клавиатуры).       AdminGuide.md - справочник администратора (расширенные InMode, настройка WSS, структура DopInf).

  13. UX профессионального ввода (Keyboard-First):    - Обеспечение высокой скорости работы библиографа за счет полной поддержки навигации с клавиатуры       (Tab, Enter, стрелки) по гридам и модальным окнам.     - Поддержка привычных горячих клавиш (F2 - средства ввода, и т.д.).

  14. Расширяемость (Plugin Architecture):    - Модуль he3 должен предоставлять API для регистрации сторонних виджетов. Другие модули системы       должны иметь возможность добавлять свои обработчики пользовательских InMode без изменения кода ядра he3.

  15. Локализация (i18n):    - Все системные сообщения, тексты ошибок валидации и элементы интерфейса должны использовать       механизмы интернационализации ИРБИС 128.      (Внимание: в текущей реализации требуется вынос захардкоженных строк в языковые файлы системы).

  16. Синхронизация состояния и предпросмотр:    - Фронтенд использует единое хранилище состояния (Store) для редактируемой записи.    - Изменения в Store синхронизируются с серверным черновиком в фоне (Debounce-сохранение).    - Эндпоинты предпросмотра и проверки ФЛК оперируют исключительно серверным черновиком. Фронтенд       просто отправляет команду "Отформатируй черновик DraftID", минимизируя сетевой трафик.

 

-

1. Связанные задачи

1.1. 🔗 blocks: I128-31

[I128-31] Поддержка листа ввода в виде таблицы Статус: Открытая задача | Автор: Ilya Mikhaylenko

1.2. 🔗 blocks: I128-46

[I128-46] Поддержка метода ввода 7 Статус: Открытая задача | Автор: Ilya Mikhaylenko

1.3. 🔗 blocks: I128-47

[I128-47] Поддержка метода ввода 9 Статус: Открытая задача | Автор: Ilya Mikhaylenko

1.4. 🔗 blocks: I128-48

[I128-48] Поддержка метода ввода 10 Статус: Открытая задача | Автор: Ilya Mikhaylenko

1.5. 🔗 blocks: I128-49

[I128-49] Поддержка метода ввода 11 Статус: Открытая задача | Автор: Ilya Mikhaylenko

1.6. 🔗 blocks: I128-50

[I128-50] Поддержка метода ввода 12 Статус: Открытая задача | Автор: Ilya Mikhaylenko

1.7. 🔗 blocks: I128-52

[I128-52] Поддержка метода ввода 15 Статус: Открытая задача | Автор: Ilya Mikhaylenko

1.8. 🔗 blocks: I128-104

[I128-104] Возможность отмечать поля в редакторе и производить с ними групповые действия Статус: Открытая задача | Автор: Ilya Mikhaylenko

1.9. 🔗 Соответствует задача: I128-2395

[I128-2395] Новый редактор записей ИРБИС (he3) Статус: Открытая задача | Автор: Ilya Mikhaylenko