2.2 KiB
2.2 KiB
Tasks: project-members-write
1. Schema and reference data
- 1.1 Добавить
PROJECT_SECTION_TABLEи полеtextвmerakomis_schema.py(если колонка есть в БД) - 1.2 Создать
member_roles.py— статический справочник ролей изeMemberRole.php(id, title, archive) - 1.3 Helper
_project_section_ids(cur, db, project_id)и_fetch_member_by_idдля ответа PUT
2. Permissions
- 2.1 Порт
getRoleInProject(acting, project_id)вlabor_permissions.py - 2.2 Реализовать
can_write_project_member(...)поRules::isRwMember - 2.3 Расширить
GET /api/labor/permissions— querymember_id,target_emp_id, ответcan_write_member
3. Read endpoints
- 3.1 Создать
project_members_read.pyсGET /api/project-sections - 3.2 Добавить
GET /api/member-rolesвproject_members_read.py - 3.3 Подключить роутер в
main.py
4. Write endpoint
- 4.1 Создать
project_members_write.py— Pydantic-модель тела PUT - 4.2 Валидация: project exists, emp not archived/removed, section in project, role > 0
- 4.3 Upsert в
tMerakomisTeamMember(resolve team из project; INSERT или UPDATE по team+emp) - 4.4 Проверка
can_write_project_memberперед записью; ошибки 400/403/404 - 4.5 Ответ PUT — тот же shape, что item
GET /api/project-members - 4.6 Подключить роутер write в
main.py
5. Tests
- 5.1 Unit-тесты
can_write_project_member(admin, РП, ГИП, dept director, deny) - 5.2 Unit-тесты валидации section_id и archived employee
- 5.3 Unit-тест upsert logic (insert vs update)
6. Documentation and preview
- 6.1 Обновить
DEVELOPERS.md— эндпоинты, матрица доступа, сценарий F «управление составом» - 6.2 Обновить
docs/user-reader-api.md— спецификация PUT, project-sections, member-roles, permissions - 6.3 (Опционально) HTML-превью формы на
static/по аналогии сtime-entry.html