Outils de dossier
Les 27 outils qui gardent trace de ce qui a été décidé sur un projet, et du document qu’il produit.
Une conversation disparaît, un projet dure des mois. Ces vingt-cinq outils permettent à votre agent d’écrire ce qui a été retenu dans un dossier que vous rouvrez, annotez et exportez depuis stratta.ch/dossiers, et de lire et faire tout ce que la page du dossier sait lire et faire sur une question.
Vous ne les appelez pas à la main. Votre agent le fait pendant qu’il travaille, en suivant la
politique décrite dans get_methodology.
Ces outils sont ouverts à tout membre de l’organisation, contrairement aux outils d’ingestion réservés aux propriétaires et administrateurs. Un dossier est votre travail, pas le corpus partagé du bureau.
Ce qu’un dossier contient
Un dossier est un ensemble de questions à trancher, par exemple « Le pieu P38 peut-il être conservé ? » ou « Quel φ’k retenir pour le remblai ? ». C’est la question, et non l’entrée isolée, qui est l’unité de travail : c’est elle qu’on assigne, qu’on relit et qu’on clôt.
| Élément | Ce que c’est | Outil |
|---|---|---|
| Question | Ce qui reste à trancher | open_question |
| Preuve | Ce qui appuie une réponse : citation, valeur retenue, observation | save_finding |
| Option | Une manière de trancher la question, nommée dès son ouverture | listée dans open_question |
| Décision | Ce que vous avez confirmé, et pourquoi | record_decision |
Une preuve peut être enregistrée avant même de savoir à quelle question elle sert : elle reste alors « à classer », et vous la rattachez ensuite depuis l’application. Trois types de preuve, et la distinction n’est pas décorative :
| Type | Ce que c’est | Champs attendus |
|---|---|---|
reference | Ce que la norme dit | normCode, sectionPath, page |
hypothesis | La valeur que vous retenez, et pourquoi | value, detail, confidence |
observation | Ce que le terrain a montré | detail avec la date |
En calcul de structure, une valeur retenue est le résultat d’une formule et se recalcule. En
géotechnique, c’est un jugement posé entre trois sondages qui ne disent pas la même chose, et
la seule chose relisible six mois plus tard est le raisonnement. D’où le champ confidence :
established: calculée, ou lue directement dans la normejudgement: choisie par vous entre plusieurs valeurs possiblesto_confirm: provisoire, demande un essai ou une vérification
Confondre les trois est la faute professionnelle que ce champ existe pour éviter.
list_dossiers
Liste les dossiers de votre organisation, le plus récemment modifié en tête. Chaque ligne porte le nombre d’entrées et surtout le nombre de questions ouvertes : c’est ce qui désigne le dossier à reprendre.
Aucun paramètre.
open_dossier
Ouvre le dossier d’un projet, en le créant s’il n’existe pas encore.
namestringrequiredLe nom sous lequel vous parlez du projet, par exemple « Villa Morges, toiture ». C’est ce nom que vous emploierez pour le reprendre.
referencestringLe numéro de projet de votre organisation, s’il y en a un.
Idempotent sur le nom. Appeler l’outil deux fois avec le même nom renvoie le même dossier plutôt que d’en créer un second qui couperait l’historique du projet en deux.
Renvoie { dossierId, created }.
open_question
Ouvre une question à trancher dans un dossier, avant de rassembler des preuves pour elle. Une
question est l’unité de travail : « Le pieu P38 peut-il être conservé ? », « Quel φ’k retenir pour
le remblai ? ». Les preuves enregistrées avec save_finding et l’éventuelle décision de
record_decision s’y rattachent.
Une seule question par chose à trancher : une question dont le corps liste huit sous-questions ne peut être ni assignée, ni répondue, ni close une à une. Ouvrez huit questions.
dossierIdstringrequiredRenvoyé par open_dossier ou list_dossiers.
titlestringrequiredLa question en une ligne, formulée comme une question.
bodystringCe qui est en jeu et pourquoi ce n’est pas tranché, en deux ou trois phrases. Pas une liste de sous-questions.
optionsarrayLes manières de trancher la question, quand la norme ou vous en mettez plusieurs sur la table : « abandonner le pieu », « le récupérer par reprise en sous-œuvre et essais d’intégrité », « redistribuer sur P37/P39 ». Un nom court par option, dix au maximum.
Idempotent sur le titre. Rouvrir la même formulation renvoie la question déjà ouverte, avec ses preuves.
Renvoie { questionId, created }.
list_attachments
Liste les pièces d’un dossier (rapports, forages, procès-verbaux, fiches techniques) avec l’état de leur extraction. Un agent les lit avant de répondre sur un projet.
dossierIdstringrequiredLe dossier.
attachmentsarrayid, name, mimeType, bytes, pageCount, status (pending, ready,
failed), note, addedAt.
read_attachment
Lit le texte d’une pièce sous forme de document Markdown, page par page, par fenêtres.
attachmentIdstringrequiredDepuis list_attachments ou search_in_dossier.
fromnumberdefault: 1Première page.
tonumberdefault: dernièreDernière page.
maxCharsnumberdefault: 12000Caractères par appel (500 à 40000). Quand truncated vaut true, rappeler
avec from à nextPage.
markdownstringLes pages lues, chacune sous un titre ## p. N. Un scan sans couche de texte
le dit.
search_in_dossier
Recherche plein texte dans les pièces d’un dossier, accents et casse ignorés.
dossierIdstringrequiredLe dossier.
keywordstringrequiredTermes de recherche dans la langue des documents.
limitnumberdefault: 10Nombre maximal de correspondances (1 à 30).
hitsarrayattachmentId, name, page, snippet.
Sur le serveur local seulement, add_attachment téléverse un fichier depuis
la machine de l’utilisateur (PDF, DOCX, XLSX, PNG, JPEG, TXT, MD, CSV, 25 Mo
au plus, 20 par dossier). Le connecteur distant n’a pas de disque : déposez la
pièce depuis la page du dossier.
list_templates
Liste les gabarits de dossier de l’organisation : des listes de questions par type d’ouvrage, avec les clauses sur lesquelles chacune repose. Aucun paramètre.
templatesarrayid, name, description, questions, citations.
apply_template
Ouvre les questions d’un gabarit dans un dossier, avec leurs options, et dépose sous chacune une
entrée reference pour chaque clause qui se résout dans le corpus. Une clause que
l’organisation ne peut pas lire est écrite dans le corps de la question comme à établir.
Appliquer deux fois n’ouvre rien deux fois.
dossierIdstringrequiredLe dossier.
templateIdstringrequiredDepuis list_templates.
resultobjectquestionsOpened, referencesFiled, unresolved[] (question, normCode,
sectionPath).
draft_deliverable
Ouvre le document que le dossier produit (base du projet, convention d’utilisation, rapport
géotechnique, note de vérification, autre) et rend son plan : une section par chapitre, avec
son chemin, son titre, une indication de ce qui y va, son état (à établir, à jour, à revoir,
avec la raison quand une source a changé) et un extrait de ce qui est déjà écrit. Le plan est le plan validé du bureau pour ce type
quand il existe (page Méthodes), sinon celui que Stratta propose. Rend aussi les décisions
du dossier avec leurs identifiants, pour que write_section les cite, et le site quand il y
en a un. Appeler deux fois sur le même dossier et le même type rend le même document, jamais
un second.
dossierIdstringrequiredLe dossier.
kindstringrequiredproject_basis, use_agreement, geotechnical_report, verification_note
ou other.
titlestringLe titre, quand l’utilisateur l’a nommé. Par défaut : le type et le nom du dossier.
resultobjectdeliverableId, created, title, kind, status, templateName,
sections[] (path, title, level, hint, state, staleReason,
excerpt, sourceCount), decisions[] (entryId, question, title,
value, clause), openQuestions[], siteId.
write_section
Écrit une section du document : le texte tel qu’il sera imprimé, et ce sur quoi il repose.
Chaque phrase de fond vient d’une source que la section cite : une décision ou une preuve du
dossier (entry, l’identifiant de l’entrée), un fait de site (fact, la clé du fait comme
groundwater.level), une clause lue (clause, "SIA 267 s. 9.5.2"), une page d’une
pièce (attachment, l’identifiant suivi de #p12), une lecture (reading). Une section
sans source est refusée ; quand le dossier n’a rien pour elle, gap à true et un texte
qui dit ce qui manque : la section est imprimée « à établir ». Remplace ce que la section
contenait. Un document signé ne s’écrit plus. Quand une source change ensuite (décision
reprise, entrée supprimée, relevé du site, nouvelle édition), la section passe « à revoir »
avec la raison ; la réécrire, ou la garder depuis la page du dossier, la remet à jour.
deliverableIdstringrequiredDepuis draft_deliverable.
pathstringrequiredLe chemin de la section dans le plan, "2" ou "3.1".
bodystringrequiredLe texte, prose ou Markdown léger, 12 000 caractères au plus.
sourcesarrayrequiredUne liste de {kind, ref, label?}. Au moins une, sauf gap.
gapbooleantrue quand le dossier n’a rien pour cette section.
resultobjectstate : current ou gap.
save_finding
Enregistre une preuve dans un dossier. Votre agent l’appelle au fil du travail, pas en lot à la fin : une preuve consignée au moment où elle est trouvée garde le raisonnement qui l’a produite.
dossierIdstringrequiredRenvoyé par open_dossier ou list_dossiers.
questionIdstringLa question que cette preuve sert, renvoyée par open_question ou
load_dossier. Omis uniquement quand vous ne savez pas encore laquelle : la
preuve est enregistrée « à classer », et vous la rattachez plus tard depuis
l'application.
kindstringrequiredreference, hypothesis ou observation. Voir le tableau plus haut.
titlestringrequiredLe fait en une ligne, comme vous l’écririez dans un rapport.
detailstringLe raisonnement : pourquoi cette valeur, ce sur quoi elle repose, ce qui la contredit.
valuestringLa valeur retenue avec son unité, par exemple 30° ou 1,25 kN/m².
confidencestringestablished, judgement ou to_confirm.
normCodestringNorme d’origine, par exemple SIA 267.
sectionPathstringChemin de section exact, par exemple 9.5.2.1.
pagenumberPage dans la norme, pour que vous puissiez le vérifier dans votre PDF.
normEditionstringL’édition citée, par exemple « 2013 » ou « 2020 + rect. 2022 », quand
list_norms la donne.
record_decision
Enregistre ce que vous avez retenu : la décision en une ligne, pourquoi, et l’article sur
lequel cela repose. Deux façons de nommer la question : questionId quand elle existe déjà, ou
dossierId et question (ce qui est réglé, en une ligne) et la question est ouverte tranchée
dans le même geste. La question sort des points ouverts et garde ses preuves ; la décision
devient l’entrée qu’un relecteur lit en premier.
Votre agent ne l’appelle qu’une fois que vous avez confirmé la décision, jamais sur son seul raisonnement.
questionIdstringRenvoyée par open_question ou load_dossier, quand la question existe.
dossierIdstringSans questionId : le dossier auquel la décision appartient.
questionstringSans questionId : ce qui est réglé, en une ligne (« Angle de frottement de
la moraine »). Les mêmes mots retrouvent une question déjà ouverte.
retainedOptionstringL’option retenue, par son nom, quand la question en listait. Une option non listée jusque-là est créée à la volée.
titlestringrequiredLa décision en une ligne.
detailstringLe raisonnement.
valuestringLa valeur retenue avec son unité, quand la décision en porte une.
confidencestringestablished, judgement ou to_confirm.
normCodestringNorme d’origine.
sectionPathstringChemin de section exact.
pagenumberPage dans la norme.
normEditionstringL’édition citée.
Renvoie { entryId }.
load_dossier
Recharge tout ce qu’un dossier contient : ses questions avec leurs preuves, leurs options et leur
décision, puis les preuves qui ne sont pas encore rattachées à une question, puis les
commentaires. Les questions ouvertes viennent en premier : lisez-les avant tout le reste et
dites à l’utilisateur ce qui est encore ouvert. Les textes longs sont coupés (le détail d’une pièce à
280 caractères, l’énoncé d’une question à 480) : get_question les rend entiers.
Dites simplement « reprends le dossier Villa Morges » : votre agent appelle cet outil avant de répondre quoi que ce soit sur le projet, et repart de ce qui a été décidé au lieu de le redécider.
dossierIdstringÀ privilégier quand l’agent l’a déjà.
namestringLe nom du projet, quand vous le nommez plutôt que de donner un identifiant. Correspondance exacte.
L’un des deux est nécessaire.
resolve_question
Clôt une question qui a cessé d’importer sans décision : la variante a été abandonnée, le
client a retiré la demande, la question est devenue sans objet. La question reste dans le dossier,
marquée close, avec ses preuves. Pour trancher une question avec une réponse, appelez
record_decision.
questionIdstringrequiredRenvoyée par open_question ou load_dossier.
resolvedbooleantrue par défaut. Passez false pour rouvrir une question.
Lire une question à la fois
load_dossier est la reprise : tout le dossier, en petit, questions ouvertes en tête. C’est le
bon premier appel et le mauvais seul appel. Ce que la page du dossier montre et qu’il ne dit
pas : à qui une question est assignée et pour quand, les identifiants qu’il faut pour agir sur
une option ou une entrée, la citation d’une entrée champ par champ plutôt qu’en une ligne, les
commentaires avec leur auteur, l’historique. Les quatre outils suivants servent cela, une page
à la fois : quand nextCursor est présent, rappelez l’outil avec sa valeur en cursor.
list_questions
Les questions d’un dossier, avec leur statut, leur responsable, leur échéance, leurs options (et
l’identifiant de chacune) et le titre de la décision quand il y en a une. L’énoncé est coupé à 240 caractères ; get_question
le rend entier.
dossierIdstringrequiredLe dossier.
statusstringopen, decided ou closed. Omis : toutes.
limitnumberdefault: 50Questions par page (1 à 200).
cursorstringLe nextCursor de la page précédente.
get_question
Une question en entier : son énoncé, son statut, ses options avec leur description, sa décision,
ses preuves avec chaque champ de citation (normCode, sectionPath, page, normEdition,
attachmentId, attachmentPage) et l’option que chacune défend, et les commentaires laissés sur
la question et sur ces entrées, chacun avec son auteur. À appeler avant d’ajouter quoi que ce
soit à une question, pour ne rien y déposer deux fois.
questionIdstringrequiredDepuis list_questions, load_dossier ou open_question.
limitnumberdefault: 50Preuves par page (1 à 200).
cursorstringLe nextCursor de la page précédente.
get_dossier_activity
L’historique d’un dossier, le plus récent d’abord : qui a fait quoi et quand, depuis l’application ou depuis un agent, chaque ligne avec la question ou l’entrée qu’elle concerne.
dossierIdstringrequiredLe dossier.
limitnumberdefault: 15Lignes par page (1 à 200).
cursorstringLe nextCursor de la page précédente.
list_exports
Les notes de vérification et les journaux exportés d’un dossier, avec leur empreinte SHA-256, l’horodatage qualifié quand il a été obtenu et la version de méthodologie en vigueur. Le fichier se télécharge depuis la page du dossier ; l’outil dit qu’une note existe et permet de vérifier une empreinte reçue.
dossierIdstringrequiredLe dossier.
Agir sur une question
Tout ce que la page du dossier sait faire sur une question, votre agent le fait aussi, quand
vous le lui demandez. Deux de ces outils sont irréversibles : delete_question et
delete_option demandent votre confirmation dans le client avant de toucher quoi que ce soit,
comme record_decision.
update_question
Reformule une question, réécrit son enjeu, l’assigne à un membre de l’organisation par son
adresse e-mail, ou pose son échéance. Seuls les champs donnés changent ; null retire le
responsable ou l’échéance. Le statut, lui, passe par record_decision et resolve_question.
questionIdstringrequiredLa question.
titlestringLe nouvel énoncé, en une ligne.
bodystringCe qui est en jeu, en deux ou trois phrases.
assigneeEmailstring | nullL’adresse d’un membre de l’organisation. null retire le responsable.
dueAtstring | nullUn jour ISO, par exemple 2026-10-15. null retire l’échéance.
add_option
Ajoute une manière de trancher la question quand une variante apparaît après son ouverture.
Idempotent sur le nom : les mêmes mots renvoient l’option déjà listée. Dix options par question
au plus. Renvoie { optionId, created }.
questionIdstringrequiredLa question.
namestringrequiredL’option en quelques mots.
descriptionstringCe qu’elle implique, quand le nom ne suffit pas.
update_option
Renomme ou décrit une option, ou la marque comme retenue. En retenir une libère les autres : un
choix n’a qu’une réponse. La retenir ici ne tranche pas la question ; c’est record_decision
qui le fait, et qui nomme lui-même l’option retenue.
optionIdstringrequiredDepuis get_question, list_questions ou load_dossier.
namestringLe nouveau nom.
descriptionstringLa nouvelle description.
retainedbooleantrue pour la retenir, false pour la libérer.
delete_option
Retire une option d’une question. Les preuves classées sous elle restent sur la question.
Irréversible : votre confirmation est demandée dans le client, sauf si confirmed vaut true
parce que vous l’avez déjà donnée dans la conversation.
optionIdstringrequiredL’option.
confirmedbooleantrue quand vous avez déjà confirmé dans la conversation.
delete_question
Supprime une question d’un dossier. Ses preuves restent dans le dossier, à classer ; ses
options, ses commentaires et sa décision partent avec elle. Une question qui a cessé d’importer
se clôt avec resolve_question ; on ne supprime qu’une question ouverte par erreur, et
seulement quand vous le dites. Votre confirmation est demandée dans le client.
questionIdstringrequiredLa question.
confirmedbooleantrue quand vous avez déjà confirmé dans la conversation.
add_comment
Laisse une remarque sur le dossier, sur une question ou sur une entrée : un doute sur une
valeur, une note pour un collègue, la raison pour laquelle une preuve a été écartée. Un
commentaire est signé de l’utilisateur connecté et n’est pas une preuve : ce que la norme dit
passe par save_finding. Un dossier visé accepte encore des commentaires.
dossierIdstringrequiredLe dossier.
bodystringrequiredLe commentaire.
questionIdstringLa question concernée, s’il y en a une.
entryIdstringL’entrée concernée, s’il y en a une.
update_entry
Corrige une preuve ou une décision en place : son énoncé, sa valeur, sa confiance, ou la
citation quand le mauvais article a été cité. Seuls les champs donnés changent ; page: null
efface la page. Le type et la question ne changent pas ici.
entryIdstringrequiredDepuis get_question ou load_dossier.
titlestringLe fait en une ligne.
detailstringLe raisonnement.
valuestringLa valeur avec son unité.
confidencestringestablished, judgement ou to_confirm.
normCodestringLa norme.
sectionPathstringLe chemin de section.
pagenumber | nullLa page. null l’efface.
normEditionstringL’édition citée.
attach_entry
Classe une preuve sous une question, et si besoin sous l’une de ses options, ou la sort avec
questionId: null. C’est ainsi que la pile « à classer » de load_dossier se vide : lire, trouver
la question qu’elle sert, classer. Une décision ne se déplace pas : elle appartient à sa question.
entryIdstringrequiredL’entrée.
questionIdstring | nullrequiredLa question sous laquelle la classer, ou null pour la laisser à classer.
optionIdstring | nullL’option de cette question que l’entrée défend, ou null.
Limites
Pour borner un agent qui boucle, sans que cela ne se facture :
| Limite | Valeur |
|---|---|
| Dossiers par organisation | 200 |
| Questions par dossier | 200 |
| Options par question | 10 |
| Entrées par dossier | 500 |
| Commentaires par dossier | 500 |
Un dossier visé n’accepte plus d’entrée ni de modification. Les commentaires, eux, restent ouverts : la clôture d’un dossier n’est pas la fin de la conversation à son sujet.
Ce que Stratta ne fait pas
Le dossier documente votre raisonnement, il ne le remplace pas. Stratta ne conclut jamais à la conformité d’un ouvrage, et un agent ne doit écrire aucune hypothèse que vous n’avez pas validée.