[FIX] yodoo_apps_website: task widget reads dotted state/progress fields as literal keys
Симптом: у формі yodoo.git.source стан і прогрес синку не відображались. Тихий баг — без помилки в консолі, без запису в логах.
Причина: в'юха передавала віджету gtq_task_auto_refresh опції state_field/progress_field як dotted path (last_sync_task_id.state), а віджет читає record.data[stateField] буквальним ключем і крапкові шляхи не розбирає (task_auto_refresh_field.js:78-84,104-129). README віджета показує лише плоскі імена полів.
Фікс: додано related-поля last_sync_task_state (Selection) і last_sync_task_progress (Integer) на yodoo.git.source; options переведено на плоскі імена; поля додано у в'юху як invisible — інакше не потрапляють у record.data.
Тести: 2 python-тести на значення related-полів (+negative control на перепризначення таски, з ненульовим progress) і arch-тест, що асертить відсутність крапки в options та присутність полів у view['models']. Red-first доведено: відкат моделі+в'юхи дає 1 failed, 2 error(s) of 3 tests; після фікса 0 failed, 0 error(s) of 3 tests. flake8 чистий, pylint 10.00/10. Рев'ю approved.
Примітка про безпеку: related-поля non-stored, compute_sudo=True за замовчуванням — читання не потребує прав на generic.task.queue.task, AccessError не виникає.
18.0-fix-yodoo-apps-website-create-children) від тієї самої бази теж створює tests/__init__.py і теж піднімає версію до 18.0.1.5.6. Git змержить однакову версію БЕЗ конфлікту — це тихий дефект. Той MR, що мержиться другим, мусить ре-бампнути версію до 18.0.1.5.7 і об'єднати обидва імпорти в tests/__init__.py.
Пов'язано: корінь клієнтської помилки OWL виправляється окремим MR у crnd/generic-background-service (гілка 18.0-fix-task-auto-refresh-null-props) — без нього форма падала повністю.