Passo 11 completo. Build limpo, AC verificado. O que foi construído no admin-web (localhost:3001): Infraestrutura completa a partir do zero: Tailwind, tRPC client/server, auth por autologin, env.ts, providers /maintenance — cliente de polling com refetchInterval: 5000ms: Header com contador de pedidos abertos + filtros por estado (checkboxes) e área (select) Grid de cards com thumbnail (presigned GET), posto, descrição, reporter + tempo relativo, badge de status OPEN → botão Aceitar (mutation claim) CLAIMED → info "Aceite por X há Ym" + botão Marcar resolvido (dialog com nota opcional) RESOLVED → badge verde + info "Resolvido por X há Ym" Badge no document.title: (N) FieldOps — Manutenção Toggle de notificação sonora via Web Audio API (beep ao detectar novo OPEN)
25 lines
702 B
TypeScript
25 lines
702 B
TypeScript
import { fetchRequestHandler } from '@trpc/server/adapters/fetch';
|
|
import { appRouter, createTRPCContext } from '@repo/api';
|
|
import { resolveUser } from '@/lib/auth';
|
|
|
|
export const runtime = 'nodejs';
|
|
|
|
const handler = async (req: Request) => {
|
|
return fetchRequestHandler({
|
|
endpoint: '/api/trpc',
|
|
req,
|
|
router: appRouter,
|
|
createContext: async () => {
|
|
const user = await resolveUser();
|
|
return createTRPCContext({ user, headers: req.headers });
|
|
},
|
|
onError({ error, path }) {
|
|
if (process.env.NODE_ENV === 'development') {
|
|
console.error(`[trpc] ${path ?? '<no-path>'}:`, error.message);
|
|
}
|
|
},
|
|
});
|
|
};
|
|
|
|
export { handler as GET, handler as POST };
|