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
This commit is contained in:
2026-01-23 22:07:26 +08:00
parent 9c96f75c52
commit 61cdc97eeb
297 changed files with 1147 additions and 21 deletions

View File

@@ -1051,5 +1051,6 @@ Redis 实例¥500/月

View File

@@ -509,5 +509,6 @@ import { ChatContainer } from '@/shared/components/Chat';

View File

@@ -217,3 +217,4 @@ VALUES ('user-mock-001', '13800000000', ..., 'tenant-mock-001', ...);

View File

@@ -427,5 +427,6 @@ frontend-v2/src/modules/pkb/

View File

@@ -289,5 +289,6 @@ npm run dev

View File

@@ -804,5 +804,6 @@ AIA智能问答模块

View File

@@ -949,5 +949,6 @@ CREATE INDEX idx_rvw_tasks_created_at ON rvw_schema.review_tasks(created_at);

View File

@@ -602,5 +602,6 @@ const typography = {

View File

@@ -914,5 +914,6 @@ app.use('/api/v1/knowledge', (req, res) => {

View File

@@ -228,5 +228,6 @@ rm -rf src/modules/pkb

View File

@@ -403,5 +403,6 @@ GET /api/v2/pkb/batch-tasks/batch/templates

View File

@@ -47,5 +47,6 @@ import pkbRoutes from './modules/pkb/routes/index.js';

View File

@@ -316,5 +316,6 @@ backend/

View File

@@ -527,5 +527,6 @@ const response = await fetch('/api/v2/pkb/batch-tasks/batch/execute', {