Root cause: ai_provider.py assumed a single JSON blob in an 'encrypted_value' column, but IntegrationConfig stores each credential as a separate row with config_key + config_value columns. Fixes: - Query groups rows by provider, decrypts each config_value separately - Correct decrypt_value(secret_key, ciphertext) argument order - Filter by user_id so providers are per-user - Callers (ai_chat.py, chat()) now pass user_id through |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| activities.py | ||
| ai_chat.py | ||
| auth.py | ||
| catalog.py | ||
| food.py | ||
| integrations.py | ||
| meal_plans.py | ||
| nutrition.py | ||
| onboarding.py | ||
| points.py | ||
| programs.py | ||
| support.py | ||