# EBL V9 System Cleanup

This build is a cleanup/reliability pass, not a new feature phase.

## Completed
- Homepage featured businesses are database-driven.
- Known demo records are isolated in `database/cleanup_demo_data.sql`.
- Fresh-install master SQL no longer seeds the known demo businesses.
- Public business profile records a view and increments `views_count`.
- Public profile loads canonical `reviewer_name` / `comment` fields.
- Review submission uses the canonical reviews schema.
- Business registration no longer depends on a non-canonical `businesses.plan` field.
- Owner profile uses the canonical subscriptions/plans relationship for plan display.
- Admin APIs use the dedicated administrator session.
- Admin moderation respects the canonical businesses.status enum.
- Legacy admin API field-name mismatches were corrected.
- The PWA uses one canonical service worker (`sw.js`) with offline shell + push handling.
- Broken owner-portal links now resolve to functional pages.

## Existing local database
Run `database/cleanup_demo_data.sql` once in phpMyAdmin if the old demo businesses are still present.

Do not import the master SQL over an existing production database. Use migrations/backups for future schema changes.

## Next validation
1. Register real business.
2. Admin approve/publish.
3. Public profile view.
4. Confirm view count increases.
5. Add service.
6. Submit review as another user.
7. Admin publish review.
8. Submit enquiry.
9. Owner sees enquiry.
10. Request verification.
11. Admin verify.
12. Confirm homepage only shows real featured published businesses.
13. Test PWA install/offline.
14. Test mobile layout.
