{ "CI_job_history_included": false, "approvals": [], "diff_versions": [ { "commits": [ { "authored_date": null, "commit_author_id": null, "committed_date": null, "committer_id": null, "merge_request_commits_metadata_id": 306, "merge_request_diff_id": 195, "message": null, "project_id": null, "relative_order": 0, "sha": null, "trailers": {} } ], "files": [ { "a_mode": "100644", "b_mode": "100644", "binary": false, "deleted_file": false, "diff": "@@ -8,16 +8,16 @@\n \t\t\t\"name\": \"vac-optimizer\",\n \t\t\t\"version\": \"1.5.0\",\n \t\t\t\"dependencies\": {\n-\t\t\t\t\"@angular/animations\": \"21.2.4\",\n-\t\t\t\t\"@angular/cdk\": \"^21.2.2\",\n-\t\t\t\t\"@angular/common\": \"21.2.4\",\n-\t\t\t\t\"@angular/compiler\": \"21.2.4\",\n-\t\t\t\t\"@angular/core\": \"21.2.4\",\n-\t\t\t\t\"@angular/forms\": \"21.2.4\",\n-\t\t\t\t\"@angular/material\": \"^21.2.2\",\n-\t\t\t\t\"@angular/platform-browser\": \"21.2.4\",\n-\t\t\t\t\"@angular/platform-server\": \"21.2.4\",\n-\t\t\t\t\"@angular/router\": \"21.2.4\",\n+\t\t\t\t\"@angular/animations\": \"21.2.5\",\n+\t\t\t\t\"@angular/cdk\": \"^21.2.3\",\n+\t\t\t\t\"@angular/common\": \"21.2.5\",\n+\t\t\t\t\"@angular/compiler\": \"21.2.5\",\n+\t\t\t\t\"@angular/core\": \"21.2.5\",\n+\t\t\t\t\"@angular/forms\": \"21.2.5\",\n+\t\t\t\t\"@angular/material\": \"^21.2.3\",\n+\t\t\t\t\"@angular/platform-browser\": \"21.2.5\",\n+\t\t\t\t\"@angular/platform-server\": \"21.2.5\",\n+\t\t\t\t\"@angular/router\": \"21.2.5\",\n \t\t\t\t\"@angular/ssr\": \"21.2.3\",\n \t\t\t\t\"date-holidays\": \"^3.26.11\",\n \t\t\t\t\"dayjs\": \"^1.11.20\",\n@@ -348,9 +348,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/animations\": {\n-\t\t\t\"version\": \"21.2.4\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/animations/-/animations-21.2.4.tgz\",\n-\t\t\t\"integrity\": \"sha512-hO1P7ks9n7lW3D31bzHohSuoAaj05xJUlK8rZgX8IkH5DLx4qhvfNh0t4bbLuBJLP2r1TaLsQ8KFcemCkFRO2w==\",\n+\t\t\t\"version\": \"21.2.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/animations/-/animations-21.2.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-8jH48A1gNph5YGlTXXoXJ/5T6uEZB14ITad3uQwBMM1mUUvM0T4QIMk555jIe1fIHHUyTfRR2y7v8SfTe2++fA==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -359,7 +359,7 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/core\": \"21.2.4\"\n+\t\t\t\t\"@angular/core\": \"21.2.5\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/build\": {\n@@ -463,9 +463,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/cdk\": {\n-\t\t\t\"version\": \"21.2.2\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/cdk/-/cdk-21.2.2.tgz\",\n-\t\t\t\"integrity\": \"sha512-9AsZkwqy07No7+0qPydcJfXB6SpA9qLDBanoesNj5KsiZJ62PJH3oIjVyNeQEEe1HQWmSwBnhwN12OPLNMUlnw==\",\n+\t\t\t\"version\": \"21.2.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/cdk/-/cdk-21.2.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-7t+UhfbSpIUG9uUyL4b8nI/HyYyrbgAvDwBT8kH4D7If0WiFQhUoottAM0+WZ7Uy+F4nx322K6TOomz/fZJOoQ==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"parse5\": \"^8.0.0\",\n@@ -514,9 +514,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/common\": {\n-\t\t\t\"version\": \"21.2.4\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/common/-/common-21.2.4.tgz\",\n-\t\t\t\"integrity\": \"sha512-NrP6qOuUpo3fqq14UJ1b2bIRtWsfvxh1qLqOyFV4gfBrHhXd0XffU1LUlUw1qp4w1uBSgPJ0/N5bSPUWrAguVg==\",\n+\t\t\t\"version\": \"21.2.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/common/-/common-21.2.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-MTjCbsHBkF9W12CW9yYiTJdVfZv/qCqBCZ2iqhMpDA5G+ZJiTKP0IDTJVrx2N5iHfiJ1lnK719t/9GXROtEAvg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -525,14 +525,14 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/core\": \"21.2.4\",\n+\t\t\t\t\"@angular/core\": \"21.2.5\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/compiler\": {\n-\t\t\t\"version\": \"21.2.4\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.4.tgz\",\n-\t\t\t\"integrity\": \"sha512-9+ulVK3idIo/Tu4X2ic7/V0+Uj7pqrOAbOuIirYe6Ymm3AjexuFRiGBbfcH0VJhQ5cf8TvIJ1fuh+MI4JiRIxA==\",\n+\t\t\t\"version\": \"21.2.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-QloEsknGqLvmr+ED7QShDt7SoMY9mipV+gVnwn4hBI5sbl+TOBfYWXIaJMnxseFwSqjXTSCVGckfylIlynNcFg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -575,9 +575,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/core\": {\n-\t\t\t\"version\": \"21.2.4\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/core/-/core-21.2.4.tgz\",\n-\t\t\t\"integrity\": \"sha512-2+gd67ZuXHpGOqeb2o7XZPueEWEP81eJza2tSHkT5QMV8lnYllDEmaNnkPxnIjSLGP1O3PmiXxo4z8ibHkLZwg==\",\n+\t\t\t\"version\": \"21.2.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/core/-/core-21.2.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-JgHU134Adb1wrpyGC9ozcv3hiRAgaFTvJFn1u9OU/AVXyxu4meMmVh2hp5QhAvPnv8XQdKWWIkAY+dbpPE6zKA==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -586,7 +586,7 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/compiler\": \"21.2.4\",\n+\t\t\t\t\"@angular/compiler\": \"21.2.5\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\",\n \t\t\t\t\"zone.js\": \"~0.15.0 || ~0.16.0\"\n \t\t\t},\n@@ -600,9 +600,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/forms\": {\n-\t\t\t\"version\": \"21.2.4\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/forms/-/forms-21.2.4.tgz\",\n-\t\t\t\"integrity\": \"sha512-1fOhctA9ADEBYjI3nPQUR5dHsK2+UWAjup37Ksldk/k0w8UpD5YsN7JVNvsDMZRFMucKYcGykPblU7pABtsqnQ==\",\n+\t\t\t\"version\": \"21.2.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/forms/-/forms-21.2.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-pqRuK+a1ZAFZbs8/dZoorFJah2IWaf/SH8axHUpaDJ7fyNrwNEcpczyObdxZ00lOgORpKAhWo/q0hlVS+In8cw==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"@standard-schema/spec\": \"^1.0.0\",\n@@ -612,22 +612,22 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/common\": \"21.2.4\",\n-\t\t\t\t\"@angular/core\": \"21.2.4\",\n-\t\t\t\t\"@angular/platform-browser\": \"21.2.4\",\n+\t\t\t\t\"@angular/common\": \"21.2.5\",\n+\t\t\t\t\"@angular/core\": \"21.2.5\",\n+\t\t\t\t\"@angular/platform-browser\": \"21.2.5\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/material\": {\n-\t\t\t\"version\": \"21.2.2\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/material/-/material-21.2.2.tgz\",\n-\t\t\t\"integrity\": \"sha512-yY7kdmltNd28Tw8bHvoSFuoO8jMJSicSU9gB9r4jSLHPWAI9Y3V2qvLEimfPLRmzEaWwSoqKda95k/646lgg6A==\",\n+\t\t\t\"version\": \"21.2.3\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/material/-/material-21.2.3.tgz\",\n+\t\t\t\"integrity\": \"sha512-mqmqhHRKIJwSKaYUtb9hH6/oHmozgqv/pYQMvMa3Fd5iipV0VxXN2GdNl3WE9LV9FJhHDBMitNU0hdE0uCM1nQ==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/cdk\": \"21.2.2\",\n+\t\t\t\t\"@angular/cdk\": \"21.2.3\",\n \t\t\t\t\"@angular/common\": \"^21.0.0 || ^22.0.0\",\n \t\t\t\t\"@angular/core\": \"^21.0.0 || ^22.0.0\",\n \t\t\t\t\"@angular/forms\": \"^21.0.0 || ^22.0.0\",\n@@ -636,9 +636,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/platform-browser\": {\n-\t\t\t\"version\": \"21.2.4\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.4.tgz\",\n-\t\t\t\"integrity\": \"sha512-1A9e/cQVu+3BkRCktLcO3RZGuw8NOTHw1frUUrpAz+iMyvIT4sDRFbL+U1g8qmOCZqRNC1Pi1HZfZ1kl6kvrcQ==\",\n+\t\t\t\"version\": \"21.2.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-VuuYguxjgyI4XWuoXrKynmuA3FB991pXbkNhxHeCW0yX+7DGOnGLPF1oierd4/X+IvskmN8foBZLfjyg9u4Ffg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -647,9 +647,9 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/animations\": \"21.2.4\",\n-\t\t\t\t\"@angular/common\": \"21.2.4\",\n-\t\t\t\t\"@angular/core\": \"21.2.4\"\n+\t\t\t\t\"@angular/animations\": \"21.2.5\",\n+\t\t\t\t\"@angular/common\": \"21.2.5\",\n+\t\t\t\t\"@angular/core\": \"21.2.5\"\n \t\t\t},\n \t\t\t\"peerDependenciesMeta\": {\n \t\t\t\t\"@angular/animations\": {\n@@ -678,9 +678,9 @@\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/platform-server\": {\n-\t\t\t\"version\": \"21.2.4\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/platform-server/-/platform-server-21.2.4.tgz\",\n-\t\t\t\"integrity\": \"sha512-3xc06g4tSiPs7R4YnOITaALzoZECaxyzTX9eVNCh5bVJF2NxxdkDNXnyEtwocCqoleJmphVCaZTMMFbdJngmIw==\",\n+\t\t\t\"version\": \"21.2.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/platform-server/-/platform-server-21.2.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-fZBxgffh/fD986Ub4EfjZvIVRqwNnF4DFWjcFwPgU8INBjcMEUh5dR/D/nnlBx0EsZSMCd6FbigT8lIrx3lsHQ==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\",\n@@ -690,17 +690,17 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/common\": \"21.2.4\",\n-\t\t\t\t\"@angular/compiler\": \"21.2.4\",\n-\t\t\t\t\"@angular/core\": \"21.2.4\",\n-\t\t\t\t\"@angular/platform-browser\": \"21.2.4\",\n+\t\t\t\t\"@angular/common\": \"21.2.5\",\n+\t\t\t\t\"@angular/compiler\": \"21.2.5\",\n+\t\t\t\t\"@angular/core\": \"21.2.5\",\n+\t\t\t\t\"@angular/platform-browser\": \"21.2.5\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n \t\t\"node_modules/@angular/router\": {\n-\t\t\t\"version\": \"21.2.4\",\n-\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/router/-/router-21.2.4.tgz\",\n-\t\t\t\"integrity\": \"sha512-OjWze4XT8i2MThcBXMv7ru1k6/5L6QYZbcXuseqimFCHm2avEJ+mXPovY066fMBZJhqbXdjB82OhHAWkIHjglQ==\",\n+\t\t\t\"version\": \"21.2.5\",\n+\t\t\t\"resolved\": \"https://registry.npmjs.org/@angular/router/-/router-21.2.5.tgz\",\n+\t\t\t\"integrity\": \"sha512-yQGhTVGvh8OMW3auj13+g+OCSQj7gyBQON/2X4LuCvIUG71NPV6Fqzfk9DKTKaXpqo0FThy8/LPJ0Lsy3CRejg==\",\n \t\t\t\"license\": \"MIT\",\n \t\t\t\"dependencies\": {\n \t\t\t\t\"tslib\": \"^2.3.0\"\n@@ -709,9 +709,9 @@\n \t\t\t\t\"node\": \"^20.19.0 || ^22.12.0 || >=24.0.0\"\n \t\t\t},\n \t\t\t\"peerDependencies\": {\n-\t\t\t\t\"@angular/common\": \"21.2.4\",\n-\t\t\t\t\"@angular/core\": \"21.2.4\",\n-\t\t\t\t\"@angular/platform-browser\": \"21.2.4\",\n+\t\t\t\t\"@angular/common\": \"21.2.5\",\n+\t\t\t\t\"@angular/core\": \"21.2.5\",\n+\t\t\t\t\"@angular/platform-browser\": \"21.2.5\",\n \t\t\t\t\"rxjs\": \"^6.5.3 || ^7.4.0\"\n \t\t\t}\n \t\t},\n", "encoded_file_path": false, "external_diff_offset": null, "external_diff_size": null, "generated": true, "merge_request_diff_id": 195, "new_file": false, "new_path": null, "old_path": "package-lock.json", "project_id": 35, "relative_order": 0, "renamed_file": false, "too_large": false }, { "a_mode": "100644", "b_mode": "100644", "binary": false, "deleted_file": false, "diff": "@@ -27,16 +27,16 @@\n \t},\n \t\"private\": true,\n \t\"dependencies\": {\n-\t\t\"@angular/animations\": \"21.2.4\",\n-\t\t\"@angular/cdk\": \"^21.2.2\",\n-\t\t\"@angular/common\": \"21.2.4\",\n-\t\t\"@angular/compiler\": \"21.2.4\",\n-\t\t\"@angular/core\": \"21.2.4\",\n-\t\t\"@angular/forms\": \"21.2.4\",\n-\t\t\"@angular/material\": \"^21.2.2\",\n-\t\t\"@angular/platform-browser\": \"21.2.4\",\n-\t\t\"@angular/platform-server\": \"21.2.4\",\n-\t\t\"@angular/router\": \"21.2.4\",\n+\t\t\"@angular/animations\": \"21.2.5\",\n+\t\t\"@angular/cdk\": \"^21.2.3\",\n+\t\t\"@angular/common\": \"21.2.5\",\n+\t\t\"@angular/compiler\": \"21.2.5\",\n+\t\t\"@angular/core\": \"21.2.5\",\n+\t\t\"@angular/forms\": \"21.2.5\",\n+\t\t\"@angular/material\": \"^21.2.3\",\n+\t\t\"@angular/platform-browser\": \"21.2.5\",\n+\t\t\"@angular/platform-server\": \"21.2.5\",\n+\t\t\"@angular/router\": \"21.2.5\",\n \t\t\"@angular/ssr\": \"21.2.3\",\n \t\t\"date-holidays\": \"^3.26.11\",\n \t\t\"dayjs\": \"^1.11.20\",\n", "encoded_file_path": false, "external_diff_offset": null, "external_diff_size": null, "generated": false, "merge_request_diff_id": 195, "new_file": false, "new_path": null, "old_path": "package.json", "project_id": 35, "relative_order": 1, "renamed_file": false, "too_large": false } ], "metadata": { "base_commit_sha": "180a9540d8201bb55b71a88a9648d48de37855c5", "commits_count": 1, "created_at": "2026-05-03T16:00:25.934181", "diff_type": 1, "files_count": 2, "head_commit_sha": "311e4c6267351cf374bfa24d924d547c95c109df", "id": 195, "merge_request_id": 195, "project_id": 35, "start_commit_sha": "180a9540d8201bb55b71a88a9648d48de37855c5", "state": "collected", "stored_externally": null, "updated_at": "2026-05-03T16:00:26.413495" } } ], "discussions": [ { "id": "6e7b479e9c258bc09170eb8cd075ee3ecf044a13", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/4657567e632c1ae9940f03534ba102a8a0321e4278100cbef34f0ff2d5e4eb72?s=80&d=identicon", "id": 8, "locked": false, "name": "nessar", "public_email": null, "state": "active", "username": "nessar", "web_url": "https://gitlab.nessar.fr/nessar" }, "body": "/blocked_by #46", "commands_changes": {}, "confidential": false, "created_at": "2026-07-24T15:46:02.461Z", "id": 841, "imported": false, "imported_from": "none", "internal": false, "noteable_id": 195, "noteable_iid": 49, "noteable_type": "Issue", "project_id": 47, "resolvable": false, "system": false, "type": null, "updated_at": "2026-07-24T15:46:02.461Z" } ], "resolvable": false }, { "id": "90ba584ec87c4ce2b039b22458ac7af9f59afc0d", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/4657567e632c1ae9940f03534ba102a8a0321e4278100cbef34f0ff2d5e4eb72?s=80&d=identicon", "id": 8, "locked": false, "name": "nessar", "public_email": null, "state": "active", "username": "nessar", "web_url": "https://gitlab.nessar.fr/nessar" }, "body": "mentioned in issue #50", "commands_changes": {}, "confidential": false, "created_at": "2026-07-24T15:46:03.392Z", "id": 843, "imported": false, "imported_from": "none", "internal": false, "noteable_id": 195, "noteable_iid": 49, "noteable_type": "Issue", "project_id": 47, "resolvable": false, "system": true, "type": null, "updated_at": "2026-07-24T15:46:03.393Z" } ], "resolvable": false }, { "id": "7f7a852e82496bd569778a4deadaf08015ce6308", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/4657567e632c1ae9940f03534ba102a8a0321e4278100cbef34f0ff2d5e4eb72?s=80&d=identicon", "id": 8, "locked": false, "name": "nessar", "public_email": null, "state": "active", "username": "nessar", "web_url": "https://gitlab.nessar.fr/nessar" }, "body": "mentioned in issue #59", "commands_changes": {}, "confidential": false, "created_at": "2026-07-24T15:46:11.196Z", "id": 875, "imported": false, "imported_from": "none", "internal": false, "noteable_id": 195, "noteable_iid": 49, "noteable_type": "Issue", "project_id": 47, "resolvable": false, "system": true, "type": null, "updated_at": "2026-07-24T15:46:11.197Z" } ], "resolvable": false }, { "id": "1923dc70c4cdbc49bbb3d26b78f3506da3cf54f3", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/4657567e632c1ae9940f03534ba102a8a0321e4278100cbef34f0ff2d5e4eb72?s=80&d=identicon", "id": 8, "locked": false, "name": "nessar", "public_email": null, "state": "active", "username": "nessar", "web_url": "https://gitlab.nessar.fr/nessar" }, "body": "mentioned in commit 420a86d41d449fb59d1de5c86f02931dd409b172", "commands_changes": {}, "confidential": false, "created_at": "2026-07-24T18:02:06.125Z", "id": 902, "imported": false, "imported_from": "none", "internal": false, "noteable_id": 195, "noteable_iid": 49, "noteable_type": "Issue", "project_id": 47, "resolvable": false, "system": true, "type": null, "updated_at": "2026-07-24T18:02:06.127Z" } ], "resolvable": false } ], "format_version": 1, "notes": [ { "author_id": 8, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2026-07-24T15:46:02.461845", "discussion_id": "6e7b479e9c258bc09170eb8cd075ee3ecf044a13", "id": 841, "imported_from": 0, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "/blocked_by #46", "noteable_id": 195, "noteable_type": "Issue", "organization_id": null, "original_position": null, "position": null, "project_id": 47, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 49, "source_item_project_id": 47, "st_diff": null, "system": false, "type": null, "updated_at": "2026-07-24T15:46:02.461845", "updated_by_id": null }, { "author_id": 8, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2026-07-24T15:46:03.392407", "discussion_id": "90ba584ec87c4ce2b039b22458ac7af9f59afc0d", "id": 843, "imported_from": 0, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "mentioned in issue #50", "noteable_id": 195, "noteable_type": "Issue", "organization_id": null, "original_position": null, "position": null, "project_id": 47, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 49, "source_item_project_id": 47, "st_diff": null, "system": true, "type": null, "updated_at": "2026-07-24T15:46:03.393327", "updated_by_id": null }, { "author_id": 8, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2026-07-24T15:46:11.19636", "discussion_id": "7f7a852e82496bd569778a4deadaf08015ce6308", "id": 875, "imported_from": 0, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "mentioned in issue #59", "noteable_id": 195, "noteable_type": "Issue", "organization_id": null, "original_position": null, "position": null, "project_id": 47, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 49, "source_item_project_id": 47, "st_diff": null, "system": true, "type": null, "updated_at": "2026-07-24T15:46:11.197268", "updated_by_id": null }, { "author_id": 8, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2026-07-24T18:02:06.125979", "discussion_id": "1923dc70c4cdbc49bbb3d26b78f3506da3cf54f3", "id": 902, "imported_from": 0, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "mentioned in commit 420a86d41d449fb59d1de5c86f02931dd409b172", "noteable_id": 195, "noteable_type": "Issue", "organization_id": null, "original_position": null, "position": null, "project_id": 47, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 49, "source_item_project_id": 47, "st_diff": null, "system": true, "type": null, "updated_at": "2026-07-24T18:02:06.127198", "updated_by_id": null } ], "preexisting_missing_alternate_head": false, "source_assignees": [], "source_author": { "avatar_url": "https://secure.gravatar.com/avatar/4657567e632c1ae9940f03534ba102a8a0321e4278100cbef34f0ff2d5e4eb72?s=80&d=identicon", "id": 8, "locked": false, "name": "nessar", "public_email": null, "state": "active", "username": "nessar", "web_url": "https://gitlab.nessar.fr/nessar" }, "source_created_at": "2026-07-24T15:46:02.123Z", "source_discussion_locked": null, "source_id": 195, "source_iid": 49, "source_item_metadata": { "assignee": null, "assignees": [], "author": { "avatar_url": "https://secure.gravatar.com/avatar/4657567e632c1ae9940f03534ba102a8a0321e4278100cbef34f0ff2d5e4eb72?s=80&d=identicon", "id": 8, "locked": false, "name": "nessar", "public_email": null, "state": "active", "username": "nessar", "web_url": "https://gitlab.nessar.fr/nessar" }, "closed_at": "2026-07-26T17:21:39.297Z", "closed_by": { "avatar_url": "https://secure.gravatar.com/avatar/4657567e632c1ae9940f03534ba102a8a0321e4278100cbef34f0ff2d5e4eb72?s=80&d=identicon", "id": 8, "locked": false, "name": "nessar", "public_email": null, "state": "active", "username": "nessar", "web_url": "https://gitlab.nessar.fr/nessar" }, "confidential": false, "created_at": "2026-07-24T15:46:02.123Z", "description": "## Parent\n\n#42\n\n## What to build\n\nAlign the core Bail creation, editing, and amendment inputs with their save-time backend/domain rules so landlords receive immediate French guidance for parties, dates, and financial terms.\n\n## Acceptance criteria\n\n- [ ] Appartement, Locataire, Bail type, dates, rent, charges, deposit, due day, and other core inputs are audited against the current lifecycle-specific domain rules.\n- [ ] Angular mirrors every user-correctable save-time constraint without promoting readiness or legal warnings into premature blockers.\n- [ ] Backend validation returns all core Bail field failures through stable paths/codes before invoking the use case.\n- [ ] Creation, editing, and amendment failures map to controls, preserve values, focus the first invalid input, and clear independently after correction.\n- [ ] Conflicts and legal warnings remain distinct from invalid input and retain their existing override or recovery semantics.\n- [ ] Focused domain/web/form tests cover nuanced date and monetary cases and relevant checks pass.\n\n## Blocked by\n\n- #46", "discussion_locked": null, "downvotes": 0, "due_date": null, "has_tasks": false, "id": 195, "iid": 49, "imported": false, "imported_from": "none", "issue_type": "issue", "labels": [ "ready-for-agent" ], "merge_requests_count": 0, "milestone": null, "moved_to_id": null, "project_id": 47, "references": { "full": "nessar/lmnp-organizer#49", "relative": "#49", "short": "#49" }, "service_desk_reply_to": null, "severity": "UNKNOWN", "start_date": null, "state": "closed", "task_completion_status": { "completed_count": 0, "count": 6 }, "time_stats": { "human_time_estimate": null, "human_total_time_spent": null, "time_estimate": 0, "total_time_spent": 0 }, "title": "Aligner les champs principaux de création et d’avenant du Bail", "type": "ISSUE", "updated_at": "2026-07-26T17:21:39.594Z", "upvotes": 0, "user_notes_count": 1, "web_url": "https://gitlab.nessar.fr/nessar/lmnp-organizer/-/work_items/49" }, "source_kind": "Issue", "source_path": "nessar/lmnp-organizer", "source_project_id": 47, "source_reviewers": [], "source_updated_at": "2026-07-26T17:21:39.594Z", "state_events": [ { "close_after_error_tracking_resolve": false, "close_auto_resolve_prometheus_alert": false, "created_at": "2026-07-26T17:21:39.515236+00:00", "epic_id": null, "id": 468, "imported_from": 0, "issue_id": 195, "merge_request_id": null, "namespace_id": 55, "source_commit": null, "source_merge_request_id": null, "state": 2, "user_id": 8 } ], "target_number": 49 }