forked from git.gladyson/openmonetis
- Replace ESLint with Biome for linting and formatting - Configure Biome with tabs, double quotes, and organized imports - Move all SQL/Drizzle queries from page.tsx files to data.ts files - Create new data.ts files for: ajustes, dashboard, relatorios/categorias - Update existing data.ts files: extrato, fatura (add lancamentos queries) - Remove all drizzle-orm imports from page.tsx files - Update README.md with new tooling info Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
70 lines
1.5 KiB
TypeScript
70 lines
1.5 KiB
TypeScript
import { z } from "zod";
|
|
|
|
/**
|
|
* Categorias de insights
|
|
*/
|
|
export const INSIGHT_CATEGORIES = {
|
|
behaviors: {
|
|
id: "behaviors",
|
|
title: "Comportamentos Observados",
|
|
icon: "RiEyeLine",
|
|
color: "blue",
|
|
},
|
|
triggers: {
|
|
id: "triggers",
|
|
title: "Gatilhos de Consumo",
|
|
icon: "RiFlashlightLine",
|
|
color: "amber",
|
|
},
|
|
recommendations: {
|
|
id: "recommendations",
|
|
title: "Recomendações Práticas",
|
|
icon: "RiLightbulbLine",
|
|
color: "green",
|
|
},
|
|
improvements: {
|
|
id: "improvements",
|
|
title: "Melhorias Sugeridas",
|
|
icon: "RiRocketLine",
|
|
color: "purple",
|
|
},
|
|
} as const;
|
|
|
|
export type InsightCategoryId = keyof typeof INSIGHT_CATEGORIES;
|
|
|
|
/**
|
|
* Schema para item individual de insight
|
|
*/
|
|
export const InsightItemSchema = z.object({
|
|
text: z.string().min(1),
|
|
});
|
|
|
|
/**
|
|
* Schema para categoria de insights
|
|
*/
|
|
export const InsightCategorySchema = z.object({
|
|
category: z.enum([
|
|
"behaviors",
|
|
"triggers",
|
|
"recommendations",
|
|
"improvements",
|
|
]),
|
|
items: z.array(InsightItemSchema).min(1).max(6),
|
|
});
|
|
|
|
/**
|
|
* Schema for complete insights response from AI
|
|
*/
|
|
export const InsightsResponseSchema = z.object({
|
|
month: z.string().regex(/^\d{4}-\d{2}$/), // YYYY-MM
|
|
generatedAt: z.string(), // ISO datetime
|
|
categories: z.array(InsightCategorySchema).length(4),
|
|
});
|
|
|
|
/**
|
|
* TypeScript types derived from schemas
|
|
*/
|
|
export type InsightItem = z.infer<typeof InsightItemSchema>;
|
|
export type InsightCategory = z.infer<typeof InsightCategorySchema>;
|
|
export type InsightsResponse = z.infer<typeof InsightsResponseSchema>;
|