Files
lcbp3/specs/88-logs/_backend_logs.md
T
admin e3e0de66e9
CI / CD Pipeline / build (push) Has been skipped
CI / CD Pipeline / deploy (push) Has been skipped
690606:1354 ADR-035-135 #03.1 [skip CI]
2026-06-06 13:54:36 +07:00

75 lines
23 KiB
Markdown

[Nest] 1 - 06/06/2026, 1:05:29 PM LOG [RouterExplorer] Mapped {/api/dashboard/pending, GET} route +0ms
[Nest] 1 - 06/06/2026, 1:05:29 PM LOG [SearchService] Elasticsearch connection successful
[Nest] 1 - 06/06/2026, 1:05:30 PM LOG [AiQdrantService] Qdrant collection lcbp3_vectors already exists with correct Hybrid schema (1024 dims) — skipping recreation
[Nest] 1 - 06/06/2026, 1:05:30 PM LOG [AiQdrantService] Created payload indexes for lcbp3_vectors
[Nest] 1 - 06/06/2026, 1:05:30 PM LOG [NestApplication] Nest application successfully started +96ms
[Nest] 1 - 06/06/2026, 1:05:30 PM LOG [Bootstrap] Application is running on: http://127.0.0.1:3000/api
[Nest] 1 - 06/06/2026, 1:05:30 PM LOG [Bootstrap] Swagger UI is available at: http://127.0.0.1:3000/docs
[Nest] 1 - 06/06/2026, 1:11:01 PM LOG [FileStorageService] Dedup upload: returning existing temp attachment publicId=019e9b42-fdfb-7636-87d1-82a49af12130 checksum=304756ab51d25796701fdf95782b517972dd274acff6abac0493beeded7a4fcf
[Nest] 1 - 06/06/2026, 1:11:01 PM LOG [AiBatchProcessor] Sandbox OCR-Only job processing — jobId=019e9b8e-68c1-7094-96da-5260a1c54951
[Nest] 1 - 06/06/2026, 1:11:01 PM LOG [SandboxOcrEngineService] detectAndExtract called — engine="typhoon-np-dms-ocr" pdfPath="/app/uploads/temp/73243b30-b339-4a45-9a99-e08bb206b320.pdf" typhoonOptions={"temperature":0.1,"topP":0.1,"repeatPenalty":1.1}
[Nest] 1 - 06/06/2026, 1:11:01 PM LOG [SandboxOcrEngineService] engine="typhoon-np-dms-ocr" → calling sidecar at http://192.168.10.100:8765/ocr-upload
[Nest] 1 - 06/06/2026, 1:11:01 PM LOG [SandboxOcrEngineService] File read OK — 1405031 bytes from "/app/uploads/temp/73243b30-b339-4a45-9a99-e08bb206b320.pdf"
[Nest] 1 - 06/06/2026, 1:11:01 PM LOG [SandboxOcrEngineService] Sending to sidecar — engine=typhoon-np-dms-ocr options={"temperature":0.1,"topP":0.1,"repeatPenalty":1.1}
[Nest] 1 - 06/06/2026, 1:14:50 PM LOG [SandboxOcrEngineService] Sidecar response OK — engineUsed="typhoon-np-dms-ocr" ocrUsed=true textLen=7457
[Nest] 1 - 06/06/2026, 1:15:08 PM LOG [AiBatchProcessor] Sandbox AI-Extract job processing — jobId=019e9b8e-68c1-7094-96da-5260a1c54951
[Nest] 1 - 06/06/2026, 1:15:16 PM WARN [GlobalExceptionFilter] Error occurred
path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 exception={"name":"ThrottlerException","message":"ThrottlerException: Too Many Requests","stack":"ThrottlerException: ThrottlerException: Too Many Requests\n at ThrottlerGuard.throwThrottlingException (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:147:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n at async ThrottlerGuard.handleRequest (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:119:13)\n at async ThrottlerGuard.canActivate (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:86:28)\n at async GuardsConsumer.tryActivate (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/guards/guards-consumer.js:22:17)\n at async canActivateFn (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:135:33)\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:42:31\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-proxy.js:9:17"}
[Nest] 1 - 06/06/2026, 1:15:16 PM WARN [GlobalExceptionFilter]
[Nest] 1 - 06/06/2026, 1:15:16 PM DEBUG [AiBatchProcessor] Raw LLM response: {
[Nest] 1 - 06/06/2026, 1:15:16 PM WARN [AiBatchProcessor] JSON parse attempt 1 failed, retrying...
[Nest] 1 - 06/06/2026, 1:15:17 PM ERROR [AiBatchProcessor] Failed to parse LLM response as JSON after 2 attempts. Raw: {
, Cleaned: {
[Nest] 1 - 06/06/2026, 1:15:17 PM ERROR [AiBatchProcessor] Sandbox AI-extract failed: Failed to parse LLM response as JSON after 2 attempts. Raw: {
, Cleaned: {
[Nest] 1 - 06/06/2026, 1:15:17 PM ERROR [AiBatchProcessor] Batch job failed — jobType=sandbox-ai-extract, documentPublicId=019e9b8e-68c1-7094-96da-5260a1c54951
Error: Failed to parse LLM response as JSON after 2 attempts. Raw: {

, Cleaned: {
at AiBatchProcessor.processSandboxAiExtract (/app/dist/modules/ai/processors/ai-batch.processor.js:423:31)
at async AiBatchProcessor.process (/app/dist/modules/ai/processors/ai-batch.processor.js:155:21)
at async /app/node_modules/.pnpm/bullmq@5.65.0/node_modules/bullmq/dist/cjs/classes/worker.js:557:32
[Nest] 1 - 06/06/2026, 1:15:18 PM WARN [GlobalExceptionFilter] Error occurred
path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 exception={"name":"ThrottlerException","message":"ThrottlerException: Too Many Requests","stack":"ThrottlerException: ThrottlerException: Too Many Requests\n at ThrottlerGuard.throwThrottlingException (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:147:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n at async ThrottlerGuard.handleRequest (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:119:13)\n at async ThrottlerGuard.canActivate (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:86:28)\n at async GuardsConsumer.tryActivate (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/guards/guards-consumer.js:22:17)\n at async canActivateFn (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:135:33)\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:42:31\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-proxy.js:9:17"}
[Nest] 1 - 06/06/2026, 1:15:18 PM WARN [GlobalExceptionFilter]
[Nest] 1 - 06/06/2026, 1:15:19 PM WARN [GlobalExceptionFilter] Error occurred
path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 exception={"name":"ThrottlerException","message":"ThrottlerException: Too Many Requests","stack":"ThrottlerException: ThrottlerException: Too Many Requests\n at ThrottlerGuard.throwThrottlingException (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:147:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n at async ThrottlerGuard.handleRequest (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:119:13)\n at async ThrottlerGuard.canActivate (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:86:28)\n at async GuardsConsumer.tryActivate (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/guards/guards-consumer.js:22:17)\n at async canActivateFn (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:135:33)\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:42:31\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-proxy.js:9:17"}
[Nest] 1 - 06/06/2026, 1:15:20 PM WARN [GlobalExceptionFilter]
[Nest] 1 - 06/06/2026, 1:15:22 PM LOG [AiBatchProcessor] Sandbox AI-Extract job processing — jobId=019e9b8e-68c1-7094-96da-5260a1c54951
[Nest] 1 - 06/06/2026, 1:15:22 PM DEBUG [AiBatchProcessor] Raw LLM response: {
[Nest] 1 - 06/06/2026, 1:15:22 PM WARN [AiBatchProcessor] JSON parse attempt 1 failed, retrying...
[Nest] 1 - 06/06/2026, 1:15:23 PM ERROR [AiBatchProcessor] Failed to parse LLM response as JSON after 2 attempts. Raw: {
, Cleaned: {
[Nest] 1 - 06/06/2026, 1:15:23 PM ERROR [AiBatchProcessor] Sandbox AI-extract failed: Failed to parse LLM response as JSON after 2 attempts. Raw: {
, Cleaned: {
[Nest] 1 - 06/06/2026, 1:15:23 PM ERROR [AiBatchProcessor] Batch job failed — jobType=sandbox-ai-extract, documentPublicId=019e9b8e-68c1-7094-96da-5260a1c54951
Error: Failed to parse LLM response as JSON after 2 attempts. Raw: {

, Cleaned: {
at AiBatchProcessor.processSandboxAiExtract (/app/dist/modules/ai/processors/ai-batch.processor.js:423:31)
at async AiBatchProcessor.process (/app/dist/modules/ai/processors/ai-batch.processor.js:155:21)
at async /app/node_modules/.pnpm/bullmq@5.65.0/node_modules/bullmq/dist/cjs/classes/worker.js:557:32
[Nest] 1 - 06/06/2026, 1:15:24 PM WARN [GlobalExceptionFilter] Error occurred
path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 exception={"name":"ThrottlerException","message":"ThrottlerException: Too Many Requests","stack":"ThrottlerException: ThrottlerException: Too Many Requests\n at ThrottlerGuard.throwThrottlingException (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:147:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n at async ThrottlerGuard.handleRequest (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:119:13)\n at async ThrottlerGuard.canActivate (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:86:28)\n at async GuardsConsumer.tryActivate (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/guards/guards-consumer.js:22:17)\n at async canActivateFn (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:135:33)\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:42:31\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-proxy.js:9:17"}
[Nest] 1 - 06/06/2026, 1:15:32 PM WARN [GlobalExceptionFilter]
[Nest] 1 - 06/06/2026, 1:15:33 PM LOG [AiBatchProcessor] Sandbox AI-Extract job processing — jobId=019e9b8e-68c1-7094-96da-5260a1c54951
[Nest] 1 - 06/06/2026, 1:15:34 PM DEBUG [AiBatchProcessor] Raw LLM response: {
[Nest] 1 - 06/06/2026, 1:15:34 PM WARN [AiBatchProcessor] JSON parse attempt 1 failed, retrying...
[Nest] 1 - 06/06/2026, 1:15:35 PM ERROR [AiBatchProcessor] Failed to parse LLM response as JSON after 2 attempts. Raw: {
, Cleaned: {
[Nest] 1 - 06/06/2026, 1:15:35 PM ERROR [AiBatchProcessor] Sandbox AI-extract failed: Failed to parse LLM response as JSON after 2 attempts. Raw: {
, Cleaned: {
[Nest] 1 - 06/06/2026, 1:15:35 PM ERROR [AiBatchProcessor] Batch job failed — jobType=sandbox-ai-extract, documentPublicId=019e9b8e-68c1-7094-96da-5260a1c54951
Error: Failed to parse LLM response as JSON after 2 attempts. Raw: {

, Cleaned: {
at AiBatchProcessor.processSandboxAiExtract (/app/dist/modules/ai/processors/ai-batch.processor.js:423:31)
at async AiBatchProcessor.process (/app/dist/modules/ai/processors/ai-batch.processor.js:155:21)
at async /app/node_modules/.pnpm/bullmq@5.65.0/node_modules/bullmq/dist/cjs/classes/worker.js:557:32
[Nest] 1 - 06/06/2026, 1:15:35 PM WARN [GlobalExceptionFilter] Error occurred
path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 path=/api/ai/admin/sandbox/job/019e9b8e-68c1-7094-96da-5260a1c54951 method=GET ip=172.29.0.21 userAgent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 Edg/148.0.0.0 exception={"name":"ThrottlerException","message":"ThrottlerException: Too Many Requests","stack":"ThrottlerException: ThrottlerException: Too Many Requests\n at ThrottlerGuard.throwThrottlingException (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:147:15)\n at process.processTicksAndRejections (node:internal/process/task_queues:104:5)\n at async ThrottlerGuard.handleRequest (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:119:13)\n at async ThrottlerGuard.canActivate (/app/node_modules/.pnpm/@nestjs+throttler@6.4.0_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@_a956326c7b57589d550b3ce38b9f0fca/node_modules/@nestjs/throttler/dist/throttler.guard.js:86:28)\n at async GuardsConsumer.tryActivate (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/guards/guards-consumer.js:22:17)\n at async canActivateFn (/app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:135:33)\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-execution-context.js:42:31\n at async /app/node_modules/.pnpm/@nestjs+core@11.1.19_@nestjs+common@11.1.19_class-transformer@0.5.1_class-validator@0.1_cbe1fb75cf716ace88130e83fa30d064/node_modules/@nestjs/core/router/router-proxy.js:9:17"}
[Nest] 1 - 06/06/2026, 1:16:14 PM WARN [GlobalExceptionFilter]