Étape B — fiche de relevé des essais de sources sur la recette
Préparée par Claude Fable le 15/10/2026 pour Feki, d'après docs\MISSION-collecte-avancee-reprise.md (§ 2) et
LISEZMOI-COLLECTE-ETAPE2.md. À remplir puis à coller dans la conversation (ou : coller les sorties brutes de Tester,
ou des captures de la recette). Claude Fable rédige ensuite le tableau de l'étape B dans le compte rendu.
0. Cadre
- Tout se passe sur la recette :
https://tenders.softic.io:9443(barre « (RECETTE) »). Jamais sur la production. - Le bouton Tester de la page Sources exécute le connecteur à blanc : il n'écrit aucun avis. Ne pas utiliser Collecter maintenant pendant les essais (il écrirait dans la base de recette ; une source à la fois et seulement si nécessaire, après accord).
- Les portails sont interrogés au rythme d'un lecteur humain (2 pages au plus, pauses). Si un portail répond par une page anti-robot, le noter : on ne cherche pas à la contourner (étape 3).
- Prérequis : point 1 de l'étape B fait (
Etape-B-Recette.ps1terminé sans erreur : binaires de la production, Playwright et pilote présents dans la recette,/health= Healthy).
1. Ce qu'il faut relever pour chaque source
Ce qu'affiche Tester : avis lus, seraient créés, ignorés avec leurs motifs (sans date, pays non reconnu, secteur non reconnu, échu, doublon), et les intitulés de l'échantillon (trois suffisent). Noter aussi la durée approximative et tout message d'erreur, tel quel.
Tableau à remplir (une ligne par source ; les cases « attendu » sont là pour comparer) :
| Source | Connecteur | Lus | Seraient créés | Sans date | Pays | Secteur | Échu | Doublon | 3 intitulés de l'échantillon | Durée / remarques |
|---|---|---|---|---|---|---|---|---|---|---|
| TED | ted-eu (fiche inchangée) |
|||||||||
| Banque mondiale | worldbank-procnotices (fiche inchangée) |
|||||||||
| TUNEPS | json-api |
|||||||||
| Etimad | json-api |
|||||||||
| MINFIN Angola | json-api (POST) |
|||||||||
| Monaqasat | browser-html |
|||||||||
| UCM Énergie RDC | browser-html |
|||||||||
| BID | generic-html |
2. Les deux sources corrigées sans changement de fiche
TED — ne rien changer à la fiche. Sources → Tester. Attendu : des avis ouverts du périmètre (12 le 15/10), aucune erreur 400. Un « TED a répondu 400 … » serait à coller tel quel.
Banque mondiale — ne rien changer à la fiche. Sources → Tester. Attendu : des avis récents à échéance future (le connecteur lit désormais la fin du jeu de données, 3 000 derniers enregistrements par défaut), et non plus une série d'avis de 2005 « échéance dépassée ».
3. Les six sources à configurer (si la configuration manque dans la recette)
Pour chacune : Paramétrage > Sources → fiche de la source → connecteur indiqué (les clés json-api et browser-html
s'affichent sans libellé : point C5 du compte rendu) → coller la configuration ci-dessous dans la configuration JSON →
Enregistrer → page Sources → Tester.
Les trois configurations json-api portent déjà rows (300, 240, 200) : le garder. Sans lui, le formulaire guidé le
ramène à 200 à l'enregistrement (C5).
3.1 TUNEPS — json-api (remplace le connecteur tuneps, qui visait l'ancien site de l'ONMP)
{
"url": "https://www.marchespublics.gov.tn/fr/appels-doffres?draw=1&start={offset}&length={size}",
"headers": { "X-Requested-With": "XMLHttpRequest", "Accept": "application/json" },
"itemsPath": "data",
"pageSize": 100,
"maxPages": 3,
"rows": 300,
"fields": {
"id": "id",
"title": "title_fr",
"client": "organization.name_fr",
"deadline": "tenderPeriod_endDate",
"publication": "publication_date"
},
"urlTemplate": "https://www.marchespublics.gov.tn/fr/appels-doffres/{id}",
"defaultCountry": "TUN",
"currencyCode": "TND"
}
Attendu : jusqu'à 300 avis lus (environ deux semaines de publications), pays TUN reconnu ; avant les mots-clés arabes,
une grande partie est écartée pour « secteur non reconnu » (intitulés en arabe) — c'est normal, on compare après l'étape 4.
3.2 Etimad (Arabie saoudite) — json-api
{
"url": "https://tenders.etimad.sa/Tender/AllSupplierTendersForVisitorAsync?PageSize={size}&PublishDateId=5&pageNumber={page}",
"headers": { "X-Requested-With": "XMLHttpRequest", "Accept": "application/json" },
"itemsPath": "data",
"pageSize": 24,
"maxPages": 10,
"rows": 240,
"fields": {
"id": "tenderId",
"title": "tenderName",
"client": "{agencyName} - {branchName}",
"deadline": "lastOfferPresentationDate",
"publication": "submitionDate",
"sector": "tenderActivityName",
"summary": "{tenderTypeName} - Ref. {referenceNumber}"
},
"urlTemplate": "https://tenders.etimad.sa/Tender/DetailsForVisitor?STenderId={tenderIdString}",
"defaultCountry": "SAU",
"currencyCode": "SAR"
}
Garder pageSize à 24 (plafond du portail). Attendu : jusqu'à 240 avis lus (environ trois jours), pays SAU ; beaucoup
de « secteur non reconnu » avant les mots-clés arabes.
3.3 MINFIN Angola — json-api (POST)
{
"url": "https://compraspublicas.minfin.gov.ao/ComprasPublicas/servicos/anunciopublico/listar",
"method": "POST",
"body": {
"nuReferencia": null, "idVpdOd": null, "tipoProcedimentoSNCP": null, "objetoContrato": null,
"noProvincia": null, "dsAnuncio": null, "dtPublicacaoInicio": null, "dtPublicacaoFim": null,
"dtApresInicio": null, "dtApresFim": null, "situacao": null,
"paginaAtual": "{page}", "itensPorPagina": "{size}"
},
"itemsPath": "objetoRetorno.data.lista",
"pageSize": 50,
"maxPages": 4,
"rows": 200,
"fields": {
"id": "{flOrigem}-{codigo}",
"title": "descricao",
"client": "epc",
"deadline": "dtContadorFim",
"publication": "publicacao",
"sector": "tipoContrato",
"summary": "{tipoProcedimento} - {provinciaExecucao} - Ref. {numeroPcp}",
"contact": "email"
},
"urlTemplate": "https://compraspublicas.minfin.gov.ao/ComprasPublicas/#!/anuncios",
"dateFormats": ["dd/MM/yyyy HH:mm:ss", "dd/MM/yyyy"],
"defaultCountry": "AGO",
"currencyCode": "AOA"
}
Attendu : jusqu'à 200 avis lus, pays AGO ; une part « échu » (le connecteur rend aussi les avis passés, l'ingestion les
écarte) ; surtout de petits achats municipaux écartés pour « secteur non reconnu » avant les mots-clés portugais. Le lien
mène à la liste du portail (pas de page par avis) ; la référence est dans le résumé.
3.4 Monaqasat (Qatar) — browser-html
{
"feedUrl": "https://monaqasat.mof.gov.qa/TendersOnlineServices/AvailableMinistriesTenders/{page}",
"maxPages": 5,
"linkPattern": "/TendersOnlineServices/TenderDetails/",
"titleMinLength": 15,
"contextLevels": 3,
"deadlineLabel": "Close date",
"locale": "en-US",
"waitFor": "a[href*='/TenderDetails/']",
"defaultCountry": "QAT",
"currencyCode": "QAR"
}
Premier essai browser-html sur la recette : c'est lui qui prouve qu'Edge démarre sous le pool TenderRecette. Attendu :
des avis avec une date de clôture lue dans « Close date », pays QAT. Un message mentionnant Edge, le pilote ou un délai
dépassé est à coller tel quel. Cette source couvre aussi Kahramaa.
3.5 UCM Énergie RDC — browser-html
{
"feedUrl": "https://www.ucmenergie-rdc.com/actus.php?idrub=51",
"linkPattern": "idart=",
"rows": 10,
"keywords": ["travaux", "fourniture", "construction", "installation", "réhabilitation", "rehabilitation",
"centrale", "électrification", "electrification", "solaire", "ligne", "poste"],
"fallbackDeadlineDays": 21,
"waitMs": 1000,
"defaultCountry": "COD",
"currencyCode": "USD"
}
Attendu : au plus 10 avis lus (les plus récents), échéance fixée à J+21 faute de date dans la liste, recrutements de
consultants écartés par les mots-clés, pays COD.
3.6 BID — generic-html (à la place du connecteur RSS de la BAD)
{
"feedUrl": "https://www.isdb.org/project-procurement/tenders",
"linkPattern": "/project-procurement/tenders/",
"pageParam": "page", "firstPage": 0, "maxPages": 3,
"deadlineLabel": "Deadline",
"defaultFunder": "Islamic Development Bank"
}
Attendu : « 0 avis » est normal tant que la BID n'a aucun appel d'offres actif (c'était le cas le 15/10) ; l'important est l'absence d'erreur.
4. Mots-clés arabes et portugais (Paramétrage > Mots-clés sectoriels / Règles de reconnaissance)
Avant d'ajouter : noter pour Etimad, TUNEPS et MINFIN le nombre d'avis écartés pour « secteur non reconnu » (tableau du § 1). Puis associer chaque mot-clé au secteur correspondant de la liste de la recette (comparaison sans accents ni majuscules), et retester les trois sources : noter le nouveau nombre.
| Secteur | Arabe (Etimad, TUNEPS) | Portugais (MINFIN Angola) |
|---|---|---|
| Pétrole & gaz | نفط · بترول · غاز · أنابيب · مصفاة · تكرير · حفر | petróleo · gás · oleoduto · gasoduto · refinaria · perfuração · tubagem |
| Eau & environnement | مياه · تحلية · صرف صحي · معالجة · محطة ضخ · خزان · سد | água · saneamento · esgoto · tratamento de água · dessalinização · furo · reservatório |
| Énergies renouvelables | طاقة شمسية · شمسية · الطاقة المتجددة · رياح · كهروضوئية | solar · fotovoltaic · energia renovável · eólica |
| Construction industrielle / électricité | كهرباء · محطة تحويل · محولات · خطوط نقل · مقاولات · تشييد | empreitada · construção · reabilitação · subestação · linha de transporte · electrificação · energia eléctrica |
| Source | « Secteur non reconnu » avant | après | Remarques |
|---|---|---|---|
| Etimad | |||
| TUNEPS | |||
| MINFIN Angola |
ARMP RDC : vérifier que les mots français travaux, réhabilitation, adduction, forage, électrification et assainissement existent dans les mots-clés (8 avis sur 10 étaient écartés pour « secteur non reconnu »). Noter : présents / ajoutés.
5. Retour
Coller dans la conversation : le tableau du § 1 et celui du § 4 remplis (ou les sorties brutes de Tester), les messages d'erreur tels quels, et, si utile, des captures de la recette. Les configurations et mots-clés validés seront ensuite appliqués en production par Feki — ou par Claude Fable sur autorisation explicite.