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