Passo 8 completo. Tudo verde. Sumário do que foi feito:
Novas páginas:
app/select-operator/page.tsx — Server Component; redireciona automaticamente se já há sessão; lista operadores via prisma direto (funciona mesmo sem sessão ativa)
app/select-operator/operator-picker.tsx — Client Component; tap → signIn('credentials', { email, redirect: false }) → redireciona para /
app/sign-out-button.tsx — botão "Trocar" que chama signOut → volta ao picker
middleware.ts atualizado — redireciona para /select-operator quando não há sessão e AUTH_DEV_AUTOLOGIN=false; skip automático se já logado; o picker não faz redirect se não há sessão (deixa carregar)
app/page.tsx atualizado — mostra chip com o email do utilizador atual + botão "Trocar" (necessário para o AC "header mostra op1@demo.local")
Correções de infraestrutura descobertas:
NODE_ENV="development" removido do .env — estava a forçar o runtime de dev no next build, quebrando a geração estática
pages/_error.tsx adicionado — override mínimo que previne o erro <Html> outside _document
@repo/storage adicionado a transpilePackages e AWS SDK marcado como serverExternalPackages
app/not-found.tsx + app/error.tsx adicionados para App Router
AC verificado: build de produção passa limpo em Next.js 15.3.9 com todas as rotas correctas. O fluxo demo (/ → picker → login → / mostra email) funciona via dev server.
40 lines
3.0 KiB
JSON
40 lines
3.0 KiB
JSON
{
|
|
"permissions": {
|
|
"allow": [
|
|
"PowerShell(corepack enable pnpm)",
|
|
"PowerShell(corepack prepare pnpm@latest --activate)",
|
|
"PowerShell(pnpm --version)",
|
|
"PowerShell(docker --version)",
|
|
"PowerShell(docker compose version)",
|
|
"PowerShell(docker exec fieldops-postgres psql -U fieldops -d fieldops -c \"\\\\dt\" 2>&1)",
|
|
"PowerShell(docker exec fieldops-postgres psql -U fieldops -d fieldops -c \"SELECT id, name FROM \\\\`\"Tenant\\\\`\";\" 2>&1)",
|
|
"PowerShell(docker exec fieldops-postgres psql -U fieldops -d fieldops -c \"SELECT email, role FROM \\\\`\"User\\\\`\";\" 2>&1)",
|
|
"PowerShell(docker exec fieldops-postgres psql -U fieldops -d fieldops -c \"SELECT code, name, area FROM \\\\`\"Workstation\\\\`\";\" 2>&1)",
|
|
"Bash(pnpm --version)",
|
|
"PowerShell(pnpm --version; Write-Output \"---\"; \\(Get-Content .env | Select-String \"AUTH_DEV_AUTOLOGIN\"\\); Write-Output \"---\"; Test-Path node_modules; Test-Path packages\\\\db\\\\node_modules)",
|
|
"PowerShell(corepack --version; Write-Output \"---\"; \\(Get-Command pnpm -ErrorAction SilentlyContinue\\).Source; Write-Output \"---\"; npx pnpm --version 2>&1 | Select-Object -First 3)",
|
|
"PowerShell(corepack enable pnpm 2>&1)",
|
|
"PowerShell(corepack pnpm --version 2>&1)",
|
|
"PowerShell(corepack pnpm exec prisma migrate status --schema packages/db/prisma/schema.prisma 2>&1)",
|
|
"PowerShell($env:npm_config_verify_deps_before_run = \"false\"; corepack pnpm exec prisma migrate status --schema packages/db/prisma/schema.prisma 2>&1 | Select-Object -Last 25)",
|
|
"Bash(pnpm --filter @repo/db exec prisma migrate dev --name add_maintenance_request)",
|
|
"Bash(pnpm --filter @repo/db exec prisma db execute --schema=prisma/schema.prisma --stdin)",
|
|
"Bash(docker exec *)",
|
|
"Bash(pnpm install *)",
|
|
"Bash(docker compose *)",
|
|
"Bash(pnpm tsx *)",
|
|
"Bash(pnpm --filter @repo/operator-pwa typecheck)",
|
|
"Bash(pnpm --filter @repo/operator-pwa build)",
|
|
"Bash(git stash *)",
|
|
"Bash(node -e \"const f = require\\('fs'\\); const c = f.readFileSync\\('apps/operator-pwa/.next/server/chunks/727.js', 'utf8'\\); const idx = c.indexOf\\('pages/_document'\\); console.log\\(c.slice\\(Math.max\\(0,idx-200\\), idx+200\\)\\);\")",
|
|
"Bash(node -e \"const f = require\\('fs'\\); const c = f.readFileSync\\('apps/operator-pwa/.next/server/chunks/727.js', 'utf8'\\); const idx = c.indexOf\\('Html'\\); console.log\\(c.slice\\(Math.max\\(0,idx-300\\), idx+300\\)\\);\")",
|
|
"Bash(pnpm info *)",
|
|
"Bash(node -e \"const d=JSON.parse\\(require\\('fs'\\).readFileSync\\('/dev/stdin','utf8'\\)\\); const v=d.filter\\(x=>x.startsWith\\('15.'\\)\\).filter\\(x=>!x.includes\\('-'\\)\\).slice\\(-10\\); console.log\\(v.join\\('\\\\n'\\)\\);\")",
|
|
"Bash(Select-String \"15\\\\.\")",
|
|
"Bash(Select-Object -Last 15)",
|
|
"Bash(pnpm --filter @repo/operator-pwa build -- --no-lint)",
|
|
"Bash(pnpm --filter @repo/operator-pwa exec next build)"
|
|
]
|
|
}
|
|
}
|