Ports the weather check added to stroy-bot-main on 2026-10-16: daily station weather, report positions with weather per shift and the AI assessment of working conditions. Opens as ?page=weather&start=&end= instead of the #weathercheck hash, and hub dates survive the way back. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
28 KiB
План ручной проверки StroyBot
Пошаговая проверка нового приложения перед выкаткой. Дополняет MIGRATION-CHECKLIST.md (там — список функций, здесь — что нажать и что должно получиться).
Правила
- Всё, что записывает данные (создать / изменить / удалить / импорт / утвердить), — только на проекте «ТЕСТ StroyBot». Такие сценарии помечены ✍️.
- Всё, что только читает, проверяем на настоящих проектах — сравнением со старой страницей (см. «Главный приём»).
- Нашёл расхождение — не исправляй ничего сам, запиши по шаблону «Как сообщить о баге» и иди дальше.
- Оформление — в стиле ui-kit (решение 2026-10-16). Отличия во внешнем виде от старых страниц (раскладка, цвета, регистр подписей) багом не считаются. Сравниваем функции, тексты, данные, права. Баг по виду — только если что-то не видно, обрезано, наезжает или не нажимается.
- Отметки:
[x]— совпало,[!]— баг (номер бага рядом),[-]— не применимо.
0. Подготовка (один раз)
0.1 Тестовые данные в SharePoint (/sites/stroy)
- В списке «Проекты» создать проект «ТЕСТ StroyBot», статус текущий. Записать его
Id(видно в адресе элемента):Id = ____. - В списке «Доступы» создать строку: проект = «ТЕСТ StroyBot», пользователь = ты,
read= да,edit0= да,aproove= нет.- Это разные поля в разных старых web parts (lookup
project/userи поляprojectId/userId). Если при создании строки видно оба набора — заполни оба. Запиши, какие поля реально есть в списке:________________.
- Это разные поля в разных старых web parts (lookup
- В списке «Объекты» — пока ничего, объекты создадим в приложении (T-OBJ).
- Убедись, что в «Смены», «Компании», «Профессии», «Техника», «Единицы измерения» есть хотя бы по 2 элемента.
0.2 Переключение ролей одним аккаунтом
Роли меняются правкой твоей строки «Доступы» у «ТЕСТ StroyBot», статус проекта — полем Status в «Проекты». После правки — F5 в приложении.
| Роль | read | edit0 | aproove |
|---|---|---|---|
| Р — только чтение | да | нет | нет |
| Е — редактор | да | да | нет |
| У — утверждающий | да | нет | да |
| Н — нет доступа | нет | нет | нет |
Начальная роль — Е.
0.3 Запуск workbench
- В терминале VS Code (
Ctrl+`) в папкеstroy-bot-monorepo:npx heft start. ДождатьсяStarting server. - Открыть
https://tnsukz.sharepoint.com/sites/stroy/_layouts/workbench.aspx(именно на сайте stroy, не корневом). - Разрешить загрузку отладочных скриптов, если браузер спросит.
- + → web part StroyBot.
- Держать открытыми F12 → Console и F12 → Network (фильтр
Fetch/XHR) — туда смотрим при любой ошибке.
Workbench не умеет одобрять API-разрешения. Если Dataverse или выгрузки упадут с ошибкой доступа/токена — это ожидаемо до выкатки пакета; помечай
[!]с текстом ошибки, разберёмся.
Главный приём — сравнение со старой страницей
Для любого раздела, который показывает данные:
- Открыть старую страницу раздела (из старого stroy-bot-main) для проекта X.
- Открыть новый раздел в workbench для того же проекта X.
- Сравнить: количество строк, названия, числа, даты, порядок, бейджи, какие кнопки видны.
Проекты для сравнения — 2 настоящих: один большой (много объектов и отчётов), один маленький. Запиши:
- Большой:
________________(Id__) - Маленький:
________________(Id__)
1. Оболочка — T-APP
- T-APP-01 Открыть web part. Слева меню с одним пунктом «Проект», справа главная. Ошибок в Console нет.
- T-APP-02 Выбрать проект → в меню появились разделы. Нажать «Объекты» → адрес стал
…?page=objects&projectId=…. - T-APP-03 Нажать «назад» в браузере → вернулись на главную. «Вперёд» → снова объекты.
- T-APP-04 Скопировать адрес раздела, открыть в новой вкладке → открылся тот же раздел того же проекта.
- T-APP-05 F5 на любом разделе → остались в нём.
- T-APP-06 В той же вкладке удалить из адреса
&page=…&projectId=…, Enter, заново добавить web part → на главной уже выбран прежний проект, меню — со всеми разделами. (Выбор хранится вsessionStorage— он живёт только в пределах вкладки; после закрытия вкладки не сохраняется — так было и в старом main.) - T-APP-07 Шрифты подгрузились: заголовки разделов — с засечками (Lora), остальной текст — Inter.
- T-APP-08 Узкое окно (< 768px) → меню прячется, появляется кнопка-бургер, меню открывается поверх.
2. Главная — T-HUB (сравнение со старым stroy-bot-main)
- T-HUB-01 Клик в поле «Проект» → список; набор совпадает со старым main; сверху до 7 недавно активных.
- T-HUB-02 Ввести часть названия (разный регистр) → фильтруется, не больше 7 строк; несуществующее → «Проекты не найдены».
- T-HUB-03 Esc и клик мимо → список закрылся, в поле — выбранный проект.
- T-HUB-04 Бейджи статусов совпадают по цвету: текущий — зелёный, завершён — серый, архивный — золотой, пусто — «Без статуса».
- T-HUB-05 Без выбранного проекта все карточки неактивны, видна подсказка.
- T-HUB-06 «ТЕСТ StroyBot», роль Е, статус текущий → все 6 карточек активны; меню — все разделы.
- T-HUB-07 Роль Р → неактивна только «Отправить отчёт»; в меню нет «Отправить отчёт» и «Привязка к справочнику».
- [-] T-HUB-08 Статус «завершен» — не применимо: в SharePoint у поля «Статус» только «Текущий» и «Архивный» (проверено 2026-10-16). Правило в коде остаётся на случай, если вариант появится.
- T-HUB-09 Статус «Архивный» (менять в SharePoint, список «Проекты») → бейдж золотой, активен только «Архив», выгрузка неактивна, в меню только «Проект». Вернуть «Текущий».
- ⚠️ Статус меняем в списке SharePoint, а не на портале проектов: портал пишет статус («Текущий» / «Архив») в справочник API, StroyBot его не читает.
- T-HUB-10 «Архив проекта» → в новой вкладке папка
Документы/Архив/{проект}(та же, что открывает старый main). - T-HUB-11 Ctrl+клик по карточке «Объекты» → раздел открылся в новой вкладке.
- T-HUB-12 Выгрузка: «?» показывает 3 строки и закрывается кликом мимо. Даты 13.10–19.10 → «Отчёт за период»; 12.10–18.10 (Пн–Вс) → «Еженедельный»; один день → «Ежедневный»; начало позже конца → ошибка, кнопка неактивна.
- T-HUB-13 «Выгрузить» на большом проекте за неделю → скачался
weekly_…xlsx. Сравнить с файлом из старого main за тот же период — содержимое одинаковое.
Сверка погодных условий — T-WX (фича из main от 16.10)
- T-WX-01 Без дат или начало позже конца — «Сверка погодных условий» неактивна; обе даты верные — активна. Архивный проект — неактивна вместе с карточкой.
- T-WX-02 Проект 17, неделя с отчётами → открылась сверка: шапка с проектом и периодом, метеостанция, «Погода по дням», «Позиции…». Сравнить со старым main за тот же период: те же строки и числа.
- T-WX-03 «‹ Разделы проекта» → главная, даты остались. Ещё раз открыть сверку → «назад» браузера → главная, даты остались.
- T-WX-04 Период без отчётов → «Нет позиций за период», кнопка оценки неактивна.
- T-WX-05 Адрес
?page=weather&projectId=51без дат → «Период не указан…». Меню слева подсвечивает «Проект». - ✍️ T-WX-06 Тестовый проект 51, 19.10.2026 (там есть позиции) → «Запросить оценку ИИ…» → спиннер до минуты → в «Оценке» и «Акте простоя» появились бейджи, сверху «Оценено позиций: N». Уйти назад во время оценки → ошибок в консоли нет.
- T-WX-07 360px: таблицы прокручиваются внутри своей рамки, страница целиком вбок не едет.
3. Ресурсы проекта — T-RES
- T-RES-01 Большой проект: вкладки «Профессии (N)», «Компании (N)» — числа и списки совпадают со старой страницей.
- T-RES-02 Поиск слева, «✕» очищает; «уже добавлено» у привязанных.
- ✍️ T-RES-03 «ТЕСТ StroyBot»: «+» у профессии → сразу справа; F5 → осталась. Проверить строку в «Профессии по проекту».
- ✍️ T-RES-04 «−» → исчезла; F5 → не вернулась; строка удалена из списка.
- ✍️ T-RES-05 То же для компании.
- T-RES-06 Узкое окно → колонки друг под другом.
4. Привязка к справочнику — T-BND
- T-BND-01 Большой проект: карточка проекта (описание, адрес, статус, даты, координаты) совпадает со старой страницей; бейдж «Привязан/Не привязан» тот же.
- T-BND-02 Поиск по справочнику: результаты, «←/→», «стр / всего» — как в старой.
- ✍️ T-BND-03 «ТЕСТ StroyBot»: выбрать проект справочника → «Связать» → сообщение успеха, бейдж «Привязан». В «Проекты» заполнились
UniqueId0,UniqueName. - ✍️ T-BND-04 «Отвязать» → «Привязка удалена», поля очищены. Снова привязать (нужно для T-IMP).
5. Объекты — T-OBJ
- T-OBJ-01 Большой проект: число объектов в тулбаре и дерево (названия, вложенность, счётчики детей) совпадают со старой страницей.
- T-OBJ-02 «Развернуть» / «Свернуть», клик по строке раскрывает.
- T-OBJ-03 Роль Р → нет «Добавить объект», нет меню ⋮, нет перетаскивания.
- ✍️ T-OBJ-04 «ТЕСТ StroyBot», роль Е: пустое дерево → «Объекты не найдены» + кнопка. Добавить объект-пятно «Корпус 1».
- ✍️ T-OBJ-05 Меню ⋮ у «Корпус 1» → «Добавить объект» → «Раздел» «Фундамент». У «Фундамент» → «Вид работ» «Бетонирование». У вида работ нет пункта «Добавить объект».
- ✍️ T-OBJ-06 Пустое название → сообщение «Поле обязательно…»; Enter сохраняет.
- ✍️ T-OBJ-07 Редактировать «Фундамент» → сменить родителя (нужен второй объект-пятно «Корпус 2»).
- [-] T-OBJ-08 Перетаскивание — убрано (решение 2026-10-16). Проверить, что строку дерева мышкой больше не перетащить.
- ✍️ T-OBJ-09 Удалить объект с детьми → подтверждение с числом детей; дети остаются (🐞 так было).
- T-OBJ-10 «Экспорт» → скачался
objects-{id}.xlsx, содержимое как у старой страницы. - T-OBJ-11 Меню ⋮ → «Работы» → открылся раздел «Работы» этого объекта.
6. Работы — T-WRK
- T-WRK-01 Объект большого проекта: список работ, единицы, объёмы (3 знака), даты, вложенность — как в старой странице.
- T-WRK-02 Родители свёрнуты; нумерация считает только видимые строки.
- ✍️ T-WRK-03 «ТЕСТ StroyBot», «Бетонирование»: «Добавить работу» «Бетон В25», м3, 12.5, даты.
- ✍️ T-WRK-04 «Сохранить и добавить еще» → окно не закрылось, поля пустые, родитель тот же.
- ✍️ T-WRK-05 ⋮ → «Добавить дочернюю» → родитель предвыбран.
- ✍️ T-WRK-06 «Редактировать» дочернюю → убрать родителя → сохранить → стала корневой.
- ✍️ T-WRK-07 В списке «Родительская работа» при правке нет самой работы и её потомков.
- ✍️ T-WRK-08 Удалить → «Подтвердите удаление» → исчезла.
- T-WRK-09 Роль Р → нет кнопок добавления и меню ⋮.
7. Импорт работ — T-IMP
⛔ T-IMP-02…07 заблокированы (2026-10-19): сначала
GET https://api.tnsu.kz/Project/{oid}/worksотвечал 50042703: column l.name does not exist— команда API исправила. Теперь он отвечает 200, ноtotalCount: 0у всех проектов: сметы в справочник ещё не загружены. Старый web part показывает то же «Работы не найдены». Повторить, когда появится хотя бы один проект со сметой (тестовый проект 51 привязать к нему; настоящие проекты не привязывать). T-IMP-01 ✅. Проверено по коду: API урезаетpageSize=200до 100, но число страниц берётся изtotalPagesответа — работы не теряются.
- T-IMP-01 Проект без привязки к справочнику → «Проект не привязан к справочнику…».
- T-IMP-02 Большой привязанный проект: «Загрузка работ… X из Y», затем число работ совпадает со старой страницей.
- T-IMP-03 Поиск (код СНБ, объём, название), страницы по 100.
- ✍️ T-IMP-04 «ТЕСТ StroyBot» (привязан в T-BND-04): выбрать объект → отметить 2 работы → «Импортировать» → тост «✓ Успешно импортировано: 2»; строки стали «✓ импортировано» и неактивны.
- ✍️ T-IMP-05 Работы появились в разделе «Работы» этого объекта.
- ✍️ T-IMP-06 «Импорт с созданием объекта» → в «Объекты» созданы объект и раздел из сметы, работы — под ними.
- T-IMP-07 «Импортировать» без объекта → тост «Выберите объект…».
8. Отчёты по проекту — T-RPL
- T-RPL-01 Большой проект, текущая неделя: число карточек, номера, даты, авторы, компании, объекты — как в старой странице.
- T-RPL-02 Сменить период → «Применить» → совпадает со старой за тот же период.
- T-RPL-03 Поиск по автору, компании, объекту, комментарию.
- T-RPL-04 Роль Н → «Нет доступа».
- T-RPL-05 Роль Р → нет «Отправить отчёт», копирования и удаления.
- T-RPL-06 Клик по карточке → форма отчёта в новой вкладке с
reportId.
9. Форма отчёта — T-REP (самое важное)
Роль Е, «ТЕСТ StroyBot», объекты и работы из T-OBJ / T-WRK.
- ✍️ T-REP-01 «Отправить отчёт» → «Новый отчет», дата — сегодня, смена — первая.
- ✍️ T-REP-02 «Сохранить» пустым → все 5 ошибок валидации, тексты как в старой форме.
- ✍️ T-REP-03 Выбрать объект, компанию; «+ Выбрать работу» → работы объекта; drill-down по родителям; «Выбрать «X»».
- ✍️ T-REP-04 У работы: значение 3.5, комментарий; «Персонал на работе» + профессия (2 чел., 8 ч); «Техника на работе» + техника.
- ✍️ T-REP-05 Общий персонал с типом «Часы простоя» без комментария → ошибка валидации; с комментарием — ок.
- ✍️ T-REP-06 Общая техника «Часы ремонта» + комментарий.
- ✍️ T-REP-07 Добавить 2 фото → превью; удалить одно.
- ✍️ T-REP-08 «Сохранить отчет» → «Отчет успешно сохранен!», кнопка стала «← Вернуться назад». Записать номер отчёта:
№ ____. - ✍️ T-REP-09 Проверить в данных: отчёт в Dataverse; строки — работа, её персонал и техника с родителем = строка работы, общий персонал и техника без родителя; фото в
DocLib/{projectId}_{номер}. - ✍️ T-REP-10 Открыть отчёт из «Отчёты по проекту» → режим правки, всё заполнено как сохраняли (включая персонал внутри работы).
- ✍️ T-REP-11 Изменить значение работы, удалить общую технику → сохранить → открыть заново → изменения на месте, лишних и задвоенных строк нет.
- ✍️ T-REP-12 Сменить объект в форме → работы очистились.
- ✍️ T-REP-13 «Создать на основе» (копирование) → новая форма, всё скопировано, дата — сегодня, фото — пусто; сохранить → новый номер.
- ✍️ T-REP-14 Пикер техники: группы, фильтр, «Все». Создать новую технику из пикера → появилась в списке «Техника».
- ✍️ T-REP-15 Пикер работ: создать новую работу (ед., план, родитель) → появилась в «Работах» объекта.
- ✍️ T-REP-16 Роль У → открыть неутверждённый отчёт → «На утверждении», поля только для чтения, «Утвердить отчет» → подтверждение → «Отчет утвержден!», бейдж «Утверждён».
- ✍️ T-REP-17 Роль Е → утверждённый отчёт открывается только для чтения.
- T-REP-18 Роль Р → отчёт только для чтения, кнопок нет.
- T-REP-19 Роль Н → «Нет доступа» при открытии существующего отчёта.
- T-REP-20 Большой проект: открыть 3 разных старых отчёта → всё совпадает со старой формой (план-факт, персонал, техника, фото-папка).
- Проверено на проекте 17: №2030 и ещё 2 отчёта совпали, режим правки тот же. Отчёт с персоналом/техникой внутри работы найти не удалось (прямого доступа к Dataverse нет) — вложенные строки проверены только на тестовом проекте (T-REP-10/11). Дополнительно: встретится такой отчёт — сверить со старой формой.
- T-REP-21 «← Вернуться назад» → вернулись туда, откуда пришли.
- T-REP-22 Enter в любом поле не перезагружает страницу.
- ✍️ T-REP-23 Удалить тестовый отчёт из «Отчёты по проекту» → «Удалить отчёт?» → пропал из списка (мягкое удаление).
10. Адаптивность — T-RSP
Как: F12 → кнопка «телефон/планшет» (Ctrl+Shift+M) → сверху выбрать ширину → F5. Только просмотр, ничего не сохранять. Ширины: 360 (обычный телефон), 768 (планшет), 1280 (ноутбук), плюс твой монитор как есть. На каждой ширине — признаки бага: горизонтальная прокрутка всей страницы, текст/кнопка вылезает за край, элементы налезают друг на друга, что-то нельзя нажать.
- T-RSP-01 360: меню скрыто, кнопка ☰ открывает его поверх, выбор раздела закрывает меню.
- T-RSP-02 360: главная — выбор проекта, даты в столбик, карточки в одну колонку.
- T-RSP-03 360: «Отчёты по проекту» — фильтр дат над поиском, карточки в одну колонку, кнопки копирования/удаления нажимаются.
- T-RSP-04 360: форма отчёта — поля во всю ширину, «Кол-во/Часы» друг под другом, пикер — шторка снизу, список прокручивается, «Сохранить» видна.
- T-RSP-05 360: «Объекты» и «Работы» — дерево не уезжает вправо, длинные названия переносятся/обрезаются, меню ⋮ не уходит за экран.
- T-RSP-06 360: «Ресурсы», «Привязка», «Импорт» — колонки складываются, модалки помещаются в экран.
- T-RSP-07 768: все разделы — то же беглым просмотром; пикер отчёта — окно по центру.
- T-RSP-08 1280 и свой монитор: меню слева, ничего не растянуто на всю ширину неудобно, форма отчёта — узкая колонка.
- T-RSP-09 После деплоя: открыть страницу на настоящем телефоне (браузер и приложение SharePoint) — меню, форма отчёта, пикер (сохранять только на тестовом проекте 51).
Как сообщить о баге
Скопируй и заполни:
Баг: T-XXX-NN
Роль / проект: Е / ТЕСТ StroyBot
Что сделал: 1) … 2) … 3) …
Ожидал: …
Получил: …
Старая страница в этом случае: … (если сравнивал)
Console (F12): текст красной ошибки
Network (F12): красный запрос — адрес и ответ (вкладка Response)
Скриншот: (если про внешний вид)
Итог
| Раздел | Пройдено | Багов |
|---|---|---|
| Оболочка | ||
| Главная | ||
| Ресурсы | ||
| Привязка | ||
| Объекты | ||
| Работы | ||
| Импорт | ||
| Отчёты по проекту | ||
| Форма отчёта |