Files
AIclinicalresearch/backend/check_db.ts
HaHafeng 61cdc97eeb feat(platform): Fix pg-boss queue conflict and add safety standards
Summary:
- Fix pg-boss queue conflict (duplicate key violation on queue_pkey)
- Add global error listener to prevent process crash
- Reduce connection pool from 10 to 4
- Add graceful shutdown handling (SIGTERM/SIGINT)
- Fix researchWorker recursive call bug in catch block
- Make screeningWorker idempotent using upsert

Security Standards (v1.1):
- Prohibit recursive retry in Worker catch blocks
- Prohibit payload bloat (only store fileKey/ID in job.data)
- Require Worker idempotency (upsert + unique constraint)
- Recommend task-specific expireInSeconds settings
- Document graceful shutdown pattern

New Features:
- PKB signed URL endpoint for document preview/download
- pg_bigm installation guide for Docker
- Dockerfile.postgres-with-extensions for pgvector + pg_bigm

Documentation:
- Update Postgres-Only async task processing guide (v1.1)
- Add troubleshooting SQL queries
- Update safety checklist

Tested: Local verification passed
2026-01-23 22:07:26 +08:00

69 lines
1.5 KiB
TypeScript

import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
// 查询所有 schema
const schemas = await prisma.$queryRaw`
SELECT schema_name
FROM information_schema.schemata
WHERE schema_name NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
ORDER BY schema_name;
`;
console.log('\n=== 数据库中的 Schemas ===');
console.log(schemas);
// 查询每个 schema 下的表
const tables = await prisma.$queryRaw`
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_schema NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
AND table_type = 'BASE TABLE'
ORDER BY table_schema, table_name;
`;
console.log('\n=== 数据库中的所有表 ===');
console.log(tables);
// 检查 platform_schema.users 的数据量
try {
const userCount = await prisma.$queryRaw`SELECT COUNT(*) as count FROM platform_schema.users;`;
console.log('\n=== platform_schema.users 数据量 ===');
console.log(userCount);
} catch (e) {
console.log('\n=== platform_schema.users 不存在或出错 ===');
}
// 检查 public.users 的数据量
try {
const publicUserCount = await prisma.$queryRaw`SELECT COUNT(*) as count FROM public.users;`;
console.log('\n=== public.users 数据量 ===');
console.log(publicUserCount);
} catch (e) {
console.log('\n=== public.users 不存在或出错 ===');
}
}
main()
.catch(console.error)
.finally(() => prisma.$disconnect());