ALTER TABLE animals ADD COLUMN intake_type TEXT NOT NULL DEFAULT 'unknown'
  CHECK (intake_type IN ('unknown','found','owner_surrender','transfer','born_in_care','return','seizure','other'));
ALTER TABLE animals ADD COLUMN intake_reason TEXT NOT NULL DEFAULT 'unknown'
  CHECK (intake_reason IN ('unknown','stray_found','unwanted_litter','owner_health','owner_death','allergy','housing','financial','behavior','abandonment','danger','transfer','birth','other'));
ALTER TABLE animals ADD COLUMN depositor_contact_id INTEGER REFERENCES directory_contacts(id) ON DELETE SET NULL;
ALTER TABLE animals ADD COLUMN intake_circumstances TEXT;
CREATE INDEX idx_animals_intake_type ON animals(intake_type);
CREATE INDEX idx_animals_intake_reason ON animals(intake_reason);
CREATE INDEX idx_animals_depositor ON animals(depositor_contact_id);

INSERT INTO animal_movements(animal_id,kind,place,lieu,note,created_at)
SELECT a.id,'entry',COALESCE(NULLIF(trim(a.rescue_location_name),''),NULLIF(trim(a.rescue_address),'')),
       'Entrée historique','Informations d’entrée à compléter dans la fiche animale',
       COALESCE(NULLIF(a.intake_date,'')||' 12:00:00',a.created_at,datetime('now'))
FROM animals a
WHERE NOT EXISTS(SELECT 1 FROM animal_movements m WHERE m.animal_id=a.id AND m.kind='entry');
