Контекст
The previous CRM could not express the real graph: institutes related to contacts related to applicants related to tasks, with permissions that were not “admin or not.”
Граница системы
В системе
- relationship model
- filters
- boards
- permissions
- migration
Вне системы
marketing automation blasts
Архитектура
Entities are nodes with typed edges. Status is a workflow on an entity, not a column that everyone edits. Permissions attach to relationship and role, not to a hidden screen flag.
- Institutes
- Contacts
- Applicants
- Tasks
- Statuses
- Permissions
- Typed edges
- Permissions are data
- Institutes
- Contacts
- Applicants
- Tasks
- Statuses
- Permissions
Счётчики из опубликованной записи. Они описывают структуру, а не измеренный результат.
Как связаны домены системы?
relationships
- хранилищеInstitutes
- хранилищеContacts
workflow
- процессApplicants
- сервисTasks
- сервисStatuses
policy
- интерфейсPermissions
- InstitutesContacts
- InstitutesApplicants
- ContactsApplicants
- ApplicantsTasks
- ApplicantsStatuses
- ContactsPermissions
- InstitutesPermissions
Критические потоки
An institute owns contacts
an applicant is linked
tasks and statuses move the case
permission checks decide who sees which edge.
Этапы
Решения
Graph before screens
If the model cannot say “this contact at this institute,” the UI will lie.
Permissions are data
A new role must be configurable without a deploy. Hardcoded admin checks do not survive the client.
Migrate with dual write, then cut
Legacy import is a project. Shadow reads until the graph is complete.
Когда что-то ломается
| Условие | Обнаружение | Реакция |
|---|---|---|
| Orphan applicant | Required institute/contact edge | Block create |
| Permission miss | Policy deny | Empty result, not 500 |
| Legacy id collision | Import keymap | Halt batch; keep map |
Инфраструктура
- Application
- relational store
- search/filter indexes
- queued migration jobs
- audit of permission changes
Результат
Operations run on an explicit relationship graph with permissions that match how the organisation actually works.
Текущее состояние
In production as an anonymized public record. Legacy cutover complete for the published scope.