Michael
d9859ff9e0
feat: add API route to fetch and format OpenRouter models with pricing data
2026-04-10 13:29:31 +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
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
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
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
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
Michael and Claude 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
Michael and Claude 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
b4ea795770
feat: add settings page with database configuration, API status monitoring, and theme toggling
2026-04-03 11:07:34 +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
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
4dfdcc1144
feat: implement infinite scrolling and background data loading for the product grid component
2026-04-02 17:47:10 +02:00
Michael
2893114fca
feat: implement infinite grid pagination with server-side data fetching and custom hook
2026-04-02 17:17:32 +02:00
Michael
7e4b370267
feat: implement PostgreSQL client for bulk data retrieval to replace per-article HTTP requests and configure Claude permissions
2026-04-02 16:31:11 +02:00
Michael and Claude Sonnet 4.6
868886db87
feat: hit-parade date range + fournisseur filter; fix create user button layout
...
- Replace month dropdown with date picker (Du/Au) + Appliquer button
- Add fournisseur filter dropdown (client-side, all suppliers from current data)
- Totals update live when fournisseur filter changes
- SQL: use BETWEEN date range instead of TO_CHAR month match
- Create user button: proper 3-col form layout so button stays on one line
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 13:42:25 +02:00
Michael and Claude Sonnet 4.6
05354a0e74
fix: restore apple-btn-primary style for create user button; guard Invalid Date on sync status
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 13:35:35 +02:00
Michael and Claude Sonnet 4.6
f52532343f
refactor: redesign Hit Parade table with color-coded site groups and reset sort button
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 13:11:19 +02:00
Michael and Claude Sonnet 4.6
7923861947
feat: add Hit Parade page — monthly product sales by store with sort by CA/qty
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 11:22:08 +02:00
Michael and Claude Sonnet 4.6
8b3ed4c435
chore: improve diag to check mntmvtht vs mntmvtttc totals and artfou1.preference distribution
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 09:40:28 +02:00
Michael and Claude Sonnet 4.6
63641e9de9
chore: add mvtart column diag to /api/diag, remove unused diag-mvtart
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 09:36:21 +02:00
Michael and Claude Sonnet 4.6
3e4b320cbe
chore: add diag-mvtart to inspect columns and CA totals
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 09:28:53 +02:00
Michael and Claude Sonnet 4.6
bc76237f48
feat: sort analytics by name (fournisseur) or code asc (nomenclature); show code in nomenclature label; remove diag-fournisseurs endpoint
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-01 08:42:21 +02:00
Michael
f0a360115f
chore: inspect fouident table for correct supplier names
2026-03-31 17:32:54 +02:00
Michael
67b0c8c74f
chore: inspect v_ca_fournisseur view structure
2026-03-31 13:52:22 +02:00
Michael
072479b30f
chore: fix diag-fournisseurs to inspect real fouadr1 column structure
2026-03-31 13:44:19 +02:00
Michael
09f80b35cb
chore: add diag-fournisseurs endpoint to investigate fouadr1 sit_code and naming
2026-03-31 13:40:08 +02:00
Michael and Claude Sonnet 4.6
cfd3a7e601
chore: remove temporary diag-supplier investigation endpoint
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 12:08:15 +02:00
Michael and Claude Sonnet 4.6
51adac0349
fix: attribute CA to supplier of last stock entry (dernière entrée en stock)
...
Previous approach (artfou1 DISTINCT ON no_id DESC) picked the most recent
artfou1 record, but artfou1 is a commercial reference table that may not
reflect actual current sourcing.
New approach: for each article, find the most recent reception movement
(genremvt IN (1,2)) in mvtart — this is the actual last delivery. Join
artfou1 to get the supplier code (ORDER BY datmvt DESC, af.no_id DESC to
break ties). This correctly attributes CA to whoever last physically
delivered the goods, not to a historical commercial reference.
Articles with no reception history are excluded (no INNER JOIN fallback
needed as all sold articles must have been received at least once).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 12:05:38 +02:00
Michael and Claude Sonnet 4.6
3d77f6b879
chore: add diag-supplier endpoint for artfou1 supplier attribution investigation
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 11:08:23 +02:00
Michael and Claude Sonnet 4.6
7e8b50e143
fix: remove function prop, unused import and useSearchParams in analytics
...
- page.tsx: move formatCA into client component (functions not serializable
across server→client boundary in Next.js — root cause of 500)
- client.tsx: remove unused BarChart2 import
- client.tsx: replace useSearchParams() with direct URL construction to
avoid Suspense boundary requirement
- pg-ff-client: use OR conditions instead of IN() for Drizzle compatibility
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-31 10:32:21 +02:00