feat: add MFA/TOTP auth, PII encryption, agents/leads/inquiries modules, and comprehensive tests

- Add TOTP-based MFA with setup, verify, disable, backup codes, and challenge flow
- Add PII field encryption middleware with AES-256-GCM and deterministic search hashes
- Add agents, inquiries, and leads domain modules with entities, events, value objects
- Add web dashboard pages for inquiries and leads with detail dialogs
- Add 30+ component tests (valuation, charts, listings, search, providers, UI)
- Add Prisma migrations for encryption hash columns and MFA TOTP support
- Fix all ESLint errors (unused imports, duplicate imports, lint auto-fixes)
- Update dependencies and lock file
- Clean up obsolete exploration/QA docs, add audit documentation

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Ho Ngoc Hai
2026-04-11 23:43:20 +07:00
parent 9e2bf9a4b5
commit 1fbe2f4e73
131 changed files with 11436 additions and 2595 deletions

View File

@@ -0,0 +1,5 @@
export { CreateLeadCommand } from './commands/create-lead/create-lead.command';
export { UpdateLeadStatusCommand } from './commands/update-lead-status/update-lead-status.command';
export { DeleteLeadCommand } from './commands/delete-lead/delete-lead.command';
export { GetLeadsByAgentQuery } from './queries/get-leads-by-agent/get-leads-by-agent.query';
export { GetLeadStatsQuery } from './queries/get-lead-stats/get-lead-stats.query';

View File

@@ -0,0 +1 @@
export { LeadEntity, type LeadProps, type LeadStatus } from './lead.entity';

View File

@@ -0,0 +1,2 @@
export { LeadCreatedEvent } from './lead-created.event';
export { LeadStatusChangedEvent } from './lead-status-changed.event';

View File

@@ -0,0 +1,4 @@
export * from './entities';
export * from './value-objects';
export * from './events';
export * from './repositories';

View File

@@ -0,0 +1,7 @@
export {
LEAD_REPOSITORY,
type ILeadRepository,
type PaginatedResult,
type LeadStatsData,
} from './lead.repository';
export { type LeadReadDto } from './lead-read.dto';

View File

@@ -0,0 +1 @@
export { LeadScore } from './lead-score.vo';