Changelog
Historique des versions et modifications
Version 7.76.1
7.76.1 (2026-06-14)
Bug Fixes
7.76.0 (2026-06-14)
Features
7.75.0 (2026-06-14)
Features
7.74.0 (2026-06-14)
Features
- scraper: make Kiss-Web PDF downloads resilient to F5 anti-bot (efd7179)
- tracking: gate premium tracking by entity plan (basic/premium) (8d834f6)
- webapp: add connector filter on /invoices page (d92bd17)
- webapp: trigger catch-up scrape on connector reactivation (de39568)
Bug Fixes
- scraper: classify CERP RRM auth failures by HTTP status to stop false deactivations (91205a6)
- scraper: propagate SeleniumSlotUnavailable in login mixins to stop false deactivations (84b29de)
- scraper: stop Kiss-Web per-PDF download failures flooding GlitchTip (34cd367)
- scraper: stop Kiss-Web per-PDF download failures flooding GlitchTip (9a5237d)
- scraper: use OCP divisionDisplayName for provider classification (d35406c)
- webapp: map OCP eDocuments Phoenix-group divisions to correct providers (51982f7)
Documentation
- scraper: slim CLAUDE.md, move architecture detail to docs/ (#74) (64c80a0)
- scraper: slim CLAUDE.md, move architecture detail to docs/ (#74) (95ff635)
7.73.6 (2026-06-13)
Bug Fixes
- webapp: ignore empty invoice file keys in pending pdf count (a5c9a13)
Documentation
7.73.5 (2026-06-13)
Miscellaneous Chores
7.73.4 (2026-06-13)
Bug Fixes
- webapp: index invoice scraping session references (fd22df0)
7.73.3 (2026-06-13)
Bug Fixes
- webapp: keep invoice-linked sessions during cleanup (39ea8f8)
7.73.2 (2026-06-13)
Bug Fixes
- webapp: add old scraping session cleanup command (f27581a)
7.73.1 (2026-06-13)
Bug Fixes
- webapp: avoid blank OCP scrape failures (7f8a078)
7.73.0 (2026-06-11)
Features
- webapp: show scraper queue status (b1ec815)
7.72.10 (2026-06-11)
Bug Fixes
- scraper: use sticky OCP proxy sessions per pharmacy (87a9b38)
7.72.9 (2026-06-11)
Bug Fixes
- webapp: show deferred scraping sessions (a8968f5)
7.72.8 (2026-06-11)
Bug Fixes
- scraper: avoid OCP CDP cookie hang (83528f9)
7.72.7 (2026-06-11)
Bug Fixes
- scraper: classify OCP browser timeouts (8380898)
7.72.6 (2026-06-11)
Bug Fixes
- scraper: bound OCP browser listing step (dd3a293)
7.72.5 (2026-06-11)
Bug Fixes
- scraper: bound OCP login runtime (fcddcdc)
7.72.4 (2026-06-11)
Bug Fixes
- scraper: timeout OCP CDP cookie reads (d8072d5)
7.72.3 (2026-06-11)
Bug Fixes
- scraper: add OCP ARQ queue cleanup (e1a33eb)
7.72.2 (2026-06-11)
Bug Fixes
- scraper: expose OCP ARQ job diagnostics (7594b8f)
7.72.1 (2026-06-11)
Bug Fixes
- scraper: add OCP gate diagnostics (4aa3300)
7.72.0 (2026-06-10)
Features
7.71.1 (2026-06-10)
Bug Fixes
- scraper: OCP login must propagate SeleniumSlotUnavailable, not deactivate (#70) (64fb04d), closes #69
7.71.0 (2026-06-09)
Features
7.70.0 (2026-06-09)
Features
7.69.2 (2026-06-09)
Bug Fixes
7.69.1 (2026-06-08)
Bug Fixes
Documentation
- agents: English-consistent decrypt-password skill + dedupe build figures (#63) (d41f54f)
- agents: fix AI doc inaccuracies, add MCP CLAUDE.md, dedupe skill name (#62) (9e8d63d)
- monitoring: use uv run --no-sync for silent-provider scheduled task (#60) (5127bb0)
7.69.0 (2026-06-08)
Features
Documentation
7.68.0 (2026-06-08)
Features
7.67.3 (2026-06-06)
Bug Fixes
- scraper: stop Kiss-Web per-PDF download failures flooding GlitchTip (2a93bfe)
7.67.2 (2026-06-02)
Bug Fixes
7.67.1 (2026-06-02)
Bug Fixes
7.67.0 (2026-06-02)
Features
7.66.0 (2026-06-02)
Features
7.65.0 (2026-06-02)
Features
7.64.0 (2026-06-01)
Features
- webapp: add connector filter on /invoices page (f33fd15)
Bug Fixes
- scraper: use OCP divisionDisplayName for provider classification (c8df598)
- webapp: map OCP eDocuments Phoenix-group divisions to correct providers (5a3c86e)
7.63.1 (2026-05-28)
Miscellaneous Chores
7.63.0 (2026-05-28)
Features
- webapp: trigger catch-up scrape on connector reactivation (5dad3df)
Bug Fixes
- scraper: classify CERP RRM auth failures by HTTP status to stop false deactivations (9fce9ea)
- scraper: propagate SeleniumSlotUnavailable in login mixins to stop false deactivations (eb86f95)
7.62.0 (2026-05-25)
Features
- tracking: gate premium tracking by entity plan (basic/premium) (27afb27)
7.61.1 (2026-05-18)
Bug Fixes
7.61.0 (2026-05-11)
Features
- mcp: add MCP server and analytics endpoints for declining pharmacies (518a8f6)
Bug Fixes
- mcp: disable DNS rebinding protection for public reverse-proxy deployment (13be616)
- mcp: use venv python directly instead of uv run in Dockerfile CMD (e7f0888)
- webapp: replace phantom Invoice.status grouping with analyzed_at buckets (c405c5e)
Miscellaneous Chores
- ci: add MCP docker build/deploy jobs and infra context (d5e63e1)
- mcp: trigger staging rebuild after ?token= auth fix (d8d1678)
- merge main into develop (b3e3b29)
- update lock files after pnpm install (7baba3a)
7.60.2 (2026-05-10)
Bug Fixes
- mcp: wrap long line in ASGI 404 response to satisfy ruff E501 (3d46192)
- tests: reset middleware_stack before each test to fix flaky auth patches (9ee7c77)
7.60.1 (2026-05-10)
Bug Fixes
- mcp: use ASGI middleware for path-based auth to preserve lifespan (1b5f491)
7.60.0 (2026-05-10)
Features
- mcp: path-based auth for Claude.ai connector compatibility (bc0d977)
Miscellaneous Chores
- mcp: trigger staging rebuild after ?token= auth fix (5962120)
7.59.0 (2026-05-10)
Features
- mcp: support ?token= query param auth for Claude.ai custom connectors (3077e15)
7.58.0 (2026-05-10)
Features
- ci: add MCP prod build and deploy jobs in version-and-release workflow (485864c)
7.57.0 (2026-05-10)
Features
- mcp: add MCP server and analytics endpoints for declining pharmacies (a13e2a5)
Bug Fixes
- mcp: disable DNS rebinding protection for public reverse-proxy deployment (822b8d0)
- mcp: fix ruff lint errors — noqa S104 and wrap long docstring lines (ee3efba)
- mcp: use venv python directly instead of uv run in Dockerfile CMD (48f49ef)
Miscellaneous Chores
- ci: add MCP docker build/deploy jobs and infra context (ef9c024)
- update lock files after pnpm install (099cf05)
7.56.1 (2026-05-06)
Bug Fixes
- webapp: guard synthese export link against null entity ids (266439a)
- webapp: normalize groupement synthese rows for the template (910ced9)
7.56.0 (2026-05-06)
Features
- webapp: add filters on toolbox page (94e5f5a)
- webapp: add groupement/pharmacy filter and collapse pending invitations on /users (e189924)
- webapp: add multi-sheet xlsx export on /tracking/generique/synthese (1ba39d3)
- webapp: add multi-sheet xlsx export on /tracking/premium/biosimilaires (c145a2c)
- webapp: per-month xlsx export on biosimilaires ODR calendar cards (fe665a3)
- webapp: replace pharmacy select with searchable autocomplete on /invoices/stats (6c6fc6f)
Bug Fixes
- webapp: make biosimilaires delete safe on groupement view (4c9fd66)
- webapp: persist CONSTAT ODR on biosimilaires upload (27e9cd8)
7.55.1 (2026-05-06)
Bug Fixes
- webapp: register grossiste export-table route before {year_month} (5b18472)
7.55.0 (2026-05-03)
Features
- webapp: add boîte à outils to premium tracking (2c2a9a4)
- webapp: add custom date range filter on /invoices/stats (31f7b96)
- webapp: add xlsx export of displayed tracking tables (72d2472)
7.54.0 (2026-05-02)
Features
- webapp: add loading spinner on tracking upload submit (182069d)
Bug Fixes
- scraper: deduplicate Sentry events from cascading and retry-attempt logs (82a37b4)
- webapp: bound biosimilaire parser memory via cell cache (2272f59)
- webapp: rebuild biosimilaire parser with universal format detection (034e707)
- webapp: submit tracking upload via fetch() to bypass proxy redirect bug (b1dcc71)
- webapp: use HTML meta-refresh redirect after tracking upload (bfa55af)
- webapp: use HTTP 302 instead of 303 after tracking upload (6d4d5e9)
7.53.1 (2026-04-26)
Bug Fixes
- scraper: deduplicate Sentry events from cascading and retry-attempt logs (da26d16)
7.53.0 (2026-04-25)
Features
- scraper: add structured JSONL logging across all connectors (6b37c3e)
- scraper: initialize Sentry in ARQ workers (9e421f9)
- webapp,scraper: add UI to relaunch scrape sessions for missing PDFs (de78b0a)
- webapp: add --connector --limit --date flags to scrape-daily.sh (c602761)
- webapp: add connector filter to /scraping page (fd05365)
Bug Fixes
- scraper: compute total_ht from aggregated invoice lines not stale metadata (8d46183)
- scraper: keep session running on CircuitOpenError last attempt (eea4551)
- scraper: keep session running on Selenium slot + OCP CAPTCHA last attempt (233c287)
- scraper: prevent Pattern 2 line merge from polluting summary rows (1862547)
- scraper: reclassify OCP F5 rate-limit errors as OCPCaptchaError (05258e4)
- scraper: report missing Azure config error to GlitchTip (7849970)
- scraper: retry DigiPharmacie CircuitOpenError with jittered defer (8e6d94f)
- scraper: skip CERP VAT recap tables without product identifier (3b9c7d2)
- scraper: skip summary rows whose code/name contains keyword with whole-word match (f0874ab)
- scraper: surface real Cegedim auth error when password expires (3d7077d)
- scraper: widen CircuitOpenError defer to survive longer outages (c038c51)
- webapp: escape tojson output in connector edit button (2d02363), closes #34
- webapp: harden provider name resolution with pattern matching fallback (6e0824d)
- webapp: make scrape-daily.sh macOS-compatible with DATE_FROM override (56ec725)
- webapp: preserve date filters on scrape session retry (56c4377)
- webapp: preserve filters across /scraping pagination links (9a00e45)
- webapp: preserve null date_to in session redownload to avoid monthly split (ba3d715)
- webapp: reset errors_count on session completion (c0a3574)
Performance Improvements
- webapp: paginate grouped invoices view at SQL level (6152fc7)
Tests
- scraper: add OCP retry path baseline tests (Path A/B/C) (a9fb613)
7.52.0 (2026-04-20)
Features
- webapp: add connector filter to /scraping page (2316440)
Bug Fixes
- scraper: keep session running on CircuitOpenError last attempt (38c777b)
- scraper: keep session running on Selenium slot + OCP CAPTCHA last attempt (e72f720)
- scraper: reclassify OCP F5 rate-limit errors as OCPCaptchaError (92d519d)
- scraper: retry DigiPharmacie CircuitOpenError with jittered defer (d758760)
- scraper: widen CircuitOpenError defer to survive longer outages (5d6234b)
- webapp: escape tojson output in connector edit button (a0bbb7e), closes #34
- webapp: make scrape-daily.sh macOS-compatible with DATE_FROM override (e461ee1)
- webapp: preserve filters across /scraping pagination links (7673a80)
- webapp: reset errors_count on session completion (1b7aa53)
Tests
- scraper: add OCP retry path baseline tests (Path A/B/C) (d1cdc51)
7.51.2 (2026-04-17)
Code Refactoring
7.51.1 (2026-04-16)
Bug Fixes
7.51.0 (2026-04-13)
Features
- webapp: add premium biosimilaires tracking page (919cd37)
7.50.0 (2026-04-13)
Features
- webapp: add groupement filter and pharmacy indicator to export (b05a0e6)
- webapp: add server-side pagination to /export page (b882f46)
Documentation
- scraper: document OCP eDocuments.fr connector (9b477c8)
7.49.8 (2026-04-09)
Bug Fixes
7.49.7 (2026-04-07)
Bug Fixes
7.49.6 (2026-04-07)
Miscellaneous Chores
7.49.5 (2026-04-07)
Bug Fixes
7.49.4 (2026-04-06)
Code Refactoring
7.49.3 (2026-04-06)
Code Refactoring
7.49.2 (2026-04-06)
Bug Fixes
7.49.1 (2026-04-06)
Bug Fixes
7.49.0 (2026-03-26)
Features
7.48.4 (2026-03-26)
Miscellaneous Chores
- fix web-app docker (6a38787)
7.48.3 (2026-03-25)
Bug Fixes
- scraper: pin Chromium to 145.x to fix OCP F5 TSPD login failure (8f33ca2)
7.48.2 (2026-03-22)
Code Refactoring
- webapp: clean code improvements — inline imports, Alpine JS patterns, template fixes (#33) (3477cd0)
7.48.1 (2026-03-21)
Bug Fixes
7.48.0 (2026-03-19)
Features
7.47.4 (2026-03-19)
Bug Fixes
7.47.3 (2026-03-19)
Bug Fixes
7.47.2 (2026-03-11)
Bug Fixes
- webapp: send credential failure alerts only to victor.ottavi@odrpharma.fr (7776412)
Tests
- webapp: update credential failure tests for single recipient (a8477f1)
7.47.1 (2026-03-10)
Bug Fixes
7.47.0 (2026-03-10)
Features
7.46.2 (2026-03-10)
Bug Fixes
7.46.1 (2026-03-09)
Bug Fixes
7.46.0 (2026-03-08)
Features
7.45.0 (2026-03-08)
Features
- scraper: deactivate connectors with invalid credentials in auth-worker (a364ef6)
7.44.0 (2026-03-07)
Features
7.43.0 (2026-03-07)
Features
7.42.0 (2026-03-07)
Features
7.41.1 (2026-03-06)
Bug Fixes
- webapp: restore scraper_internal code lost in merge conflict (5cd38e7)
7.41.0 (2026-03-06)
Features
- scraper: auth-worker per-pharmacy jobs with dedicated AUTH_QUEUE (2532fb6)
- scraper: auth-worker per-pharmacy jobs with dedicated AUTH_QUEUE (994626a)
- webapp: add delete pending invitation (#15) (dcfb490)
- webapp: super admin decrypt & reveal connector passwords (#12) (5a58795)
Bug Fixes
- scraper: validate Phoenix cookies with real API call in auth-worker (5dd89cb)
- webapp: display percentage decimals in tracking tables (#14) (5876972)
- webapp: show dispatch counters in scrape-daily.sh output (4903b78)
- webapp: use calendar month arithmetic for monthly stats generation (cdcd3b3)
- webapp: use calendar month arithmetic for monthly stats generation (6c18441)
Miscellaneous Chores
- merge main into develop (ec22af0)
- release: 7.35.0 [skip ci] (2a85be6), closes #12
- release: 7.35.1 [skip ci] (39699a1), closes #14
- release: 7.36.0 [skip ci] (3106882), closes #15
7.40.3 (2026-03-05)
Bug Fixes
- scraper: commit updated uv.lock with nodriver dependency (9d754d8)
7.40.2 (2026-03-05)
Bug Fixes
- remove pnpm version from CI workflows, use packageManager from package.json (94816f2)
- remove pnpm version from CI workflows, use packageManager from package.json (fee172e)
- scraper: widen timing tolerances in rate limiter tests to fix flaky failures (4fd5cee)
- webapp: remove obsolete test for deleted InvoiceMetadata and _merge_raw_data (9b0bd59)
7.40.1 (2026-03-05)
Bug Fixes
7.40.0 (2026-03-05)
Features
- scraper: auth-worker per-pharmacy jobs with dedicated AUTH_QUEUE (596a4fb)
Bug Fixes
- scraper: validate Phoenix cookies with real API call in auth-worker (ab323de)
- webapp: show dispatch counters in scrape-daily.sh output (44c10fc)
- webapp: use calendar month arithmetic for monthly stats generation (04d4fcb)
7.39.1 (2026-03-05)
Bug Fixes
- align pnpm version in CI workflows to 10.30.3 (79afd59)
7.39.0 (2026-03-05)
Features
7.38.0 (2026-03-04)
Features
Bug Fixes
7.37.0 (2026-03-04)
Features
7.36.0 (2026-03-02)
Features
7.35.1 (2026-03-02)
Bug Fixes
7.35.0 (2026-03-02)
Features
7.34.1 (2026-03-02)
Bug Fixes
- scraper: disable credential failure email alerts (e9e1ad5)
- webapp: use calendar month arithmetic for monthly stats generatio (38e1f52)
7.34.0 (2026-02-25)
Features
- scraper,webapp: add OCP eDocuments.fr connector with nodriver (18ccc30)
- scraper,webapp: add OCP eDocuments.fr connector with nodriver (43a76a1)
- scraper,webapp: OCP search form + ZIP bulk download + webapp fixes (6425042)
- scraper,webapp: OCP search form + ZIP bulk download + webapp fixes (eddda6e)
- scraper: OCP login gate + auth/retry fixes (a610b91)
- scraper: OCP login gate + auth/retry fixes (87292b5)
Bug Fixes
- scraper: handle OCP search with no matching documents (4d2bf0a)
- scraper: skip re-analysis of already analyzed invoices during auto-scrape (bb89af9)
- scraper: skip re-analysis of already analyzed invoices during auto-scrape (74dbf38)
- scraper: skip re-analysis of already analyzed invoices during auto-scrape (394bb73)
- webapp: exempt internal API routes from rate limiting (b886845)
- webapp: exempt internal API routes from rate limiting (d056d76)
- webapp: prevent cron failure on partial scrape errors (59fc775)
- webapp: prevent cron failure on partial scrape errors (43660be)
Miscellaneous Chores
- add decrypt-password skill (f6c3c50)
7.33.6 (2026-02-20)
Bug Fixes
- scraper: skip re-analysis of already analyzed invoices during auto-scrape (5dfbfa4)
7.33.5 (2026-02-20)
Bug Fixes
- scraper: correct error count calculation in session reconciliation (d476d1e)
- scraper: fix same error count bug in operations.py reconciliation (b8aa4d0)
Tests
- scraper: update reconciliation tests for preserved errors_count (7a27c76)
7.33.4 (2026-02-18)
Bug Fixes
- scraper: increase job timeout to handle multi-batch Kiss-Web scrapes (3a84d4f)
7.33.3 (2026-02-18)
Bug Fixes
- scraper: reauthenticate for each Kiss-Web batch to prevent token expiration (508e2be)
7.33.2 (2026-02-18)
Bug Fixes
- scraper,webapp: recover orphaned invoices with metadata preservation (2670ffa)
7.33.1 (2026-02-17)
Bug Fixes
- scraper: implement Kiss-Web batching to handle token expiration (bf728d8)
7.33.0 (2026-02-17)
Features
- webapp: add "Échouées" filter on /invoices to isolate failed analyses (a05e0a6)
Bug Fixes
- scraper,webapp: show real error cause in analysis session timeline (691aa42)
- scraper: CEGEDIM Kiss-Web F5 TSPD rate-limiting with sequential PDF downloads (3c42754)
- webapp: correct invoice filter for "failed" analysis status (fe58c62)
- webapp: ensure error logs always appear in scraping session timeline (2f0932b)
7.32.2 (2026-02-15)
Bug Fixes
- webapp: correct invoice filter for "failed" analysis status (3c73467)
7.32.1 (2026-02-15)
Bug Fixes
- scraper,webapp: show real error cause in analysis session timeline (334f029)
- webapp: ensure error logs always appear in scraping session timeline (a2e5790)
7.32.0 (2026-02-12)
Features
- webapp: add "Échouées" filter on /invoices to isolate failed analyses (c1710e9)
7.31.4 (2026-02-12)
Bug Fixes
- scraper,webapp: add session logs for analysis sessions and improve error details (eb8470d)
- scraper,webapp: fix analyze worker blocking and add explicit error logs (08dbd7a)
- scraper,webapp: fix analyze worker blocking and add explicit error logs (da1d171)
- scraper: prevent ARQ analyze worker crash on WebappClientError (7e15826)
- scraper: prevent ARQ analyze worker crash on WebappClientError (e46df48)
- scraper: prevent ARQ analyze worker crash on WebappClientError (25a1eaf)
- webapp: bulk reanalyze now triggers actual analysis jobs (8d087d2)
- webapp: use ODD Pharma branding and generic contact email in invitation emails (b5ad1f8)
7.31.3 (2026-02-12)
Bug Fixes
- scraper,webapp: add session logs for analysis sessions and improve error details (b600963)
- scraper,webapp: fix analyze worker blocking and add explicit error logs (3677c97)
7.31.2 (2026-02-11)
Bug Fixes
- scraper: prevent ARQ analyze worker crash on WebappClientError (f5ca951)
- scraper: prevent ARQ analyze worker crash on WebappClientError (9bc0b47)
7.31.1 (2026-02-11)
Bug Fixes
- webapp: use ODD Pharma branding and generic contact email in invitation emails (6e6c7d3)
7.31.0 (2026-02-11)
Features
- connector: add connector test connection (8f8424c)
- webapp: auto-analyze uploaded invoices with provider hint and display fixes (774f24c)
- webapp: extend session reconciliation for SCRAPE_WEBSITE type (759ca59)
Bug Fixes
Miscellaneous Chores
- sync uv.lock versions (d6da2ce)
7.30.0 (2026-02-08)
Features
- connector: add connector test connection (09d43fa)
- webapp: auto-analyze uploaded invoices with provider hint and display fixes (1fd3260)
- webapp: extend session reconciliation for SCRAPE_WEBSITE type (2510365)
Miscellaneous Chores
- sync uv.lock versions (0dd8f96)
7.29.0 (2026-02-08)
Features
7.28.0 (2026-02-08)
Features
- connector: add connector test connection (5bcc418)
7.27.1 (2026-02-08)
Bug Fixes
7.27.0 (2026-02-07)
Features
- scraper,webapp: alert and deactivate connector on credential failure (#3) (1fab134)
- webapp: improve dashboard chart readability (#4) (c3dd800)
7.26.1 (2026-02-06)
Bug Fixes
- scraper: robust overlay dismissal for CEGEDIM Selenium login (9e4f712)
7.26.0 (2026-02-06)
Features
- scraper: migrate CEGEDIM to Kiss-Web API with auth error propagation and seller filtering (5e07c00)
Bug Fixes
- webapp: use pharmacy name as search subtitle and remove sample credentials (e2fee1c)
7.25.0 (2026-02-06)
Features
7.24.0 (2026-02-06)
Features
7.23.7 (2026-02-05)
Documentation
- add minimal README at monorepo root (a7f97f2)
Miscellaneous Chores
- remove obsolete files from subdirectories (50f7914)
- remove obsolete pre-commit config (using husky now) (ba2e711)
7.23.6 (2026-02-05)
Miscellaneous Chores
- add .claude/.gitignore (b98ab69)
- add debug-invoice-analysis and refresh-local-db skills (83217e1)
- remove obsolete husky directories from subdirectories (87a3c48)
- setup husky at monorepo root (e492bb6)
7.23.5 (2026-02-04)
Bug Fixes
- scraper,webapp: correct unit_price calculation in Phoenix invoice aggregation (e0f5fc3)
7.23.4 (2026-02-04)
Bug Fixes
- ci: use tag-based diff for base image change detection (65f3dc7)
7.23.3 (2026-02-04)
Bug Fixes
- docker: add OCI source labels and fix base image trigger (978579c)
7.23.2 (2026-02-04)
Bug Fixes
- ci: replace wait-on-check-action with GitHub API polling (e89c942)
Miscellaneous Chores
- consolidate monorepo with unified CI/CD (9fe4966)