Smart onboarding: residence home profile + suggestion engine

14 new optional residence fields (heating, cooling, water heater, roof,
pool, sprinkler, septic, fireplace, garage, basement, attic, exterior,
flooring, landscaping) with JSONB conditions on templates.

Suggestion engine scores templates against home profile: string match
+0.25, bool +0.3, property type +0.15, universal base 0.3. Graceful
degradation from minimal to full profile info.

GET /api/tasks/suggestions/?residence_id=X returns ranked templates.
54 template conditions across 44 templates in seed data.
8 suggestion service tests.
This commit is contained in:
Trey T
2026-03-30 09:02:03 -05:00
parent 4c9a818bd9
commit cb7080c460
16 changed files with 1347 additions and 32 deletions

View File

@@ -0,0 +1,18 @@
-- Migration: 019_residence_home_profile
-- Add home profile fields to residence for smart onboarding task suggestions
ALTER TABLE residence_residence
ADD COLUMN IF NOT EXISTS heating_type VARCHAR(50),
ADD COLUMN IF NOT EXISTS cooling_type VARCHAR(50),
ADD COLUMN IF NOT EXISTS water_heater_type VARCHAR(50),
ADD COLUMN IF NOT EXISTS roof_type VARCHAR(50),
ADD COLUMN IF NOT EXISTS has_pool BOOLEAN DEFAULT FALSE,
ADD COLUMN IF NOT EXISTS has_sprinkler_system BOOLEAN DEFAULT FALSE,
ADD COLUMN IF NOT EXISTS has_septic BOOLEAN DEFAULT FALSE,
ADD COLUMN IF NOT EXISTS has_fireplace BOOLEAN DEFAULT FALSE,
ADD COLUMN IF NOT EXISTS has_garage BOOLEAN DEFAULT FALSE,
ADD COLUMN IF NOT EXISTS has_basement BOOLEAN DEFAULT FALSE,
ADD COLUMN IF NOT EXISTS has_attic BOOLEAN DEFAULT FALSE,
ADD COLUMN IF NOT EXISTS exterior_type VARCHAR(50),
ADD COLUMN IF NOT EXISTS flooring_primary VARCHAR(50),
ADD COLUMN IF NOT EXISTS landscaping_type VARCHAR(50);