52 lines
1.7 KiB
Markdown
52 lines
1.7 KiB
Markdown
# Task C.1: Customer Ownership and Contact Sharing Governance
|
|
|
|
## Summary
|
|
|
|
Task C.1 completes the missing customer-governance layer by adding:
|
|
|
|
- persistent customer owner fields and owner history
|
|
- persistent contact sharing
|
|
- owner/share-aware customer and contact visibility
|
|
- lead owner suggestion during lead/enquiry creation
|
|
|
|
## Delivered
|
|
|
|
- Added `ownerUserId`, `ownerAssignedAt`, and `ownerAssignedBy` to `crm_customers`
|
|
- Added `crm_customer_owner_history`
|
|
- Added `crm_contact_shares`
|
|
- Added customer owner management route:
|
|
- `PATCH /api/crm/customers/[id]/owner`
|
|
- `DELETE /api/crm/customers/[id]/owner`
|
|
- Added contact sharing routes:
|
|
- `GET /api/crm/customers/[id]/contacts/[contactId]/shares`
|
|
- `POST /api/crm/customers/[id]/contacts/[contactId]/shares`
|
|
- `DELETE /api/crm/customers/[id]/contacts/[contactId]/shares/[shareId]`
|
|
- Expanded customer list/detail contracts with owner and share metadata
|
|
- Added customer owner card with history on customer detail
|
|
- Added contact sharing management UI on customer detail
|
|
- Added owner columns and owner filter on customer list
|
|
- Added new permissions:
|
|
- `crm.customer.owner.read`
|
|
- `crm.customer.owner.manage`
|
|
- `crm.contact.share.read`
|
|
- `crm.contact.share.create`
|
|
- `crm.contact.share.delete`
|
|
- `crm.contact.share.manage`
|
|
- Added lead/enquiry assignee suggestion from selected customer owner
|
|
- Added audit events for:
|
|
- `assign_owner`
|
|
- `change_owner`
|
|
- `clear_owner`
|
|
- `share`
|
|
- `unshare`
|
|
- `lead_owner_suggestion_used`
|
|
- `lead_owner_suggestion_overridden`
|
|
|
|
## Verification
|
|
|
|
- `npx tsc --noEmit`
|
|
|
|
## Remaining limitation
|
|
|
|
- Team-scope visibility is still approximate because the production model still lacks an explicit CRM team hierarchy.
|