Files
app/REVIEW.md
BOHA 674b44d047 feat(odin): Phase 2a read-only agentic assistant + tool-trace UI
- agentic chat loop (max 6 round-trips, budget re-checked between iterations)
  over 10 read-only, permission-delegated tools in src/services/ai-tools.ts
- persist assistant tool trace in ai_chat_messages.content_json (+ migration)
- consulted-tools chips in OdinThread; header now shows month spend only
  (budget cap hidden from the UI, server-side 402 guard unchanged)
- seed: ai.use permission; Settings exposes the ai permission module
- docs: REVIEW consolidation; deployment-guide.md superseded by docs/release.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 23:31:50 +02:00

12 KiB

Codebase Audit Checklist

Date: 2026-06-09 | Total files: 304 | Scope: full project (source + config). Excluded: docs/.md, prisma/migrations/.sql (generated SQL), package-lock.json, binaries.

(root)

  • .env.example
  • .gitignore
  • .prettierignore
  • .prettierrc.json
  • boneyard.config.json
  • CLAUDE.md
  • eslint.config.mjs
  • index.html
  • package.json
  • prisma.config.ts
  • tsconfig.app.json
  • tsconfig.json
  • tsconfig.server.json
  • tsconfig.test.json
  • vite.config.ts
  • vitest.config.ts

.claude

  • .claude/hooks/block-env.js
  • .claude/hooks/format-on-save.js
  • .claude/settings.json
  • .claude/settings.local.json

prisma

  • prisma/seed.ts
  • prisma/schema.prisma

scripts

  • scripts/check-roles.mjs
  • scripts/migrate-received-invoices-to-nas.ts
  • scripts/rotate-totp-key.ts
  • scripts/seed-test-users.mjs

src/tests

  • src/tests/ai.test.ts
  • src/tests/auth.service.test.ts
  • src/tests/auth.test.ts
  • src/tests/bank-accounts.test.ts
  • src/tests/company-settings-numbering.test.ts
  • src/tests/customers.schema.test.ts
  • src/tests/drafts-aggregation.test.ts
  • src/tests/drafts-deferred-numbering.test.ts
  • src/tests/env.test.ts
  • src/tests/exchange-rates.test.ts
  • src/tests/helpers.ts
  • src/tests/invoices.service.test.ts
  • src/tests/issued-orders.test.ts
  • src/tests/manual-create.test.ts
  • src/tests/nas-document-manager.test.ts
  • src/tests/nas-file-manager.test.ts
  • src/tests/nas-project-folder.test.ts
  • src/tests/numbering.test.ts
  • src/tests/offer-invoice-totals.test.ts
  • src/tests/orders-list.test.ts
  • src/tests/order-totals.test.ts
  • src/tests/plan.test.ts
  • src/tests/planAuditDescription.test.ts
  • src/tests/planCategory.test.ts
  • src/tests/received-invoices-vat.test.ts
  • src/tests/setup.ts
  • src/tests/schema-nan.test.ts
  • src/tests/warehouse.test.ts

src/admin (AdminApp.tsx)

  • src/admin/AdminApp.tsx

src/admin (components)

  • src/admin/components/AlertContainer.tsx
  • src/admin/components/AttendanceShiftTable.tsx
  • src/admin/components/BulkAttendanceModal.tsx
  • src/admin/components/BulkPlanModal.tsx
  • src/admin/components/dashboard/DashActivityFeed.tsx
  • src/admin/components/dashboard/DashAttendanceToday.tsx
  • src/admin/components/dashboard/DashKpiCards.tsx
  • src/admin/components/dashboard/DashProfile.tsx
  • src/admin/components/dashboard/DashQuickActions.tsx
  • src/admin/components/dashboard/DashSessions.tsx
  • src/admin/components/dashboard/DashTodayPlan.tsx
  • src/admin/components/ErrorBoundary.tsx
  • src/admin/components/Forbidden.tsx
  • src/admin/components/odin/InvoiceReviewCard.tsx
  • src/admin/components/odin/OdinComposer.tsx
  • src/admin/components/odin/OdinChat.tsx
  • src/admin/components/odin/OdinMark.tsx
  • src/admin/components/odin/OdinSidebar.tsx
  • src/admin/components/odin/OdinThread.tsx
  • src/admin/components/odin/types.ts
  • src/admin/components/OrderConfirmationModal.tsx
  • src/admin/components/PlanCategoriesModal.tsx
  • src/admin/components/PlanCellModal.tsx
  • src/admin/components/PlanGrid.tsx
  • src/admin/components/PlanRangeChips.tsx
  • src/admin/components/ProjectFileManager.tsx
  • src/admin/components/RichEditor.tsx
  • src/admin/components/ShiftFormModal.tsx
  • src/admin/components/ShortcutsHelp.tsx
  • src/admin/components/warehouse/ItemPicker.tsx
  • src/admin/components/warehouse/ReservationPicker.tsx

src/admin (context)

  • src/admin/context/AlertContext.tsx
  • src/admin/context/AuthContext.tsx

src/admin (GlobalStyles.tsx)

  • src/admin/GlobalStyles.tsx

src/admin (hooks)

  • src/admin/hooks/useAttendanceAdmin.ts
  • src/admin/hooks/useDebounce.ts
  • src/admin/hooks/useModalLock.ts
  • src/admin/hooks/usePaginatedQuery.ts
  • src/admin/hooks/usePlanWork.ts
  • src/admin/hooks/useReducedMotion.ts
  • src/admin/hooks/useTableSort.ts

src/admin (lib)

  • src/admin/lib/apiAdapter.ts
  • src/admin/lib/documentStatus.ts
  • src/admin/lib/entityTypeLabels.ts
  • src/admin/lib/queries/ai.ts
  • src/admin/lib/queries/attendance.ts
  • src/admin/lib/queries/auditLog.ts
  • src/admin/lib/queries/common.ts
  • src/admin/lib/queries/dashboard.ts
  • src/admin/lib/queries/invoices.ts
  • src/admin/lib/queries/issued-orders.ts
  • src/admin/lib/queries/leave.ts
  • src/admin/lib/queries/mutations.ts
  • src/admin/lib/queries/offers.ts
  • src/admin/lib/queries/orders.ts
  • src/admin/lib/queries/plan.ts
  • src/admin/lib/queries/projects.ts
  • src/admin/lib/queries/settings.ts
  • src/admin/lib/queries/trips.ts
  • src/admin/lib/queries/users.ts
  • src/admin/lib/queries/vehicles.ts
  • src/admin/lib/queries/warehouse.ts
  • src/admin/lib/queryClient.ts

src/admin (pages)

  • src/admin/pages/Attendance.tsx
  • src/admin/pages/AttendanceAdmin.tsx
  • src/admin/pages/AttendanceBalances.tsx
  • src/admin/pages/AttendanceCreate.tsx
  • src/admin/pages/AttendanceHistory.tsx
  • src/admin/pages/AttendanceLocation.tsx
  • src/admin/pages/AuditLog.tsx
  • src/admin/pages/CompanySettings.tsx
  • src/admin/pages/Dashboard.tsx
  • src/admin/pages/InvoiceDetail.tsx
  • src/admin/pages/Invoices.tsx
  • src/admin/pages/IssuedOrderDetail.tsx
  • src/admin/pages/IssuedOrders.tsx
  • src/admin/pages/LeaveApproval.tsx
  • src/admin/pages/LeaveRequests.tsx
  • src/admin/pages/Login.tsx
  • src/admin/pages/NotFound.tsx
  • src/admin/pages/Odin.tsx
  • src/admin/pages/OfferDetail.tsx
  • src/admin/pages/Offers.tsx
  • src/admin/pages/OffersCustomers.tsx
  • src/admin/pages/OffersTemplates.tsx
  • src/admin/pages/OrderDetail.tsx
  • src/admin/pages/Orders.tsx
  • src/admin/pages/PlanWork.tsx
  • src/admin/pages/ProjectDetail.tsx
  • src/admin/pages/Projects.tsx
  • src/admin/pages/ReceivedInvoices.tsx
  • src/admin/pages/ReceivedOrders.tsx
  • src/admin/pages/Settings.tsx
  • src/admin/pages/Trips.tsx
  • src/admin/pages/TripsAdmin.tsx
  • src/admin/pages/TripsHistory.tsx
  • src/admin/pages/UiKit.tsx
  • src/admin/pages/Users.tsx
  • src/admin/pages/Vehicles.tsx
  • src/admin/pages/Warehouse.tsx
  • src/admin/pages/WarehouseCategories.tsx
  • src/admin/pages/WarehouseInventory.tsx
  • src/admin/pages/WarehouseInventoryDetail.tsx
  • src/admin/pages/WarehouseInventoryForm.tsx
  • src/admin/pages/WarehouseIssueDetail.tsx
  • src/admin/pages/WarehouseIssueForm.tsx
  • src/admin/pages/WarehouseIssues.tsx
  • src/admin/pages/WarehouseItemDetail.tsx
  • src/admin/pages/WarehouseItems.tsx
  • src/admin/pages/WarehouseLocations.tsx
  • src/admin/pages/WarehouseReceiptDetail.tsx
  • src/admin/pages/WarehouseReceiptForm.tsx
  • src/admin/pages/WarehouseReceipts.tsx
  • src/admin/pages/WarehouseReports.tsx
  • src/admin/pages/WarehouseReservations.tsx
  • src/admin/pages/WarehouseSuppliers.tsx

src/admin (theme.test.ts)

  • src/admin/theme.test.ts

src/admin (theme.ts)

  • src/admin/theme.ts

src/admin (ui)

  • src/admin/ui/Alert.tsx
  • src/admin/ui/AppShell.tsx
  • src/admin/ui/Button.tsx
  • src/admin/ui/Card.tsx
  • src/admin/ui/ConfirmDialog.tsx
  • src/admin/ui/CustomerPicker.tsx
  • src/admin/ui/DataTable.tsx
  • src/admin/ui/DateField.tsx
  • src/admin/ui/EmptyState.tsx
  • src/admin/ui/Field.tsx
  • src/admin/ui/FileUpload.tsx
  • src/admin/ui/FilterBar.tsx
  • src/admin/ui/Checkbox.tsx
  • src/admin/ui/index.ts
  • src/admin/ui/LoadingState.tsx
  • src/admin/ui/Modal.tsx
  • src/admin/ui/MonthField.tsx
  • src/admin/ui/MuiProvider.tsx
  • src/admin/ui/navData.tsx
  • src/admin/ui/PageEnter.tsx
  • src/admin/ui/PageHeader.tsx
  • src/admin/ui/Pagination.tsx
  • src/admin/ui/ProgressBar.tsx
  • src/admin/ui/RichText.tsx
  • src/admin/ui/Select.tsx
  • src/admin/ui/SidebarNav.tsx
  • src/admin/ui/StatCard.tsx
  • src/admin/ui/StatusChip.tsx
  • src/admin/ui/Tabs.tsx
  • src/admin/ui/TextField.tsx
  • src/admin/ui/ThemeToggle.tsx
  • src/admin/ui/TimeField.tsx
  • src/admin/ui/useDialogScrollLock.ts

src/admin (utils)

  • src/admin/utils/api.ts
  • src/admin/utils/attendanceHelpers.ts
  • src/admin/utils/dashboardHelpers.ts
  • src/admin/utils/formatters.ts

src/App.tsx

  • src/App.tsx

src/config

  • src/config/database.ts
  • src/config/env.ts

src/context

  • src/context/ThemeContext.tsx

src/main.tsx

  • src/main.tsx

src/middleware

  • src/middleware/auth.ts
  • src/middleware/security.ts

src/routes

  • src/routes/admin/ai.ts
  • src/routes/admin/attendance.ts
  • src/routes/admin/audit-log.ts
  • src/routes/admin/auth.ts
  • src/routes/admin/bank-accounts.ts
  • src/routes/admin/company-settings.ts
  • src/routes/admin/customers.ts
  • src/routes/admin/dashboard.ts
  • src/routes/admin/invoices.ts
  • src/routes/admin/invoices-pdf.ts
  • src/routes/admin/issued-orders.ts
  • src/routes/admin/issued-orders-pdf.ts
  • src/routes/admin/leave-requests.ts
  • src/routes/admin/offers-pdf.ts
  • src/routes/admin/orders.ts
  • src/routes/admin/orders-pdf.ts
  • src/routes/admin/plan.ts
  • src/routes/admin/profile.ts
  • src/routes/admin/project-files.ts
  • src/routes/admin/projects.ts
  • src/routes/admin/quotations.ts
  • src/routes/admin/received-invoices.ts
  • src/routes/admin/roles.ts
  • src/routes/admin/scope-templates.ts
  • src/routes/admin/sessions.ts
  • src/routes/admin/totp.ts
  • src/routes/admin/trips.ts
  • src/routes/admin/users.ts
  • src/routes/admin/vehicles.ts
  • src/routes/admin/warehouse.ts

src/server.ts

  • src/server.ts

src/services

  • src/services/ai.service.ts
  • src/services/attendance.service.ts
  • src/services/audit.ts
  • src/services/auth.ts
  • src/services/exchange-rates.ts
  • src/services/invoice-alerts.ts
  • src/services/invoices.service.ts
  • src/services/issued-orders.service.ts
  • src/services/leave-notification.ts
  • src/services/mailer.ts
  • src/services/nas-file-manager.ts
  • src/services/nas-financials-manager.ts
  • src/services/nas-offers-manager.ts
  • src/services/numbering.service.ts
  • src/services/offers.service.ts
  • src/services/orders.service.ts
  • src/services/plan.service.ts
  • src/services/planCategory.service.ts
  • src/services/projects.service.ts
  • src/services/system-settings.ts
  • src/services/users.service.ts
  • src/services/warehouse.service.ts

src/schemas

  • src/schemas/ai.schema.ts
  • src/schemas/attendance.schema.ts
  • src/schemas/auth.schema.ts
  • src/schemas/bank-accounts.schema.ts
  • src/schemas/common.ts
  • src/schemas/customers.schema.ts
  • src/schemas/invoices.schema.ts
  • src/schemas/issued-orders.schema.ts
  • src/schemas/leave-requests.schema.ts
  • src/schemas/offers.schema.ts
  • src/schemas/orders.schema.ts
  • src/schemas/plan.schema.ts
  • src/schemas/planCategory.schema.ts
  • src/schemas/profile.schema.ts
  • src/schemas/projects.schema.ts
  • src/schemas/received-invoices.schema.ts
  • src/schemas/roles.schema.ts
  • src/schemas/scope-templates.schema.ts
  • src/schemas/settings.schema.ts
  • src/schemas/trips.schema.ts
  • src/schemas/users.schema.ts
  • src/schemas/vehicles.schema.ts
  • src/schemas/warehouse.schema.ts

src/types

  • src/types/fastify.d.ts
  • src/types/index.ts

src/utils

  • src/utils/czech-holidays.ts
  • src/utils/date.ts
  • src/utils/encryption.ts
  • src/utils/html-to-pdf.ts
  • src/utils/pagination.ts
  • src/utils/planAuditDescription.ts
  • src/utils/response.ts
  • src/utils/totp.ts

src/vite-env.d.ts

  • src/vite-env.d.ts