Compare commits
25 Commits
main
...
advalo-dan
| Author | SHA1 | Date |
|---|---|---|
|
|
c414de04aa | |
|
|
70dd59b03e | |
|
|
7b484f34c9 | |
|
|
349c379dc7 | |
|
|
5338f682af | |
|
|
4927d22387 | |
|
|
0b7d8b6eb3 | |
|
|
47c70697d3 | |
|
|
a8d0e69585 | |
|
|
f57855d143 | |
|
|
b35d64a241 | |
|
|
bb695a820e | |
|
|
cc7d3d9e08 | |
|
|
e4cb9906b4 | |
|
|
4919940a26 | |
|
|
0125e2ae69 | |
|
|
d6f06dfd7b | |
|
|
77bf98e6cd | |
|
|
0a536140ab | |
|
|
5de492b308 | |
|
|
4f82b29f18 | |
|
|
a929c0770c | |
|
|
4cc8167ad8 | |
|
|
5a0ff43300 | |
|
|
013cd0eb8d |
|
|
@ -0,0 +1,5 @@
|
||||||
|
DB_URL=http://127.0.0.1:8091/
|
||||||
|
DB_ADMIN=admin@axa.fr
|
||||||
|
DB_PASSWORD=DTadmin123TT
|
||||||
|
NODE_ENV=developpement
|
||||||
|
PORT=8082
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
DB_URL=http://127.0.0.1:8091/
|
||||||
|
DB_ADMIN=admin@example.local
|
||||||
|
DB_PASSWORD=change-me
|
||||||
|
NODE_ENV=development
|
||||||
|
PORT=8082
|
||||||
|
|
||||||
|
# Optional runtime overrides for Advalorem
|
||||||
|
# ADV_WORKSPACE_ROOT=/absolute/path/to/ecole
|
||||||
|
|
||||||
|
# Optional AXA bridge tuning
|
||||||
|
# AXA_TIMEOUT_MS=65000
|
||||||
|
# AXA_RETRY_COUNT=1
|
||||||
|
# AXA_RETRY_DELAY_MS=1200
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Dependencies
|
||||||
|
node_modules/
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Classique
|
||||||
|
package-lock.json
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# PocketBase runtime data (local only)
|
||||||
|
src/db/pb_data/*.db
|
||||||
|
src/db/pb_data/*.db-shm
|
||||||
|
src/db/pb_data/*.db-wal
|
||||||
|
# Squelette versionné (data.db/logs.db) mais pas les transients
|
||||||
|
src/db/pb_data_backup/*.db-shm
|
||||||
|
src/db/pb_data_backup/*.db-wal
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# OS files
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# Build outputs
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Documents Advalo générés (données client) — régénérés à l'exécution
|
||||||
|
documents/
|
||||||
|
|
||||||
|
# Rapports de migration/bench (régénérés)
|
||||||
|
reports/
|
||||||
|
scripts/reports/
|
||||||
|
|
||||||
|
# Build du helper AXA C# (recompilé via dotnet publish)
|
||||||
|
src/axa-helper/bin/
|
||||||
|
src/axa-helper/obj/
|
||||||
|
|
||||||
|
# Runtime
|
||||||
|
.runtime/
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
# EasyTransport / Advalorem Runtime Notes
|
||||||
|
|
||||||
|
## Local PocketBase workflow
|
||||||
|
|
||||||
|
1. Bootstrap local DB files from tracked backup:
|
||||||
|
- `npm run db:bootstrap`
|
||||||
|
- `npm run db:bootstrap:reset` (force overwrite)
|
||||||
|
2. Start PocketBase on `DB_URL` host/port:
|
||||||
|
- `npm run db:start`
|
||||||
|
3. Start app:
|
||||||
|
- `npm run start`
|
||||||
|
|
||||||
|
## Advalorem runtime overrides
|
||||||
|
|
||||||
|
- `ADV_WORKSPACE_ROOT`: force workspace root for packaged/runtime environments
|
||||||
|
- Advalorem APIs (`/advalo/*`) run in PocketBase mode by default.
|
||||||
|
- No `sqlite3` CLI dependency is required for historique/cumul/reporting/export.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- `pb_data/*.db*` are local runtime files and are no longer intended to be versioned.
|
||||||
|
- `src/db/pb_data_backup/` remains the baseline source for local bootstrap.
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -5,13 +5,17 @@
|
||||||
"main": "./src/server.js",
|
"main": "./src/server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "nodemon ./src/server.js",
|
"start": "nodemon ./src/server.js",
|
||||||
|
"db:start": "node ./scripts/db-start.js",
|
||||||
|
"db:bootstrap": "node ./scripts/db-bootstrap-local.js",
|
||||||
|
"db:bootstrap:reset": "node ./scripts/db-bootstrap-local.js --reset",
|
||||||
|
"advalo:migrate": "node ./scripts/advalo-migrate-v1-to-v2.js --reset",
|
||||||
|
"advalo:bench": "node ./scripts/advalo-bench.js",
|
||||||
|
"advalo:axa-smoke": "node ./scripts/axa-smoke.js",
|
||||||
"build": "pkg ./src/server.js -o EasyTransport",
|
"build": "pkg ./src/server.js -o EasyTransport",
|
||||||
"test": "jest"
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"pkg": {
|
"pkg": {
|
||||||
"assets": [
|
"assets": ["public/**"]
|
||||||
"public/**"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "cyril.ducaffy@axa.fr",
|
"author": "cyril.ducaffy@axa.fr",
|
||||||
|
|
@ -19,6 +23,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.7.2",
|
"axios": "^1.7.2",
|
||||||
"cjs": "^0.0.11",
|
"cjs": "^0.0.11",
|
||||||
|
"csv-parse": "^5.5.6",
|
||||||
"docxtemplater": "^3.46.1",
|
"docxtemplater": "^3.46.1",
|
||||||
"dotenv": "^16.3.1",
|
"dotenv": "^16.3.1",
|
||||||
"ejs": "^3.1.9",
|
"ejs": "^3.1.9",
|
||||||
|
|
@ -31,6 +36,7 @@
|
||||||
"numeral": "^2.0.6",
|
"numeral": "^2.0.6",
|
||||||
"pizzip": "^3.1.6",
|
"pizzip": "^3.1.6",
|
||||||
"pocketbase": "^0.15.3",
|
"pocketbase": "^0.15.3",
|
||||||
|
"xlsx": "^0.18.5",
|
||||||
"winston": "^3.13.0",
|
"winston": "^3.13.0",
|
||||||
"winston-daily-rotate-file": "^4.7.1"
|
"winston-daily-rotate-file": "^4.7.1"
|
||||||
},
|
},
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
body {
|
body {
|
||||||
font-family: 'Roboto', sans-serif;
|
font-family: 'Roboto', sans-serif;
|
||||||
|
background-color: white;
|
||||||
|
color: black;
|
||||||
|
color-scheme: light;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3, h4, h5, h6 {
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
|
@ -183,6 +186,17 @@ hr.form {
|
||||||
padding: 5px 12px !important;
|
padding: 5px 12px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chip-info{
|
||||||
|
padding: 5px;
|
||||||
|
width: 30%;
|
||||||
|
text-align: center;
|
||||||
|
background: darkblue;
|
||||||
|
color: white;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
#goodParcoursModal {
|
#goodParcoursModal {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
max-height: 80%;
|
max-height: 80%;
|
||||||
|
|
@ -226,6 +240,63 @@ hr.form {
|
||||||
background: #26a69a;
|
background: #26a69a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#advaloNavSelect .active a {
|
||||||
|
background: #26a69a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#advaloNavSelect li a {
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 0.2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advalo-panel .input-field > label {
|
||||||
|
color: #1a237e !important;
|
||||||
|
transition: transform .18s ease, color .18s ease, font-size .18s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advalo-panel .input-field > label.active {
|
||||||
|
transform: translateY(-24px) scale(0.82) !important;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advalo-loader-wrap {
|
||||||
|
min-height: 46px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advalo-ring-loader {
|
||||||
|
width: 34px;
|
||||||
|
height: 34px;
|
||||||
|
border: 3px solid rgba(0, 0, 139, 0.18);
|
||||||
|
border-top-color: #00008b;
|
||||||
|
border-right-color: #26a69a;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 0 auto;
|
||||||
|
animation: advalo-spin 0.9s cubic-bezier(0.5, 0.1, 0.5, 0.9) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advalo-cumul-hist,
|
||||||
|
.advalo-cumul-fact {
|
||||||
|
margin-right: 6px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advalo-panel .btn,
|
||||||
|
.advalo-panel .btn-flat {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes advalo-spin {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg) scale(1);
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
transform: rotate(180deg) scale(1.04);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg) scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.border {
|
.border {
|
||||||
border-radius: 10px !important;
|
border-radius: 10px !important;
|
||||||
}
|
}
|
||||||
|
|
@ -408,6 +479,110 @@ a.grille-garanties:hover{
|
||||||
color : white
|
color : white
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#rcProjetBlockingSummary,
|
||||||
|
#rcTarifBlockingSummary {
|
||||||
|
margin: 1rem 0 1.5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-blocking-summary {
|
||||||
|
display: none;
|
||||||
|
border-left: 6px solid #c62828;
|
||||||
|
background-color: #ffebee;
|
||||||
|
color: #b71c1c;
|
||||||
|
padding: 12px 16px;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-blocking-title {
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-blocking-list {
|
||||||
|
margin: 0;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-blocking-list li {
|
||||||
|
margin: 3px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-field-label {
|
||||||
|
display: block;
|
||||||
|
color: #1a237e;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-has-floating-label {
|
||||||
|
position: relative;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-has-floating-label .rc-field-label.rc-floating-label {
|
||||||
|
position: static;
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
margin: 0 0 6px 0;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #1a237e;
|
||||||
|
pointer-events: none;
|
||||||
|
transition: none;
|
||||||
|
background: transparent;
|
||||||
|
padding: 0;
|
||||||
|
z-index: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-has-floating-label .rc-field-label.rc-floating-label.active {
|
||||||
|
top: auto;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #1a237e;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-tarifettes-hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-three-col-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||||
|
gap: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-three-col-grid > [class*="col"] {
|
||||||
|
width: 100% !important;
|
||||||
|
margin-left: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-three-col-grid .card {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-three-col-grid .card-content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-equal-card-row > [class*="col"] {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-equal-card-row .card {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rc-equal-card-row .card-content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
#modalTarifCom span.material-icons {
|
#modalTarifCom span.material-icons {
|
||||||
font-size: 4rem;
|
font-size: 4rem;
|
||||||
}
|
}
|
||||||
|
|
@ -512,3 +687,49 @@ a.grille-garanties:hover{
|
||||||
@keyframes l13 {
|
@keyframes l13 {
|
||||||
100% { transform: rotate(1turn); }
|
100% { transform: rotate(1turn); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Message d'erreur du loader */
|
||||||
|
#error-message {
|
||||||
|
display: none;
|
||||||
|
color: #ff4444;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 20px;
|
||||||
|
white-space: pre-line;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Message de timeout du loader */
|
||||||
|
#timeout-message {
|
||||||
|
display: none;
|
||||||
|
margin-top: 30px;
|
||||||
|
text-align: center;
|
||||||
|
color: #d0d0d0;
|
||||||
|
font-size: 14px;
|
||||||
|
max-width: 420px;
|
||||||
|
line-height: 1.6;
|
||||||
|
padding: 0 20px;
|
||||||
|
animation: fadeIn 0.5s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeIn {
|
||||||
|
from { opacity: 0; transform: translateY(10px); }
|
||||||
|
to { opacity: 1; transform: translateY(0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lien cliquable pour annuler le chargement */
|
||||||
|
#cancel-loading-link {
|
||||||
|
color: #66B2FF;
|
||||||
|
text-decoration: underline;
|
||||||
|
text-underline-offset: 3px;
|
||||||
|
text-decoration-thickness: 1px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cancel-loading-link:hover {
|
||||||
|
color: #90CAF9;
|
||||||
|
text-decoration-thickness: 2px;
|
||||||
|
text-shadow: 0 0 10px rgba(102, 178, 255, 0.6);
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue