feat: Implement AI Chat Agent, Email Notifications, and UI enhancements
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-12-12 08:35:48 +01:00
parent ccfb674318
commit 5d8976b1cd
58 changed files with 7867 additions and 844 deletions
+59
View File
@@ -0,0 +1,59 @@
# Implementation Plan - Email Services
## 1. Infrastructure
- Add MailHog to `docker-compose.yml` for local SMTP testing.
- Install `nodemailer` and `@types/nodemailer`.
## 2. Database Schema
- Update `shared/schema.ts`:
- Add `password_reset_tokens` table.
- `id` (uuid, pk)
- `userId` (fk users.id)
- `token` (string, unique)
- `expiresAt` (timestamp)
- `isUsed` (boolean)
- Add validation schemas (`insertPasswordResetTokenSchema`).
## 3. Email Service (`server/email.ts`)
- Create `EmailService` class.
- Methods:
- `sendWelcomeEmail(user)`
- `sendPasswordResetEmail(user, token)`
- Configuration:
- Use `nodemailer`.
- Fetch SMTP settings from `storage.getSystemSettings` (fallback to env vars or MailHog defaults for dev).
- Keys: `smtp_host`, `smtp_port`, `smtp_user`, `smtp_pass`, `smtp_secure`, `smtp_from`.
## 4. Backend Routes (`server/routes.ts`)
- **Modify Registration**:
- After successful user creation, call `emailService.sendWelcomeEmail`.
- **New Routes**:
- `POST /api/auth/forgot-password`:
- Input: `email`.
- Logic: Find user, generate token (uuid), save to DB, send email.
- `POST /api/auth/reset-password`:
- Input: `token`, `newPassword`.
- Logic: Validate token (exists, not used, not expired), hash new password, update user, mark token used.
## 5. Storage (`server/storage.ts`)
- Update `IStorage`, `MemStorage`, `DbStorage`:
- `createPasswordResetToken(token)`
- `getPasswordResetToken(token)`
- `markPasswordResetTokenUsed(tokenId)`
## 6. Frontend
- **Forgot Password Page** (`/forgot-password`):
- Form: Email input.
- Action: `POST /api/auth/forgot-password`.
- **Reset Password Page** (`/reset-password`):
- Form: New Password, Confirm Password.
- Params: `?token=...` from URL.
- Action: `POST /api/auth/reset-password`.
- **Login Page Update**:
- Add "Forgot Password?" link.
- **Admin Settings**:
- Add "Email Settings" section in `AdminUserManagement` or `Settings` page (optional but requested "add email settings").
- Form to set SMTP host/port/etc.
## 7. Configuration
- Add `scripts/test-email-flow.ts` to simulate the flow and verify via MailHog API (`http://localhost:8025/api/v2/messages`).