[ { "id": "sheet_select_vsp", "title": "Выбор ВСП (добавление строки)", "page": "sheet", "source": "web/src/components/RealtimeTable/Modals/SelectVspModal.jsx:51", "priority": 1, "role": "rf", "sheet_ref": "FORM_2/AHR_RENT/null", "open": { "selector": "button[aria-label=\"Добавить строку\"]", "action": "click" }, "appear": { "css": "h2", "text": "Выбор ВСП" }, "note": "RealtimeTable.jsx:652; только при праве править строки (rf); additionVspRowTable FORM_2 = AHR_RENT/UTILITY/SECURITY (на AHR модалка не открывается). Малый лист AHR_RENT (31 строка), @big = AHR_UTILITY, выращенный perfkit.gen.grow до ~500 строк", "big_sheet": "FORM_2/AHR_UTILITY/null" }, { "id": "sheet_select_expense", "title": "Добавление строки (статья расходов)", "page": "sheet", "source": "web/src/components/RealtimeTable/Modals/SelectExpenseItemModal.jsx:51", "priority": 1, "role": "rf", "sheet_ref": "FORM_4/AHR/null", "open": { "selector": "button[aria-label=\"Добавить строку\"]", "action": "click", "pre": [ { "selector": "tbody tr:has-text(\"Проект\") >> nth=0 >> td >> nth=1", "action": "click" } ] }, "appear": { "css": "h2", "text": "Добавление строки" }, "note": "нужна выделенная строка проекта (row_type ITEM); RealtimeTable.jsx:656; малый лист FORM_4/AHR (110 строк), @big = FORM_4/CAP, выращенный perfkit.gen.grow до ~300 строк", "big_sheet": "FORM_4/CAP/null" }, { "id": "sheet_create_program", "title": "Создание программы", "page": "sheet", "source": "web/src/components/RealtimeTable/Modals/CreateProgramProjectModal.jsx:38", "priority": 1, "role": "rf", "sheet_ref": "FORM_4/AHR/null", "open": { "selector": "button[aria-label=\"Добавить программу\"]", "action": "click" }, "appear": { "css": "h2", "text": "Создание программы" }, "note": "RealtimeTable.jsx:697, только FORM_4; малый лист FORM_4/AHR (110 строк), @big = FORM_4/CAP, выращенный perfkit.gen.grow до ~300 строк", "big_sheet": "FORM_4/CAP/null" }, { "id": "sheet_create_project", "title": "Создание проекта (в программе)", "page": "sheet", "source": "web/src/components/RealtimeTable/Modals/CreateProgramProjectModal.jsx:38", "priority": 1, "role": "rf", "sheet_ref": "FORM_4/AHR/null", "open": { "selector": "button[aria-label=\"Добавить проект\"]", "action": "click", "pre": [ { "selector": "tbody tr:has-text(\"Программа\") >> nth=0 >> td >> nth=1", "action": "click" } ] }, "appear": { "css": "h2", "text": "Создание проекта" }, "note": "нужна выделенная строка программы (GROUP); RealtimeTable.jsx:705; малый лист FORM_4/AHR (110 строк), @big = FORM_4/CAP, выращенный perfkit.gen.grow до ~300 строк", "big_sheet": "FORM_4/CAP/null" }, { "id": "sheet_columns_tree", "title": "Выбор столбцов (Popover с деревом)", "page": "sheet", "source": "web/src/components/common/CollapsibleTree.jsx:203", "priority": 1, "role": "rf", "sheet_ref": "FORM_2/AHR_RENT/null", "open": { "selector": "[data-pin-panel] input[readonly]", "action": "click" }, "appear": { "css": ".MuiPopover-root .MuiPaper-root" }, "big_sheet": "FORM_2/AHR/null", "note": "не модалка, а MUI Popover: единственный оверлей, доступный на больших листах; замер на малом и на самом большом листе rf" }, { "id": "task_stages", "title": "Этапы задачи (SettingModal)", "page": "task", "source": "web/src/components/Stages/SettingModal.jsx:102", "priority": 1, "role": "rf", "page_ref": "task_rf_form_2", "open": { "selector": "role=button[name=\"Этапы\"]", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Этапы" }, "note": "TaskPage.jsx:171" }, { "id": "task_stage_add", "title": "Добавление этапа (задача)", "page": "task", "source": "web/src/components/Stages/AddStagesModal.jsx:156", "priority": 1, "role": "admin", "page_ref": "task_rf_form_2", "open": { "selector": "role=button[name=\"Добавить этап\"]", "action": "click", "pre": [ { "selector": "role=button[name=\"Этапы\"]", "action": "click" } ] }, "appear": { "css": "h2", "text": "Добавление этапа" }, "note": "кнопка только у admin" }, { "id": "task_stage_edit", "title": "Редактирование этапа (задача)", "page": "task", "source": "web/src/components/Stages/AddStagesModal.jsx:156", "priority": 1, "role": "admin", "page_ref": "task_rf_form_2", "open": { "selector": "role=menuitem[name=\"Редактировать\"]", "action": "click", "pre": [ { "selector": "role=button[name=\"Этапы\"]", "action": "click" }, { "selector": ".fixed.inset-0.z-50 button.MuiIconButton-root >> nth=0", "action": "click" } ] }, "appear": { "css": "h2", "text": "Редактирование этапа" }, "note": "меню строки этапа только у admin" }, { "id": "project_stages", "title": "Этапы отчёта проекта (SettingModal)", "page": "project", "source": "web/src/components/Stages/SettingModal.jsx:102", "priority": 1, "role": "rf", "page_ref": "project_card", "open": { "selector": "role=button[name=\"Этапы\"] >> nth=0", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Этапы" }, "note": "TaskPage.jsx:195 (по строке отчёта)" }, { "id": "project_add_year", "title": "Добавить год", "page": "project", "source": "web/src/pages/TaskPage/TaskPage.jsx:217", "priority": 1, "role": "rf", "page_ref": "project_card", "open": { "selector": "role=button[name=\"Добавить год\"]", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Вы точно хотите добавить год" } }, { "id": "project_stage_delete", "title": "Удаление этапа (проект)", "page": "project", "source": "web/src/components/Stages/DeleteStageModal.jsx:38", "priority": 1, "role": "admin", "page_ref": "project_card", "open": { "selector": "role=menuitem[name=\"Удалить\"]", "action": "click", "pre": [ { "selector": "role=button[name=\"Этапы\"] >> nth=0", "action": "click" }, { "selector": ".fixed.inset-0.z-50 button.MuiIconButton-root >> nth=0", "action": "click" } ] }, "appear": { "css": ".MuiTypography-root", "text": "Удалить этот элемент?" }, "note": "удаление этапа только в режиме project; открытие без подтверждения" }, { "id": "projects_create", "title": "Создание проекта", "page": "projects", "source": "web/src/pages/ProjectsPage/ModalCreateProject.jsx:247", "priority": 1, "role": "rf", "page_ref": "projects", "open": { "selector": "role=button[name=\"Создать проект\"]", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Создание проекта" }, "note": "NavigationProjectPage.jsx:504" }, { "id": "projects_edit", "title": "Редактирование строки проекта (MUI Dialog)", "page": "projects", "source": "web/src/pages/ProjectPages/components/EditModal/EditModal.jsx:170", "priority": 1, "role": "rf", "page_ref": "projects", "open": { "selector": "role=button[name=\"Редактировать\"] >> nth=0", "action": "click" }, "appear": { "css": "[role=dialog]", "text": "Редактирование строки" }, "note": "NavigationProjectPage.jsx:496" }, { "id": "projects_delete", "title": "Удалить проект?", "page": "projects", "source": "web/src/pages/ProjectPages/NavigationProjectPage.jsx:510", "priority": 1, "role": "rf", "page_ref": "projects", "open": { "selector": "role=button[name=\"Удалить проект\"] >> nth=0", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Удалить проект?" } }, { "id": "tasks_create", "title": "Создать задачу", "page": "tasks", "source": "web/src/pages/TasksPage/TasksPage.jsx:374", "priority": 1, "role": "admin", "page_ref": "tasks", "open": { "selector": "role=button[name=\"Создать задачу\"]", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Создать задачу" }, "note": "кнопка только у admin" }, { "id": "tasks_confirm_mark", "title": "Отправить задачу на удаление (подтверждение)", "page": "tasks", "source": "web/src/pages/TasksPage/TasksTable.jsx:371", "priority": 1, "role": "admin", "page_ref": "tasks", "open": { "selector": "text=Отправить на удаление", "action": "click", "pre": [ { "selector": "role=button[name^=\"Действия с задачей\"] >> nth=0", "action": "click" } ] }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Отправить задачу на удаление" }, "note": "меню действий только у admin" }, { "id": "forms_create", "title": "Создание формы (FormsPage)", "page": "forms", "source": "web/src/pages/FormsPage.jsx:133", "priority": 1, "role": "admin", "open": { "selector": "", "action": "click" }, "skip_reason": "страница FormsPage не подключена в app/Routes.jsx - открыть из UI нельзя" }, { "id": "taskcard_confirm", "title": "Подтверждение действия над карточкой задачи", "page": "forms", "source": "web/src/components/common/TaskCardComponent.jsx:265", "priority": 1, "role": "admin", "open": { "selector": "", "action": "click" }, "skip_reason": "TaskCardComponent используется только в FormsPage (не в маршрутах)" }, { "id": "infoheader_rename", "title": "Переименование таблицы (InfoForHeader)", "page": "forms", "source": "web/src/pages/TableTempPage/InfoForHeader.jsx:44", "priority": 1, "role": "admin", "open": { "selector": "", "action": "click" }, "skip_reason": "TableTempPage не в маршрутах, ModalRename не импортирован - мёртвый код" }, { "id": "admin_users_add", "title": "Добавить пользователей", "page": "admin_users", "source": "web/src/pages/AdminPanel/UsersPage/ModalAddUsers.jsx:71", "priority": 2, "role": "admin", "page_ref": "admin_users", "open": { "selector": "role=button[name=\"Добавить\"]", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Добавить пользователей" } }, { "id": "admin_users_edit", "title": "Информация о пользователе", "page": "admin_users", "source": "web/src/pages/AdminPanel/UsersPage/UserTable/EditUserModal.jsx:311", "priority": 2, "role": "admin", "page_ref": "admin_users", "open": { "selector": "role=menuitem[name=\"Редактировать\"]", "action": "click", "pre": [ { "selector": "tbody tr >> nth=1 >> button >> nth=-1", "action": "click" } ] }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Информация о пользователе" } }, { "id": "admin_users_delete", "title": "Удалить пользователя?", "page": "admin_users", "source": "web/src/pages/AdminPanel/UsersPage/UserTable/DeleteUserModal.jsx:48", "priority": 2, "role": "admin", "page_ref": "admin_users", "open": { "selector": "role=menuitem[name=\"Удалить\"]", "action": "click", "pre": [ { "selector": "tbody tr >> nth=1 >> button >> nth=-1", "action": "click" } ] }, "appear": { "css": ".MuiTypography-root", "text": "Удалить пользователя?" } }, { "id": "admin_users_ssp", "title": "Выбор подразделения пользователя", "page": "admin_users", "source": "web/src/pages/AdminPanel/UsersPage/ModalEditUserSsp.jsx:93", "priority": 2, "role": "admin", "page_ref": "admin_users", "open": { "selector": "tbody button:has-text(\"Выбрать\") >> nth=0", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Выбор подразделения" } }, { "id": "admin_ssps_add", "title": "Добавить ССП/РФ", "page": "admin_ssps", "source": "web/src/pages/AdminPanel/SppsPage/ModalAddSsp.jsx:51", "priority": 2, "role": "admin", "page_ref": "admin_ssps", "open": { "selector": "role=button[name=\"Добавить\"]", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Добавить ССП/Рег. филиал" } }, { "id": "admin_ssps_edit", "title": "Редактировать ССП/РФ", "page": "admin_ssps", "source": "web/src/pages/AdminPanel/SppsPage/ModalEditSsp.jsx:41", "priority": 2, "role": "admin", "page_ref": "admin_ssps", "open": { "selector": "tbody tr >> nth=0 >> button >> nth=-1", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Редактировать ССП/Рег. филиал" } }, { "id": "admin_ssps_users", "title": "Список пользователей ССП/РФ", "page": "admin_ssps", "source": "web/src/pages/AdminPanel/SppsPage/ModalChangeUsersInSsp.jsx:121", "priority": 2, "role": "admin", "page_ref": "admin_ssps", "open": { "selector": "tbody tr >> nth=0 >> button >> nth=0", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Редактировать список пользователей" } }, { "id": "admin_ssps_archive", "title": "Подтверждение архивации ССП", "page": "admin_ssps", "source": "web/src/pages/AdminPanel/SppsPage/ModalConfirmArchiveSsp.jsx:27", "priority": 2, "role": "admin", "page_ref": "admin_ssps", "open": { "selector": "tbody tr >> nth=0 >> button:has-text(\"Активен\")", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Отправить ссп в архив" } }, { "id": "admin_phase_add", "title": "Добавление этапа (шаблон)", "page": "admin_default_stage", "source": "web/src/pages/AdminPanel/PhaseTemplatesPage/components/PhaseTemplateDialog.jsx:120", "priority": 2, "role": "admin", "page_ref": "admin_default_stage", "open": { "selector": "role=button[name=\"Добавить этап\"]", "action": "click" }, "appear": { "css": "[role=dialog]", "text": "Добавление этапа" } }, { "id": "admin_phase_edit", "title": "Редактирование этапа (шаблон)", "page": "admin_default_stage", "source": "web/src/pages/AdminPanel/PhaseTemplatesPage/components/PhaseTemplateDialog.jsx:120", "priority": 2, "role": "admin", "page_ref": "admin_default_stage", "open": { "selector": "role=button[name^=\"Редактировать этап\"] >> nth=0", "action": "click" }, "appear": { "css": "[role=dialog]", "text": "Редактирование этапа" } }, { "id": "admin_phase_delete", "title": "Удалить предопределённый этап?", "page": "admin_default_stage", "source": "web/src/pages/AdminPanel/PhaseTemplatesPage/components/DeletePhaseTemplateDialog.jsx:8", "priority": 2, "role": "admin", "page_ref": "admin_default_stage", "open": { "selector": "role=button[name^=\"Удалить этап\"] >> nth=0", "action": "click" }, "appear": { "css": "[role=dialog]", "text": "Удалить предопределённый этап" } }, { "id": "admin_audit_json", "title": "Детали события аудита", "page": "admin_audit_log", "source": "web/src/pages/AdminPanel/AuditLogsPage/components/JsonViewModal.jsx:95", "priority": 2, "role": "admin", "page_ref": "admin_audit_log", "open": { "selector": "text=Посмотреть >> nth=0", "action": "click" }, "appear": { "css": ".MuiModal-root", "text": "Детали события" }, "note": "MUI Modal; страница грузится дольше" }, { "id": "dict_vsp_add", "title": "Добавление ВСП", "page": "dict_vsp", "source": "web/src/pages/DictVspPage/components/Modals/ModalEditAddVsp.jsx:239", "priority": 2, "role": "admin", "page_ref": "dict_vsp", "open": { "selector": "role=button[name=\"+ Добавить объект\"]", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Добавление ВСП" } }, { "id": "dict_vsp_edit", "title": "Редактирование ВСП", "page": "dict_vsp", "source": "web/src/pages/DictVspPage/components/Modals/ModalEditAddVsp.jsx:239", "priority": 2, "role": "admin", "page_ref": "dict_vsp", "open": { "selector": "tbody tr >> nth=0 >> button >> nth=-1", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Редактирование ВСП" }, "note": "нужны строки справочника (после выбора ССП)" }, { "id": "dict_vsp_export", "title": "Экспорт ВСП", "page": "dict_vsp", "source": "web/src/pages/DictVspPage/components/Modals/ModalExport.jsx:71", "priority": 2, "role": "admin", "page_ref": "dict_vsp", "open": { "selector": "role=button[name=\"Экспортировать\"]", "action": "click" }, "appear": { "css": ".fixed.inset-0.z-50", "text": "Экспорт ВСП" } } ]