refactor: update seed script and Makefile for company architecture

Seed Script Updates:
- Add create_demo_companies() function to seed 3 demo companies with owners
- Update create_demo_vendors() to link vendors to companies (not create owners)
- Fix VendorTheme to use JSON colors format (not individual columns)
- Fix VendorDomain to use 'domain' field (not 'domain_name')
- Update seed summary to show company information
- Update credentials output to show company owners instead of vendor owners

Makefile Refactoring:
- Separate production initialization from demo data seeding
- Update init-prod to run 4 steps:
  1. Create admin user + alerts (init_production.py)
  2. Initialize log settings (init_log_settings.py)
  3. Create CMS defaults (create_default_content_pages.py)
  4. Create platform pages (create_platform_pages.py)
- Update db-setup workflow: migrate-up + init-prod + seed-demo
- Update db-reset workflow: migrate-down + migrate-up + init-prod + seed-demo-reset
- Add utility commands: create-cms-defaults, create-platform-pages, init-logging
- Enhance help documentation with clear production vs demo distinction

Architecture:
- init-prod: Production-safe platform initialization (run in prod + dev)
- seed-demo: Demo data only (NEVER run in production)
- Clear separation of concerns for production deployment
This commit is contained in:
2025-12-01 21:50:36 +01:00
parent 801510ecc6
commit c9c280a8c7
2 changed files with 261 additions and 107 deletions

View File

@@ -90,10 +90,24 @@ migrate-status:
# DATABASE INITIALIZATION & SEEDING
# =============================================================================
# Production initialization - Run on first setup (production OR development)
init-prod:
@echo "🔧 Initializing production database..."
@echo ""
@echo "Step 1/4: Creating admin user and platform alerts..."
$(PYTHON) scripts/init_production.py
@echo ""
@echo "Step 2/4: Initializing log settings..."
$(PYTHON) scripts/init_log_settings.py
@echo ""
@echo "Step 3/4: Creating default CMS content pages..."
$(PYTHON) scripts/create_default_content_pages.py
@echo ""
@echo "Step 4/4: Creating platform pages and landing..."
$(PYTHON) scripts/create_platform_pages.py
@echo ""
@echo "✅ Production initialization completed"
@echo "✨ Platform is ready for production OR development"
# Demo data seeding - Cross-platform using Python to set environment
seed-demo:
@@ -122,23 +136,35 @@ else
SEED_MODE=reset $(PYTHON) scripts/seed_demo.py
endif
db-setup: migrate-up init-prod create-cms-defaults seed-demo
db-setup: migrate-up init-prod seed-demo
@echo ""
@echo "✅ Database setup complete!"
@echo "Run 'make dev' to start development server"
@echo "Run 'make dev' to start development server"
db-reset: migrate-down migrate-up seed-demo-reset
db-reset: migrate-down migrate-up init-prod seed-demo-reset
@echo ""
@echo "✅ Database completely reset!"
backup-db:
@echo "Creating database backup..."
@$(PYTHON) scripts/backup_database.py
# CMS default content pages
# Utility commands (usually not needed - init-prod handles these)
create-cms-defaults:
@echo "📄 Creating default CMS content pages..."
$(PYTHON) scripts/create_default_content_pages.py
@echo "✅ CMS defaults created"
create-platform-pages:
@echo "🏠 Creating platform pages and landing..."
$(PYTHON) scripts/create_platform_pages.py
@echo "✅ Platform pages created"
init-logging:
@echo "📝 Initializing log settings..."
$(PYTHON) scripts/init_log_settings.py
@echo "✅ Log settings initialized"
# =============================================================================
# TESTING
# =============================================================================
@@ -320,12 +346,11 @@ help:
@echo " migrate-up - Apply pending migrations"
@echo " migrate-down - Rollback last migration"
@echo " migrate-status - Show migration status"
@echo " init-prod - Initialize production essentials"
@echo " seed-demo - Seed demo data (3 vendors)"
@echo " seed-demo-minimal - Seed minimal demo (1 vendor)"
@echo " seed-demo-reset - DELETE ALL and reseed"
@echo " create-cms-defaults - Create default CMS content pages"
@echo " db-setup - Full dev setup (migrate + init + cms + seed)"
@echo " init-prod - Initialize platform (admin, logging, CMS, pages)"
@echo " seed-demo - Seed demo data (3 companies + vendors)"
@echo " seed-demo-minimal - Seed minimal demo (1 company + vendor)"
@echo " seed-demo-reset - DELETE ALL demo data and reseed"
@echo " db-setup - Full dev setup (migrate + init-prod + seed-demo)"
@echo " backup-db - Backup database"
@echo ""
@echo "=== TESTING ==="
@@ -372,30 +397,44 @@ help-db:
@echo " migrate-down - Rollback last migration"
@echo " migrate-status - Show current status and history"
@echo ""
@echo "INITIALIZATION:"
@echo " init-prod - Create admin user + settings (SAFE for production)"
@echo "PLATFORM INITIALIZATION (Production + Development):"
@echo "──────────────────────────────────────────────────────────"
@echo " init-prod - Complete platform setup (4 steps):"
@echo " 1. Create admin user + alerts"
@echo " 2. Initialize log settings"
@echo " 3. Create CMS defaults"
@echo " 4. Create platform pages"
@echo ""
@echo "DEMO DATA (Development only):"
@echo " seed-demo - Create 3 demo vendors with data"
@echo " seed-demo-minimal - Create 1 demo vendor only"
@echo " seed-demo-reset - DELETE ALL data and reseed (DANGEROUS!)"
@echo "DEMO DATA (Development Only - NEVER in production):"
@echo "──────────────────────────────────────────────────────────"
@echo " seed-demo - Create 3 demo companies + vendors + data"
@echo " seed-demo-minimal - Create 1 demo company + vendor only"
@echo " seed-demo-reset - DELETE ALL demo data and reseed (DANGEROUS!)"
@echo ""
@echo "CMS CONTENT:"
@echo " create-cms-defaults - Create default content pages (about, faq, etc.)"
@echo "UTILITY COMMANDS (Advanced - usually not needed):"
@echo "──────────────────────────────────────────────────────────"
@echo " create-cms-defaults - Re-create CMS pages only"
@echo " create-platform-pages - Re-create platform pages only"
@echo " init-logging - Re-initialize logging only"
@echo ""
@echo "WORKFLOWS:"
@echo " db-setup - Complete dev setup (migrate + init + cms + seed)"
@echo " db-reset - Nuclear option: rollback + reset + reseed"
@echo "QUICK WORKFLOWS:"
@echo "──────────────────────────────────────────────────────────"
@echo " db-setup - Full dev setup (migrate + init-prod + seed-demo)"
@echo " db-reset - Nuclear reset (rollback + init-prod + reseed)"
@echo ""
@echo "TYPICAL FIRST-TIME SETUP:"
@echo " 1. make migrate-up # Apply migrations"
@echo " 2. make init-prod # Create admin user"
@echo " 3. make create-cms-defaults # Create CMS pages"
@echo " 4. make seed-demo # Add demo data"
@echo " 5. make dev # Start developing"
@echo "TYPICAL FIRST-TIME SETUP (Development):"
@echo "──────────────────────────────────────────────────────────"
@echo " 1. make migrate-up # Apply database schema"
@echo " 2. make init-prod # Initialize platform (admin, CMS, logging, pages)"
@echo " 3. make seed-demo # Add demo data (companies, vendors, products)"
@echo " 4. make dev # Start development server"
@echo ""
@echo " OR simply: make db-setup # Does all the above!"
@echo ""
@echo "PRODUCTION SETUP:"
@echo "──────────────────────────────────────────────────────────"
@echo " 1. Set ENV=production or ENVIRONMENT=production"
@echo " 2. make migrate-up"
@echo " 3. make init-prod (with secure credentials in .env)"
@echo " 4. Create vendors via admin panel"
@echo " 2. make migrate-up # Apply database schema"
@echo " 3. make init-prod # Initialize platform (with .env credentials)"
@echo " 4. Create companies via admin panel"
@echo " 5. DO NOT run seed-demo in production!"