The detail endpoint wraps firm data in a lista under "firma" key.
Without unwrapping, the list of dicts was assigned to legal_name (String),
causing psycopg2 ProgrammingError: can't adapt type 'dict'.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CEIDG enrichment was broken due to key mismatches (expected adres_ulica but API
returns adresDzialalnosci.ulica), writes to non-existent columns (address_building,
address_postal_code), and missing saves for ceidg_id/status/owner/PKD fields.
Now fetches full details via /firma/{id} endpoint (Phase 2) for complete data
including PKD list, correspondence address, and succession manager.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add ceidg_api_service.py with fetch_ceidg_by_nip() function
- Add KRSApiService class with search_by_nip() method
- KRS lookup uses rejestr.io API (unofficial) or database fallback
- CEIDG lookup uses official dane.biznes.gov.pl API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>