100 Commits
Author SHA1 Message Date
Michael cd7b87aef8 feat: date de derniere entree en stock par magasin dans le tooltip des badges 2026-05-26 15:57:16 +02:00
Michael 989307bf2f docs: finalize task.md for grid loading overlay feature 2026-05-26 14:00:25 +02:00
Michael 1b5c260813 feat(grid): add premium semi-blocking glassmorphism loading overlay with real-time stream progression 2026-05-26 14:00:16 +02:00
Michael 475ba230b0 docs: finalize task.md for grid store performance optimizations 2026-05-26 13:54:06 +02:00
Michael d75102fb18 perf(grid): optimize state store with O(1) row indexing and debounced summary calculations 2026-05-26 13:53:51 +02:00
Michael 8f2c4c77ba docs: finalize task.md for grid streaming feature 2026-05-26 13:31:38 +02:00
Michael e6f40d3d81 feat(grid): implement product streaming with JSON chunks for grid client 2026-05-26 13:31:26 +02:00
MichaelandClaude Sonnet 4.6 8809819658 fix: update package-lock.json with xlsx dependency for Docker build
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 10:15:53 +02:00
MichaelandClaude Sonnet 4.6 b67da87b3e feat: add Excel export button to hit parade page
Exports the currently filtered and sorted table (including totals row) to an .xlsx file named with the selected date range. Uses the xlsx library.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 10:14:52 +02:00
Michael 422d4108ae feat: implement admin AI chat interface with markdown support and token cost tracking 2026-04-29 11:44:17 +02:00
Michael e1d79e66ed feat: implement client-side dashboard for publicites with filtering, sorting, and pagination views 2026-04-24 13:22:16 +02:00
Michael 26ba285c0e feat: implement bulk PostgreSQL client for FF Nancy data retrieval and configure local environment permissions 2026-04-24 12:09:17 +02:00
Michael 0ad403651d feat: implement pg-ff-client for direct SQL bulk data retrieval and add .claude permission settings 2026-04-24 11:57:26 +02:00
Michael a1579de6d7 feat: implement direct PostgreSQL bulk queries for FF Nancy data fetching to replace per-article HTTP requests 2026-04-24 11:25:42 +02:00
Michael f448f4f624 feat: implement PostgreSQL FF Nancy client to replace per-article HTTP API calls with bulk SQL queries 2026-04-24 11:10:19 +02:00
Michael df1d059952 feat: implement API clients for Nancy FF data sync and add local configuration settings 2026-04-24 10:43:32 +02:00
Michael a06d7cd7e8 feat: create API client for FF Nancy REST API to synchronize supplier, article, and movement data 2026-04-24 10:22:05 +02:00
Michael 5a3ac3ed7f feat: implement high-performance PostgreSQL bulk fetchers to replace per-article HTTP API calls 2026-04-23 11:26:15 +02:00
Michael 038e87f554 feat: introduce PostgreSQL client module to replace per-article HTTP requests with bulk SQL queries 2026-04-23 11:11:23 +02:00
Michael c7d5bbe3b1 feat: implement PostgreSQL client for bulk data retrieval to replace HTTP per-article requests 2026-04-23 10:56:45 +02:00
Michael b337d1ff10 feat: add pg-ff-client to replace HTTP API calls with direct PostgreSQL bulk queries 2026-04-23 10:51:43 +02:00
Michael 79bc66f4d5 Please provide the list of changes or file diffs so I can generate the commit message for you. 2026-04-23 10:48:09 +02:00
Michael db90ed6e41 feat: implement PostgreSQL FF Nancy client to replace per-article HTTP API calls with bulk SQL queries 2026-04-23 10:43:30 +02:00
Michael 94018fa885 feat: implement bulk PostgreSQL data fetching client to replace per-article HTTP requests 2026-04-23 10:38:47 +02:00
Michael bd8339b27d feat: add pg-ff-client to replace HTTP API calls with bulk PostgreSQL queries 2026-04-23 10:36:37 +02:00
Michael 32c1e06782 feat: implement PostgreSQL-based bulk fetching for article and sales data to replace HTTP API calls 2026-04-23 10:32:29 +02:00
MichaelandClaude Opus 4.7 64da878abb fix: remove deprecated eslint config and make dashboard DB enrichment optional
- Remove unsupported `eslint` key from next.config.ts (Next.js 16)
- Wrap dashboard DB enrichment in try/catch so the dashboard renders
  even when PostgreSQL is unavailable, preventing the
  "Impossible de charger le tableau de bord" error

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-23 10:25:45 +02:00
MichaelandClaude Opus 4.7 42e39a1c2b feat: add stock and supplier info to dashboard top 10 cards
Enrich DashboardTopItem with stock and fournisseur fields via PostgreSQL,
then display them under each article in the dashboard top CA/Qte/Marge tables.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-23 10:10:52 +02:00
MichaelandClaude Sonnet 4.6 fedfbadc35 fix: use derniere_vente instead of derniere_entree in Excel export of 6-month tab
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 13:37:31 +02:00
MichaelandClaude Sonnet 4.6 dbf2164880 fix: align Excel export format of "Sans vente 6 mois" with "Entrées sans vente"
Columns: CODEIN | GENCODE (empty) | QTE | CODMV (412) | Dernière entrée

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 13:35:55 +02:00
MichaelandClaude Sonnet 4.6 9a9b881d19 feat: add derniere_entree column and filter recent stock entries on 6-month tab
- Exclude products with a stock entry in the last 6 months (NOT EXISTS subquery)
- Add derniere_entree subquery to SQL (last genremvt 1/2 movement date)
- Display derniere_entree column in table and Excel export

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 13:25:17 +02:00
MichaelandClaude Sonnet 4.6 71241fe0e6 feat: add "Sans vente 6 mois" tab to Gestion de Stock page
New SQL query pgGetSansVente6Mois returns products with available
stock (qte > 0) whose last sale was over 6 months ago or never.
Third tab added with filtering by supplier, search, sort, and Excel export.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 13:17:56 +02:00
MichaelandClaude Sonnet 4.6 dc16beeda4 feat: add no-sales-6-months tab to stock management page
Adds a second tab "Sans vente 6 mois" on the grid page listing all
products with no sale in the last 6 months, sorted by oldest last
sale first. Resolves merge conflicts from upstream refactor.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 12:49:13 +02:00
Michael 6492f93bf4 feat: add NoSalesTab component to display products without sales in the last 6 months 2026-04-14 12:45:21 +02:00
Michael d955c17af2 feat: add probe for N/A suppliers to retrieve franco details in GET route 2026-04-13 15:47:14 +02:00
Michael 33ff92aec0 feat: add commandes-auto audit with franco_ht filtering to GET route 2026-04-13 15:43:37 +02:00
Michael 2cbf8a753a feat: add foucad sample retrieval and columns to franco diagnostic 2026-04-13 15:40:56 +02:00
Michael 457903a611 feat: add franco diagnostic and raw commandes-auto retrieval in GET route 2026-04-13 15:34:26 +02:00
Michael 462eef182e feat: enhance FrancoCell logic and add mapping function for PgCommandeAutoRow 2026-04-13 15:31:25 +02:00
Michael fdc2d0ed39 feat: update Excel export headers and data formatting in stock management tabs 2026-04-13 11:27:45 +02:00
Michael 3027a8ab19 feat: add search functionality to stock management tabs 2026-04-13 11:06:42 +02:00
MichaelandClaude Sonnet 4.6 228c8ef20c feat: admin AI chat — FF Nancy API integration, Google AI support, markdown rendering
- Replace SQL tools with call_api tool hitting FF Nancy REST endpoints
- Add Google AI Studio provider support alongside OpenRouter
- Load AI provider config (openrouter/google) from saved settings
- Add model selector loaded dynamically from OpenRouter and Google AI APIs
- Add HTML-to-Markdown conversion for models that return HTML
- Enrich system prompt with full FF Nancy API docs, PA/PRMP field locations
- Fix streaming: single generateContentStream pass for Google AI (no double call)
- Increase max_tokens to 8192 and tool loop to 10 rounds

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 16:12:37 +02:00
Michael 8dd2394893 feat: implement admin AI chat route with SQL execution and database schema context 2026-04-10 16:03:00 +02:00
Michael 6e10364922 feat: implement admin AI chat API with SQL execution tools and database schema context 2026-04-10 15:44:59 +02:00
Michael 0c1d3c10bd feat: implement admin AI chat API with SQL execution and schema retrieval tools 2026-04-10 15:23:46 +02:00
Michael 4994d55ffc feat: implement admin AI chat route with SQL execution tools and multi-provider support 2026-04-10 15:16:34 +02:00
Michael ade120a9da feat: add settings page with database configuration, AI provider management, and FF API status tracking. 2026-04-10 15:05:51 +02:00
Michael d0ca0c3602 feat: implement database and AI provider configuration settings with Google GenAI integration 2026-04-10 15:00:47 +02:00
Michael 7372885e48 feat: implement AI chat interface with markdown support and model cost tracking 2026-04-10 13:55:56 +02:00
Michael 9f05eb9bc9 feat: implement admin AI chat API with SQL execution and database schema tools 2026-04-10 13:51:18 +02:00
Michael 6891aff668 feat: implement admin AI chat route with SQL execution and database schema access tools 2026-04-10 13:38:26 +02:00
Michael 63d89e5029 feat: add API endpoint to fetch and format OpenRouter models list 2026-04-10 13:35:54 +02:00
Michael d9859ff9e0 feat: add API route to fetch and format OpenRouter models with pricing data 2026-04-10 13:29:31 +02:00
Michael a2c4a065dd feat: add ExportDropdown component with Excel and PDF export functionality for grid data 2026-04-10 13:25:19 +02:00
Michael 78cdc608d0 feat: implement admin AI chat interface with model selection and real-time cost tracking 2026-04-10 13:23:35 +02:00
Michael f21f38f805 feat: add client-side component to display and filter automatic order data by site 2026-04-08 16:47:39 +02:00
Michael 910b0c96ef feat: add PostgreSQL client for bulk data retrieval and configure Claude permissions 2026-04-08 16:41:28 +02:00
Michael 638c4b5f3b feat: implement direct PostgreSQL data access and API proxy for automated orders 2026-04-08 16:37:42 +02:00
Michael 70c425befb feat: implement sidebar navigation and automated order management module with PostgreSQL client integration 2026-04-08 15:53:59 +02:00
Michael d25ffdb3e7 feat: implement pg-ff-client to replace per-article HTTP calls with bulk PostgreSQL queries 2026-04-08 12:14:18 +02:00
Michael ff81bc1fc4 feat: implement interactive stock negative and no-sales data table with filtering, sorting, and Excel export functionality 2026-04-08 09:59:14 +02:00
Michael 5a13640884 feat: implement pg-ff-client to replace per-article HTTP calls with bulk PostgreSQL queries 2026-04-07 17:36:27 +02:00
Michael e8fb472a9f feat: implement shared LoadingModal component and integrate into dashboard route loading states 2026-04-07 17:16:33 +02:00
Michael 2264ced494 feat: add client-side data table components for negative stock and stagnant inventory with sorting and Excel export capabilities 2026-04-07 16:56:57 +02:00
Michael ac1c9a5522 feat: implement collapsible sidebar, PostgreSQL client for bulk data fetching, and stock-negatif page 2026-04-07 16:51:52 +02:00
Michael d96995fce9 feat: implement PostgreSQL bulk data client to replace per-article HTTP requests 2026-04-07 16:15:19 +02:00
Michael a378bff7e2 feat: implement pg-ff-client to replace HTTP per-article requests with bulk SQL queries 2026-04-07 15:37:01 +02:00
Michael 7bf42dfc01 feat: implement direct PostgreSQL bulk querying for FF Nancy data to replace per-article HTTP requests 2026-04-07 15:33:01 +02:00
Michael 13414c970c feat: implement client-side interactive table for advertising data with filtering and sorting capabilities 2026-04-07 13:04:12 +02:00
Michael 480cf5c460 feat: add PublicitesClient component with filtering, sorting, and data visualization for advertising performance 2026-04-07 13:00:58 +02:00
Michael 5e6b1d354b feat: add PublicitesClient component for displaying and filtering advertising data by year 2026-04-07 12:45:20 +02:00
Michael acd30cfdea feat: implement authentication middleware and configure Claude project permissions 2026-04-07 12:31:58 +02:00
Michael b5bda8abf7 feat: add dashboard page for publicites data retrieval and display 2026-04-07 12:22:18 +02:00
Michael 2bd40ae876 feat: add PublicitesPage to display advertising data with year-based filtering 2026-04-07 11:09:54 +02:00
Michael 78495cb8b6 feat: add interactive HitParadeClient component with filtering, sorting, and date range controls 2026-04-07 10:15:29 +02:00
Michael f1b0a74c5f feat: add HitParadeClient component with filtering, sorting, and date selection capabilities 2026-04-07 09:28:10 +02:00
Michael f5b2083c42 feat: add HitParadeClient component with filtering, sorting, and date selection capabilities 2026-04-07 09:24:06 +02:00
Michael 9469738ef0 feat: implement hit-parade dashboard with interactive filtering, sorting, and data visualization components 2026-04-07 08:49:38 +02:00
Michael 2c02807493 feat: implement Hit Parade dashboard with PostgreSQL-backed data aggregation and pivot logic 2026-04-07 08:38:25 +02:00
Michael 788bf96006 feat: implement grid feature with server-side data fetching and product analytics dashboard 2026-04-07 08:21:22 +02:00
MichaelandClaude Sonnet 4.6 de46e056d2 fix: robustify suspended product filter using ::text cast
The previous ::boolean cast caused query failure when suspendu column
is not a native boolean type. Casting to ::text first handles all
column types (char, varchar, int, boolean).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 12:07:07 +02:00
MichaelandClaude Sonnet 4.6 a60e21eb04 fix: exclude suspended products from supplier grid
Add WHERE NOT COALESCE(af.suspendu::boolean, false) AND NOT COALESCE(a.suspendu::boolean, false)
to pgGetArticlesByFournisseur — products flagged as suspended in artfou1
or articles table are no longer shown in the grid.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 12:04:08 +02:00
MichaelandClaude Sonnet 4.6 6b26676836 feat: flag products whose last registered supplier differs from current view
Instead of unreliable preference=1, use artfou1.no_id DESC (most recently
added artfou1 entry) to identify the last supplier for each product.
Shows an amber warning icon in the Désignation column when the last
supplier ≠ current supplier view, with tooltip showing who to attribute
the sales to.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 11:55:42 +02:00
MichaelandClaude Sonnet 4.6 6ef23de317 feat: restrict AI analysis to admin role only
- FloatingSummaryBar: hide BulkAiAnalyzer button for non-admins
- AiInsightBlock: hide individual Analyser button for non-admins
- Both use useSession() to check role === "admin"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 11:43:48 +02:00
MichaelandClaude Sonnet 4.6 bbb04a4d2a fix: immediate AI loading feedback + auto-fallback for deprecated model
- BulkAiAnalyzer: set isAnalyzing=true immediately on click (before
  context fetch), so the spinner appears instantly instead of after
  1-2 seconds of silence
- analyze/route.ts: if configured model returns 400/404 (e.g., deprecated
  google/gemini-flash-1.5), automatically retry with google/gemini-2.0-flash-001
- batch-analyze/route.ts: same fallback logic

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 11:34:14 +02:00
MichaelandClaude Sonnet 4.6 2aa9cbecaa revert: restore grid to pre-infinite-scroll state
Remove infinite grid loading, useInfiniteGrid hook, and server-side
pagination API route. Revert grid components to the simpler version
that avoids 2MB+ cache failures from unstable_cache.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 11:26:13 +02:00
Michael bd21f07c8e feat: implement bulk PostgreSQL client to replace per-article HTTP API calls 2026-04-03 11:21:38 +02:00
Michael e90a567446 feat: implement bulk PostgreSQL data fetching client to replace per-article HTTP requests 2026-04-03 11:17:04 +02:00
Michael b4ea795770 feat: add settings page with database configuration, API status monitoring, and theme toggling 2026-04-03 11:07:34 +02:00
Michael ebd819bfa4 feat: implement PostgreSQL bulk data access client to replace per-article HTTP requests 2026-04-03 10:58:43 +02:00
Michael 83d101ddc1 feat: add interactive client component for Hit Parade data visualization with sorting, filtering, and date range controls 2026-04-03 10:46:09 +02:00
Michael 687009dba1 feat: add HitParadeClient component with filtering, sorting, and date selection capabilities 2026-04-03 07:46:43 +02:00
Michael e9e1fdd246 feat: implement PostgreSQL client for bulk data retrieval to replace per-article HTTP requests 2026-04-03 07:40:05 +02:00
Michael 5a506c750c feat: add pg-ff-client to replace per-article HTTP requests with bulk SQL queries 2026-04-03 07:19:45 +02:00
Michael 659019e722 feat: implement PostgreSQL-based bulk data retrieval client for FF Nancy to replace HTTP API calls 2026-04-03 07:14:56 +02:00
Michael a4debe992b feat: implement dashboard page and add loading skeletons for all dashboard modules 2026-04-03 07:12:15 +02:00
Michael b39e010903 feat: implement infinite grid loading with server-side pagination and client-side integration 2026-04-02 18:39:29 +02:00
Michael 49928e9c08 feat: implement useInfiniteGrid hook for paginated data fetching and state management 2026-04-02 17:53:09 +02:00
Michael 4dfdcc1144 feat: implement infinite scrolling and background data loading for the product grid component 2026-04-02 17:47:10 +02:00
Michael f70249555e feat: implement high-performance virtualized heatmap grid with granular Zustand state management 2026-04-02 17:36:42 +02:00