nettoyage et ajout d'une procédure pour la partie informatique de labo 1.5

note: c'est pas terminé mais je publie en urgence pour que valérie puisse regarder ça.

travail lié à [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3959]
This commit is contained in:
Guillaume Raffy 2024-10-11 18:56:12 +02:00
parent 2244e11e3c
commit f971ae9c0b
6 changed files with 557 additions and 32 deletions

113
README.md
View File

@ -6,23 +6,24 @@ Projet créé pour remplir la partie matériel informatique de [labo 1.5](https:
- 2019
- cnrs
- from_ngiquiaux
- `commandes-2019-cnrs-t001.xls` : Ce fichier contient l'ensemble des achats de 2019, avec le libellé et le fournisseur. ngiquiaux a obtenu ce fichier par un des types d'extraction (todo: trouver son nom) de `gestlab`. Ca ressemble davantage à un rapport qu'une base de données, vu que l'unique feuille de calcul contient en fait une série de tableaux du même type, à raison d'un tableau par `Entité dépensière`. Un seul tableau avec une colonne entité `Entité dépensière` aurait été plus facile à exploiter.
- [commandes-2019-cnrs-t001.xls](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t001.xls) : Ce fichier contient l'ensemble des achats de 2019, avec le libellé et le fournisseur. ngiquiaux a obtenu ce fichier par un des types d'extraction (todo: trouver son nom) de `gestlab`. Ca ressemble davantage à un rapport qu'une base de données, vu que l'unique feuille de calcul contient en fait une série de tableaux du même type, à raison d'un tableau par `Entité dépensière`. Un seul tableau avec une colonne entité `Entité dépensière` aurait été plus facile à exploiter.
- fichier envoyé par ngiquiaux à graffy le `Wed, 18 Jan 2023 14:55:29 +0100`.
- `commandes-2019-cnrs-t001.tsv` : `commandes-2019-cnrs-t001.xls` après conversion au format `tsv` avec `libreoffice`
- `commandes-2019-cnrs-t002.xls` : Suite à une demande de graffy signalant à ngiquiaux qu'il manquait le code nacres dans `commandes-2019-cnrs-t001.xls`, ngiquiaux a obtenu ce fichier par un des types d'extraction (todo: trouver son nom, mais dedans je me souviens qu'il y avait le mot *détail*) de `gestlab`, après en avoir essayés pluieurs autres.
- [commandes-2019-cnrs-t001.tsv](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t001.tsv) : [commandes-2019-cnrs-t001.xls](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t001.xls) après conversion au format `tsv` avec `libreoffice`
- [commandes-2019-cnrs-t002.xls](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t002.xls) : Suite à une demande de graffy signalant à ngiquiaux qu'il manquait le code nacres dans [commandes-2019-cnrs-t001.xls](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t001.xls), ngiquiaux a obtenu ce fichier par un des types d'extraction (todo: trouver son nom, mais dedans je me souviens qu'il y avait le mot *détail*) de `gestlab`, après en avoir essayés pluieurs autres.
- fichier envoyé par ngiquiaux à graffy le `Thu, 26 Jan 2023 17:39:10 +0100`
- `cnrs-matieres-001.csv` : ce fichier est censé décrire les codes des matières utilisés dans `commandes-2019-cnrs-t002.xls`
- [cnrs-matieres-001.csv](achats-ipr/2019/cnrs/from_ngicquiaux/cnrs-matieres-001.csv) : ce fichier est censé décrire les codes des matières utilisés dans [commandes-2019-cnrs-t002.xls](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t002.xls)
- fichier envoyé par ngiquiaux à graffy le `Thu, 26 Jan 2023 17:39:10 +0100`
- `commandes-it-2019-cnrs-002.tsv` : copie de `<ddrs-root>/tmp/commandes-it-2019-cnrs-002.tsv` manuellement annotée par graffy le 03/02/2023 pendant la création de `it-cnrs-l1p5.tsv`
- `it-cnrs-l1p5.tsv` : achats it cnrs 2019 au format attendu par `labo1.5`
- manuellement créé par graffy le 03/02/2023 à partir de `commandes-it-2019-cnrs-002.tsv`
- [commandes-it-2019-cnrs-002.tsv](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t002.tsv) : copie de [tmp/commandes-it-2019-cnrs-002.tsv](tmp/commandes-it-2019-cnrs.tsv) manuellement annotée par graffy le 03/02/2023 pendant la création de [it-cnrs-l1p5.tsv](achats-ipr/2019/cnrs/it-l1p5.tsv)
- [it-cnrs-l1p5.tsv](achats-ipr/2019/cnrs/it-l1p5.tsv) : achats it cnrs 2019 au format attendu par `labo1.5`
- manuellement créé par graffy le 03/02/2023 à partir de [commandes-it-2019-cnrs-002.tsv](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t002.tsv)
- ur1
- from_ddemorel
- `2019.<dept-id>.xls` :
- fichiers envoyés par ddemorel à graffy le `07/02/2023`
- [commandes-it-2019-ur1-002-annotated.tsv](achats-ipr/2019/ur1/commandes-it-2019-ur1-002-annotated.tsv)
- tmp
- `commandes-it-2019-cnrs-002.tsv` : itorder for cnrs in 2019
- built from `<ddrs-root>/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t001.tsv` using `src/geslabt002_to_itorders.py`
- [commandes-it-2019-cnrs-002.tsv](tmp/commandes-it-2019-cnrs-t002.tsv) : itorder for cnrs in 2019
- built from [commandes-2019-cnrs-t002.tsv](achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t002.tsv) using [geslabt002_to_itorders.py](src/geslabt002_to_itorders.py)
# journal
@ -57,29 +58,29 @@ total 2288
### généré it-cnrs-l1p5.tsv
critique:
- colonnes utiles
- quantité
- libelles tronqués à 35 caracteres qui empêchent de voir le modèle exact (exemple CAT2_Configuration n°6 Latitude 559 au lieu de CAT2_Configuration n°6 Latitude 5590)
- duplication
- id659 == id828 ? (3 my passport)
- id623 == id1030 ? (station d'accueil dmorineau)
- id1919 == id2007 ? (5 disques durs, id1919 n'a pas de prix..?)
- libellé vague id926 : "petits matériels informatiques"
- pourquoi souris, et pas:
- dock (station d'accueil)
- adaptateur vga
- cartouche d'encre ?
- alimentation magsafe
- barre de son externe
- pourquoi imprimante id1170 et pas scanner id1171 ?
- id1268 disque dur à 521.98 € ?
- carte raid perc id1776
- il manque les prix parfois, et ça n'aide pas à savoir ce que c'est : id1919
- id2303: ACER D1301 impossible de savoir ce que c'est
- id3204 gopro ?
- barrettes de ram id2468
- quantité pas fiable ? id2600 plusieurs barrettes mémoire (sans doute car prix élevé 874€) alors que quantité = 1
- id2767 samsung 860 evo le libellé ne précise pas la capacité (cette même réf est utilisée pour des disques dur de différent capacité)
- colonnes utiles
- quantité
- libelles tronqués à 35 caracteres qui empêchent de voir le modèle exact (exemple CAT2_Configuration n°6 Latitude 559 au lieu de CAT2_Configuration n°6 Latitude 5590)
- duplication
- id659 == id828 ? (3 my passport)
- id623 == id1030 ? (station d'accueil dmorineau)
- id1919 == id2007 ? (5 disques durs, id1919 n'a pas de prix..?)
- libellé vague id926 : "petits matériels informatiques"
- pourquoi souris, et pas:
- dock (station d'accueil)
- adaptateur vga
- cartouche d'encre ?
- alimentation magsafe
- barre de son externe
- pourquoi imprimante id1170 et pas scanner id1171 ?
- id1268 disque dur à 521.98 € ?
- carte raid perc id1776
- il manque les prix parfois, et ça n'aide pas à savoir ce que c'est : id1919
- id2303: ACER D1301 impossible de savoir ce que c'est
- id3204 gopro ?
- barrettes de ram id2468
- quantité pas fiable ? id2600 plusieurs barrettes mémoire (sans doute car prix élevé 874€) alors que quantité = 1
- id2767 samsung 860 evo le libellé ne précise pas la capacité (cette même réf est utilisée pour des disques dur de différent capacité)
## 2023/03/06
@ -128,3 +129,51 @@ critique:
- Disque dur
- Clavier
- Souris
## 2024/10/10
### rédaction d'une procédure pour le matériel info du labo 1.5
Il s'agit d'abord de retrouver ce qui a été fait
```sh
20241010-22:29:45 graffy@graffy-ws2:~/work/ddrs$ ls -l ./achats-ipr/2019/cnrs/
total 48
-rw-r--r-- 1 graffy spm 25212 mars 6 2023 commandes-it-2019-cnrs-002-annotated.tsv
-rw-r--r-- 1 graffy spm 6153 mars 6 2023 commandes-it-2019-ur1-002-annotated.tsv
drwxr-xr-x 2 graffy spm 4096 mars 6 2023 from_ngicquiaux
-rw-r--r-- 1 graffy spm 4140 mars 6 2023 it-l1p5.tsv
last command status : [0]
```
J'ai créé https://git.ipr.univ-rennes.fr/graffy/ddrs.git pour faciliter la consultation de l'historique
```sh
git remote add origin https://git.ipr.univ-rennes.fr/graffy/ddrs.git
20241010-22:41:21 graffy@graffy-ws2:~/work/ddrs$ git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'https://git.ipr.univ-rennes.fr/graffy/ddrs.git'
last command status : [1]
20241010-22:41:43 graffy@graffy-ws2:~/work/ddrs$ git branch
* master
last command status : [0]
20241010-22:42:12 graffy@graffy-ws2:~/work/ddrs$ git branch -m master main
last command status : [0]
20241010-22:42:53 graffy@graffy-ws2:~/work/ddrs$ git push -u origin main
Enumerating objects: 54, done.
Counting objects: 100% (54/54), done.
Delta compression using up to 8 threads
Compressing objects: 100% (42/42), done.
Writing objects: 100% (54/54), 171.79 KiB | 3.82 MiB/s, done.
Total 54 (delta 18), reused 0 (delta 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To https://git.ipr.univ-rennes.fr/graffy/ddrs.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
last command status : [0]
```
# 11/10/2024

View File

Can't render this file because it has a wrong number of fields in line 2.

View File

@ -0,0 +1,54 @@
digraph {
# data
node [shape="rectangle", style="filled,rounded", penwidth=0, fillcolor="cyan"]
geslab [label="geslab\n(cnrs)"];
cnrs_all_xls [label="cnrs_all_xls\n(commandes-2019-cnrs-t002.xls)"];
cnrs_all_tsv [label="cnrs_all_tsv\n(commandes-2019-cnrs-t002.tsv)"];
cnrs_it_orders [label="cnrs_it_orders\n(commandes-it-2019-cnrs-002.tsv)"];
cnrs_it_orders_labo1p5 [label="cnrs_it_orders_labo1p5\n(it-cnrs-l1p5.tsv)"];
sifac [label="sifac\n(ur1)"];
ur1_all_orders [label="ur1_all_orders\n(2019.<dept-id>.xls)"];
ur1_it_orders [label="ur1_it_orders\n(commandes-it-2019-ur1-002.tsv)"];
ur1_it_orders_labo1p5 [label="ur1_it_orders_labo1p5\n(it-ur1-l1p5.tsv)"];
it_orders_labo1p5 [label="it_orders_labo1p5\n(it-l1p5.tsv)"];
# actions
node [shape="rectangle", style="filled,rounded", penwidth=0, fillcolor="pink"]
extraction_cnrs [label="extraction ngiquiaux"];
cnrs_xls_to_tsv [label="export au format tsv\navec libreoffice"];
it_orders_filter [label="geslabt002_to_itorders.py"];
concat [label="concaténation"];
cnrs_manual [label="formatage manuel"];
extraction_ur [label="extraction ddemorel"];
sifac_to_itorders [label="sifact002_to_itorders.py"];
# relations
geslab -> extraction_cnrs;
extraction_cnrs -> cnrs_all_xls;
cnrs_all_xls -> cnrs_xls_to_tsv;
cnrs_xls_to_tsv -> cnrs_all_tsv;
cnrs_all_tsv -> it_orders_filter;
it_orders_filter -> cnrs_it_orders;
cnrs_it_orders -> cnrs_manual;
cnrs_manual -> cnrs_it_orders_labo1p5;
sifac -> extraction_ur;
extraction_ur -> ur1_all_orders;
ur1_all_orders -> sifac_to_itorders;
sifac_to_itorders -> ur1_it_orders;
cnrs_it_orders_labo1p5 -> concat;
ur1_it_orders_labo1p5 -> concat;
concat -> it_orders_labo1p5;
}

View File

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="536pt" height="778pt"
viewBox="0.00 0.00 536.00 778.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 774)">
<title>%3</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-774 532,-774 532,4 -4,4"/>
<!-- geslab -->
<g id="node1" class="node">
<title>geslab</title>
<polygon fill="cyan" stroke="black" points="161.5,-770 98.5,-770 98.5,-732 161.5,-732 161.5,-770"/>
<text text-anchor="middle" x="130" y="-754.8" font-family="Times,serif" font-size="14.00">geslab</text>
<text text-anchor="middle" x="130" y="-739.8" font-family="Times,serif" font-size="14.00">(cnrs)</text>
</g>
<!-- extraction_cnrs -->
<g id="node11" class="node">
<title>extraction_cnrs</title>
<polygon fill="pink" stroke="black" points="212,-696 48,-696 48,-660 212,-660 212,-696"/>
<text text-anchor="middle" x="130" y="-674.3" font-family="Times,serif" font-size="14.00">extraction ngiquiaux</text>
</g>
<!-- geslab&#45;&gt;extraction_cnrs -->
<g id="edge1" class="edge">
<title>geslab&#45;&gt;extraction_cnrs</title>
<path fill="none" stroke="black" d="M130,-731.72C130,-723.97 130,-714.79 130,-706.27"/>
<polygon fill="black" stroke="black" points="133.5,-706 130,-696 126.5,-706 133.5,-706"/>
</g>
<!-- cnrs_all_xls -->
<g id="node2" class="node">
<title>cnrs_all_xls</title>
<polygon fill="cyan" stroke="black" points="255,-624 5,-624 5,-586 255,-586 255,-624"/>
<text text-anchor="middle" x="130" y="-608.8" font-family="Times,serif" font-size="14.00">cnrs_all_xls</text>
<text text-anchor="middle" x="130" y="-593.8" font-family="Times,serif" font-size="14.00">(commandes&#45;2019&#45;cnrs&#45;t002.xls)</text>
</g>
<!-- cnrs_xls_to_tsv -->
<g id="node12" class="node">
<title>cnrs_xls_to_tsv</title>
<polygon fill="pink" stroke="black" points="212,-550 48,-550 48,-512 212,-512 212,-550"/>
<text text-anchor="middle" x="130" y="-534.8" font-family="Times,serif" font-size="14.00">export au format tsv</text>
<text text-anchor="middle" x="130" y="-519.8" font-family="Times,serif" font-size="14.00">avec libreoffice</text>
</g>
<!-- cnrs_all_xls&#45;&gt;cnrs_xls_to_tsv -->
<g id="edge3" class="edge">
<title>cnrs_all_xls&#45;&gt;cnrs_xls_to_tsv</title>
<path fill="none" stroke="black" d="M130,-585.83C130,-578.13 130,-568.97 130,-560.42"/>
<polygon fill="black" stroke="black" points="133.5,-560.41 130,-550.41 126.5,-560.41 133.5,-560.41"/>
</g>
<!-- cnrs_all_tsv -->
<g id="node3" class="node">
<title>cnrs_all_tsv</title>
<polygon fill="cyan" stroke="black" points="255.5,-476 4.5,-476 4.5,-438 255.5,-438 255.5,-476"/>
<text text-anchor="middle" x="130" y="-460.8" font-family="Times,serif" font-size="14.00">cnrs_all_tsv</text>
<text text-anchor="middle" x="130" y="-445.8" font-family="Times,serif" font-size="14.00">(commandes&#45;2019&#45;cnrs&#45;t002.tsv)</text>
</g>
<!-- it_orders_filter -->
<g id="node13" class="node">
<title>it_orders_filter</title>
<polygon fill="pink" stroke="black" points="231.5,-402 28.5,-402 28.5,-366 231.5,-366 231.5,-402"/>
<text text-anchor="middle" x="130" y="-380.3" font-family="Times,serif" font-size="14.00">geslabt002_to_itorders.py</text>
</g>
<!-- cnrs_all_tsv&#45;&gt;it_orders_filter -->
<g id="edge5" class="edge">
<title>cnrs_all_tsv&#45;&gt;it_orders_filter</title>
<path fill="none" stroke="black" d="M130,-437.72C130,-429.97 130,-420.79 130,-412.27"/>
<polygon fill="black" stroke="black" points="133.5,-412 130,-402 126.5,-412 133.5,-412"/>
</g>
<!-- cnrs_it_orders -->
<g id="node4" class="node">
<title>cnrs_it_orders</title>
<polygon fill="cyan" stroke="black" points="260,-330 0,-330 0,-292 260,-292 260,-330"/>
<text text-anchor="middle" x="130" y="-314.8" font-family="Times,serif" font-size="14.00">cnrs_it_orders</text>
<text text-anchor="middle" x="130" y="-299.8" font-family="Times,serif" font-size="14.00">(commandes&#45;it&#45;2019&#45;cnrs&#45;002.tsv)</text>
</g>
<!-- cnrs_manual -->
<g id="node15" class="node">
<title>cnrs_manual</title>
<polygon fill="pink" stroke="black" points="203.5,-256 56.5,-256 56.5,-220 203.5,-220 203.5,-256"/>
<text text-anchor="middle" x="130" y="-234.3" font-family="Times,serif" font-size="14.00">formatage manuel</text>
</g>
<!-- cnrs_it_orders&#45;&gt;cnrs_manual -->
<g id="edge7" class="edge">
<title>cnrs_it_orders&#45;&gt;cnrs_manual</title>
<path fill="none" stroke="black" d="M130,-291.72C130,-283.97 130,-274.79 130,-266.27"/>
<polygon fill="black" stroke="black" points="133.5,-266 130,-256 126.5,-266 133.5,-266"/>
</g>
<!-- cnrs_it_orders_labo1p5 -->
<g id="node5" class="node">
<title>cnrs_it_orders_labo1p5</title>
<polygon fill="cyan" stroke="black" points="221,-184 39,-184 39,-146 221,-146 221,-184"/>
<text text-anchor="middle" x="130" y="-168.8" font-family="Times,serif" font-size="14.00">cnrs_it_orders_labo1p5</text>
<text text-anchor="middle" x="130" y="-153.8" font-family="Times,serif" font-size="14.00">(it&#45;cnrs&#45;l1p5.tsv)</text>
</g>
<!-- concat -->
<g id="node14" class="node">
<title>concat</title>
<polygon fill="pink" stroke="black" points="286,-110 170,-110 170,-74 286,-74 286,-110"/>
<text text-anchor="middle" x="228" y="-88.3" font-family="Times,serif" font-size="14.00">concaténation</text>
</g>
<!-- cnrs_it_orders_labo1p5&#45;&gt;concat -->
<g id="edge13" class="edge">
<title>cnrs_it_orders_labo1p5&#45;&gt;concat</title>
<path fill="none" stroke="black" d="M154.98,-145.9C167.45,-136.87 182.67,-125.84 195.99,-116.19"/>
<polygon fill="black" stroke="black" points="198.37,-118.79 204.41,-110.09 194.26,-113.12 198.37,-118.79"/>
</g>
<!-- sifac -->
<g id="node6" class="node">
<title>sifac</title>
<polygon fill="cyan" stroke="black" points="428,-770 374,-770 374,-732 428,-732 428,-770"/>
<text text-anchor="middle" x="401" y="-754.8" font-family="Times,serif" font-size="14.00">sifac</text>
<text text-anchor="middle" x="401" y="-739.8" font-family="Times,serif" font-size="14.00">(ur1)</text>
</g>
<!-- extraction_ur -->
<g id="node16" class="node">
<title>extraction_ur</title>
<polygon fill="pink" stroke="black" points="481.5,-696 320.5,-696 320.5,-660 481.5,-660 481.5,-696"/>
<text text-anchor="middle" x="401" y="-674.3" font-family="Times,serif" font-size="14.00">extraction ddemorel</text>
</g>
<!-- sifac&#45;&gt;extraction_ur -->
<g id="edge9" class="edge">
<title>sifac&#45;&gt;extraction_ur</title>
<path fill="none" stroke="black" d="M401,-731.72C401,-723.97 401,-714.79 401,-706.27"/>
<polygon fill="black" stroke="black" points="404.5,-706 401,-696 397.5,-706 404.5,-706"/>
</g>
<!-- ur1_all_orders -->
<g id="node7" class="node">
<title>ur1_all_orders</title>
<polygon fill="cyan" stroke="black" points="484.5,-624 317.5,-624 317.5,-586 484.5,-586 484.5,-624"/>
<text text-anchor="middle" x="401" y="-608.8" font-family="Times,serif" font-size="14.00">ur1_all_orders</text>
<text text-anchor="middle" x="401" y="-593.8" font-family="Times,serif" font-size="14.00">(2019.&lt;dept&#45;id&gt;.xls)</text>
</g>
<!-- sifac_to_itorders -->
<g id="node17" class="node">
<title>sifac_to_itorders</title>
<polygon fill="pink" stroke="black" points="495.5,-549 306.5,-549 306.5,-513 495.5,-513 495.5,-549"/>
<text text-anchor="middle" x="401" y="-527.3" font-family="Times,serif" font-size="14.00">sifact002_to_itorders.py</text>
</g>
<!-- ur1_all_orders&#45;&gt;sifac_to_itorders -->
<g id="edge11" class="edge">
<title>ur1_all_orders&#45;&gt;sifac_to_itorders</title>
<path fill="none" stroke="black" d="M401,-585.83C401,-577.89 401,-568.41 401,-559.63"/>
<polygon fill="black" stroke="black" points="404.5,-559.42 401,-549.42 397.5,-559.42 404.5,-559.42"/>
</g>
<!-- ur1_it_orders -->
<g id="node8" class="node">
<title>ur1_it_orders</title>
<polygon fill="cyan" stroke="black" points="528,-476 274,-476 274,-438 528,-438 528,-476"/>
<text text-anchor="middle" x="401" y="-460.8" font-family="Times,serif" font-size="14.00">ur1_it_orders</text>
<text text-anchor="middle" x="401" y="-445.8" font-family="Times,serif" font-size="14.00">(commandes&#45;it&#45;2019&#45;ur1&#45;002.tsv)</text>
</g>
<!-- ur1_it_orders_labo1p5 -->
<g id="node9" class="node">
<title>ur1_it_orders_labo1p5</title>
<polygon fill="cyan" stroke="black" points="415,-184 239,-184 239,-146 415,-146 415,-184"/>
<text text-anchor="middle" x="327" y="-168.8" font-family="Times,serif" font-size="14.00">ur1_it_orders_labo1p5</text>
<text text-anchor="middle" x="327" y="-153.8" font-family="Times,serif" font-size="14.00">(it&#45;ur1&#45;l1p5.tsv)</text>
</g>
<!-- ur1_it_orders_labo1p5&#45;&gt;concat -->
<g id="edge14" class="edge">
<title>ur1_it_orders_labo1p5&#45;&gt;concat</title>
<path fill="none" stroke="black" d="M301.76,-145.9C289.05,-136.78 273.5,-125.63 259.96,-115.92"/>
<polygon fill="black" stroke="black" points="262,-113.07 251.83,-110.09 257.92,-118.76 262,-113.07"/>
</g>
<!-- it_orders_labo1p5 -->
<g id="node10" class="node">
<title>it_orders_labo1p5</title>
<polygon fill="cyan" stroke="black" points="300,-38 156,-38 156,0 300,0 300,-38"/>
<text text-anchor="middle" x="228" y="-22.8" font-family="Times,serif" font-size="14.00">it_orders_labo1p5</text>
<text text-anchor="middle" x="228" y="-7.8" font-family="Times,serif" font-size="14.00">(it&#45;l1p5.tsv)</text>
</g>
<!-- extraction_cnrs&#45;&gt;cnrs_all_xls -->
<g id="edge2" class="edge">
<title>extraction_cnrs&#45;&gt;cnrs_all_xls</title>
<path fill="none" stroke="black" d="M130,-659.81C130,-652.11 130,-642.82 130,-634.15"/>
<polygon fill="black" stroke="black" points="133.5,-634.02 130,-624.02 126.5,-634.02 133.5,-634.02"/>
</g>
<!-- cnrs_xls_to_tsv&#45;&gt;cnrs_all_tsv -->
<g id="edge4" class="edge">
<title>cnrs_xls_to_tsv&#45;&gt;cnrs_all_tsv</title>
<path fill="none" stroke="black" d="M130,-511.83C130,-504.13 130,-494.97 130,-486.42"/>
<polygon fill="black" stroke="black" points="133.5,-486.41 130,-476.41 126.5,-486.41 133.5,-486.41"/>
</g>
<!-- it_orders_filter&#45;&gt;cnrs_it_orders -->
<g id="edge6" class="edge">
<title>it_orders_filter&#45;&gt;cnrs_it_orders</title>
<path fill="none" stroke="black" d="M130,-365.81C130,-358.11 130,-348.82 130,-340.15"/>
<polygon fill="black" stroke="black" points="133.5,-340.02 130,-330.02 126.5,-340.02 133.5,-340.02"/>
</g>
<!-- concat&#45;&gt;it_orders_labo1p5 -->
<g id="edge15" class="edge">
<title>concat&#45;&gt;it_orders_labo1p5</title>
<path fill="none" stroke="black" d="M228,-73.81C228,-66.11 228,-56.82 228,-48.15"/>
<polygon fill="black" stroke="black" points="231.5,-48.02 228,-38.02 224.5,-48.02 231.5,-48.02"/>
</g>
<!-- cnrs_manual&#45;&gt;cnrs_it_orders_labo1p5 -->
<g id="edge8" class="edge">
<title>cnrs_manual&#45;&gt;cnrs_it_orders_labo1p5</title>
<path fill="none" stroke="black" d="M130,-219.81C130,-212.11 130,-202.82 130,-194.15"/>
<polygon fill="black" stroke="black" points="133.5,-194.02 130,-184.02 126.5,-194.02 133.5,-194.02"/>
</g>
<!-- extraction_ur&#45;&gt;ur1_all_orders -->
<g id="edge10" class="edge">
<title>extraction_ur&#45;&gt;ur1_all_orders</title>
<path fill="none" stroke="black" d="M401,-659.81C401,-652.11 401,-642.82 401,-634.15"/>
<polygon fill="black" stroke="black" points="404.5,-634.02 401,-624.02 397.5,-634.02 404.5,-634.02"/>
</g>
<!-- sifac_to_itorders&#45;&gt;ur1_it_orders -->
<g id="edge12" class="edge">
<title>sifac_to_itorders&#45;&gt;ur1_it_orders</title>
<path fill="none" stroke="black" d="M401,-512.94C401,-504.99 401,-495.31 401,-486.31"/>
<polygon fill="black" stroke="black" points="404.5,-486.2 401,-476.2 397.5,-486.2 404.5,-486.2"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,206 @@
# Comment créer la base de données partie matériel informatique pour labo 1.5
## description du fichier attendu par labo1.5
- un tableau type excel
- formats de fichier acceptés par labo 1.5:
- tsv (tabular separated value)
- description des colonnes:
1. **id**: par exemple `ur1_237`
2. **Modele**: par exemple `latitude 3400`
3. **Fabricant**: par exemple `dell`
4. **Type**: par exemple `pc portable`
### types supportés par labo 1.5
La documentation de labo1.5 mentionne ces 14 types:
- PC fixe (Desktop, PC, fixe, tour, unité centrale, station de travail, workstation)
- PC portable (laptop, portable, notebook)
- Serveur
- Écran (monitor, display, screen)
- Vidéo projecteur
- Tablette (pad)
- Smartphone (mobile)
- Imprimante
- Borne wifi (Wifi hub)
- Téléphone IP
- GPU
- Disque dur
- Clavier
- Souris
En fait, après importation, j'ai pu constater qu'il il y a 15 types de matériel dans labo1.5 (station d'accueil a du être oublié dans la doc):
- pc fixe sans écran
- pc fixe tout-en-un
- pc portable
- écran
- videoprojecteur
- tablette
- smartphone
- imprimante
- téléphone ip
- station d'accueil
- clavier souris
- borne wifi
- serveur
- disque dur
- gpu puissant
## vue d'ensemble de la procédure
![procédure](materiel-info-graph.svg)
note: commande utilisée pour créer [materiel-info-graph.svg](materiel-info-graph.svg) à partir de [materiel-info-graph.dot](materiel-info-graph.dot):
```sh
20241011-15:49:16 graffy@graffy-ws2:~/work/ddrs/procedures/labo1.5$ dot ./materiel-info-graph.dot -Tsvg > ./materiel-info-graph.svg
last command status : [0]
```
## description des fichiers
### cnrs
#### cnrs_all_xls
Ce fichier contient l'extraction geslab de tous les achats (pas seulement informatique) de l'année considérée.
- exemple : [commandes-2019-cnrs-t002.xls](../../achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t002.xls)
- colonnes:
1. **N° com. GESLAB**: par exemple `18360`
2. **Date commande**: par exemple `24/01/19`
3. **N° ligne**: identifiant unique de l'achat, par exemple `43543`
4. **Libellé ligne**: par exemple `CAT2_Configuration n°3 XPS 9365`
9. **Raison sociale fournisseur**: par exemple `DELL SAS`
11. **S**: par exemple `S`
12. **Qté com.**: par exemple `1`
13. **Reste à const.**: par exemple `0`
14. **Qté fac.**: par exemple `1`
15. **Cons. ligne antérieur**: par exemple `0.00`
16. **Consommé ligne**: par exemple `1,755.00`
17. **Réservé ligne**: par exemple `0.00`
18. **Facturé ligne**: par exemple `1,755.00`
19. **Code origine**: par exemple `SE9ADO0985`
20. **Elément analytique**: par exemple `9ADO0985`
22. **Code EDP**: par exemple `NANOSC`
27. **Matière**: le code matière, dont la liste se trouve dans [cnrs-matieres-001.csv](../../achats-ipr/2019/cnrs/from_ngicquiaux/cnrs-matieres-001.csv) par exemple `2100`
29. **Nat. dép.**: par exemple `IM`
#### cnrs_all_tsv
- exemple : [commandes-2019-cnrs-t002.tsv](../../achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t002.tsv), qui contient 1991 lignes de données
- colonnes: les mêmes que [cnrs_all_xls](####-cnrs_all_xls)
[commandes-2019-cnrs-t002.tsv](../../achats-ipr/2019/cnrs/from_ngicquiaux/commandes-2019-cnrs-t002.tsv)
```tsv
LABORATOIRE : LABO1 IPR - UNIVERSITE DE RENNES Le : 27/01/2023
DETAIL DES LIGNES DE COMMANDE Exercice : 2019
Page : 1 / 100
Etablissement : DR17 Délégation Bretagne et Pays de la Loire
N° com. GESLAB Date commande N° ligne Libellé ligne Raison sociale fournisseur S Qté com. Reste à const. Qté fac. Cons. ligne antérieur Consommé ligne Réservé ligne Facturé ligne Code origine Elément analytique Code EDP Matière Nat. dép.
18,310.00 03/01/19 43,424.00 CULOTTE SIMPLE PVC FEMELLE AMAZON EU SARL SUCCURSALE FRANCAISE S 1 1 0.00 12.63 0.00 12.63 584081 584081 ANRSON 1900 FO
1950-2-17 12:00:00 AM 03/01/19 2018-11-21 12:00:00 AM REGISTRATION P. PANIZZA AERC 2019 SLOVENIAN SOCIETY FOR EXPERIMENTAL MECHANICS - SSEM SLOVENSKO DRUSTVO ZA EKSPERIMENTALNO MEHANIKO S 1 0 1 0.00 530.00 0.00 530.00 9CTD0985 9CTD0985 CIFAF2 5400 FO
18,313.00 04/01/19 43,427.00 POUSSE SERINGUE PHD ULTRA 4400 I/W HARVARD APPARATUS S 1 0 1 0.00 6,616.00 0.00 6,616.00 59190 591901 ANRASJ 2500 IM
...
1950-4-7 12:00:00 AM 24/01/19 2019-3-19 12:00:00 AM CAT2_Configuration n°3 XPS 9365 DELL SAS S 1 0 1 0.00 1,755.00 0.00 1,755.00 SE9ADO0985 9ADO0985 NANOSC 2100 IM
...
```
Attention: le 11/10/2024, graffy s'est rendu compte que certaines données de ce fichier ont été mal converties par l'exporteur tsv. L'achat 43543 aurait du apparaître comme ceci:
```
18360 24/01/19 43543 CAT2_Configuration n°3 XPS 9365 DELL SAS S 1 0 1 0.00 1,755.00 0.00 1,755.00 SE9ADO0985 9ADO0985 NANOSC 2100 IM
```
Au lieu de ça, il apparaît ainsi (les colonnes **N° com. GESLAB** et **N° ligne** ont été converties en date, pour une raison inconnue):
```
1950-4-7 12:00:00 AM 24/01/19 2019-3-19 12:00:00 AM CAT2_Configuration n°3 XPS 9365 DELL SAS S 1 0 1 0.00 1,755.00 0.00 1,755.00 SE9ADO0985 9ADO0985 NANOSC 2100 IM
```
### ur1
#### ur1_it_orders
- exemple : [commandes-it-2019-ur1-002\.tsv](../../tmp/commandes-it-2019-ur1-002.tsv), qui contient 33 lignes de données
- colonnes:
1. **<anonyme>**: identifieur d'achat, par exemple `21`
2. **Centre financier**: par exemple `991R423`
3. **Elément d'OTP**: par exemple `17CQ423-S0`
4. **Document d'achat**: par exemple `4500458349.0`
5. **Fournisseur/Division fourn.**: par exemple `7976 DELL`
6. **Date du document**: par exemple `2019-02-14`
7. **Code TVA**: par exemple `DK`
8. **Désignation**: par exemple `LATITUDE 5590 - Portable conf.n°2`
9. **Date livraison**: par exemple `2019-02-25`
10. **Valeur totale en cours**: par exemple `1616.8`
11. **Reste à livrer (quantité)**: par exemple `0`
12. **Livraison finale**: par exemple `X`
13. **Reste à facturer (quantité)**: par exemple `0`
14. **Facture finale**: par exemple `126639.0`
15. **Immobilisation**: par exemple ``
16. **Groupe marchandises**: par exemple `IA.11`
17. **Texte Correspondance**: par exemple `Danièle, Le numéro d'ordre n'est pas cor`
18. **Créateur commande**: par exemple, `DE MOREL DANIELE`
```tsv
20241011-10:57:24 graffy@graffy-ws2:~/work/ddrs/procedures/labo1.5$ head -3 /home/graffy/work/ddrs/tmp/commandes-it-2019-ur1-002.tsv
Centre financier Elément d'OTP Document d'achat Fournisseur/Division fourn. Date du document Code TVA Désignation Date livraison Valeur totale en cours Reste à livrer (quantité) Livraison finale Reste à facturer (quantité) Facture finale Immobilisation Groupe marchandises Texte Correspondance Créateur commande
21 991R423 17CQ423-S0 4500458349.0 7976 DELL 2019-02-14 DK LATITUDE 5590 - Portable conf.n°2 2019-02-25 1616.8 0 X 0 126639.0 IA.11 Danièle, Le numéro d'ordre n'est pas cor DE MOREL DANIELE
38 991R423 17CQ423-S0 4500463111.0 7976 DELL 2019-03-28 DJ Acessoires pour LATITUDE 5 DELL 2019-04-15 81.74 0 X 0 X IA.24 BC soldé mail Danièle 14/06/19 Danièle, DE MOREL DANIELE
last command status : [0]
```
#### ur1_it_orders_ann
Version manuellement annotée de [ur1_it_orders].
- colonnes: les mêmes 18 colonnes que pour [ur1_it_orders](####ur1_it_orders), plus:
19. **comment**: colonne utilisée pour les annotations, par exemple, `latitude 7490 + écran u2719d`
- exemple : [commandes-it-2019-ur1-002-annotated.tsv](../../achats-ipr/2019/ur1/commandes-it-2019-ur1-002-annotated.tsv), qui contient 33 lignes de données
Voici les differences entre [commandes-it-2019-ur1-002.tsv](../../tmp/commandes-it-2019-ur1-002.tsv) et [commandes-it-2019-ur1-002-annotated.tsv](../../achats-ipr/2019/ur1/commandes-it-2019-ur1-002-annotated.tsv):
```diff
20241011-10:07:17 graffy@graffy-ws2:~/work/ddrs/procedures/labo1.5$ diff /home/graffy/work/ddrs/tmp/commandes-it-2019-ur1-002.tsv /home/graffy/work/ddrs/achats-ipr/2019/ur1/commandes-it-2019-ur1-002-annotated.tsv
1c1
< Centre financier Elément d'OTP Document d'achat Fournisseur/Division fourn. Date du document Code TVA Désignation Date livraison Valeur totale en cours Reste à livrer (quantité) Livraison finale Reste à facturer (quantité) Facture finale Immobilisation Groupe marchandises Texte Correspondance Créateur commande
---
> Centre financier Elément d'OTP Document d'achat Fournisseur/Division fourn. Date du document Code TVA Désignation Date livraison Valeur totale en cours Reste à livrer (quantité) Livraison finale Reste à facturer (quantité) Facture finale Immobilisation Groupe marchandises Texte Correspondance Créateur commande comment
6c6
< 233 991R423 17CQ423-G0 4500479590.0 7976 DELL 2019-10-01 DK PC portable DELL pour MARIETTE Céline 2019-10-28 1474.61 0 X 0 127281.0 IA.11 num IMMO = 127281 num etiquette 052108 LECLAIRE FRANCIS
---
> 233 991R423 17CQ423-G0 4500479590.0 7976 DELL 2019-10-01 DK PC portable DELL pour MARIETTE Céline 2019-10-28 1474.61 0 X 0 127281.0 IA.11 num IMMO = 127281 num etiquette 052108 LECLAIRE FRANCIS modèle ?
20,22c20,22
< 509 991R423 17CQ423-A0 4500466536.0 7976 DELL 2019-05-02 DK ORDINATEUR PORTABLE LUCILE RUTKOWSKI 2019-05-15 2205.84 0 X 0 126799.0 IA.11 immo: 126799 code barre: 051358 MARCAULT MAGALI
< 527 991R423 17CQ423-A0 4500469692.0 7976 DELL 2019-05-28 DK Ordinateur portable Guillaume Raffy 2019-06-17 1981.57 0 X 0 X 126871.0 IA.11 numéro immo 126871 étiquette 051357 MARCAULT MAGALI
< 530 991R423 17CQ423-A0 4500472335.0 7976 DELL 2019-06-25 DK PORTABLE LATITUDE DEV. 100000519892 2019-07-01 1680.16 0 X 0 X 126927.0 IA.11 immo: 126927 Etiquette: 051641 DE MOREL DANIELE
---
> 509 991R423 17CQ423-A0 4500466536.0 7976 DELL 2019-05-02 DK ORDINATEUR PORTABLE LUCILE RUTKOWSKI 2019-05-15 2205.84 0 X 0 126799.0 IA.11 immo: 126799 code barre: 051358 MARCAULT MAGALI modèle ? + écran ?
> 527 991R423 17CQ423-A0 4500469692.0 7976 DELL 2019-05-28 DK Ordinateur portable Guillaume Raffy 2019-06-17 1981.57 0 X 0 X 126871.0 IA.11 numéro immo 126871 étiquette 051357 MARCAULT MAGALI latitude 7490 + écran u2719d
> 530 991R423 17CQ423-A0 4500472335.0 7976 DELL 2019-06-25 DK PORTABLE LATITUDE DEV. 100000519892 2019-07-01 1680.16 0 X 0 X 126927.0 IA.11 immo: 126927 Etiquette: 051641 DE MOREL DANIELE modèle ?
last command status : [1]
```
[commandes-it-2019-ur1-002-annotated.tsv](../../achats-ipr/2019/ur1/commandes-it-2019-ur1-002-annotated.tsv)
```tsv
...
233 991R423 17CQ423-G0 4500479590.0 7976 DELL 2019-10-01 DK PC portable DELL pour MARIETTE Céline 2019-10-28 1474.61 0 X 0 127281.0 IA.11 num IMMO = 127281 num etiquette 052108 LECLAIRE FRANCIS modèle ?
237 991R423 17CQ423-G0 4500481443.0 7976 DELL 2019-10-14 DJ CAT1_Configuration n°1 - Latitude 3400 2019-10-28 900.04 0 X 0 IA.11 LECLAIRE FRANCIS
...
```
#### ur1_it_orders_labo1p5
- au format [attendu par labo 1.5](##description-du-fichier-attendu-par-labo1.5)
- par exemple[it-l1p5.tsv](../../achats-ipr/2019/it-ur1-l1p5.tsv):
```tsv
id Modele Fabricant Type
...
ur1_233 dell pc portable
ur1_237 latitude 3400 dell pc portable
...
```