Commit Graph

12 Commits

Author SHA1 Message Date
lokses 5d06d4d3ce telephony: автоформат +380, тип линии SIP/АТС и звонок через Asterisk AMI.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 14:52:09 +03:00
lokses 24f9e54283 hr: различать штат и договор ЦПХ у сотрудника и в заявке на найм.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-13 11:46:17 +03:00
lokses 45d668a675 hr: форма найма в popup-мастере из трёх шагов.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 22:22:13 +03:00
lokses 7b04ca7477 hiring: спрашивать ИНН в заявке на найм для фоторегистратора.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-12 17:29:31 +03:00
lokses 626aeebbb7 usernames: корректная транслитерация украинских букв в логинах
pytils (русская либа) выбрасывала і/ї/є/ґ/апостроф целиком: Кіт→kt,
Філіпʼєв→flpv, Ірина→rina. Добавлен премаппинг украинских букв в латиницу
до slugify (translit_login), общий для найма, импорта и конвертации.

Теперь: Кіт Ірина → i.kit, Філіпʼєв Дмитро → d.filipiev, Ґудзик → gudzik.

- apps/hiring/services: translit_login + _username_base через него
- import_employees_json: переиспользует _username_base
- tests: украинская транслитерация в convert_usernames

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 23:39:33 +03:00
lokses 3ec5fb58c4 hiring: автоназначение ролей по типу локации
При утверждении найма сотрудник получает роли (группы) по умолчанию для
своего типа локации (Аптека/Офис/Склад). Наборы настраиваются в
EmployeeDefaults (админка «Настройки сотрудников по умолчанию»).

- EmployeeDefaults: 3 M2M default_groups_* + apply_default_groups();
- approve_hiring_request вызывает apply_default_groups после создания Employee;
- админка: блок «Роли по умолчанию при найме» (filter_horizontal);
- миграция 0023; тесты найма.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 16:16:22 +03:00
lokses cfafe2f0b3 hiring: логин в формате <буква имени>.<фамилия>
Иван Иванов -> i.ivanov (транслит pytils, нижний регистр, коллизия +счётчик).
Раньше slugify('Фамилия.Имя') терял точку и давал ivanovivan. Единый формат
в найме (_generate_username) и в импорте (transliterate_username).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-21 15:52:57 +03:00
lokses ac0418083b hiring: вакансии и найм, HR-портал
Модель вакансий, флоу рекрутинга и панели HR-портала (заявки/вакансии).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 18:03:32 +03:00
lokses 70e5a77b04 Harden portal access and hiring, add RRO portal CRUD.
Remove the is_staff permission bridge, tighten intern credential handling with one-time PDFs and random seed passwords, and let staff manage cash registers from the portal.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 08:54:41 +03:00
lokses ae5c1f1848 Add RRO, portal section perms, dislocation presets, and hiring intern flow.
Ship cash-register registry, section-based portal access, configurable dislocation columns, and trial-hire intern accounts with credentials PDF.
2026-08-09 14:58:17 +03:00
lokses 5a274f7f90 Найм: авто-задача IT на доступи з чек-листом + сповіщення постановника
При створенні HR-заявки з обраними базами/доступами тепер одразу ставиться
задача IT-відділу (замість тікета на затвердженні):

- TaskChecklistItem: чек-лист задачі, виконавець відмічає зроблене
  (task-detail: чекбокси, лічильник виконаного, хто/коли відмітив)
- create_hiring_request → _create_access_task: задача з чек-листом по базах,
  creator = HR (постановник), co_executors = IT-група (тригерить сповіщення
  ботом Ричард), priority=high, due_date рахується за робочим часом
- add_working_hours (visit_manager/services): дедлайн за робочим вікном
  09:00–18:00 з урахуванням вихідних і свят (Holiday)
- Постановнику (HR) бот пише, що заявку взято в роботу, строк — 24 год
  робочого часу (до розрахованої дати)
- approve більше не створює дублюючий IT-тікет (доступи вже задачею)
- HiringRequest.access_task; чек-лист в адмінці задач (inline)
- Тести: hiring (задача+чек-лист, approve без тікета), робочі години
  (вихідні/свята), відмітка чек-листа через в'ю

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 01:01:30 +03:00
lokses 6ff01c4119 Доменные модули: сотрудники, локации, найм, счётчики, посещения
- employees: last_seen, internal_number, default_page_size; управление-команды
- locations: категория/куратор/ответственный аптеки, seed должностей;
  Location.__str__ показывает номер аптеки (не только адрес)
- hiring: HiringRequest (заявки на найм) + тесты (7)
- utilities: UtilityReading (показания счётчиков по аптекам)
- visit_manager: правки

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 17:33:16 +03:00