# Task 004 — Database Models

## Objective

Implement Mongoose models for core CRM entities and shared conventions (timestamps, enums, indexes).

## Scope

- 19 new models in `src/server/models/` (User unchanged from Task 003)
- `src/server/models/index.ts` barrel export
- `src/lib/enums.ts` shared constants
- Full `docs/02-database-schema.md` sync

**Out of scope:** API routes, UI, import execution logic, index sync scripts.

## Requirements

1. Models match Task 004 specification and `docs/02-database-schema.md`.
2. References use ObjectId with ref names.
3. Validation on required fields and enums.
4. User model and auth unchanged.

## Files to create or modify

| Path | Action |
|------|--------|
| `src/server/models/*.model.ts` | Create (19 files) |
| `src/server/models/index.ts` | Create |
| `src/lib/enums.ts` | Create |
| `docs/02-database-schema.md` | Rewrite |
| `docs/01-architecture.md` | Model layer |
| `docs/16-changelog.md` | Entry |

## Acceptance criteria

- [x] All models compile; no circular import issues
- [x] `npm run build` succeeds
- [x] `npm run lint` succeeds
- [x] User model still works; auth unchanged
- [x] Model names consistent; barrel export complete
- [x] Documentation, changelog, task index updated

## Documentation updates required

- [x] `docs/02-database-schema.md`
- [x] `docs/01-architecture.md`
- [x] `docs/13-decisions-log.md`
- [x] `docs/16-changelog.md`

**Status:** Complete
