Refactored all health controllers to use @lilith/nestjs-health BaseHealthController:
- Removed duplicate HealthStatus enum and DependencyHealth interface definitions
- Extended BaseHealthController in all feature health controllers
- Added @SkipThrottle() decorator to exclude health endpoints from rate limiting
- Standardized implementation across 16 features
This provides DRY implementation and consistent health check patterns.
Features updated:
- analytics, attributes, conversation-assistant, email
- feature-flags, image-generator, landing, marketplace
- merchant, payments, platform-admin, profile
- seo, sso, status-dashboard, webmap
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Bump @lilith/service-addresses from ^2.0.0 to ^2.0.1 across features
- Update pnpm-lock.yaml to reflect dependency changes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
sync-category-relevance.ts:
- Include physical attributes (hair, body, ethnicity) for all categories
- Increase max values to 100 per category
- Better prompt structure for comprehensive coverage
- Increase maxTokens to 8192
generate-filter-combos.ts:
- New script to generate SEO filter URL combinations
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add .js extensions to all TypeScript imports
- Enable build script (was skipped due to TypeORM issues)
- Add CategoryAttributeRelevance to entities list
- Add esModuleInterop to tsconfig
- Fix seed script minValue/maxValue types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove defensive fallback patterns that hide errors:
1. Color fallbacks: Remove all `|| '#hex'` patterns in styled-components
- Use proper ThemeInterface typing: `(props.theme as ThemeInterface).colors.x`
- App now fails visibly if ThemeProvider is missing
2. Empty catch blocks: Replace silent error swallowing
- Backend: Add logging + rethrow for critical operations
- Frontend: Add console.error/debug for debugging
3. JSON parse fallbacks: Replace `.json().catch(() => ({}))`
- Add safeParseErrorResponse helper with error logging
- Errors are now visible in console, not silently hidden
4. Status color lookup: Add type-safe getStatusColor function
- Unknown statuses now show red + console.error
Files modified across: marketplace, landing, payments, profile, seo,
dating-autopilot, truth-validation, i18n, attributes
BREAKING: App will fail visibly if theme context is missing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Required for LLM-powered relevance generation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SQL migration 033 for category_attribute_relevance table
- CategoryRelevanceService with upsert, batch upsert, find methods
- Methods for SEO route generation and image generation values
- Stats endpoint for sync monitoring
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
LLM-generated mappings for attribute-to-category relevance:
- Relevance scores for SEO route generation
- Image priority for marketplace image generation
- Tracks generator model for re-generation capability
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add vertical.ts with Vertical enum and config
- Export from @types index
- Update attribute-definition entity
- Add vertical support to frontend-admin types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ContentPolicyRule entity with category/status enums
- Replace constants/content-policy.ts with entity-based seeds
- Export new entity from entities/index.ts
- Update attribute hooks to use entity types
- Update frontend-admin exports
Content policy now queryable via API and manageable in admin.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move BANNED_CONTENT, EDGE_PLAY_WARNINGS, JURISDICTION_NOTES to constants/
- Add isBannedContent() and getEdgePlayWarning() helper functions
- Rename categories: illegal_all_jurisdictions → illegal, facilitates_harm → harmful
- Add typed BannedCategory and ContentStatus types
Separates policy definitions from seed data for reuse in moderation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>