Commit Graph
68 Commits
Author SHA1 Message Date
bruno 707d1f274b Revert env_file path to .env (docker-compose/ is the correct location)
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-26 09:03:41 -04:00
bruno 0365f00eee Fix env_file path: .env → ../.env (compose subdirectory)
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-26 08:51:52 -04:00
bruno 73a5e401d2 Rewrite ai_vision.py: simplified single-call OpenRouter, no retries, 180s timeout
CI / Lint & Format (push) Failing after 12s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
v3 rewrite:
- _call_openrouter(): single HTTP call, never raises, always returns dict
- Removed Gemini SDK, _retry_with_backoff, _generate dispatcher
- Image resize (max 1024px JPEG) stays
- Detailed logging: ai.call.start → ai.call.response → ai.call.success/timeout
- All error paths return structured dicts, never propagate exceptions
2026-06-26 07:44:44 -04:00
bruno cd2a2efbd5 Increase AI timeout to 180s, disable retries (0) for slow vision models
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-25 23:11:47 -04:00
bruno 7cc2416411 Add AI connectivity check endpoint: GET /admin/api/ai/connectivity
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-25 23:00:20 -04:00
bruno 3711ce202f Resize images to max 1024px before AI analysis to prevent timeouts
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
Large images (10MB+ PNG) create huge base64 payloads that cause
OpenRouter/Gemini API timeouts. Now resized to 1024px JPEG quality 85
before sending, reducing payload from ~15MB to ~100KB.
2026-06-25 22:41:08 -04:00
bruno 317c73407e Fix dropdown menu: use React portal to render outside table overflow
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
- createPortal renders menu at document.body level, bypassing all
  parent overflow/scroll containers
- Fixed positioning calculated from button's getBoundingClientRect()
- menuButtonRefs map ensures correct position per row
2026-06-25 22:13:11 -04:00
bruno 009e42b3e2 Fix dropdown menu clipping: remove overflow-hidden from clients table card
CI / Lint & Format (push) Failing after 12s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-25 21:57:05 -04:00
bruno 5654961642 Improved AI error diagnostics: detailed timeout logging per attempt
CI / Lint & Format (push) Failing after 10s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
- _generate_openrouter: log request start, response time, timeout details
  with httpx.Timeout (connect=15s, rest=AI_REQUEST_TIMEOUT)
- All AI functions: log error_type (exception class name) + truncated error
- _retry_with_backoff: log each attempt with wait time
- Clean rewrite of ai_vision.py
2026-06-25 16:29:18 -04:00
bruno eda4faeb78 Pipeline resilience: try/finally + startup recovery for stuck images
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
- process_image_pipeline: wrapped in try/finally to guarantee processing_status
  is always updated, even on unexpected crashes/timeouts
- init_db: recovery query that marks images stuck in 'processing' for >10min
  as ERROR on startup
- Clean rewrite of pipeline.py for consistent indentation
2026-06-25 13:46:47 -04:00
bruno 92cf23dbb3 Live AI provider/model switching without restart
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
Backend:
- RuntimeAIConfig singleton: mutable in-memory overrides for provider/model
- PATCH /admin/api/ai/config: change active provider/model on the fly
- GET /admin/api/ai/config: read current runtime state
- ai_vision.py: uses runtime_ai_config before falling back to settings
- health/status endpoints reflect runtime overrides

Frontend:
- 'Définir comme actif' button in AI config section
- Live feedback message on save
2026-06-25 11:07:17 -04:00
bruno 7dd26ea636 Fix unused Images import
CI / Lint & Format (push) Failing after 14s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 16s
CI / Docker Build (push) Has been skipped
2026-06-25 10:56:31 -04:00
bruno c1f0492124 Fix ClientDetail: use ImageLoader instead of static icon for thumbnails
CI / Lint & Format (push) Failing after 18s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-25 10:54:19 -04:00
bruno b9c4622ece Add auto-migration for ai_provider/ai_model columns on existing DB
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-25 10:43:42 -04:00
bruno 8ce64c8578 Fix unused import and variable in AIConfigSection
CI / Lint & Format (push) Failing after 13s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-25 10:33:36 -04:00
bruno 9bb440707c AI Vision: multi-provider config, model testing, per-client AI preferences
CI / Lint & Format (push) Failing after 11s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
Backend:
- Add ai_provider + ai_model columns to APIClient model
- New admin_ai router: GET /admin/api/ai/status + POST /admin/api/ai/test
- Update ai_vision.py: provider_override + model_override support
- Update pipeline: load client AI prefs for image processing
- ClientUpdate/ClientResponse schemas include ai_provider/ai_model

Frontend:
- New AIConfigSection component: provider list, model dropdowns,
  test button with live results (no page refresh needed)
- AI types (ai.types.ts) + API (api/ai.ts)
- APIClient types extended with ai_provider/ai_model
2026-06-25 10:30:50 -04:00
bruno 1260a46c7c Add /files/ proxy in nginx config for signed URLs
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-25 10:01:11 -04:00
bruno 4085902ad4 Fix unused get param in auth.store.ts
CI / Lint & Format (push) Failing after 12s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 12s
CI / Docker Build (push) Has been skipped
2026-06-25 08:25:32 -04:00
bruno 1e36216349 Fix remaining anthropic→ai references in TypeScript types and Dashboard
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-25 08:23:19 -04:00
bruno f5de66f848 Fix AI env passthrough and health check key mismatch
CI / Lint & Format (push) Failing after 11s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
- docker-compose.prod.yml: add env_file to inject full .env into backend
  container (AI_ENABLED, AI_PROVIDER, OPENROUTER_API_KEY, etc. were missing)
- Config.tsx: fix health check key from 'anthropic' to 'ai'
  (backend returns checks.ai, not checks.anthropic)
2026-06-25 08:16:28 -04:00
bruno 342cb30657 Eagerly load Image.client relationship in queries
CI / Lint & Format (push) Failing after 11s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-24 21:32:55 -04:00
bruno a415526c66 Fix environment variable placeholders in production config
CI / Lint & Format (push) Failing after 28s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-24 12:47:28 -04:00
bruno 7360836829 Add missing JWT and admin API env vars to prod compose
CI / Lint & Format (push) Failing after 12s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 9s
CI / Docker Build (push) Has been skipped
2026-06-24 12:46:26 -04:00
bruno ca15528280 fix: indentation REDIS_URL dans worker
CI / Lint & Format (push) Failing after 10s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-24 12:24:09 -04:00
bruno d444ee98bb fix: suppression REDIS_URL dupliqué dans worker
CI / Lint & Format (push) Failing after 7s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 6s
CI / Docker Build (push) Has been skipped
2026-06-24 12:03:37 -04:00
bruno a7fe32f66e fix: user 1000:1000 pour backend+worker (permissions NFS) + worker manquant
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-24 12:01:51 -04:00
bruno 6eb98f6ed9 Fix setup instructions to use explicit shell commands
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-24 12:00:08 -04:00
bruno a358893275 fix: supprime l'erreur grep dans show_bootstrap_key (stderr redirige)
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-24 11:47:01 -04:00
bruno 1c857bd533 feat: affiche les clés admin (bootstrap + ADMIN_API_KEY) dans tous les modes
CI / Lint & Format (push) Failing after 10s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 11s
CI / Docker Build (push) Has been skipped
2026-06-24 11:42:18 -04:00
bruno 488ff91af0 fix: retrait env_file du compose (géré par deploy.sh --env-file)
CI / Lint & Format (push) Failing after 18s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 12s
CI / Docker Build (push) Has been skipped
2026-06-24 11:31:07 -04:00
bruno 1206ac2851 fix: suppression REDIS_URL dupliqué dans docker-compose.prod.yml
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-24 11:27:56 -04:00
bruno f6ed74039a fix: CORS_ORIGINS quote et source securise du .env
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-24 11:24:11 -04:00
bruno 13a40555f7 docs: mise à jour DEPLOYMENT.md et PRODUCTION_CHECKLIST pour nouvelle structure
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-24 10:57:36 -04:00
bruno 99205931c9 feat: assistant interactif de configuration dans deploy.sh (stockage, AI, OCR, CORS, backups)
CI / Lint & Format (push) Failing after 1m10s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-24 10:54:18 -04:00
bruno eeddca1794 docs: mise à jour README avec nouvelle structure et scripts
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-23 22:19:51 -04:00
bruno a626ab4981 refactor: structure docker-compose/ + scripts deploy.sh et setup.sh
CI / Lint & Format (push) Failing after 20s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 9s
CI / Docker Build (push) Has been skipped
2026-06-23 22:17:26 -04:00
bruno a9c5a5900d Update group ID from 1000 to 4000 in production config
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-23 17:24:55 -04:00
bruno aa291b1f15 Set database container user to host UID
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 10s
CI / Docker Build (push) Has been skipped
2026-06-23 17:19:07 -04:00
bruno bc6f7f6778 Set user and group for backend and worker containers
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-23 17:17:38 -04:00
bruno 0ca35d320a Switch to NFS-backed paths and disable MinIO
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
Point shared volume mounts to /NFS/IMAGO and comment out
the unused MinIO service along with its named volumes
2026-06-23 17:10:34 -04:00
bruno 7787d6db98 fix: persistance du login admin via localStorage (zustand persist)
CI / Lint & Format (push) Failing after 1m3s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-23 16:09:20 -04:00
bruno a8eeb6394a feat: ajout images:delete dans scopes, édition client dans ClientDetail
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-23 15:55:07 -04:00
bruno 8e9c600aa3 fix: admin voit toutes les images, ajout images:delete par défaut, filtre client_id pour admin
CI / Lint & Format (push) Failing after 9s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
2026-06-23 15:35:42 -04:00
bruno 262f29f013 feat: endpoint PUT /api/v1/images/{id}/tags — mise à jour manuelle des tags
CI / Lint & Format (push) Failing after 8s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
Permet au dashboard imagod-web de modifier les tags AI d'une image
via PUT /api/v1/images/{id}/tags avec body {"tags": ["tag1", "tag2"]}.
Scope requis : images:write
2026-06-23 15:16:11 -04:00
bruno eb75db7f12 Update default upload and thumbnail paths for Docker
CI / Lint & Format (push) Failing after 12s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
2026-06-23 15:08:16 -04:00
bruno 42af9243a5 Switch production config to env vars with defaults
CI / Lint & Format (push) Failing after 15s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 7s
CI / Docker Build (push) Has been skipped
Remove hardcoded S3 settings and dev-specific defaults from production
docker-compose, use .env instead of .env.production, and comment out
development-only values in .env.example
2026-06-23 12:39:21 -04:00
bruno ee2abc344c Fix nginx: add IPv6 listen [::]:80 to fix connection reset
CI / Lint & Format (push) Failing after 1s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 1s
CI / Docker Build (push) Has been skipped
2026-06-22 22:34:24 -04:00
bruno e965e44e89 Fix admin nginx: listen on port 80 instead of 3000 (match docker-compose port mapping)
CI / Lint & Format (push) Failing after 1s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 1s
CI / Docker Build (push) Has been skipped
2026-06-22 22:23:39 -04:00
bruno bc94e13dc8 Change production service port mappings and fix YAML quotes
CI / Lint & Format (push) Failing after 1s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 1s
CI / Docker Build (push) Has been skipped
Port mappings for admin and backend services are updated to use
alternative external ports (3001 and 8001) to avoid conflicts.
Healthcheck arrays are also normalized to use double quotes
consistently throughout the file.
2026-06-22 22:15:34 -04:00
bruno f2ee52c43a Add admin panel service to production compose (imago-admin image)
CI / Lint & Format (push) Failing after 1s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 1s
CI / Docker Build (push) Has been skipped
2026-06-22 22:03:06 -04:00