mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-22 14:38:10 +02:00
Qlik : extraction réseau coupée à 30 s par chromiumoxide, corrigée
Depuis le passage au serveur Rust, la mise à jour réseau d'un fournisseur (ex. Sovacom) échouait sur « Request timed out » : chromiumoxide coupe toute commande de page au bout de 30 s, en dur (REQUEST_TIMEOUT de CommandFuture), sans tenir compte du request_timeout du navigateur. Or toute l'extraction Qlik tient dans un seul Runtime.evaluate de plusieurs minutes. Playwright, côté TS, n'avait pas cette limite. PageQlik::evaluer lance désormais le script sans l'attendre, puis relève son résultat par des évaluations courtes (20 ms → 1 s). Aucune commande CDP n'approche plus les 30 s, quelle que soit la durée de l'extraction ; la recherche produit, qui passe par la même fonction, en profite aussi. Tests : - tests/faux-qlik : faux Qlik Sense (HTTPS, NTLM → ticket → cookie, page avec jeton CSRF, mini-moteur Engine) ; - extraction_faux_qlik (ignoré par défaut) : extraction complète de bout en bout avec un vrai Chromium, y compris contre celui de l'image de prod ; - fenetre_identique_au_ts : fenêtre 12 mois identique à l'ancien TS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DTseDg4hw2m9tGUJsqPt57
This commit is contained in:
7 files changed
+493
-11
No files matched your search
@@ -298,6 +298,26 @@ mod tests {
|
||||
NaiveDate::parse_from_str(s, "%Y-%m-%d").unwrap()
|
||||
}
|
||||
|
||||
/// Valeurs de référence calculées par l'ancien `qlik-date-range.ts`
|
||||
/// (`buildGridNetworkQlikDateFilter` + `getMonthRanges`).
|
||||
#[test]
|
||||
fn fenetre_identique_au_ts() {
|
||||
for (jour, label, q_start, q_end, premier_mois) in [
|
||||
("2026-10-10", "2025-10_2026-09", 45931, 46295, (45931, 45961)),
|
||||
("2026-10-14", "2025-10_2026-09", 45931, 46295, (45931, 45961)),
|
||||
("2026-01-05", "2025-01_2025-12", 45658, 46022, (45658, 45688)),
|
||||
("2026-03-31", "2025-03_2026-02", 45717, 46081, (45717, 45747)),
|
||||
] {
|
||||
let f = build_grid_network_qlik_date_filter(d(jour), 12);
|
||||
assert_eq!((f.label.as_str(), f.q_start, f.q_end, f.daily_serials.len()), (label, q_start, q_end, 365), "{jour}");
|
||||
let mois = get_month_ranges(&f);
|
||||
assert_eq!(mois.len(), 12, "{jour}");
|
||||
assert_eq!((mois[0].q_start, mois[0].q_end), premier_mois, "{jour}");
|
||||
assert_eq!(mois[11].q_end, q_end, "{jour}");
|
||||
assert_eq!(mois.iter().map(|m| m.daily_serials.len()).sum::<usize>(), 365, "{jour}");
|
||||
}
|
||||
}
|
||||
|
||||
// [1] + [2] Repères Qlik et aller-retour.
|
||||
#[test]
|
||||
fn reperes_qlik() {
|
||||
|
||||
Reference in new issue
Block a user