docs: record report fixes and the import test blocker
Import tests wait for an estimate in the catalogue: the API returns totalCount 0 for every project. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,8 @@
|
||||
|
||||
## 0. Общее (оболочка)
|
||||
|
||||
> 🔧 **Исправлено при проверке T-RPL (2026-10-19):** «Отчёты по проекту» и форма отчёта брали id пользователя из контекста страницы (`legacyPageContext.userId`) и путь к DocLib — от сайта страницы. У каждого сайта свой id пользователя, поэтому в workbench корневого сайта «Отчёты» показывали «Нет доступа». Теперь всё — от сайта со списками (`settings.siteUrl`): id через `_api/web/currentuser`, путь папки фото — от `siteUrl`. Workbench по умолчанию открывается на `/sites/stroy`.
|
||||
|
||||
- [ ] Одна web part, разделы переключаются через `?page=…`, проект — через `?projectId=…`
|
||||
- [ ] Кнопки «назад/вперёд» браузера переключают разделы
|
||||
- [ ] Ссылку на любой раздел можно скопировать и открыть в новой вкладке
|
||||
@@ -185,18 +187,25 @@
|
||||
|
||||
### Сохранение
|
||||
- [ ] Валидация (все сообщения из исходника)
|
||||
- [ ] Номер = количество неудалённых отчётов проекта + 1
|
||||
- [ ] Номер = наибольший номер в проекте (включая удалённые) + 1 — в старом коде «количество неудалённых + 1», см. 🔧 ниже
|
||||
- [ ] При правке — удалить все старые строки (сначала дочерние), создать заново
|
||||
- [ ] Фото → `DocLib/{projectId}_{number}`
|
||||
- [ ] «Отчет успешно сохранен!», кнопка меняется на «← Вернуться назад»
|
||||
- [ ] Утверждение: подтверждение → `cree9_aprooved = true` → «Отчет утвержден!»
|
||||
- [ ] Права: «Доступы» `projectId` + `userId*` (несколько вариантов имени поля)
|
||||
|
||||
🐞 Create без проверки NoAccess. 🐞 Номер может совпасть после мягкого удаления. 🐞 Дата «сегодня» — UTC.
|
||||
🐞 Create без проверки NoAccess. 🐞 Дата «сегодня» — UTC.
|
||||
|
||||
🔧 **Исправлено при проверке T-REP (2026-10-19):**
|
||||
- Только что созданная из пикера работа попадала в карточку с полным путём вместо названия, без ед. изм. и с планом 0 (в старом коде так же).
|
||||
- Окно выбора на экране шире 640px — по центру (было всегда прижато к низу), поле «Значение» не вылезает за карточку.
|
||||
- После «Утвердить отчет» бейдж оставался «На утверждении» до F5 — теперь сразу «Утверждён».
|
||||
- «← Вернуться назад» во вкладке, открытой из списка отчётов (истории нет), ничего не делал — теперь ведёт в «Отчёты по проекту».
|
||||
- Номер отчёта повторялся после мягкого удаления (номер = количество неудалённых + 1), а вместе с ним и папка фото `{projectId}_{номер}`. Теперь номер = наибольший номер в проекте, включая удалённые, + 1. Как нумерует отчёты Telegram-бот — уточнить у команды API.
|
||||
|
||||
**Сознательные отличия от report:**
|
||||
- `confirm('Утвердить отчет? …')` → `confirmModal` из ui-kit, текст тот же.
|
||||
- Адрес сайта для списков и ссылки на папку фото — настройка «URL сайта SharePoint» (раньше `pageContext.web.absoluteUrl`); путь папки при создании — по-прежнему от сайта, где стоит страница (`web.serverRelativeUrl`). По умолчанию это один и тот же сайт `/sites/stroy`.
|
||||
- Адрес сайта для списков и ссылки на папку фото — настройка «URL сайта SharePoint» (раньше `pageContext.web.absoluteUrl`); путь папки при создании и id пользователя для проверки прав — тоже от этого сайта (раньше — от сайта, где стоит страница). По умолчанию это один и тот же сайт `/sites/stroy`.
|
||||
- Если Dataverse ответит на создание записи `204` без тела, старый код брал id из заголовка `OData-EntityId`, а новый клиент заголовков не видит. С `Prefer: return=representation` Dataverse отвечает `201` с телом, поэтому на практике не встречается; при пустом id сохранение останавливается той же ошибкой `reportId is empty`.
|
||||
- Логика режимов, валидации, сборки строк и порядка записи / удаления сверена со старым кодом построчно и покрыта тестами (45 тестов).
|
||||
|
||||
|
||||
@@ -120,6 +120,9 @@
|
||||
- [ ] **T-WRK-09** Роль **Р** → нет кнопок добавления и меню ⋮.
|
||||
|
||||
## 7. Импорт работ — `T-IMP`
|
||||
|
||||
> ⛔ **T-IMP-02…07 заблокированы (2026-10-19):** сначала `GET https://api.tnsu.kz/Project/{oid}/works` отвечал 500 `42703: 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.
|
||||
@@ -158,6 +161,7 @@
|
||||
- [ ] **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** Удалить тестовый отчёт из «Отчёты по проекту» → «Удалить отчёт?» → пропал из списка (мягкое удаление).
|
||||
|
||||
Reference in New Issue
Block a user