Al mosso - #25

Merged
GRHInvDev merged 4 commits into
mainfrom
al-mosso
Jul 31, 2025
Merged

Al mosso#25
GRHInvDev merged 4 commits into
mainfrom
al-mosso

Conversation

@GRHInvDev

@GRHInvDevGRHInvDev commented Jul 31, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive food ordering system, including restaurant and menu management, order placement, and order tracking.
    • Added user and admin interfaces for managing restaurants, menus, and orders, with Excel import/export support.
    • Implemented daily automated email summaries of orders to restaurants.
    • Added payroll-friendly order log exports and monthly aggregation for HR purposes.
    • Included a new date picker component for improved date selection.
  • Bug Fixes

    • Navigation and dashboard links now dynamically reflect user roles for accurate access and visibility.
  • Chores

    • Added new environment variable placeholders for authentication, file uploads, mail server, and order deadlines.
    • Updated dependencies to include Excel file handling.
  • Documentation

    • Provided validation schemas for all new food ordering-related entities.
  • Refactor

    • Navigation logic and route generation now fully support role-based access and dynamic rendering.

…ante, MenuItem, MenuItemOption, MenuItemOptionChoice e FoodOrder no schema do Prisma. Atualiza a lógica de rotas e componentes para integrar a nova funcionalidade de pedidos. Adiciona mock de e-mails para confirmação de pedidos de comida.
…cel no MenuEditor, permitindo que os usuários exportem itens do cardápio e importem novos pratos a partir de arquivos Excel. Atualiza a lógica de criação de pratos para incluir feedback de sucesso e erro. Também ajusta a exibição de pedidos para incluir opções selecionadas no mock de e-mails.
…Comida" para "Almoços" e ajustando a descrição correspondente. Implementa a lógica de agrupamento de pedidos por usuário, permitindo a exportação de um resumo detalhado dos pedidos em Excel. Adiciona estados para gerenciar diálogos de adição e edição de itens de menu, além de melhorias na manipulação de opções e escolhas de pratos.
…adthing, além de incluir a configuração do horário limite para pedidos de comida. Atualiza o schema do Prisma para incluir o dia da semana nos itens do menu e ajusta a lógica de seleção de pratos na página de pedidos, permitindo a filtragem por dia da semana.
@vercel

vercelBot commented Jul 31, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

NameStatusPreviewCommentsUpdated (UTC)
elo✅ Ready (Inspect)Visit Preview💬 Add feedbackJul 31, 2025 11:53am

@GRHInvDev
GRHInvDev requested a review from jdalmeidaJuly 31, 2025 11:53
@coderabbitai

coderabbitaiBot commented Jul 31, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces a comprehensive food ordering system, including database schema expansions, new API routers, validation schemas, and full-stack React components for both user-facing and admin interfaces. It adds cron job automation for daily order processing, Excel import/export, and role-based navigation adjustments. Supporting configuration and dependency files are updated accordingly.

Changes

Cohort / File(s)Change Summary
Environment & Config
.env.example, vercel.json, package.json
Added new environment variable placeholders for authentication, file uploads, mail server, and food order deadline. Introduced a Vercel cron job to trigger daily food order processing. Added the xlsx dependency for Excel file support.
Database Schema
prisma/schema.prisma
Extended schema for food ordering: added models for Restaurant, MenuItem, MenuItemOption, MenuItemOptionChoice, FoodOrder, OrderOptionSelection, OrderLog, and new user role "TOTEM". Defined relations, constraints, enums, and timestamps for robust data integrity.
Validation Schemas
src/schemas/food-order.schema.ts, src/schemas/menu-item.schema.ts, src/schemas/menu-item-option.schema.ts, src/schemas/menu-item-option-choice.schema.ts, src/schemas/restaurant.schema.ts
Introduced Zod schemas for validating restaurant, menu item, menu item option, option choice, and food order data structures, supporting create, update, and identification operations.
API Routers - Food Ordering
src/server/api/routers/restaurant.ts, src/server/api/routers/menu-item.ts, src/server/api/routers/menu-item-option.ts, src/server/api/routers/menu-item-option-choice.ts, src/server/api/routers/food-order.ts, src/server/api/routers/order-log.ts, src/server/api/root.ts
Added TRPC routers for restaurant, menu item, menu item option, option choice, food order, and order log management. Procedures include CRUD operations, listing, filtering, and aggregation for both user and admin roles. Integrated new routers into the main API root.
API - Cron & Email
src/app/api/cron/food_orders/route.ts, src/app/api/cron/route.ts, src/lib/mail/html-mock.ts
Added a new API route for daily cron job to process and email grouped food orders to restaurants. Deleted obsolete cron job route for events and vehicle availability. Introduced HTML email template generators for order confirmation and restaurant summaries.
Admin UI - Food Ordering
src/app/(authenticated)/admin/food/page.tsx, src/app/(authenticated)/admin/food/_components/menu-editor.tsx
Added React admin page and menu editor for managing restaurants, menu items, options, option choices, and viewing/exporting orders. Features CRUD dialogs, Excel import/export, and tabbed UI for orders, restaurants, and menu management.
User UI - Food Ordering
src/app/(authenticated)/food/page.tsx
Added user-facing React page for food ordering, with stepper flow for restaurant and menu selection, option choices, order confirmation, deadline handling, order history, and cancellation.
UI Components
src/components/ui/date-picker.tsx
Introduced a reusable DatePicker component for date selection in the UI.
Navigation & Role-Based Routing
src/const/routes.ts, src/components/main-nav.tsx, src/app/(authenticated)/layout.tsx, src/app/(authenticated)/dashboard/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/api/chat/route.ts
Changed static route array to a function returning routes based on user role, added "Almoços" (food ordering) route, updated navigation components and layouts to use role-based routing, and adjusted dashboard/admin pages to reflect food ordering features. Updated chat API route to use role-specific navigation data.

Sequence Diagram(s)

User Food Order Flow

sequenceDiagram
participant User
participant FoodPage (React)
participant TRPC API
participant Database
User->>FoodPage (React): Visit food ordering page
FoodPage->>TRPC API: Fetch active restaurants
TRPC API->>Database: Query active restaurants
Database-->>TRPC API: Return restaurants
TRPC API-->>FoodPage (React): Return restaurants
User->>FoodPage (React): Select restaurant & menu item
FoodPage->>TRPC API: Fetch menu items for restaurant/date
TRPC API->>Database: Query menu items (filter by weekday)
Database-->>TRPC API: Return menu items
TRPC API-->>FoodPage (React): Return menu items
User->>FoodPage (React): Select options & confirm order
FoodPage->>TRPC API: Create food order mutation
TRPC API->>Database: Insert order, validate constraints
Database-->>TRPC API: Return order
TRPC API-->>FoodPage (React): Return confirmation
User->>FoodPage (React): View/cancel existing orders
FoodPage->>TRPC API: Query/cancel order
TRPC API->>Database: Fetch/delete order
Database-->>TRPC API: Return result
TRPC API-->>FoodPage (React): Update UI
Loading

Admin Food Order Management Flow

sequenceDiagram
participant Admin
participant AdminFoodPage/MenuEditor (React)
participant TRPC API
participant Database
Admin->>AdminFoodPage/MenuEditor: Open admin food page
AdminFoodPage->>TRPC API: Fetch restaurants, orders
TRPC API->>Database: Query restaurants/orders
Database-->>TRPC API: Return data
TRPC API-->>AdminFoodPage: Display orders/restaurants
Admin->>MenuEditor: Manage menu (add/edit/delete)
MenuEditor->>TRPC API: CRUD mutations for menu/options/choices
TRPC API->>Database: Update menu/option/choice tables
Database-->>TRPC API: Return updated data
TRPC API-->>MenuEditor: Refresh UI
Admin->>AdminFoodPage: Export orders to Excel
AdminFoodPage->>TRPC API: Fetch orders for export
TRPC API->>Database: Query orders
Database-->>TRPC API: Return orders
TRPC API-->>AdminFoodPage: Generate/download Excel file
Loading

Cron Job Order Email Flow

sequenceDiagram
participant Vercel Cron
participant /api/cron/food_orders
participant Database
participant EmailService
Vercel Cron->>/api/cron/food_orders: Trigger GET request (daily)
/api/cron/food_orders->>Database: Fetch today's pending orders
Database-->>/api/cron/food_orders: Return orders grouped by restaurant
/api/cron/food_orders->>EmailService: Send summary email to each restaurant
EmailService-->>/api/cron/food_orders: Confirm email sent
/api/cron/food_orders-->>Vercel Cron: Respond with success JSON
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Poem

🥕
A feast of code, a banquet spread,
With menus, orders, and cron jobs fed.
From schema roots to UI bloom,
Rabbits hop through every room.
Orders confirmed, Excel in hand—
Lunch is served across the land!
🐇🍔

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c90d081 and ecea18c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .env.example (1 hunks)
  • package.json (1 hunks)
  • prisma/schema.prisma (3 hunks)
  • src/app/(authenticated)/admin/food/_components/menu-editor.tsx (1 hunks)
  • src/app/(authenticated)/admin/food/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (2 hunks)
  • src/app/(authenticated)/dashboard/page.tsx (5 hunks)
  • src/app/(authenticated)/food/page.tsx (1 hunks)
  • src/app/(authenticated)/layout.tsx (3 hunks)
  • src/app/api/chat/route.ts (2 hunks)
  • src/app/api/cron/food_orders/route.ts (1 hunks)
  • src/app/api/cron/route.ts (0 hunks)
  • src/components/main-nav.tsx (2 hunks)
  • src/components/ui/date-picker.tsx (1 hunks)
  • src/const/routes.ts (2 hunks)
  • src/lib/mail/html-mock.ts (1 hunks)
  • src/schemas/food-order.schema.ts (1 hunks)
  • src/schemas/menu-item-option-choice.schema.ts (1 hunks)
  • src/schemas/menu-item-option.schema.ts (1 hunks)
  • src/schemas/menu-item.schema.ts (1 hunks)
  • src/schemas/restaurant.schema.ts (1 hunks)
  • src/server/api/root.ts (2 hunks)
  • src/server/api/routers/food-order.ts (1 hunks)
  • src/server/api/routers/menu-item-option-choice.ts (1 hunks)
  • src/server/api/routers/menu-item-option.ts (1 hunks)
  • src/server/api/routers/menu-item.ts (1 hunks)
  • src/server/api/routers/order-log.ts (1 hunks)
  • src/server/api/routers/restaurant.ts (1 hunks)
  • vercel.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch al-mosso

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@GRHInvDev
GRHInvDev merged commit 74e849f into mainJul 31, 2025
3 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@GRHInvDev@jdalmeida
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Al mosso - #25

Merged
GRHInvDev merged 4 commits into
mainfrom
al-mosso
Jul 31, 2025
Merged

Al mosso#25
GRHInvDev merged 4 commits into
mainfrom
al-mosso

Conversation

@GRHInvDev

@GRHInvDevGRHInvDev commented Jul 31, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive food ordering system, including restaurant and menu management, order placement, and order tracking.
    • Added user and admin interfaces for managing restaurants, menus, and orders, with Excel import/export support.
    • Implemented daily automated email summaries of orders to restaurants.
    • Added payroll-friendly order log exports and monthly aggregation for HR purposes.
    • Included a new date picker component for improved date selection.
  • Bug Fixes

    • Navigation and dashboard links now dynamically reflect user roles for accurate access and visibility.
  • Chores

    • Added new environment variable placeholders for authentication, file uploads, mail server, and order deadlines.
    • Updated dependencies to include Excel file handling.
  • Documentation

    • Provided validation schemas for all new food ordering-related entities.
  • Refactor

    • Navigation logic and route generation now fully support role-based access and dynamic rendering.

…ante, MenuItem, MenuItemOption, MenuItemOptionChoice e FoodOrder no schema do Prisma. Atualiza a lógica de rotas e componentes para integrar a nova funcionalidade de pedidos. Adiciona mock de e-mails para confirmação de pedidos de comida.
…cel no MenuEditor, permitindo que os usuários exportem itens do cardápio e importem novos pratos a partir de arquivos Excel. Atualiza a lógica de criação de pratos para incluir feedback de sucesso e erro. Também ajusta a exibição de pedidos para incluir opções selecionadas no mock de e-mails.
…Comida" para "Almoços" e ajustando a descrição correspondente. Implementa a lógica de agrupamento de pedidos por usuário, permitindo a exportação de um resumo detalhado dos pedidos em Excel. Adiciona estados para gerenciar diálogos de adição e edição de itens de menu, além de melhorias na manipulação de opções e escolhas de pratos.
…adthing, além de incluir a configuração do horário limite para pedidos de comida. Atualiza o schema do Prisma para incluir o dia da semana nos itens do menu e ajusta a lógica de seleção de pratos na página de pedidos, permitindo a filtragem por dia da semana.
@vercel

vercelBot commented Jul 31, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

NameStatusPreviewCommentsUpdated (UTC)
elo✅ Ready (Inspect)Visit Preview💬 Add feedbackJul 31, 2025 11:53am

@GRHInvDev
GRHInvDev requested a review from jdalmeidaJuly 31, 2025 11:53
@coderabbitai

coderabbitaiBot commented Jul 31, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces a comprehensive food ordering system, including database schema expansions, new API routers, validation schemas, and full-stack React components for both user-facing and admin interfaces. It adds cron job automation for daily order processing, Excel import/export, and role-based navigation adjustments. Supporting configuration and dependency files are updated accordingly.

Changes

Cohort / File(s)Change Summary
Environment & Config
.env.example, vercel.json, package.json
Added new environment variable placeholders for authentication, file uploads, mail server, and food order deadline. Introduced a Vercel cron job to trigger daily food order processing. Added the xlsx dependency for Excel file support.
Database Schema
prisma/schema.prisma
Extended schema for food ordering: added models for Restaurant, MenuItem, MenuItemOption, MenuItemOptionChoice, FoodOrder, OrderOptionSelection, OrderLog, and new user role "TOTEM". Defined relations, constraints, enums, and timestamps for robust data integrity.
Validation Schemas
src/schemas/food-order.schema.ts, src/schemas/menu-item.schema.ts, src/schemas/menu-item-option.schema.ts, src/schemas/menu-item-option-choice.schema.ts, src/schemas/restaurant.schema.ts
Introduced Zod schemas for validating restaurant, menu item, menu item option, option choice, and food order data structures, supporting create, update, and identification operations.
API Routers - Food Ordering
src/server/api/routers/restaurant.ts, src/server/api/routers/menu-item.ts, src/server/api/routers/menu-item-option.ts, src/server/api/routers/menu-item-option-choice.ts, src/server/api/routers/food-order.ts, src/server/api/routers/order-log.ts, src/server/api/root.ts
Added TRPC routers for restaurant, menu item, menu item option, option choice, food order, and order log management. Procedures include CRUD operations, listing, filtering, and aggregation for both user and admin roles. Integrated new routers into the main API root.
API - Cron & Email
src/app/api/cron/food_orders/route.ts, src/app/api/cron/route.ts, src/lib/mail/html-mock.ts
Added a new API route for daily cron job to process and email grouped food orders to restaurants. Deleted obsolete cron job route for events and vehicle availability. Introduced HTML email template generators for order confirmation and restaurant summaries.
Admin UI - Food Ordering
src/app/(authenticated)/admin/food/page.tsx, src/app/(authenticated)/admin/food/_components/menu-editor.tsx
Added React admin page and menu editor for managing restaurants, menu items, options, option choices, and viewing/exporting orders. Features CRUD dialogs, Excel import/export, and tabbed UI for orders, restaurants, and menu management.
User UI - Food Ordering
src/app/(authenticated)/food/page.tsx
Added user-facing React page for food ordering, with stepper flow for restaurant and menu selection, option choices, order confirmation, deadline handling, order history, and cancellation.
UI Components
src/components/ui/date-picker.tsx
Introduced a reusable DatePicker component for date selection in the UI.
Navigation & Role-Based Routing
src/const/routes.ts, src/components/main-nav.tsx, src/app/(authenticated)/layout.tsx, src/app/(authenticated)/dashboard/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/api/chat/route.ts
Changed static route array to a function returning routes based on user role, added "Almoços" (food ordering) route, updated navigation components and layouts to use role-based routing, and adjusted dashboard/admin pages to reflect food ordering features. Updated chat API route to use role-specific navigation data.

Sequence Diagram(s)

User Food Order Flow

sequenceDiagram
participant User
participant FoodPage (React)
participant TRPC API
participant Database
User->>FoodPage (React): Visit food ordering page
FoodPage->>TRPC API: Fetch active restaurants
TRPC API->>Database: Query active restaurants
Database-->>TRPC API: Return restaurants
TRPC API-->>FoodPage (React): Return restaurants
User->>FoodPage (React): Select restaurant & menu item
FoodPage->>TRPC API: Fetch menu items for restaurant/date
TRPC API->>Database: Query menu items (filter by weekday)
Database-->>TRPC API: Return menu items
TRPC API-->>FoodPage (React): Return menu items
User->>FoodPage (React): Select options & confirm order
FoodPage->>TRPC API: Create food order mutation
TRPC API->>Database: Insert order, validate constraints
Database-->>TRPC API: Return order
TRPC API-->>FoodPage (React): Return confirmation
User->>FoodPage (React): View/cancel existing orders
FoodPage->>TRPC API: Query/cancel order
TRPC API->>Database: Fetch/delete order
Database-->>TRPC API: Return result
TRPC API-->>FoodPage (React): Update UI
Loading

Admin Food Order Management Flow

sequenceDiagram
participant Admin
participant AdminFoodPage/MenuEditor (React)
participant TRPC API
participant Database
Admin->>AdminFoodPage/MenuEditor: Open admin food page
AdminFoodPage->>TRPC API: Fetch restaurants, orders
TRPC API->>Database: Query restaurants/orders
Database-->>TRPC API: Return data
TRPC API-->>AdminFoodPage: Display orders/restaurants
Admin->>MenuEditor: Manage menu (add/edit/delete)
MenuEditor->>TRPC API: CRUD mutations for menu/options/choices
TRPC API->>Database: Update menu/option/choice tables
Database-->>TRPC API: Return updated data
TRPC API-->>MenuEditor: Refresh UI
Admin->>AdminFoodPage: Export orders to Excel
AdminFoodPage->>TRPC API: Fetch orders for export
TRPC API->>Database: Query orders
Database-->>TRPC API: Return orders
TRPC API-->>AdminFoodPage: Generate/download Excel file
Loading

Cron Job Order Email Flow

sequenceDiagram
participant Vercel Cron
participant /api/cron/food_orders
participant Database
participant EmailService
Vercel Cron->>/api/cron/food_orders: Trigger GET request (daily)
/api/cron/food_orders->>Database: Fetch today's pending orders
Database-->>/api/cron/food_orders: Return orders grouped by restaurant
/api/cron/food_orders->>EmailService: Send summary email to each restaurant
EmailService-->>/api/cron/food_orders: Confirm email sent
/api/cron/food_orders-->>Vercel Cron: Respond with success JSON
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Poem

🥕
A feast of code, a banquet spread,
With menus, orders, and cron jobs fed.
From schema roots to UI bloom,
Rabbits hop through every room.
Orders confirmed, Excel in hand—
Lunch is served across the land!
🐇🍔

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c90d081 and ecea18c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .env.example (1 hunks)
  • package.json (1 hunks)
  • prisma/schema.prisma (3 hunks)
  • src/app/(authenticated)/admin/food/_components/menu-editor.tsx (1 hunks)
  • src/app/(authenticated)/admin/food/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (2 hunks)
  • src/app/(authenticated)/dashboard/page.tsx (5 hunks)
  • src/app/(authenticated)/food/page.tsx (1 hunks)
  • src/app/(authenticated)/layout.tsx (3 hunks)
  • src/app/api/chat/route.ts (2 hunks)
  • src/app/api/cron/food_orders/route.ts (1 hunks)
  • src/app/api/cron/route.ts (0 hunks)
  • src/components/main-nav.tsx (2 hunks)
  • src/components/ui/date-picker.tsx (1 hunks)
  • src/const/routes.ts (2 hunks)
  • src/lib/mail/html-mock.ts (1 hunks)
  • src/schemas/food-order.schema.ts (1 hunks)
  • src/schemas/menu-item-option-choice.schema.ts (1 hunks)
  • src/schemas/menu-item-option.schema.ts (1 hunks)
  • src/schemas/menu-item.schema.ts (1 hunks)
  • src/schemas/restaurant.schema.ts (1 hunks)
  • src/server/api/root.ts (2 hunks)
  • src/server/api/routers/food-order.ts (1 hunks)
  • src/server/api/routers/menu-item-option-choice.ts (1 hunks)
  • src/server/api/routers/menu-item-option.ts (1 hunks)
  • src/server/api/routers/menu-item.ts (1 hunks)
  • src/server/api/routers/order-log.ts (1 hunks)
  • src/server/api/routers/restaurant.ts (1 hunks)
  • vercel.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch al-mosso

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@GRHInvDev
GRHInvDev merged commit 74e849f into mainJul 31, 2025
3 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@GRHInvDev@jdalmeida
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Al mosso - #25

Merged
GRHInvDev merged 4 commits into
mainfrom
al-mosso
Jul 31, 2025
Merged

Al mosso#25
GRHInvDev merged 4 commits into
mainfrom
al-mosso

Conversation

@GRHInvDev

@GRHInvDevGRHInvDev commented Jul 31, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive food ordering system, including restaurant and menu management, order placement, and order tracking.
    • Added user and admin interfaces for managing restaurants, menus, and orders, with Excel import/export support.
    • Implemented daily automated email summaries of orders to restaurants.
    • Added payroll-friendly order log exports and monthly aggregation for HR purposes.
    • Included a new date picker component for improved date selection.
  • Bug Fixes

    • Navigation and dashboard links now dynamically reflect user roles for accurate access and visibility.
  • Chores

    • Added new environment variable placeholders for authentication, file uploads, mail server, and order deadlines.
    • Updated dependencies to include Excel file handling.
  • Documentation

    • Provided validation schemas for all new food ordering-related entities.
  • Refactor

    • Navigation logic and route generation now fully support role-based access and dynamic rendering.

…ante, MenuItem, MenuItemOption, MenuItemOptionChoice e FoodOrder no schema do Prisma. Atualiza a lógica de rotas e componentes para integrar a nova funcionalidade de pedidos. Adiciona mock de e-mails para confirmação de pedidos de comida.
…cel no MenuEditor, permitindo que os usuários exportem itens do cardápio e importem novos pratos a partir de arquivos Excel. Atualiza a lógica de criação de pratos para incluir feedback de sucesso e erro. Também ajusta a exibição de pedidos para incluir opções selecionadas no mock de e-mails.
…Comida" para "Almoços" e ajustando a descrição correspondente. Implementa a lógica de agrupamento de pedidos por usuário, permitindo a exportação de um resumo detalhado dos pedidos em Excel. Adiciona estados para gerenciar diálogos de adição e edição de itens de menu, além de melhorias na manipulação de opções e escolhas de pratos.
…adthing, além de incluir a configuração do horário limite para pedidos de comida. Atualiza o schema do Prisma para incluir o dia da semana nos itens do menu e ajusta a lógica de seleção de pratos na página de pedidos, permitindo a filtragem por dia da semana.
@vercel

vercelBot commented Jul 31, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

NameStatusPreviewCommentsUpdated (UTC)
elo✅ Ready (Inspect)Visit Preview💬 Add feedbackJul 31, 2025 11:53am

@GRHInvDev
GRHInvDev requested a review from jdalmeidaJuly 31, 2025 11:53
@coderabbitai

coderabbitaiBot commented Jul 31, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces a comprehensive food ordering system, including database schema expansions, new API routers, validation schemas, and full-stack React components for both user-facing and admin interfaces. It adds cron job automation for daily order processing, Excel import/export, and role-based navigation adjustments. Supporting configuration and dependency files are updated accordingly.

Changes

Cohort / File(s)Change Summary
Environment & Config
.env.example, vercel.json, package.json
Added new environment variable placeholders for authentication, file uploads, mail server, and food order deadline. Introduced a Vercel cron job to trigger daily food order processing. Added the xlsx dependency for Excel file support.
Database Schema
prisma/schema.prisma
Extended schema for food ordering: added models for Restaurant, MenuItem, MenuItemOption, MenuItemOptionChoice, FoodOrder, OrderOptionSelection, OrderLog, and new user role "TOTEM". Defined relations, constraints, enums, and timestamps for robust data integrity.
Validation Schemas
src/schemas/food-order.schema.ts, src/schemas/menu-item.schema.ts, src/schemas/menu-item-option.schema.ts, src/schemas/menu-item-option-choice.schema.ts, src/schemas/restaurant.schema.ts
Introduced Zod schemas for validating restaurant, menu item, menu item option, option choice, and food order data structures, supporting create, update, and identification operations.
API Routers - Food Ordering
src/server/api/routers/restaurant.ts, src/server/api/routers/menu-item.ts, src/server/api/routers/menu-item-option.ts, src/server/api/routers/menu-item-option-choice.ts, src/server/api/routers/food-order.ts, src/server/api/routers/order-log.ts, src/server/api/root.ts
Added TRPC routers for restaurant, menu item, menu item option, option choice, food order, and order log management. Procedures include CRUD operations, listing, filtering, and aggregation for both user and admin roles. Integrated new routers into the main API root.
API - Cron & Email
src/app/api/cron/food_orders/route.ts, src/app/api/cron/route.ts, src/lib/mail/html-mock.ts
Added a new API route for daily cron job to process and email grouped food orders to restaurants. Deleted obsolete cron job route for events and vehicle availability. Introduced HTML email template generators for order confirmation and restaurant summaries.
Admin UI - Food Ordering
src/app/(authenticated)/admin/food/page.tsx, src/app/(authenticated)/admin/food/_components/menu-editor.tsx
Added React admin page and menu editor for managing restaurants, menu items, options, option choices, and viewing/exporting orders. Features CRUD dialogs, Excel import/export, and tabbed UI for orders, restaurants, and menu management.
User UI - Food Ordering
src/app/(authenticated)/food/page.tsx
Added user-facing React page for food ordering, with stepper flow for restaurant and menu selection, option choices, order confirmation, deadline handling, order history, and cancellation.
UI Components
src/components/ui/date-picker.tsx
Introduced a reusable DatePicker component for date selection in the UI.
Navigation & Role-Based Routing
src/const/routes.ts, src/components/main-nav.tsx, src/app/(authenticated)/layout.tsx, src/app/(authenticated)/dashboard/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/api/chat/route.ts
Changed static route array to a function returning routes based on user role, added "Almoços" (food ordering) route, updated navigation components and layouts to use role-based routing, and adjusted dashboard/admin pages to reflect food ordering features. Updated chat API route to use role-specific navigation data.

Sequence Diagram(s)

User Food Order Flow

sequenceDiagram
participant User
participant FoodPage (React)
participant TRPC API
participant Database
User->>FoodPage (React): Visit food ordering page
FoodPage->>TRPC API: Fetch active restaurants
TRPC API->>Database: Query active restaurants
Database-->>TRPC API: Return restaurants
TRPC API-->>FoodPage (React): Return restaurants
User->>FoodPage (React): Select restaurant & menu item
FoodPage->>TRPC API: Fetch menu items for restaurant/date
TRPC API->>Database: Query menu items (filter by weekday)
Database-->>TRPC API: Return menu items
TRPC API-->>FoodPage (React): Return menu items
User->>FoodPage (React): Select options & confirm order
FoodPage->>TRPC API: Create food order mutation
TRPC API->>Database: Insert order, validate constraints
Database-->>TRPC API: Return order
TRPC API-->>FoodPage (React): Return confirmation
User->>FoodPage (React): View/cancel existing orders
FoodPage->>TRPC API: Query/cancel order
TRPC API->>Database: Fetch/delete order
Database-->>TRPC API: Return result
TRPC API-->>FoodPage (React): Update UI
Loading

Admin Food Order Management Flow

sequenceDiagram
participant Admin
participant AdminFoodPage/MenuEditor (React)
participant TRPC API
participant Database
Admin->>AdminFoodPage/MenuEditor: Open admin food page
AdminFoodPage->>TRPC API: Fetch restaurants, orders
TRPC API->>Database: Query restaurants/orders
Database-->>TRPC API: Return data
TRPC API-->>AdminFoodPage: Display orders/restaurants
Admin->>MenuEditor: Manage menu (add/edit/delete)
MenuEditor->>TRPC API: CRUD mutations for menu/options/choices
TRPC API->>Database: Update menu/option/choice tables
Database-->>TRPC API: Return updated data
TRPC API-->>MenuEditor: Refresh UI
Admin->>AdminFoodPage: Export orders to Excel
AdminFoodPage->>TRPC API: Fetch orders for export
TRPC API->>Database: Query orders
Database-->>TRPC API: Return orders
TRPC API-->>AdminFoodPage: Generate/download Excel file
Loading

Cron Job Order Email Flow

sequenceDiagram
participant Vercel Cron
participant /api/cron/food_orders
participant Database
participant EmailService
Vercel Cron->>/api/cron/food_orders: Trigger GET request (daily)
/api/cron/food_orders->>Database: Fetch today's pending orders
Database-->>/api/cron/food_orders: Return orders grouped by restaurant
/api/cron/food_orders->>EmailService: Send summary email to each restaurant
EmailService-->>/api/cron/food_orders: Confirm email sent
/api/cron/food_orders-->>Vercel Cron: Respond with success JSON
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Poem

🥕
A feast of code, a banquet spread,
With menus, orders, and cron jobs fed.
From schema roots to UI bloom,
Rabbits hop through every room.
Orders confirmed, Excel in hand—
Lunch is served across the land!
🐇🍔

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c90d081 and ecea18c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .env.example (1 hunks)
  • package.json (1 hunks)
  • prisma/schema.prisma (3 hunks)
  • src/app/(authenticated)/admin/food/_components/menu-editor.tsx (1 hunks)
  • src/app/(authenticated)/admin/food/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (2 hunks)
  • src/app/(authenticated)/dashboard/page.tsx (5 hunks)
  • src/app/(authenticated)/food/page.tsx (1 hunks)
  • src/app/(authenticated)/layout.tsx (3 hunks)
  • src/app/api/chat/route.ts (2 hunks)
  • src/app/api/cron/food_orders/route.ts (1 hunks)
  • src/app/api/cron/route.ts (0 hunks)
  • src/components/main-nav.tsx (2 hunks)
  • src/components/ui/date-picker.tsx (1 hunks)
  • src/const/routes.ts (2 hunks)
  • src/lib/mail/html-mock.ts (1 hunks)
  • src/schemas/food-order.schema.ts (1 hunks)
  • src/schemas/menu-item-option-choice.schema.ts (1 hunks)
  • src/schemas/menu-item-option.schema.ts (1 hunks)
  • src/schemas/menu-item.schema.ts (1 hunks)
  • src/schemas/restaurant.schema.ts (1 hunks)
  • src/server/api/root.ts (2 hunks)
  • src/server/api/routers/food-order.ts (1 hunks)
  • src/server/api/routers/menu-item-option-choice.ts (1 hunks)
  • src/server/api/routers/menu-item-option.ts (1 hunks)
  • src/server/api/routers/menu-item.ts (1 hunks)
  • src/server/api/routers/order-log.ts (1 hunks)
  • src/server/api/routers/restaurant.ts (1 hunks)
  • vercel.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch al-mosso

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@GRHInvDev
GRHInvDev merged commit 74e849f into mainJul 31, 2025
3 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@GRHInvDev@jdalmeida
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Al mosso - #25

Merged
GRHInvDev merged 4 commits into
mainfrom
al-mosso
Jul 31, 2025
Merged

Al mosso#25
GRHInvDev merged 4 commits into
mainfrom
al-mosso

Conversation

@GRHInvDev

@GRHInvDevGRHInvDev commented Jul 31, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive food ordering system, including restaurant and menu management, order placement, and order tracking.
    • Added user and admin interfaces for managing restaurants, menus, and orders, with Excel import/export support.
    • Implemented daily automated email summaries of orders to restaurants.
    • Added payroll-friendly order log exports and monthly aggregation for HR purposes.
    • Included a new date picker component for improved date selection.
  • Bug Fixes

    • Navigation and dashboard links now dynamically reflect user roles for accurate access and visibility.
  • Chores

    • Added new environment variable placeholders for authentication, file uploads, mail server, and order deadlines.
    • Updated dependencies to include Excel file handling.
  • Documentation

    • Provided validation schemas for all new food ordering-related entities.
  • Refactor

    • Navigation logic and route generation now fully support role-based access and dynamic rendering.

…ante, MenuItem, MenuItemOption, MenuItemOptionChoice e FoodOrder no schema do Prisma. Atualiza a lógica de rotas e componentes para integrar a nova funcionalidade de pedidos. Adiciona mock de e-mails para confirmação de pedidos de comida.
…cel no MenuEditor, permitindo que os usuários exportem itens do cardápio e importem novos pratos a partir de arquivos Excel. Atualiza a lógica de criação de pratos para incluir feedback de sucesso e erro. Também ajusta a exibição de pedidos para incluir opções selecionadas no mock de e-mails.
…Comida" para "Almoços" e ajustando a descrição correspondente. Implementa a lógica de agrupamento de pedidos por usuário, permitindo a exportação de um resumo detalhado dos pedidos em Excel. Adiciona estados para gerenciar diálogos de adição e edição de itens de menu, além de melhorias na manipulação de opções e escolhas de pratos.
…adthing, além de incluir a configuração do horário limite para pedidos de comida. Atualiza o schema do Prisma para incluir o dia da semana nos itens do menu e ajusta a lógica de seleção de pratos na página de pedidos, permitindo a filtragem por dia da semana.
@vercel

vercelBot commented Jul 31, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

NameStatusPreviewCommentsUpdated (UTC)
elo✅ Ready (Inspect)Visit Preview💬 Add feedbackJul 31, 2025 11:53am

@GRHInvDev
GRHInvDev requested a review from jdalmeidaJuly 31, 2025 11:53
@coderabbitai

coderabbitaiBot commented Jul 31, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces a comprehensive food ordering system, including database schema expansions, new API routers, validation schemas, and full-stack React components for both user-facing and admin interfaces. It adds cron job automation for daily order processing, Excel import/export, and role-based navigation adjustments. Supporting configuration and dependency files are updated accordingly.

Changes

Cohort / File(s)Change Summary
Environment & Config
.env.example, vercel.json, package.json
Added new environment variable placeholders for authentication, file uploads, mail server, and food order deadline. Introduced a Vercel cron job to trigger daily food order processing. Added the xlsx dependency for Excel file support.
Database Schema
prisma/schema.prisma
Extended schema for food ordering: added models for Restaurant, MenuItem, MenuItemOption, MenuItemOptionChoice, FoodOrder, OrderOptionSelection, OrderLog, and new user role "TOTEM". Defined relations, constraints, enums, and timestamps for robust data integrity.
Validation Schemas
src/schemas/food-order.schema.ts, src/schemas/menu-item.schema.ts, src/schemas/menu-item-option.schema.ts, src/schemas/menu-item-option-choice.schema.ts, src/schemas/restaurant.schema.ts
Introduced Zod schemas for validating restaurant, menu item, menu item option, option choice, and food order data structures, supporting create, update, and identification operations.
API Routers - Food Ordering
src/server/api/routers/restaurant.ts, src/server/api/routers/menu-item.ts, src/server/api/routers/menu-item-option.ts, src/server/api/routers/menu-item-option-choice.ts, src/server/api/routers/food-order.ts, src/server/api/routers/order-log.ts, src/server/api/root.ts
Added TRPC routers for restaurant, menu item, menu item option, option choice, food order, and order log management. Procedures include CRUD operations, listing, filtering, and aggregation for both user and admin roles. Integrated new routers into the main API root.
API - Cron & Email
src/app/api/cron/food_orders/route.ts, src/app/api/cron/route.ts, src/lib/mail/html-mock.ts
Added a new API route for daily cron job to process and email grouped food orders to restaurants. Deleted obsolete cron job route for events and vehicle availability. Introduced HTML email template generators for order confirmation and restaurant summaries.
Admin UI - Food Ordering
src/app/(authenticated)/admin/food/page.tsx, src/app/(authenticated)/admin/food/_components/menu-editor.tsx
Added React admin page and menu editor for managing restaurants, menu items, options, option choices, and viewing/exporting orders. Features CRUD dialogs, Excel import/export, and tabbed UI for orders, restaurants, and menu management.
User UI - Food Ordering
src/app/(authenticated)/food/page.tsx
Added user-facing React page for food ordering, with stepper flow for restaurant and menu selection, option choices, order confirmation, deadline handling, order history, and cancellation.
UI Components
src/components/ui/date-picker.tsx
Introduced a reusable DatePicker component for date selection in the UI.
Navigation & Role-Based Routing
src/const/routes.ts, src/components/main-nav.tsx, src/app/(authenticated)/layout.tsx, src/app/(authenticated)/dashboard/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/api/chat/route.ts
Changed static route array to a function returning routes based on user role, added "Almoços" (food ordering) route, updated navigation components and layouts to use role-based routing, and adjusted dashboard/admin pages to reflect food ordering features. Updated chat API route to use role-specific navigation data.

Sequence Diagram(s)

User Food Order Flow

sequenceDiagram
participant User
participant FoodPage (React)
participant TRPC API
participant Database
User->>FoodPage (React): Visit food ordering page
FoodPage->>TRPC API: Fetch active restaurants
TRPC API->>Database: Query active restaurants
Database-->>TRPC API: Return restaurants
TRPC API-->>FoodPage (React): Return restaurants
User->>FoodPage (React): Select restaurant & menu item
FoodPage->>TRPC API: Fetch menu items for restaurant/date
TRPC API->>Database: Query menu items (filter by weekday)
Database-->>TRPC API: Return menu items
TRPC API-->>FoodPage (React): Return menu items
User->>FoodPage (React): Select options & confirm order
FoodPage->>TRPC API: Create food order mutation
TRPC API->>Database: Insert order, validate constraints
Database-->>TRPC API: Return order
TRPC API-->>FoodPage (React): Return confirmation
User->>FoodPage (React): View/cancel existing orders
FoodPage->>TRPC API: Query/cancel order
TRPC API->>Database: Fetch/delete order
Database-->>TRPC API: Return result
TRPC API-->>FoodPage (React): Update UI
Loading

Admin Food Order Management Flow

sequenceDiagram
participant Admin
participant AdminFoodPage/MenuEditor (React)
participant TRPC API
participant Database
Admin->>AdminFoodPage/MenuEditor: Open admin food page
AdminFoodPage->>TRPC API: Fetch restaurants, orders
TRPC API->>Database: Query restaurants/orders
Database-->>TRPC API: Return data
TRPC API-->>AdminFoodPage: Display orders/restaurants
Admin->>MenuEditor: Manage menu (add/edit/delete)
MenuEditor->>TRPC API: CRUD mutations for menu/options/choices
TRPC API->>Database: Update menu/option/choice tables
Database-->>TRPC API: Return updated data
TRPC API-->>MenuEditor: Refresh UI
Admin->>AdminFoodPage: Export orders to Excel
AdminFoodPage->>TRPC API: Fetch orders for export
TRPC API->>Database: Query orders
Database-->>TRPC API: Return orders
TRPC API-->>AdminFoodPage: Generate/download Excel file
Loading

Cron Job Order Email Flow

sequenceDiagram
participant Vercel Cron
participant /api/cron/food_orders
participant Database
participant EmailService
Vercel Cron->>/api/cron/food_orders: Trigger GET request (daily)
/api/cron/food_orders->>Database: Fetch today's pending orders
Database-->>/api/cron/food_orders: Return orders grouped by restaurant
/api/cron/food_orders->>EmailService: Send summary email to each restaurant
EmailService-->>/api/cron/food_orders: Confirm email sent
/api/cron/food_orders-->>Vercel Cron: Respond with success JSON
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Poem

🥕
A feast of code, a banquet spread,
With menus, orders, and cron jobs fed.
From schema roots to UI bloom,
Rabbits hop through every room.
Orders confirmed, Excel in hand—
Lunch is served across the land!
🐇🍔

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c90d081 and ecea18c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .env.example (1 hunks)
  • package.json (1 hunks)
  • prisma/schema.prisma (3 hunks)
  • src/app/(authenticated)/admin/food/_components/menu-editor.tsx (1 hunks)
  • src/app/(authenticated)/admin/food/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (2 hunks)
  • src/app/(authenticated)/dashboard/page.tsx (5 hunks)
  • src/app/(authenticated)/food/page.tsx (1 hunks)
  • src/app/(authenticated)/layout.tsx (3 hunks)
  • src/app/api/chat/route.ts (2 hunks)
  • src/app/api/cron/food_orders/route.ts (1 hunks)
  • src/app/api/cron/route.ts (0 hunks)
  • src/components/main-nav.tsx (2 hunks)
  • src/components/ui/date-picker.tsx (1 hunks)
  • src/const/routes.ts (2 hunks)
  • src/lib/mail/html-mock.ts (1 hunks)
  • src/schemas/food-order.schema.ts (1 hunks)
  • src/schemas/menu-item-option-choice.schema.ts (1 hunks)
  • src/schemas/menu-item-option.schema.ts (1 hunks)
  • src/schemas/menu-item.schema.ts (1 hunks)
  • src/schemas/restaurant.schema.ts (1 hunks)
  • src/server/api/root.ts (2 hunks)
  • src/server/api/routers/food-order.ts (1 hunks)
  • src/server/api/routers/menu-item-option-choice.ts (1 hunks)
  • src/server/api/routers/menu-item-option.ts (1 hunks)
  • src/server/api/routers/menu-item.ts (1 hunks)
  • src/server/api/routers/order-log.ts (1 hunks)
  • src/server/api/routers/restaurant.ts (1 hunks)
  • vercel.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch al-mosso

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@GRHInvDev
GRHInvDev merged commit 74e849f into mainJul 31, 2025
3 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@GRHInvDev@jdalmeida
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Al mosso - #25

Merged
GRHInvDev merged 4 commits into
mainfrom
al-mosso
Jul 31, 2025
Merged

Al mosso#25
GRHInvDev merged 4 commits into
mainfrom
al-mosso

Conversation

@GRHInvDev

@GRHInvDevGRHInvDev commented Jul 31, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive food ordering system, including restaurant and menu management, order placement, and order tracking.
    • Added user and admin interfaces for managing restaurants, menus, and orders, with Excel import/export support.
    • Implemented daily automated email summaries of orders to restaurants.
    • Added payroll-friendly order log exports and monthly aggregation for HR purposes.
    • Included a new date picker component for improved date selection.
  • Bug Fixes

    • Navigation and dashboard links now dynamically reflect user roles for accurate access and visibility.
  • Chores

    • Added new environment variable placeholders for authentication, file uploads, mail server, and order deadlines.
    • Updated dependencies to include Excel file handling.
  • Documentation

    • Provided validation schemas for all new food ordering-related entities.
  • Refactor

    • Navigation logic and route generation now fully support role-based access and dynamic rendering.

…ante, MenuItem, MenuItemOption, MenuItemOptionChoice e FoodOrder no schema do Prisma. Atualiza a lógica de rotas e componentes para integrar a nova funcionalidade de pedidos. Adiciona mock de e-mails para confirmação de pedidos de comida.
…cel no MenuEditor, permitindo que os usuários exportem itens do cardápio e importem novos pratos a partir de arquivos Excel. Atualiza a lógica de criação de pratos para incluir feedback de sucesso e erro. Também ajusta a exibição de pedidos para incluir opções selecionadas no mock de e-mails.
…Comida" para "Almoços" e ajustando a descrição correspondente. Implementa a lógica de agrupamento de pedidos por usuário, permitindo a exportação de um resumo detalhado dos pedidos em Excel. Adiciona estados para gerenciar diálogos de adição e edição de itens de menu, além de melhorias na manipulação de opções e escolhas de pratos.
…adthing, além de incluir a configuração do horário limite para pedidos de comida. Atualiza o schema do Prisma para incluir o dia da semana nos itens do menu e ajusta a lógica de seleção de pratos na página de pedidos, permitindo a filtragem por dia da semana.
@vercel

vercelBot commented Jul 31, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

NameStatusPreviewCommentsUpdated (UTC)
elo✅ Ready (Inspect)Visit Preview💬 Add feedbackJul 31, 2025 11:53am

@GRHInvDev
GRHInvDev requested a review from jdalmeidaJuly 31, 2025 11:53
@coderabbitai

coderabbitaiBot commented Jul 31, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces a comprehensive food ordering system, including database schema expansions, new API routers, validation schemas, and full-stack React components for both user-facing and admin interfaces. It adds cron job automation for daily order processing, Excel import/export, and role-based navigation adjustments. Supporting configuration and dependency files are updated accordingly.

Changes

Cohort / File(s)Change Summary
Environment & Config
.env.example, vercel.json, package.json
Added new environment variable placeholders for authentication, file uploads, mail server, and food order deadline. Introduced a Vercel cron job to trigger daily food order processing. Added the xlsx dependency for Excel file support.
Database Schema
prisma/schema.prisma
Extended schema for food ordering: added models for Restaurant, MenuItem, MenuItemOption, MenuItemOptionChoice, FoodOrder, OrderOptionSelection, OrderLog, and new user role "TOTEM". Defined relations, constraints, enums, and timestamps for robust data integrity.
Validation Schemas
src/schemas/food-order.schema.ts, src/schemas/menu-item.schema.ts, src/schemas/menu-item-option.schema.ts, src/schemas/menu-item-option-choice.schema.ts, src/schemas/restaurant.schema.ts
Introduced Zod schemas for validating restaurant, menu item, menu item option, option choice, and food order data structures, supporting create, update, and identification operations.
API Routers - Food Ordering
src/server/api/routers/restaurant.ts, src/server/api/routers/menu-item.ts, src/server/api/routers/menu-item-option.ts, src/server/api/routers/menu-item-option-choice.ts, src/server/api/routers/food-order.ts, src/server/api/routers/order-log.ts, src/server/api/root.ts
Added TRPC routers for restaurant, menu item, menu item option, option choice, food order, and order log management. Procedures include CRUD operations, listing, filtering, and aggregation for both user and admin roles. Integrated new routers into the main API root.
API - Cron & Email
src/app/api/cron/food_orders/route.ts, src/app/api/cron/route.ts, src/lib/mail/html-mock.ts
Added a new API route for daily cron job to process and email grouped food orders to restaurants. Deleted obsolete cron job route for events and vehicle availability. Introduced HTML email template generators for order confirmation and restaurant summaries.
Admin UI - Food Ordering
src/app/(authenticated)/admin/food/page.tsx, src/app/(authenticated)/admin/food/_components/menu-editor.tsx
Added React admin page and menu editor for managing restaurants, menu items, options, option choices, and viewing/exporting orders. Features CRUD dialogs, Excel import/export, and tabbed UI for orders, restaurants, and menu management.
User UI - Food Ordering
src/app/(authenticated)/food/page.tsx
Added user-facing React page for food ordering, with stepper flow for restaurant and menu selection, option choices, order confirmation, deadline handling, order history, and cancellation.
UI Components
src/components/ui/date-picker.tsx
Introduced a reusable DatePicker component for date selection in the UI.
Navigation & Role-Based Routing
src/const/routes.ts, src/components/main-nav.tsx, src/app/(authenticated)/layout.tsx, src/app/(authenticated)/dashboard/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/api/chat/route.ts
Changed static route array to a function returning routes based on user role, added "Almoços" (food ordering) route, updated navigation components and layouts to use role-based routing, and adjusted dashboard/admin pages to reflect food ordering features. Updated chat API route to use role-specific navigation data.

Sequence Diagram(s)

User Food Order Flow

sequenceDiagram
participant User
participant FoodPage (React)
participant TRPC API
participant Database
User->>FoodPage (React): Visit food ordering page
FoodPage->>TRPC API: Fetch active restaurants
TRPC API->>Database: Query active restaurants
Database-->>TRPC API: Return restaurants
TRPC API-->>FoodPage (React): Return restaurants
User->>FoodPage (React): Select restaurant & menu item
FoodPage->>TRPC API: Fetch menu items for restaurant/date
TRPC API->>Database: Query menu items (filter by weekday)
Database-->>TRPC API: Return menu items
TRPC API-->>FoodPage (React): Return menu items
User->>FoodPage (React): Select options & confirm order
FoodPage->>TRPC API: Create food order mutation
TRPC API->>Database: Insert order, validate constraints
Database-->>TRPC API: Return order
TRPC API-->>FoodPage (React): Return confirmation
User->>FoodPage (React): View/cancel existing orders
FoodPage->>TRPC API: Query/cancel order
TRPC API->>Database: Fetch/delete order
Database-->>TRPC API: Return result
TRPC API-->>FoodPage (React): Update UI
Loading

Admin Food Order Management Flow

sequenceDiagram
participant Admin
participant AdminFoodPage/MenuEditor (React)
participant TRPC API
participant Database
Admin->>AdminFoodPage/MenuEditor: Open admin food page
AdminFoodPage->>TRPC API: Fetch restaurants, orders
TRPC API->>Database: Query restaurants/orders
Database-->>TRPC API: Return data
TRPC API-->>AdminFoodPage: Display orders/restaurants
Admin->>MenuEditor: Manage menu (add/edit/delete)
MenuEditor->>TRPC API: CRUD mutations for menu/options/choices
TRPC API->>Database: Update menu/option/choice tables
Database-->>TRPC API: Return updated data
TRPC API-->>MenuEditor: Refresh UI
Admin->>AdminFoodPage: Export orders to Excel
AdminFoodPage->>TRPC API: Fetch orders for export
TRPC API->>Database: Query orders
Database-->>TRPC API: Return orders
TRPC API-->>AdminFoodPage: Generate/download Excel file
Loading

Cron Job Order Email Flow

sequenceDiagram
participant Vercel Cron
participant /api/cron/food_orders
participant Database
participant EmailService
Vercel Cron->>/api/cron/food_orders: Trigger GET request (daily)
/api/cron/food_orders->>Database: Fetch today's pending orders
Database-->>/api/cron/food_orders: Return orders grouped by restaurant
/api/cron/food_orders->>EmailService: Send summary email to each restaurant
EmailService-->>/api/cron/food_orders: Confirm email sent
/api/cron/food_orders-->>Vercel Cron: Respond with success JSON
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Poem

🥕
A feast of code, a banquet spread,
With menus, orders, and cron jobs fed.
From schema roots to UI bloom,
Rabbits hop through every room.
Orders confirmed, Excel in hand—
Lunch is served across the land!
🐇🍔

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c90d081 and ecea18c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .env.example (1 hunks)
  • package.json (1 hunks)
  • prisma/schema.prisma (3 hunks)
  • src/app/(authenticated)/admin/food/_components/menu-editor.tsx (1 hunks)
  • src/app/(authenticated)/admin/food/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (2 hunks)
  • src/app/(authenticated)/dashboard/page.tsx (5 hunks)
  • src/app/(authenticated)/food/page.tsx (1 hunks)
  • src/app/(authenticated)/layout.tsx (3 hunks)
  • src/app/api/chat/route.ts (2 hunks)
  • src/app/api/cron/food_orders/route.ts (1 hunks)
  • src/app/api/cron/route.ts (0 hunks)
  • src/components/main-nav.tsx (2 hunks)
  • src/components/ui/date-picker.tsx (1 hunks)
  • src/const/routes.ts (2 hunks)
  • src/lib/mail/html-mock.ts (1 hunks)
  • src/schemas/food-order.schema.ts (1 hunks)
  • src/schemas/menu-item-option-choice.schema.ts (1 hunks)
  • src/schemas/menu-item-option.schema.ts (1 hunks)
  • src/schemas/menu-item.schema.ts (1 hunks)
  • src/schemas/restaurant.schema.ts (1 hunks)
  • src/server/api/root.ts (2 hunks)
  • src/server/api/routers/food-order.ts (1 hunks)
  • src/server/api/routers/menu-item-option-choice.ts (1 hunks)
  • src/server/api/routers/menu-item-option.ts (1 hunks)
  • src/server/api/routers/menu-item.ts (1 hunks)
  • src/server/api/routers/order-log.ts (1 hunks)
  • src/server/api/routers/restaurant.ts (1 hunks)
  • vercel.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch al-mosso

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@GRHInvDev
GRHInvDev merged commit 74e849f into mainJul 31, 2025
3 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@GRHInvDev@jdalmeida
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Al mosso - #25

Merged
GRHInvDev merged 4 commits into
mainfrom
al-mosso
Jul 31, 2025
Merged

Al mosso#25
GRHInvDev merged 4 commits into
mainfrom
al-mosso

Conversation

@GRHInvDev

@GRHInvDevGRHInvDev commented Jul 31, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive food ordering system, including restaurant and menu management, order placement, and order tracking.
    • Added user and admin interfaces for managing restaurants, menus, and orders, with Excel import/export support.
    • Implemented daily automated email summaries of orders to restaurants.
    • Added payroll-friendly order log exports and monthly aggregation for HR purposes.
    • Included a new date picker component for improved date selection.
  • Bug Fixes

    • Navigation and dashboard links now dynamically reflect user roles for accurate access and visibility.
  • Chores

    • Added new environment variable placeholders for authentication, file uploads, mail server, and order deadlines.
    • Updated dependencies to include Excel file handling.
  • Documentation

    • Provided validation schemas for all new food ordering-related entities.
  • Refactor

    • Navigation logic and route generation now fully support role-based access and dynamic rendering.

…ante, MenuItem, MenuItemOption, MenuItemOptionChoice e FoodOrder no schema do Prisma. Atualiza a lógica de rotas e componentes para integrar a nova funcionalidade de pedidos. Adiciona mock de e-mails para confirmação de pedidos de comida.
…cel no MenuEditor, permitindo que os usuários exportem itens do cardápio e importem novos pratos a partir de arquivos Excel. Atualiza a lógica de criação de pratos para incluir feedback de sucesso e erro. Também ajusta a exibição de pedidos para incluir opções selecionadas no mock de e-mails.
…Comida" para "Almoços" e ajustando a descrição correspondente. Implementa a lógica de agrupamento de pedidos por usuário, permitindo a exportação de um resumo detalhado dos pedidos em Excel. Adiciona estados para gerenciar diálogos de adição e edição de itens de menu, além de melhorias na manipulação de opções e escolhas de pratos.
…adthing, além de incluir a configuração do horário limite para pedidos de comida. Atualiza o schema do Prisma para incluir o dia da semana nos itens do menu e ajusta a lógica de seleção de pratos na página de pedidos, permitindo a filtragem por dia da semana.
@vercel

vercelBot commented Jul 31, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

NameStatusPreviewCommentsUpdated (UTC)
elo✅ Ready (Inspect)Visit Preview💬 Add feedbackJul 31, 2025 11:53am

@GRHInvDev
GRHInvDev requested a review from jdalmeidaJuly 31, 2025 11:53
@coderabbitai

coderabbitaiBot commented Jul 31, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces a comprehensive food ordering system, including database schema expansions, new API routers, validation schemas, and full-stack React components for both user-facing and admin interfaces. It adds cron job automation for daily order processing, Excel import/export, and role-based navigation adjustments. Supporting configuration and dependency files are updated accordingly.

Changes

Cohort / File(s)Change Summary
Environment & Config
.env.example, vercel.json, package.json
Added new environment variable placeholders for authentication, file uploads, mail server, and food order deadline. Introduced a Vercel cron job to trigger daily food order processing. Added the xlsx dependency for Excel file support.
Database Schema
prisma/schema.prisma
Extended schema for food ordering: added models for Restaurant, MenuItem, MenuItemOption, MenuItemOptionChoice, FoodOrder, OrderOptionSelection, OrderLog, and new user role "TOTEM". Defined relations, constraints, enums, and timestamps for robust data integrity.
Validation Schemas
src/schemas/food-order.schema.ts, src/schemas/menu-item.schema.ts, src/schemas/menu-item-option.schema.ts, src/schemas/menu-item-option-choice.schema.ts, src/schemas/restaurant.schema.ts
Introduced Zod schemas for validating restaurant, menu item, menu item option, option choice, and food order data structures, supporting create, update, and identification operations.
API Routers - Food Ordering
src/server/api/routers/restaurant.ts, src/server/api/routers/menu-item.ts, src/server/api/routers/menu-item-option.ts, src/server/api/routers/menu-item-option-choice.ts, src/server/api/routers/food-order.ts, src/server/api/routers/order-log.ts, src/server/api/root.ts
Added TRPC routers for restaurant, menu item, menu item option, option choice, food order, and order log management. Procedures include CRUD operations, listing, filtering, and aggregation for both user and admin roles. Integrated new routers into the main API root.
API - Cron & Email
src/app/api/cron/food_orders/route.ts, src/app/api/cron/route.ts, src/lib/mail/html-mock.ts
Added a new API route for daily cron job to process and email grouped food orders to restaurants. Deleted obsolete cron job route for events and vehicle availability. Introduced HTML email template generators for order confirmation and restaurant summaries.
Admin UI - Food Ordering
src/app/(authenticated)/admin/food/page.tsx, src/app/(authenticated)/admin/food/_components/menu-editor.tsx
Added React admin page and menu editor for managing restaurants, menu items, options, option choices, and viewing/exporting orders. Features CRUD dialogs, Excel import/export, and tabbed UI for orders, restaurants, and menu management.
User UI - Food Ordering
src/app/(authenticated)/food/page.tsx
Added user-facing React page for food ordering, with stepper flow for restaurant and menu selection, option choices, order confirmation, deadline handling, order history, and cancellation.
UI Components
src/components/ui/date-picker.tsx
Introduced a reusable DatePicker component for date selection in the UI.
Navigation & Role-Based Routing
src/const/routes.ts, src/components/main-nav.tsx, src/app/(authenticated)/layout.tsx, src/app/(authenticated)/dashboard/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/api/chat/route.ts
Changed static route array to a function returning routes based on user role, added "Almoços" (food ordering) route, updated navigation components and layouts to use role-based routing, and adjusted dashboard/admin pages to reflect food ordering features. Updated chat API route to use role-specific navigation data.

Sequence Diagram(s)

User Food Order Flow

sequenceDiagram
participant User
participant FoodPage (React)
participant TRPC API
participant Database
User->>FoodPage (React): Visit food ordering page
FoodPage->>TRPC API: Fetch active restaurants
TRPC API->>Database: Query active restaurants
Database-->>TRPC API: Return restaurants
TRPC API-->>FoodPage (React): Return restaurants
User->>FoodPage (React): Select restaurant & menu item
FoodPage->>TRPC API: Fetch menu items for restaurant/date
TRPC API->>Database: Query menu items (filter by weekday)
Database-->>TRPC API: Return menu items
TRPC API-->>FoodPage (React): Return menu items
User->>FoodPage (React): Select options & confirm order
FoodPage->>TRPC API: Create food order mutation
TRPC API->>Database: Insert order, validate constraints
Database-->>TRPC API: Return order
TRPC API-->>FoodPage (React): Return confirmation
User->>FoodPage (React): View/cancel existing orders
FoodPage->>TRPC API: Query/cancel order
TRPC API->>Database: Fetch/delete order
Database-->>TRPC API: Return result
TRPC API-->>FoodPage (React): Update UI
Loading

Admin Food Order Management Flow

sequenceDiagram
participant Admin
participant AdminFoodPage/MenuEditor (React)
participant TRPC API
participant Database
Admin->>AdminFoodPage/MenuEditor: Open admin food page
AdminFoodPage->>TRPC API: Fetch restaurants, orders
TRPC API->>Database: Query restaurants/orders
Database-->>TRPC API: Return data
TRPC API-->>AdminFoodPage: Display orders/restaurants
Admin->>MenuEditor: Manage menu (add/edit/delete)
MenuEditor->>TRPC API: CRUD mutations for menu/options/choices
TRPC API->>Database: Update menu/option/choice tables
Database-->>TRPC API: Return updated data
TRPC API-->>MenuEditor: Refresh UI
Admin->>AdminFoodPage: Export orders to Excel
AdminFoodPage->>TRPC API: Fetch orders for export
TRPC API->>Database: Query orders
Database-->>TRPC API: Return orders
TRPC API-->>AdminFoodPage: Generate/download Excel file
Loading

Cron Job Order Email Flow

sequenceDiagram
participant Vercel Cron
participant /api/cron/food_orders
participant Database
participant EmailService
Vercel Cron->>/api/cron/food_orders: Trigger GET request (daily)
/api/cron/food_orders->>Database: Fetch today's pending orders
Database-->>/api/cron/food_orders: Return orders grouped by restaurant
/api/cron/food_orders->>EmailService: Send summary email to each restaurant
EmailService-->>/api/cron/food_orders: Confirm email sent
/api/cron/food_orders-->>Vercel Cron: Respond with success JSON
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Poem

🥕
A feast of code, a banquet spread,
With menus, orders, and cron jobs fed.
From schema roots to UI bloom,
Rabbits hop through every room.
Orders confirmed, Excel in hand—
Lunch is served across the land!
🐇🍔

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c90d081 and ecea18c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .env.example (1 hunks)
  • package.json (1 hunks)
  • prisma/schema.prisma (3 hunks)
  • src/app/(authenticated)/admin/food/_components/menu-editor.tsx (1 hunks)
  • src/app/(authenticated)/admin/food/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (2 hunks)
  • src/app/(authenticated)/dashboard/page.tsx (5 hunks)
  • src/app/(authenticated)/food/page.tsx (1 hunks)
  • src/app/(authenticated)/layout.tsx (3 hunks)
  • src/app/api/chat/route.ts (2 hunks)
  • src/app/api/cron/food_orders/route.ts (1 hunks)
  • src/app/api/cron/route.ts (0 hunks)
  • src/components/main-nav.tsx (2 hunks)
  • src/components/ui/date-picker.tsx (1 hunks)
  • src/const/routes.ts (2 hunks)
  • src/lib/mail/html-mock.ts (1 hunks)
  • src/schemas/food-order.schema.ts (1 hunks)
  • src/schemas/menu-item-option-choice.schema.ts (1 hunks)
  • src/schemas/menu-item-option.schema.ts (1 hunks)
  • src/schemas/menu-item.schema.ts (1 hunks)
  • src/schemas/restaurant.schema.ts (1 hunks)
  • src/server/api/root.ts (2 hunks)
  • src/server/api/routers/food-order.ts (1 hunks)
  • src/server/api/routers/menu-item-option-choice.ts (1 hunks)
  • src/server/api/routers/menu-item-option.ts (1 hunks)
  • src/server/api/routers/menu-item.ts (1 hunks)
  • src/server/api/routers/order-log.ts (1 hunks)
  • src/server/api/routers/restaurant.ts (1 hunks)
  • vercel.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch al-mosso

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@GRHInvDev
GRHInvDev merged commit 74e849f into mainJul 31, 2025
3 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@GRHInvDev@jdalmeida
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Al mosso - #25

Merged
GRHInvDev merged 4 commits into
mainfrom
al-mosso
Jul 31, 2025
Merged

Al mosso#25
GRHInvDev merged 4 commits into
mainfrom
al-mosso

Conversation

@GRHInvDev

@GRHInvDevGRHInvDev commented Jul 31, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive food ordering system, including restaurant and menu management, order placement, and order tracking.
    • Added user and admin interfaces for managing restaurants, menus, and orders, with Excel import/export support.
    • Implemented daily automated email summaries of orders to restaurants.
    • Added payroll-friendly order log exports and monthly aggregation for HR purposes.
    • Included a new date picker component for improved date selection.
  • Bug Fixes

    • Navigation and dashboard links now dynamically reflect user roles for accurate access and visibility.
  • Chores

    • Added new environment variable placeholders for authentication, file uploads, mail server, and order deadlines.
    • Updated dependencies to include Excel file handling.
  • Documentation

    • Provided validation schemas for all new food ordering-related entities.
  • Refactor

    • Navigation logic and route generation now fully support role-based access and dynamic rendering.

…ante, MenuItem, MenuItemOption, MenuItemOptionChoice e FoodOrder no schema do Prisma. Atualiza a lógica de rotas e componentes para integrar a nova funcionalidade de pedidos. Adiciona mock de e-mails para confirmação de pedidos de comida.
…cel no MenuEditor, permitindo que os usuários exportem itens do cardápio e importem novos pratos a partir de arquivos Excel. Atualiza a lógica de criação de pratos para incluir feedback de sucesso e erro. Também ajusta a exibição de pedidos para incluir opções selecionadas no mock de e-mails.
…Comida" para "Almoços" e ajustando a descrição correspondente. Implementa a lógica de agrupamento de pedidos por usuário, permitindo a exportação de um resumo detalhado dos pedidos em Excel. Adiciona estados para gerenciar diálogos de adição e edição de itens de menu, além de melhorias na manipulação de opções e escolhas de pratos.
…adthing, além de incluir a configuração do horário limite para pedidos de comida. Atualiza o schema do Prisma para incluir o dia da semana nos itens do menu e ajusta a lógica de seleção de pratos na página de pedidos, permitindo a filtragem por dia da semana.
@vercel

vercelBot commented Jul 31, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

NameStatusPreviewCommentsUpdated (UTC)
elo✅ Ready (Inspect)Visit Preview💬 Add feedbackJul 31, 2025 11:53am

@GRHInvDev
GRHInvDev requested a review from jdalmeidaJuly 31, 2025 11:53
@coderabbitai

coderabbitaiBot commented Jul 31, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces a comprehensive food ordering system, including database schema expansions, new API routers, validation schemas, and full-stack React components for both user-facing and admin interfaces. It adds cron job automation for daily order processing, Excel import/export, and role-based navigation adjustments. Supporting configuration and dependency files are updated accordingly.

Changes

Cohort / File(s)Change Summary
Environment & Config
.env.example, vercel.json, package.json
Added new environment variable placeholders for authentication, file uploads, mail server, and food order deadline. Introduced a Vercel cron job to trigger daily food order processing. Added the xlsx dependency for Excel file support.
Database Schema
prisma/schema.prisma
Extended schema for food ordering: added models for Restaurant, MenuItem, MenuItemOption, MenuItemOptionChoice, FoodOrder, OrderOptionSelection, OrderLog, and new user role "TOTEM". Defined relations, constraints, enums, and timestamps for robust data integrity.
Validation Schemas
src/schemas/food-order.schema.ts, src/schemas/menu-item.schema.ts, src/schemas/menu-item-option.schema.ts, src/schemas/menu-item-option-choice.schema.ts, src/schemas/restaurant.schema.ts
Introduced Zod schemas for validating restaurant, menu item, menu item option, option choice, and food order data structures, supporting create, update, and identification operations.
API Routers - Food Ordering
src/server/api/routers/restaurant.ts, src/server/api/routers/menu-item.ts, src/server/api/routers/menu-item-option.ts, src/server/api/routers/menu-item-option-choice.ts, src/server/api/routers/food-order.ts, src/server/api/routers/order-log.ts, src/server/api/root.ts
Added TRPC routers for restaurant, menu item, menu item option, option choice, food order, and order log management. Procedures include CRUD operations, listing, filtering, and aggregation for both user and admin roles. Integrated new routers into the main API root.
API - Cron & Email
src/app/api/cron/food_orders/route.ts, src/app/api/cron/route.ts, src/lib/mail/html-mock.ts
Added a new API route for daily cron job to process and email grouped food orders to restaurants. Deleted obsolete cron job route for events and vehicle availability. Introduced HTML email template generators for order confirmation and restaurant summaries.
Admin UI - Food Ordering
src/app/(authenticated)/admin/food/page.tsx, src/app/(authenticated)/admin/food/_components/menu-editor.tsx
Added React admin page and menu editor for managing restaurants, menu items, options, option choices, and viewing/exporting orders. Features CRUD dialogs, Excel import/export, and tabbed UI for orders, restaurants, and menu management.
User UI - Food Ordering
src/app/(authenticated)/food/page.tsx
Added user-facing React page for food ordering, with stepper flow for restaurant and menu selection, option choices, order confirmation, deadline handling, order history, and cancellation.
UI Components
src/components/ui/date-picker.tsx
Introduced a reusable DatePicker component for date selection in the UI.
Navigation & Role-Based Routing
src/const/routes.ts, src/components/main-nav.tsx, src/app/(authenticated)/layout.tsx, src/app/(authenticated)/dashboard/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/api/chat/route.ts
Changed static route array to a function returning routes based on user role, added "Almoços" (food ordering) route, updated navigation components and layouts to use role-based routing, and adjusted dashboard/admin pages to reflect food ordering features. Updated chat API route to use role-specific navigation data.

Sequence Diagram(s)

User Food Order Flow

sequenceDiagram
participant User
participant FoodPage (React)
participant TRPC API
participant Database
User->>FoodPage (React): Visit food ordering page
FoodPage->>TRPC API: Fetch active restaurants
TRPC API->>Database: Query active restaurants
Database-->>TRPC API: Return restaurants
TRPC API-->>FoodPage (React): Return restaurants
User->>FoodPage (React): Select restaurant & menu item
FoodPage->>TRPC API: Fetch menu items for restaurant/date
TRPC API->>Database: Query menu items (filter by weekday)
Database-->>TRPC API: Return menu items
TRPC API-->>FoodPage (React): Return menu items
User->>FoodPage (React): Select options & confirm order
FoodPage->>TRPC API: Create food order mutation
TRPC API->>Database: Insert order, validate constraints
Database-->>TRPC API: Return order
TRPC API-->>FoodPage (React): Return confirmation
User->>FoodPage (React): View/cancel existing orders
FoodPage->>TRPC API: Query/cancel order
TRPC API->>Database: Fetch/delete order
Database-->>TRPC API: Return result
TRPC API-->>FoodPage (React): Update UI
Loading

Admin Food Order Management Flow

sequenceDiagram
participant Admin
participant AdminFoodPage/MenuEditor (React)
participant TRPC API
participant Database
Admin->>AdminFoodPage/MenuEditor: Open admin food page
AdminFoodPage->>TRPC API: Fetch restaurants, orders
TRPC API->>Database: Query restaurants/orders
Database-->>TRPC API: Return data
TRPC API-->>AdminFoodPage: Display orders/restaurants
Admin->>MenuEditor: Manage menu (add/edit/delete)
MenuEditor->>TRPC API: CRUD mutations for menu/options/choices
TRPC API->>Database: Update menu/option/choice tables
Database-->>TRPC API: Return updated data
TRPC API-->>MenuEditor: Refresh UI
Admin->>AdminFoodPage: Export orders to Excel
AdminFoodPage->>TRPC API: Fetch orders for export
TRPC API->>Database: Query orders
Database-->>TRPC API: Return orders
TRPC API-->>AdminFoodPage: Generate/download Excel file
Loading

Cron Job Order Email Flow

sequenceDiagram
participant Vercel Cron
participant /api/cron/food_orders
participant Database
participant EmailService
Vercel Cron->>/api/cron/food_orders: Trigger GET request (daily)
/api/cron/food_orders->>Database: Fetch today's pending orders
Database-->>/api/cron/food_orders: Return orders grouped by restaurant
/api/cron/food_orders->>EmailService: Send summary email to each restaurant
EmailService-->>/api/cron/food_orders: Confirm email sent
/api/cron/food_orders-->>Vercel Cron: Respond with success JSON
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Poem

🥕
A feast of code, a banquet spread,
With menus, orders, and cron jobs fed.
From schema roots to UI bloom,
Rabbits hop through every room.
Orders confirmed, Excel in hand—
Lunch is served across the land!
🐇🍔

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c90d081 and ecea18c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .env.example (1 hunks)
  • package.json (1 hunks)
  • prisma/schema.prisma (3 hunks)
  • src/app/(authenticated)/admin/food/_components/menu-editor.tsx (1 hunks)
  • src/app/(authenticated)/admin/food/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (2 hunks)
  • src/app/(authenticated)/dashboard/page.tsx (5 hunks)
  • src/app/(authenticated)/food/page.tsx (1 hunks)
  • src/app/(authenticated)/layout.tsx (3 hunks)
  • src/app/api/chat/route.ts (2 hunks)
  • src/app/api/cron/food_orders/route.ts (1 hunks)
  • src/app/api/cron/route.ts (0 hunks)
  • src/components/main-nav.tsx (2 hunks)
  • src/components/ui/date-picker.tsx (1 hunks)
  • src/const/routes.ts (2 hunks)
  • src/lib/mail/html-mock.ts (1 hunks)
  • src/schemas/food-order.schema.ts (1 hunks)
  • src/schemas/menu-item-option-choice.schema.ts (1 hunks)
  • src/schemas/menu-item-option.schema.ts (1 hunks)
  • src/schemas/menu-item.schema.ts (1 hunks)
  • src/schemas/restaurant.schema.ts (1 hunks)
  • src/server/api/root.ts (2 hunks)
  • src/server/api/routers/food-order.ts (1 hunks)
  • src/server/api/routers/menu-item-option-choice.ts (1 hunks)
  • src/server/api/routers/menu-item-option.ts (1 hunks)
  • src/server/api/routers/menu-item.ts (1 hunks)
  • src/server/api/routers/order-log.ts (1 hunks)
  • src/server/api/routers/restaurant.ts (1 hunks)
  • vercel.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch al-mosso

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@GRHInvDev
GRHInvDev merged commit 74e849f into mainJul 31, 2025
3 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@GRHInvDev@jdalmeida
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Al mosso - #25

Merged
GRHInvDev merged 4 commits into
mainfrom
al-mosso
Jul 31, 2025
Merged

Al mosso#25
GRHInvDev merged 4 commits into
mainfrom
al-mosso

Conversation

@GRHInvDev

@GRHInvDevGRHInvDev commented Jul 31, 2025

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive food ordering system, including restaurant and menu management, order placement, and order tracking.
    • Added user and admin interfaces for managing restaurants, menus, and orders, with Excel import/export support.
    • Implemented daily automated email summaries of orders to restaurants.
    • Added payroll-friendly order log exports and monthly aggregation for HR purposes.
    • Included a new date picker component for improved date selection.
  • Bug Fixes

    • Navigation and dashboard links now dynamically reflect user roles for accurate access and visibility.
  • Chores

    • Added new environment variable placeholders for authentication, file uploads, mail server, and order deadlines.
    • Updated dependencies to include Excel file handling.
  • Documentation

    • Provided validation schemas for all new food ordering-related entities.
  • Refactor

    • Navigation logic and route generation now fully support role-based access and dynamic rendering.

…ante, MenuItem, MenuItemOption, MenuItemOptionChoice e FoodOrder no schema do Prisma. Atualiza a lógica de rotas e componentes para integrar a nova funcionalidade de pedidos. Adiciona mock de e-mails para confirmação de pedidos de comida.
…cel no MenuEditor, permitindo que os usuários exportem itens do cardápio e importem novos pratos a partir de arquivos Excel. Atualiza a lógica de criação de pratos para incluir feedback de sucesso e erro. Também ajusta a exibição de pedidos para incluir opções selecionadas no mock de e-mails.
…Comida" para "Almoços" e ajustando a descrição correspondente. Implementa a lógica de agrupamento de pedidos por usuário, permitindo a exportação de um resumo detalhado dos pedidos em Excel. Adiciona estados para gerenciar diálogos de adição e edição de itens de menu, além de melhorias na manipulação de opções e escolhas de pratos.
…adthing, além de incluir a configuração do horário limite para pedidos de comida. Atualiza o schema do Prisma para incluir o dia da semana nos itens do menu e ajusta a lógica de seleção de pratos na página de pedidos, permitindo a filtragem por dia da semana.
@vercel

vercelBot commented Jul 31, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for Git ↗︎

NameStatusPreviewCommentsUpdated (UTC)
elo✅ Ready (Inspect)Visit Preview💬 Add feedbackJul 31, 2025 11:53am

@GRHInvDev
GRHInvDev requested a review from jdalmeidaJuly 31, 2025 11:53
@coderabbitai

coderabbitaiBot commented Jul 31, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

This update introduces a comprehensive food ordering system, including database schema expansions, new API routers, validation schemas, and full-stack React components for both user-facing and admin interfaces. It adds cron job automation for daily order processing, Excel import/export, and role-based navigation adjustments. Supporting configuration and dependency files are updated accordingly.

Changes

Cohort / File(s)Change Summary
Environment & Config
.env.example, vercel.json, package.json
Added new environment variable placeholders for authentication, file uploads, mail server, and food order deadline. Introduced a Vercel cron job to trigger daily food order processing. Added the xlsx dependency for Excel file support.
Database Schema
prisma/schema.prisma
Extended schema for food ordering: added models for Restaurant, MenuItem, MenuItemOption, MenuItemOptionChoice, FoodOrder, OrderOptionSelection, OrderLog, and new user role "TOTEM". Defined relations, constraints, enums, and timestamps for robust data integrity.
Validation Schemas
src/schemas/food-order.schema.ts, src/schemas/menu-item.schema.ts, src/schemas/menu-item-option.schema.ts, src/schemas/menu-item-option-choice.schema.ts, src/schemas/restaurant.schema.ts
Introduced Zod schemas for validating restaurant, menu item, menu item option, option choice, and food order data structures, supporting create, update, and identification operations.
API Routers - Food Ordering
src/server/api/routers/restaurant.ts, src/server/api/routers/menu-item.ts, src/server/api/routers/menu-item-option.ts, src/server/api/routers/menu-item-option-choice.ts, src/server/api/routers/food-order.ts, src/server/api/routers/order-log.ts, src/server/api/root.ts
Added TRPC routers for restaurant, menu item, menu item option, option choice, food order, and order log management. Procedures include CRUD operations, listing, filtering, and aggregation for both user and admin roles. Integrated new routers into the main API root.
API - Cron & Email
src/app/api/cron/food_orders/route.ts, src/app/api/cron/route.ts, src/lib/mail/html-mock.ts
Added a new API route for daily cron job to process and email grouped food orders to restaurants. Deleted obsolete cron job route for events and vehicle availability. Introduced HTML email template generators for order confirmation and restaurant summaries.
Admin UI - Food Ordering
src/app/(authenticated)/admin/food/page.tsx, src/app/(authenticated)/admin/food/_components/menu-editor.tsx
Added React admin page and menu editor for managing restaurants, menu items, options, option choices, and viewing/exporting orders. Features CRUD dialogs, Excel import/export, and tabbed UI for orders, restaurants, and menu management.
User UI - Food Ordering
src/app/(authenticated)/food/page.tsx
Added user-facing React page for food ordering, with stepper flow for restaurant and menu selection, option choices, order confirmation, deadline handling, order history, and cancellation.
UI Components
src/components/ui/date-picker.tsx
Introduced a reusable DatePicker component for date selection in the UI.
Navigation & Role-Based Routing
src/const/routes.ts, src/components/main-nav.tsx, src/app/(authenticated)/layout.tsx, src/app/(authenticated)/dashboard/page.tsx, src/app/(authenticated)/admin/page.tsx, src/app/api/chat/route.ts
Changed static route array to a function returning routes based on user role, added "Almoços" (food ordering) route, updated navigation components and layouts to use role-based routing, and adjusted dashboard/admin pages to reflect food ordering features. Updated chat API route to use role-specific navigation data.

Sequence Diagram(s)

User Food Order Flow

sequenceDiagram
participant User
participant FoodPage (React)
participant TRPC API
participant Database
User->>FoodPage (React): Visit food ordering page
FoodPage->>TRPC API: Fetch active restaurants
TRPC API->>Database: Query active restaurants
Database-->>TRPC API: Return restaurants
TRPC API-->>FoodPage (React): Return restaurants
User->>FoodPage (React): Select restaurant & menu item
FoodPage->>TRPC API: Fetch menu items for restaurant/date
TRPC API->>Database: Query menu items (filter by weekday)
Database-->>TRPC API: Return menu items
TRPC API-->>FoodPage (React): Return menu items
User->>FoodPage (React): Select options & confirm order
FoodPage->>TRPC API: Create food order mutation
TRPC API->>Database: Insert order, validate constraints
Database-->>TRPC API: Return order
TRPC API-->>FoodPage (React): Return confirmation
User->>FoodPage (React): View/cancel existing orders
FoodPage->>TRPC API: Query/cancel order
TRPC API->>Database: Fetch/delete order
Database-->>TRPC API: Return result
TRPC API-->>FoodPage (React): Update UI
Loading

Admin Food Order Management Flow

sequenceDiagram
participant Admin
participant AdminFoodPage/MenuEditor (React)
participant TRPC API
participant Database
Admin->>AdminFoodPage/MenuEditor: Open admin food page
AdminFoodPage->>TRPC API: Fetch restaurants, orders
TRPC API->>Database: Query restaurants/orders
Database-->>TRPC API: Return data
TRPC API-->>AdminFoodPage: Display orders/restaurants
Admin->>MenuEditor: Manage menu (add/edit/delete)
MenuEditor->>TRPC API: CRUD mutations for menu/options/choices
TRPC API->>Database: Update menu/option/choice tables
Database-->>TRPC API: Return updated data
TRPC API-->>MenuEditor: Refresh UI
Admin->>AdminFoodPage: Export orders to Excel
AdminFoodPage->>TRPC API: Fetch orders for export
TRPC API->>Database: Query orders
Database-->>TRPC API: Return orders
TRPC API-->>AdminFoodPage: Generate/download Excel file
Loading

Cron Job Order Email Flow

sequenceDiagram
participant Vercel Cron
participant /api/cron/food_orders
participant Database
participant EmailService
Vercel Cron->>/api/cron/food_orders: Trigger GET request (daily)
/api/cron/food_orders->>Database: Fetch today's pending orders
Database-->>/api/cron/food_orders: Return orders grouped by restaurant
/api/cron/food_orders->>EmailService: Send summary email to each restaurant
EmailService-->>/api/cron/food_orders: Confirm email sent
/api/cron/food_orders-->>Vercel Cron: Respond with success JSON
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Poem

🥕
A feast of code, a banquet spread,
With menus, orders, and cron jobs fed.
From schema roots to UI bloom,
Rabbits hop through every room.
Orders confirmed, Excel in hand—
Lunch is served across the land!
🐇🍔

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c90d081 and ecea18c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (29)
  • .env.example (1 hunks)
  • package.json (1 hunks)
  • prisma/schema.prisma (3 hunks)
  • src/app/(authenticated)/admin/food/_components/menu-editor.tsx (1 hunks)
  • src/app/(authenticated)/admin/food/page.tsx (1 hunks)
  • src/app/(authenticated)/admin/page.tsx (2 hunks)
  • src/app/(authenticated)/dashboard/page.tsx (5 hunks)
  • src/app/(authenticated)/food/page.tsx (1 hunks)
  • src/app/(authenticated)/layout.tsx (3 hunks)
  • src/app/api/chat/route.ts (2 hunks)
  • src/app/api/cron/food_orders/route.ts (1 hunks)
  • src/app/api/cron/route.ts (0 hunks)
  • src/components/main-nav.tsx (2 hunks)
  • src/components/ui/date-picker.tsx (1 hunks)
  • src/const/routes.ts (2 hunks)
  • src/lib/mail/html-mock.ts (1 hunks)
  • src/schemas/food-order.schema.ts (1 hunks)
  • src/schemas/menu-item-option-choice.schema.ts (1 hunks)
  • src/schemas/menu-item-option.schema.ts (1 hunks)
  • src/schemas/menu-item.schema.ts (1 hunks)
  • src/schemas/restaurant.schema.ts (1 hunks)
  • src/server/api/root.ts (2 hunks)
  • src/server/api/routers/food-order.ts (1 hunks)
  • src/server/api/routers/menu-item-option-choice.ts (1 hunks)
  • src/server/api/routers/menu-item-option.ts (1 hunks)
  • src/server/api/routers/menu-item.ts (1 hunks)
  • src/server/api/routers/order-log.ts (1 hunks)
  • src/server/api/routers/restaurant.ts (1 hunks)
  • vercel.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch al-mosso

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@GRHInvDev
GRHInvDev merged commit 74e849f into mainJul 31, 2025
3 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@GRHInvDev@jdalmeida