muller-reporting-sys/TROUBLESHOOTING.md
2025-11-12 22:21:35 +03:00

7.3 KiB

Troubleshooting Guide

Issue: CredentialsSignin Error

Problem

Getting [auth][error] CredentialsSignin error when trying to login.

Root Cause

The database had old seed data without passwords. When the schema was updated to add password fields, existing records didn't get the new password values.

Solution

  1. Reset the database:
npx prisma db push --force-reset
  1. Re-seed with fresh data:
npx prisma db seed
  1. Verify data:
node check-db.mjs

Prevention

Always reset the database when adding new required/important fields to existing models.


Issue: "Invalid credentials" on Login

Possible Causes

1. Wrong Email or Password

Check:

  • Admin: admin@muller.com / admin123
  • Managers: *.muller.com / muller123
  • Operators: *.muller.com / muller123

2. Wrong User Type Selected

Check:

  • Make sure you select the correct user type dropdown
  • Admin emails only work with "Admin" type
  • Manager emails only work with "Shift Manager" type
  • Operator emails only work with "Operator" type

3. Database Not Seeded

Solution:

npx prisma db seed

4. Prisma Client Not Generated

Solution:

npx prisma generate

Issue: User Not Found

Check Database

Create a file check-db.mjs:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function check() {
  const admin = await prisma.admin.findUnique({ 
    where: { email: 'admin@muller.com' } 
  })
  console.log('Admin:', admin)
  
  const manager = await prisma.shiftManager.findFirst({ 
    where: { email: 'james.anderson@muller.com' } 
  })
  console.log('Manager:', manager)
  
  await prisma.$disconnect()
}

check()

Run: node check-db.mjs


Issue: Database Connection Error

Check .env File

Verify DATABASE_URL is correct:

DATABASE_URL="postgresql://user:password@localhost:5432/muller_db"

Check PostgreSQL is Running

# Windows
services.msc
# Look for PostgreSQL service

# Or check connection
psql -U postgres -d muller_db

Issue: Shift Not Appearing for Operator

Checklist

  1. Shift was created for today's date
  2. Operator is assigned to the shift
  3. Shift status is "active"
  4. Operator's email matches the one used to login
  5. Operator's job position is "Blow Moulder Level 1"

Debug Query

const worker = await prisma.worker.findFirst({
  where: { email: 'david.wilson.red@muller.com' }
})

const shifts = await prisma.shiftTeamMember.findMany({
  where: { workerId: worker.id },
  include: { shift: true, machine: true }
})

console.log(shifts)

Issue: Data Not Saving

Check Browser Console

  1. Open DevTools (F12)
  2. Go to Console tab
  3. Look for errors when clicking Save

Check Network Tab

  1. Open DevTools (F12)
  2. Go to Network tab
  3. Click Save button
  4. Look for failed requests (red)
  5. Click on the request to see error details

Common Causes

  • API route not found (404)
  • Server error (500)
  • Invalid data format
  • Missing required fields

Issue: Charts Not Displaying

Check Data Format

Bottle weight tracking data should be:

[
  {
    time: "2024-01-01T08:00:00Z",
    bottle1: 33.8,
    bottle2: 34.1,
    bottle3: 34.0,
    bottle4: 33.9,
    average: 33.95,
    upperLimit: 34.45,
    lowerLimit: 33.45
  }
]

Check Recharts Installation

npm list recharts

If not installed:

npm install recharts

Issue: Session Expired / Logged Out

Cause

NextAuth sessions expire after a period of inactivity.

Solution

Simply login again. To extend session time, update lib/auth.ts:

export const { handlers, signIn, signOut, auth } = NextAuth({
  session: {
    maxAge: 30 * 24 * 60 * 60, // 30 days
  },
  // ... rest of config
})

Issue: Cannot Access Admin/Manager/Operator Pages

Check Middleware

Verify middleware.ts exists and is configured:

export { auth as middleware } from "./lib/auth"

export const config = {
  matcher: ["/((?!api|_next/static|_next/image|favicon.ico|login).*)"],
}

Check Session

Add debug logging in page:

import { auth } from "@/lib/auth"

export default async function Page() {
  const session = await auth()
  console.log('Session:', session)
  // ...
}

Issue: Build Errors

TypeScript Errors

npx tsc --noEmit

Fix Common Issues

  1. Missing types: npm install @types/node @types/react -D
  2. Prisma client: npx prisma generate
  3. Clear cache: rm -rf .next

Issue: Development Server Won't Start

Check Port

Port 3000 might be in use:

# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F

# Or use different port
npm run dev -- -p 3001

Check Dependencies

npm install

Clear Cache

rm -rf .next
rm -rf node_modules
npm install

Debug Mode

Enable NextAuth Debug

Already enabled in development. Check terminal for logs:

Attempting login for admin@muller.com as admin
Admin login successful

Enable Prisma Logging

Update lib/prisma.ts:

export const prisma = new PrismaClient({
  log: ['query', 'info', 'warn', 'error'],
})

Quick Fixes

Reset Everything

# Reset database
npx prisma db push --force-reset

# Seed data
npx prisma db seed

# Clear Next.js cache
rm -rf .next

# Restart dev server
npm run dev

Verify Installation

# Check Node version (should be 18+)
node --version

# Check npm packages
npm list --depth=0

# Check Prisma
npx prisma --version

Getting Help

Check Logs

  1. Terminal - Server-side errors
  2. Browser Console - Client-side errors
  3. Network Tab - API errors

Collect Information

When reporting issues, include:

  • Error message (full stack trace)
  • Steps to reproduce
  • Browser and version
  • Node version
  • Operating system
  • Relevant code snippets

Common Error Messages

"Prisma Client not found"

npx prisma generate

"Cannot find module '@prisma/client'"

npm install @prisma/client

"Database connection failed"

Check PostgreSQL is running and DATABASE_URL is correct

"Invalid prisma.xxx.findXxx() invocation"

Schema and database are out of sync:

npx prisma db push

"Module not found: Can't resolve 'bcryptjs'"

npm install bcryptjs

Performance Issues

Slow Queries

Add indexes to frequently queried fields in schema.prisma:

model Worker {
  email String? @unique
  empNo String  @unique
  // ...
}

Large Data Sets

Implement pagination:

const workers = await prisma.worker.findMany({
  take: 50,
  skip: page * 50
})

Security Checklist

Passwords are hashed with bcrypt Sessions are secure (httpOnly cookies) Routes are protected with middleware Environment variables are not committed SQL injection prevented (Prisma) XSS prevented (React escaping)


Maintenance

Regular Tasks

  • Backup database weekly
  • Update dependencies monthly
  • Review logs for errors
  • Test all user flows
  • Archive old shifts

Database Backup

pg_dump -U postgres muller_db > backup.sql

Database Restore

psql -U postgres muller_db < backup.sql