# 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.
