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 |
||
|---|---|---|
| .. | ||
| models | ||
| routers | ||
| schemas | ||
| services | ||
| utils | ||
| __init__.py | ||
| config.py | ||
| database.py | ||
| main.py | ||