WFDASH-WEBAPP/next.config.ts
SJCoetz 63048e51c9 feat: add AI quote processing pipeline and admin settings UI
Add complete end-to-end AI-powered quote extraction workflow:
- Disable PB SDK auto-cancellation to support parallel batch requests
- Add required runtime dependencies for AI processing and document parsing
- Implement AI settings backend, operator UI, and REST API routes
- Add quote ingestion, insight population, and manual re-run AI endpoints
- Build service layers for quote items, AI settings, and structured item insights
- Fix attachment upload handling and quote item history blob parsing
- Add supporting migrations, smoke tests, and shared utility functions
- Export previously private helper functions for cross-service reuse
2026-08-09 16:17:29 +02:00

34 lines
1.9 KiB
TypeScript

import type { NextConfig } from "next";
const nextConfig: NextConfig = {
output: "standalone",
// Server-only deps we don't want webpack to touch. Both pdf-parse and
// its transitive pdfjs-dist use ES2022 features + top-level `__esModule`
// marker that webpack's RSC runtime chokes on
// ("Object.defineProperty called on non-object"). Marking them external
// means Node resolves them at runtime from node_modules instead of going
// through webpack's loader — so pdfjs-dist's init runs in a clean CJS
// context, the way its author expects.
serverExternalPackages: ["pdf-parse", "pdfjs-dist", "@napi-rs/canvas"],
// Dev server blocks cross-origin HMR requests by default in Next 16. The
// app is normally loaded on `localhost`, but we also load it on
// `127.0.0.1` (and on the LAN IP for phone testing). Listing both keeps
// the HMR client from hanging on the first load.
allowedDevOrigins: ["127.0.0.1", "localhost", "192.168.1.42", "192.168.1.122", "192.168.1.128", "coolify.mywire.org", "*"],
// The agent (and any external tools) sometimes reach for the PocketBase
// collection name verbatim — `order_items`, `stock_items`, `quote_items`
// — and get a 404 because the route folders use hyphens (`order-items`).
// Redirect the underscore variants to the hyphenated route so the agent
// stops confusing the PB collection name with the URL path.
async redirects() {
return [
{ source: "/api/v1/order_items", destination: "/api/v1/order-items", permanent: true },
{ source: "/api/v1/stock_items", destination: "/api/v1/stock-items", permanent: true },
{ source: "/api/v1/quote_items", destination: "/api/v1/quote-items", permanent: true },
{ source: "/api/v1/stock_purchases", destination: "/api/v1/stock-purchases", permanent: true },
{ source: "/api/v1/stock_quick_draft", destination: "/api/v1/stock-quick-draft", permanent: true },
];
},
};
export default nextConfig;