Skip to content

Releases: betagouv/csplab

0.1.10

02 Jun 16:22
cd7534e

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.10] - 2026-06-02

Breaking Changes

  • ♻️(ingestion-presentation) refactor archive offer to use body params + French names (#580)
  • ✨(ingestion-domain) add front and back base_url for Source (#583)
  • 🏗️(users-infrastructure) switch to custom UserModel - part 1 (#614)
  • 🏗️(users-infrastructure) switch to custom UserModel - part 2 (#616)

Added

  • ✨(ingestion) setup logging mecanism (#578)
  • ✨(web) setup frontend (#579)
  • ✨(ingestion-presentation) add a Source entity and an API to list Sources (#574)
  • 📝(ingestion-presentation) update source_id example in API documentation (#587)
  • 🔧(ingestion-domain) register Source in Django admin (#582)
  • 🔧(ingestion) control logging level with env variable (#594)
  • ✨(ingestion) load offer for vacancy webhooks (#592)
  • ✨(ingestion-domain) add geographical area to Localisation (#576)
  • ✨(ingestion-domain) load Sources on app boot (#585)
  • ✨(ingestion-usecase) expose list of metiers endpoint (#569)
  • ✨(ingestion) create a shared Talensoft front client (#599)
  • ♻️(ingestion-infrastructure) create enums for Talensoft webhooks (#607)
  • 🔧(tooling-presentation) bootstrap storybook for ats frontend (#596)
  • ✅(candidate-presentation) test a11y for the cv flow (#464)
  • 🔧(tooling) add auto assign GitHub Actions workflow (#606)
  • ✅(tooling) add task to lint the schema as part of lint (#608)
  • ✨(ingestion) introduce a CredentialsStore (#609)
  • ✨(ats) authentification des requetes vue django (#613)
  • 📝(tooling-domain) aggregate root (#621)
  • ✨(ingestion-infrastructure) save RawOffer to database (#610)
  • ✨(ingestion) expose offers/upsert endpoint (#547)
  • ✨(web-infrastructure) add source_id to offer (#642)
  • ✨(ats-domain) add organisme in identite context (#624)
  • ✨(frontend) interception et gestion des erreurs frontend (#629)
  • ♻️(ingestion) add Talensoft offer status for draft (#627)
  • ✨(web-infrastructure) backfill source_id for offers (#643)
  • ✨(users-presentation) mise en place de l'authentification par email-password (#639)

Modified

  • ♻️(ingestion-infrastructure) standardise method names: get_xxxx for retrieval operations (#568)
  • ♻️(ingestion-presentation) move files related to archive offer (#532)
  • ♻️(ingestion) log status_id for unhandled webhooks (#590)
  • ♻️(ingestion-presentation) change API URLs to v1 scope (#588)
  • ✅(tooling) refactor common GitHub Actions (#593)
  • ♻️(ingestion:presentation) refacto to prepare list of metiers endpoint (#603)
  • ♻️(candidate-presentation) update file input progressive enhancement on mobile (#465)
  • 🔧(tooling) update eslint and vscode formatting config (#612)
  • 🏗️(users-infrastructure) switch to custom UserModel - part 3 - enforce username to be an UUID (#620)
  • ⚡️(users-infrastructure) revert to login with email (#630)
  • (users-infrastructure) the very last step of the custom user model migration (#632)
  • 🔧(ingestion) run database migrations in a one-off process (#628)

Fixed

  • 🐛(tooling) fix path for schema generation in CI (#581)
  • 🐛(tooling) run djlint in CI (#584)
  • 🐛(ingestion) update status_id for archived status (#598)
  • 🐛(ingestion) split Talensoft front and back env variables (#600)
  • 🔧(ingestion) update sources endpoint (#602)
  • 🐛(ingestion-infrastructure) fix sources migration (#604)
  • 🐛(ingestion-domain) set default values for source.id and source.source_id (#605)
  • 🐛(ingestion-infrastructure) add missing migration file (#615)
  • 🔧(tooling-presentation) use npm sass for mvp cv (#622)
  • ♻️(tooling) Git ignore mypy cache (#626)
  • 🐛(web-infrastructure) fix archive offer container wiring (#644)
  • 🐛(ingestion) postdeploy is the appropriate name (#645)

0.1.9

19 May 08:34
db8f25a

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.9] - 2026-05-19

Breaking Changes

  • ♻️(web) rename tycho into web (#515)

Added

  • ✨(candidate) category filter now includes A+ (#482)
  • ✨(ingestion-domain) map APLUS category in offers cleaner (#486)
  • ✨(tooling) boostrap playwright e2e tests suite (#490)
  • ✅(candidate-presentation) add main e2e tests for cv flow (#460)
  • ✅(candidate-presentation) add secondary e2e tests (#461)
  • ✅(candidate-presentation) add keyboard navigation e2e test (#463)
  • ✨(candidate) add terms static page (#227)
  • ✨(candidate) add a11y static page (#224)
  • ✨(candidate) add privacy static page (#226)
  • ✨(candidate) add legal notice static page (#225)
  • ✅(candidate-presentation) update static pages test (#499)
  • ✨(ingestion) create new ingestion app (#493)
  • 🔧(project) add test-cov in make file (#498)
  • ✨(api) add list offers endpoint (#440)
  • ✨(ingestion-api) add TalentSoft webhook endpoint (#500)
  • ✨(candidate) add get opportunity detail usecase with metiers (#487)
  • ✨(ingestion) handle webhooks to archive offers (#512)
  • 🔧(tooling) make sure OpenAPI is up-to-date (#546)
  • 💎(candidate-presentation) display job in offer drawer (#550)
  • ✨(ingestion) add vectorization implementation for metiers (#551)

Modified

  • 🔧(tooling-presentation) async tasks in dev: reduce footprint using 'immediate' setup for huey (#483)
  • ♻️(ocr) Replace deprecated Pydantic Config with SettingsConfigDict (#489)
  • 🔧(tooling-tests) restore coverage computation, parallelize e2e tests (#494)
  • 🎨(tooling-factory) refactor OfferFactory (#514)
  • ✅(tooling-test) mv test_interface_aware_mock to web (#529)
  • 💎(candidate-presentation) remove icon from cv analysis launch cta (#530)
  • ⚡️(ingestion-usecase) let list_offers usecase handle pagination (#513)

Removed

  • 🔥(candidate-presentation) drop existing view tests covered by e2e (#462)

Fixed

  • ✨(shared) unarchive an offer received from load_offers (#492)
  • 🐛(ingestion) set the Python version (#501)
  • 🐛(ingestion-api) read expires from request headers (#505)
  • ⚡️(api-presentation) prevent DB dynamic inspection when using API schema for documentation purposes (#504)
  • 🐛(ingestion-api) handle unencoded + in signature (#506)
  • 🐛(ingestion-infrastructure) isolate and log raw_documents in error instead of raising error to let next raw_documents be loaded (#509)
  • 🐛(ingestion-infrastructure) rename columns for ConcoursCleaner (#511)
  • 🐛(ingestion-infrastructure) make ministry mapping more robust (#548)

0.1.8

06 May 07:36
6f59801

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.8] - 2026-05-06

Added

  • 🔧(tooling) add optional layer in commit templates (#417)
  • ✨(ingestion) add delete to vector repository (#421)
  • 🔧(tooling) add make run-mvp for all mvp services at once (#420)
  • ✨(ingestion-infrastructure) setup TalentsoftBackClient (#425)
  • 💎(candidate-presentation) expose organisation or ministry in opportunity cards and drawers (#443)
  • ✨(api) setup api documentation (#396)
  • ✨(ingestion-usecase) archive offers (#455)
  • 🎨(ingestion-presentation) get better endpoint documentation (#480)

Modified

  • 🎨(tooling) replace stdout with loggers (#413)
  • 🔥(candidate-presentation) delete unused search corps feature (#437)
  • 🎨(tooling) refactor logging to use lazy string interpolation (#412)
  • 💎(candidate-presentation) update mvp cv styles and content (#441)
  • ♻️(shared) embedding service async (#442)
  • ♻️(shared) regorganize tests (#451)
  • 💎(candidate-presentation) allow closing drawer modal from browser back navigation (#444)
  • ♻️(tycho) make test containers independent (#457)
  • ♻️(shared) rename find_by_xx methods to get_by_xx (#458)
  • 🔧(ingestion-infrastructure) admin - update list_display and list_filter to visualize ingestion workflow (#469)
  • ♻️(tycho) homogenise tests and refactoring factories and fixtures (#467)

Removed

  • 🔥(ingestion-infrastructure) remove unused config, dtos and lib (#459)

Fixed

  • 🐛(tycho:candidate) reflect active filters in UI on page load (#380)
  • 🐛(tooling) fix vscode python interpreter path (#439)
  • ✨(ingestion) Prevent failed documents from remaining in a pending state and being reprocessed (#452)
  • 🔒️(config) set an appropriate key size (#474)
  • ⬆️(ingestion-infrastructure) add python-dateutil for relativedelta usage in archive_offers (#477)
  • 🐛(ingestion-presentation) remove unused mandatory updated_before arg (#479)
  • ✅(ingestion) autoclose worker thread connections in tests (#478)

0.1.7

22 Apr 08:16
a995dba

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.7] - 2026-04-22

Breaking Changes

  • ✨(async) setup broker and queue (#376)

Added

  • 🔧(accessibility) add automated accessibility testing with pytest-playwright and axe-playwright-python (#157)
  • 🔧(project) add port override (#391)
  • ✨(tycho:domain) load metiers data (#397)
  • ✨(tycho-ingestion) clean metiers (#398)
  • ✨(tycho-ingestion) add task for clean metiers (#414)

Modified

  • ✨(candidate) send process uploaded cv usecase to tasks broker (#377)
  • 🔧(tooling) disable periodic tasks in dev (#390)
  • ✨(ingestion) enqueue periodiq vectorization and cleaning tasks (#381)
  • ♻️(tycho:ingestion) use async http client (#389)

Removed

  • 🔥(notebook) good bye es (#370)
  • 🔥(shared) remove VectorizedDocumentModel and pgvector_repository (#385)
  • 🔥(shared) remove pgvector lib (#386)

Fixed

  • 🐛(candidate) make sure drawer opens after filtering occured (#374)
  • 🐛(ingestion) let load_offers task call load_offers_usecase, instead of load_documents_usecase (#393)
  • 🐛(tooling) make bootstrap work on fresh setup (#399)

0.1.6

07 Apr 13:32
87389ea

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.6] - 2026-04-07

Added

  • 🤸(tycho:candidate) add live region to announce results to screen readers (#353)
  • 💎(candidate) add loading opacity on results zone during htmx swap (#352)
  • ✨(candidate) add deep filters to match cv to opportunities (#355)
  • ✨(ingestion) add find_by_external_ids in raw_document repository (#345)
  • ✨(ingestion) add get_detail in talentsoft client (#344)
  • ✨(tycho:candidate) add deep filters to cv_flow view (#357)
  • ✨(ingestion) map categories to offers (#362)
  • ✨(tycho:candidate) add Matomo analytics for candidate journey (#358)

Modified

  • ✨(candidate) add progressive enhancement to opportunity detail trigger (#348)
  • ✨(ingestion) load detailed offers (usecase and commnand) (#342)
  • ♻️(candidate) refactor CV results view into use case + presenter (#361)
  • 🐛(tooling) fix dev static management (#360)

Removed

  • 🔥(ingestion) remove ability from load_documents (command and strategy) to handle ingestion of the offers (#350)

Fixed

  • 🐛(tycho:candidate) delete max tokens contraints for experimented cv (#341)
  • 🐛(tycho:candidate) fix toast alert positioning and close button (#354)
  • 💚(tycho) fix ci qdrant (#356)

0.1.5

24 Mar 09:22
6d50ebc

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.5] - 2026-03-24

Added

  • ✨(candidate) push cv results filter params in url and implement simple pagination (#274)
  • 🤸(tycho) add skip links for accessibility (#275)
  • ✨(candidate) implement filter fieldset tooltips (#276)
  • 🤸(tycho:candidate) add live region to processing page polling and respect reduced motion preference (#310)
  • 🔧(dev) add auto-reload and django-browser-reload integration (#277)
  • 🎉(ocr) init ocr as a service (#319)
  • 🔒️(ocr) add private routes with authentication (#322)
  • 🔧(ocr) sent errors to sentry (#324)
  • ✨(tycho) qdrant implementation for vector db (#316)
  • ✨(ocr) add text extraction (#327)
  • ✨(ingestion) resilient mini batch clean documents (#329)
  • ✨(tycho) implementation of soveraign ocr (#332)

Modified

  • 🔧(tycho:candidate) improve meta tags (#308)
  • 🤸(candidate) remove redundant main role (#309)
  • 🤸(tycho:candidate) add a11y sr-only hints on result cards and drawer (#311)
  • 🎨(candidate) reactivate assertion on scoring (#281)

Fixed

  • 🤸(a11y) fix cv results page title hierarchy (#315)
  • 🤸(tycho:candidate) hide drag-drop text from AT in dropzone (#314)
  • 🐛(ingestion) fix and test datetime for RawDocument and Offer when upserting (#287)
  • ⬆️(ocr) add httpx for sentry_sdk (#325)
  • 🚀(ocr) add popper-utils for scalingo (#330)

0.1.4

10 Mar 15:48
c93642f

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.4] - 2026-03-10

Added

  • 🔧(backend) let add custom domain to allowed hosts in dev (#206)
  • ✨(tycho:candidate) integrate tally form in no results scenario for user feedback (#245)
  • 🔒️(security) setup Cross-Origin Opener Policy and HTTP Strict Transport Security, make default clickjacking setup explicit, use secure cookies (#248)
  • 🔒️(security) setup Content Security Policies (#247)
  • ✨(candidate) add opportunity detail drawers (#254)
  • ✨(candidate) add simple client opportunity user feedback mechanism (#260)
  • ✨(candidate) add feedback modal and trigger button in cv results page when matching return results (#261)
  • ✨(tycho) add field in admin raw documents for better data wrangling (#285)

Modified

  • ♻️(tycho:candidate) update results page styles and filtering logic (#196)
  • 💎(candidate) update cv upload page styles (#219)
  • 💎(candidate) update cv processing page styles (#223)
  • 🐛(candidate) fix albert ocr implementation (#246)
  • ♻️(tooling) preliminary refactoring before #204 (#242)
  • ✨(candidate) create error static pages (#228)
  • ♻️(candidate) refactor opportunity drawer components (#262)
  • ⚡️(db) add HnswIndex (#269)
  • ⚡️(candidate) remove duplicates queries (#271)
  • 🧩(candidate) hide inactive header actions (#288)

Fixed

  • 🐛(tooling) align git commit hook with new cz emojis config (#221)
  • 🔧(tooling) make sure both vscode djlint and cli djlint use same config (#220)
  • 🐛(tooling) align git commit hook with new cz emojis config (#222)
  • 🐛(candidate) fix concours card props (#231)
  • 🐛(ingestion) fix VectorizedDocumentModel unicity constraint (#233)
  • 🎨(candidate) fix unproperly formatted partial (#244)
  • 🐛(ingestion) add APHP in FPH verse (#234)
  • ✨(ingestion) vectorize only pending documents (#204)
  • 🐛(candidate) allow for optionnal field in cv experience (#256)
  • 🐛(security) fix request.csp_nonce into csp_nonce (#267)
  • 🔒️(tycho) fix CSP nonces on all script tags (#265)
  • 🐛(candidate) fix htmx targetError on poll-to-results transition (#264)
  • 🐛(candidate) fix opportunity variable reference in feedback component inclusion (#270)
  • 🐛(ingestion) add updated_at in load_documents upsert_batch (#286)

0.1.3

24 Feb 08:19
adeb463

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.3] - 2026-02-24

Breaking Changes

  • ♻️(ingestion) replace entities id with uuid (#201)

Added

  • 🔧(tooling) add django debug toolbar in dev settings (#186)
  • 🔧(tooling) update sentry config (#192)
  • ✨(ingestion) add fields to optimize ingestion by batch (#208)
  • ✨(candidate) add details if json parsing error (#217)

Modified

  • ♻️(admin) refactor admins, set fields read-only (#184)
  • 🔧(tooling) let use custom third parties endpoint in dev mode, and set explicit fake value for override test vars (#188)
  • 🔧(tooling) catch the messages sent to the loggers into the console (#194)
  • ♻️(ingestion) split compositedocumentrepository into document repository and document gateway (#212)
  • ♻️(tycho) simplify config for envs (#215)

Fixed

  • 💚(tooling) disable PR-title-format on push (#207)

0.1.2

11 Feb 13:24
25ceab7

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.2] - 2026-02-11

Added

  • Offers ingestion - load document - technical improvements (#107)
  • 76 ingestion offers clean (#138)
  • ✨(tycho:ingestion) offers ingestion - load documents - use case implementation (#120)
  • ✨(tycho:candidate) add initialize cv_metadatas usecase
  • ✨(candidate) add simple cv results page
  • ✨(candidate) Integrate template and components for candidate cv results page
  • ✨(candidate) setup simple htmx filtering for cv results page
  • 🔒️(api) make all endpoints authenticated access only with jwt authent
  • ✨(tycho:candidate) instanciate process_uploaded_cv_usecase in CVUploadView (#161)
  • ✨(candidate) handle CV errors in candidate flow (#164)
  • ✨(candidate) instanciate match cv to opportunities (#167)
  • 💄(tycho:candidate) add CSP images required for next integration tasks (#179)
  • ✨(test:tycho) update test command to accept additional arguments (allows filtering) (#178)

Modified

  • ✨(tycho:ingestion) let clean_documents command accept OFFERS document type (#152)
  • ✨(tycho:candidate) update process uploaded cv usecase (#160)
  • ✨(tycho:candidate) add polling in match cv to opportunities (#163)
  • ✨(ingestion) vectorize offers (#166)
  • ✨(candidate) setup htmx and polling (#162)
  • 🐛(candidate) fix polling over-swapping content (#165)
  • ✨(ingestion) let clean_documents iterate over sliced dataset (#171)
  • 💄 (tycho:candidate) update global partials styles (#182)
  • 💄(tycho:candidate) update homepage template and styles (#180)

Fixed

  • 🐛(tycho) fix config tycho with django 6 (#151)
  • 🐛(tycho:ingestion) fix localisation and reference cleaner (#154)
  • 🐛(ingestion) fix errors preventing clean offers usecase saving in db (#168)
  • 🐛(shared) update CorpsModel and VectorizedDocumentsModel for instantiate match cv necessity (#183)

0.1.1

27 Jan 07:48
5083b84

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.1] - 2026-01-27

Added

  • ✨(tycho:ingestion) define entities and value objects for offers
  • 🔧(project) share vscode config (#55)
  • ✨ (tycho:candidate) add openai implementation for cv ocr (#46)
  • (project) add djLint for Django template linting and formatting (#101)
  • 🔧(tycho) configure Sass tooling (#100)
  • ✨(tycho:ingestion) add offer repository (#103)
  • Integrate candidate CV upload page (#53)
  • ✨(tycho:candidate) integrate minimal CV processing page (#102)
  • (tycho) Add talentsoft front office client to collect offers (#95)
  • Editor front-tooling upgrade (prettier, stylelint) (#121)

Modified

  • 🔧(tooling) ignore docker-compose.override.yml for local port customization (#80)
  • 109 Refactoriser le css existant en scss modulaire (#115)
  • Setup and enforce proper SCSS coding styles (#122)
  • ✨(tycho:ingestion) update offer entity and value objects (#128)
  • ♻️(tycho:ingestion) refactor clean tests (#130)

Removed

  • 🔧(tycho:candidate) remove redundant search path from candidate URLs (#92)

Fixed

  • 🔧(tooling:mypy) update python version for mypy, update domain/types.py syntax (#110)