7.1 KiB
TODO - Lease Approval Implementation Plan
Current Status Analysis
Based on codebase review, significant progress has been made. Here's what's already implemented vs remaining tasks.
Already Completed
- Database Schema - Approval fields added to
leasestable (approval_status, timestamps, approved_by, rejection_reason) - API Endpoints - All 4 endpoints created:
POST /api/lease/request-approval- Tenant initiates leasePOST /api/lease/approve- Landlord approvalPOST /api/lease/reject- Landlord rejectionGET /api/lease/pending-approvals- Landlord dashboard
- Tenant Invitation Page - Updated with approval status UI, progress indicators, and status-based messaging
- Landlord Dashboard - Added pending approvals section with
getPendingLeaseApprovals()integration - Notification Service - Basic structure created for lease approval notifications
Remaining Development Tasks
1. Database Migration (HIGH PRIORITY)
- Create migration SQL file for approval schema changes
- Run migration to update database with new lease fields
- Verify database schema matches code expectations
2. Lease Finalization Logic (HIGH PRIORITY)
- Implement complete lease activation on approval
- Ensure proper tenant_id linking when approved
- Set up payment schedules and access rights
- Update property rental_status to 'occupied'
- Create lease document generation
3. Tenant Invite Status Checking (MEDIUM PRIORITY)
- Add lease status checking in GET handler of invite page
- Update UI to show correct status on page load
- Handle edge cases (multiple leases, expired invites)
4. Landlord Dashboard Approval Interface (MEDIUM PRIORITY)
- Add approve/reject buttons to pending approval cards
- Create approval modal with lease details
- Add confirmation dialogs for approve/reject actions
- Implement real-time updates after approval actions
5. Email Notification Implementation (MEDIUM PRIORITY)
- Complete email template implementation in notificationService
- Add email sending functionality for approval requests
- Implement landlord notification when approval needed
- Add tenant notification for approval/rejection outcomes
6. Testing (LOW PRIORITY)
-
Add unit tests for lease approval service functions
-
Create integration tests for API endpoints
-
Add E2E tests for complete approval workflow
-
Test error handling and edge cases Tasks:
-
Create
routes/landlord/approvals/index.tsx -
Fetch pending approvals via
/api/lease/pending-approvals -
Display detailed property and tenant information
-
Provide approve/reject forms with optional rejection reason
-
Follow Fresh page pattern from
routes/landlord/dashboard/index.tsx -
Add navigation link in landlord menu
4. E2E Tests ❌ (MEDIUM PRIORITY)
Status: Test file exists but doesn't test approval workflow
Current State:
tests/e2e/lease-creation.spec.tsexists- Tests lease acceptance workflow but NOT approval workflow
Tasks:
- Create or update
tests/e2e/lease-approval.spec.ts - Test complete workflow: tenant requests, landlord views/approves, tenant sees status
- Use patterns from
tests/e2e/invite-tenant.spec.tsandhelpers.ts - Test approval status transitions (pending → approved/rejected)
- Test notification triggers (when notification service is implemented)
- Test error cases (unauthorized, invalid lease_id, etc.)
5. API Endpoint Validation ⚠️ (LOW PRIORITY)
Status: Endpoints exist but may need improvements
Tasks:
- Verify
routes/api/lease/request-approval.tshas proper error handling - Verify
routes/api/lease/approve.tshas proper error handling - Verify
routes/api/lease/reject.tshas proper error handling - Check
routes/api/lease/pending-approvals.tsreturns correct data structure - Add input validation and error messages
- Add notification calls when notification service is ready
6. Lease Finalization Verification ⚠️ (LOW PRIORITY)
Status: Basic implementation exists, needs verification
Tasks:
- Verify
inviteLease()inleaseService.tsproperly links to approved lease - Ensure tenant access rights are set up after approval
- Validate payment schedules are created on approval
- Test data integrity after approval workflow
- Verify lease status transitions correctly (draft → active)
Issues Discovered During Development
1. Missing Notification Integration
Issue: API endpoints for approve/reject don't send notifications Impact: Landlords and tenants won't receive email/dashboard notifications Fix Required: Implement notification service and integrate with endpoints
2. Dashboard Missing Pending Approvals Section
Issue: Landlord dashboard doesn't show pending lease approvals Impact: Landlords must navigate to a separate page to see approvals Fix Required: Add pending approvals section to dashboard
3. No Dedicated Approvals Page
Issue: /landlord/approvals route doesn't exist Impact: No centralized
location for landlords to manage approvals Fix Required: Create dedicated
approvals page
4. Incomplete E2E Test Coverage
Issue: No E2E tests for the complete approval workflow Impact: Difficult to verify end-to-end functionality Fix Required: Add comprehensive E2E tests
5. Variable Naming Consistency
Issue: Potential naming inconsistencies between services Impact: May cause confusion during maintenance Fix Required: Review and standardize variable names across files
Verification Steps
After completing each component, run:
deno check <modified_ts_file>
deno fmt <modified_ts_file>
deno lint <modified_ts_file>
Note: deno check only works on TypeScript files (.ts), not Markdown files
(.md).
Workflow Summary
- Tenant clicks "Start Lease" → Creates lease with
approval_status: 'pending_approval' - Landlord receives notification → Dashboard shows pending approval
- Landlord reviews and approves/rejects → Updates lease status
- System finalizes lease → Links records, sets up payments, grants access
Files to Create
services/notificationService.ts- New notification serviceroutes/landlord/approvals/index.tsx- Dedicated approvals pagetests/e2e/lease-approval.spec.ts- E2E tests for approval workflow
Files to Modify
routes/landlord/dashboard/index.tsx- Add pending approvals sectionroutes/api/lease/approve.ts- Add notification callroutes/api/lease/reject.ts- Add notification callroutes/api/lease/request-approval.ts- Add notification callservices/e2eFixtures.ts- Add notification E2E fixtures
Success Criteria
- All lease activations require landlord approval
- Tenants see clear approval status
- Landlords can easily review and approve/reject
- Notifications are sent reliably
- Lease finalization works correctly
- All tests pass
- Dashboard shows pending approvals
- Dedicated approvals page exists