## What was done: ✅ Fixed Firebase Admin initialization to use default credentials for Firebase Functions ✅ Updated frontend to use correct Firebase Functions URL (was using Cloud Run URL) ✅ Added comprehensive debugging to authentication middleware ✅ Added debugging to file upload middleware and CORS handling ✅ Added debug buttons to frontend for troubleshooting authentication ✅ Enhanced error handling and logging throughout the stack ## Current issues: ❌ Document upload still returns 400 Bad Request despite authentication working ❌ GET requests work fine (200 OK) but POST upload requests fail ❌ Frontend authentication is working correctly (valid JWT tokens) ❌ Backend authentication middleware is working (rejects invalid tokens) ❌ CORS is configured correctly and allowing requests ## Root cause analysis: - Authentication is NOT the issue (tokens are valid, GET requests work) - The problem appears to be in the file upload handling or multer configuration - Request reaches the server but fails during upload processing - Need to identify exactly where in the upload pipeline the failure occurs ## TODO next steps: 1. 🔍 Check Firebase Functions logs after next upload attempt to see debugging output 2. 🔍 Verify if request reaches upload middleware (look for '�� Upload middleware called' logs) 3. 🔍 Check if file validation is triggered (look for '🔍 File filter called' logs) 4. 🔍 Identify specific error in upload pipeline (multer, file processing, etc.) 5. 🔍 Test with smaller file or different file type to isolate issue 6. 🔍 Check if issue is with Firebase Functions file size limits or timeout 7. 🔍 Verify multer configuration and file handling in Firebase Functions environment ## Technical details: - Frontend: https://cim-summarizer.web.app - Backend: https://us-central1-cim-summarizer.cloudfunctions.net/api - Authentication: Firebase Auth with JWT tokens (working correctly) - File upload: Multer with memory storage for immediate GCS upload - Debug buttons available in production frontend for troubleshooting
49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
const { Pool } = require('pg');
|
|
|
|
// Test database connection
|
|
async function testConnection() {
|
|
const poolConfig = process.env.DATABASE_URL
|
|
? { connectionString: process.env.DATABASE_URL }
|
|
: {
|
|
host: process.env.DB_HOST,
|
|
port: process.env.DB_PORT,
|
|
database: process.env.DB_NAME,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASSWORD,
|
|
};
|
|
|
|
console.log('Database config:', {
|
|
hasUrl: !!process.env.DATABASE_URL,
|
|
host: process.env.DB_HOST,
|
|
port: process.env.DB_PORT,
|
|
database: process.env.DB_NAME,
|
|
user: process.env.DB_USER,
|
|
hasPassword: !!process.env.DB_PASSWORD
|
|
});
|
|
|
|
const pool = new Pool({
|
|
...poolConfig,
|
|
max: 1,
|
|
idleTimeoutMillis: 5000,
|
|
connectionTimeoutMillis: 10000,
|
|
});
|
|
|
|
try {
|
|
console.log('Testing database connection...');
|
|
const client = await pool.connect();
|
|
console.log('✅ Database connection successful!');
|
|
|
|
const result = await client.query('SELECT NOW() as current_time');
|
|
console.log('✅ Query successful:', result.rows[0]);
|
|
|
|
client.release();
|
|
await pool.end();
|
|
console.log('✅ Connection pool closed successfully');
|
|
} catch (error) {
|
|
console.error('❌ Database connection failed:', error.message);
|
|
console.error('Error details:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
testConnection();
|