Commit d99e6195 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Doc de version 1.2.2

parent 2d5bc215
Loading
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -43,3 +43,9 @@ des acteurs.
- [FEATURE] Une nouvelle vue SYGAL_TITRE_ACCES apparaît pour fournir les titres d'accès à l'inscription en thèse.  
- [FEATURE] Pour les corrections attendues d'une thèse, on parle désormais de corrections facultatives ou obligatoires, 
            plutôt que mineures ou majeures. La vue `SYGAL_THESE` est retouchée en ce sens.

## v1.2.2 (21/12/2018)

- [FEATURE] Nouvelle colonne dans la vue SYGAL_THESE : année universitaire de première inscription en thèse.
- [FEATURE] Nouvelle vue SYGAL_THESE_ANNEE_UNIV : liste pour chaque thèse de toutes les années universitaires 
            où le doctorant était inscrit en thèse.
+188 −0
Original line number Diff line number Diff line
# v1.2.2


## Sources PHP

Sur le serveur, placez-vous dans le répertoire du web service (sans doute `/var/www/sygal-import-ws`) 
puis lancez les commandes suivantes pour installer la nouvelle version :
```bash
git fetch && git fetch --tags && git checkout --force 1.2.2 && bash install.sh
```

Selon le moteur PHP que vous avez installé, rechargez le service, exemple :
  - php7.0-fpm         : `service php7.0-fpm reload`
  - apache2-mod-php7.0 : `service apache2 reload`


## Base de données

### Apogée

Dans la vue `SYGAL_THESE` :
- 2 colonnes sont renommées :
  - `cod_nat_edo` devient `ecole_doct_id` : Identifiant de l'ecole doctorale
  - `cod_eqr` devient `unite_rech_id` : Identifiant de l'unité de recherche principale
- une nouvelle colonne apparaît :
  - `cod_anu_prm_iae` : C'est le code de l'année universitaire de première inscription en thèse, 
  ex: `2015` signifie l'année universitaire 2015/2016. Cette colonne ne peut être à `null`, théoriquement.

Voici le nouveau script de la vue `SYGAL_THESE` :

```sql
create or replace view SYGAL_THESE as
  with inscription_administrative as (
    select
      iae.cod_ind,
      iae.cod_dip,
      iae.cod_vrs_vdi,
      dip.lib_dip,
      min ( iae.cod_anu ) cod_anu_prm_iae,
      max ( iae.cod_anu ) cod_anu_der_iae
    from ins_adm_etp iae
      join diplome     dip on dip.cod_dip     = iae.cod_dip
      join typ_diplome tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb
    where iae.eta_iae         =  'E'  -- Inscription administrative non annulee
      and iae.eta_pmt_iae     =  'P'  -- Inscription administrative payee
      and dip.cod_tpd_etb     in ( '39', '40' )
      and tpd.eta_ths_hdr_drt =  'T'  -- Inscription en these
      and tpd.tem_sante       =  'N'  -- Exclusion des theses d exercice
    group by
      iae.cod_ind,
      iae.cod_dip,
      iae.cod_vrs_vdi,
      dip.lib_dip
    ),
    hierarchie_structures as (
      select
        cod_cmp_inf,
        cod_cmp_sup
      from cmp_cmp
      where connect_by_isleaf = 1
      connect by prior cod_cmp_sup = cod_cmp_inf
      ),
    ancienne_these as (
      select distinct
        cod_ind,
        cod_dip_anc,
        cod_vrs_vdi_anc,
        'A' eta_ths
      from these_hdr_sout
      where cod_ths_trv = '1'
        and cod_dip_anc is not null
      )

    select
      'apogee' as source_id,                            -- Id de la source

      ---------- Enregistrement de la these --------
      ths.cod_ths as id,                                -- Identifiant de la these
      case when ths.eta_ths = 'S' and nvl ( ths.dat_sou_ths, sysdate + 1 ) > sysdate
             then 'E' else ths.eta_ths end eta_ths,     -- Etat de la these (E=En cours, A=Abandonnee, S=Soutenue, U=Transferee)
      ind.cod_etu as doctorant_id,                      -- Identifiant du doctorant
      ths.cod_dis,                                      -- Code discipline
      dis.lib_int1_dis,                                 -- Libellé discipline
      ths.lib_ths,                                      -- Titre de la these
      ths.cod_lng,                                      -- Code langue etrangere du titre
      ths.dat_deb_ths,                                  -- Date de 1ere inscription
      iae.cod_anu_prm_iae,                              -- Code annee de premiere inscription

      edo.cod_nat_edo as ecole_doct_id,                 -- Identifiant de l'ecole doctorale
      ths.cod_eqr as unite_rech_id,                     -- Identifiant de l'unité de recherche principale

      ----------- Cotutelle ----------
      pay.lib_pay,                                      -- Denomination pays de cotutelle
      nvl ( etb.lib_web_etb, etb.lib_etb ) lib_etb_cot, -- Denomination etablissement de cotutelle
      ths.tem_avenant,                                  -- Avenant a la convention de cotutelle (O/N)

      ------- Organisation de la soutenance ------
      ths.dat_prev_sou,                                 -- Date previsionnelle de soutenance
      ths.tem_sou_aut_ths,                              -- Soutenance autorisee (O/N/null)
      ths.dat_aut_sou_ths,                              -- Date d autorisation de soutenance
      ths.dat_sou_ths,                                  -- Date de soutenance de la these

      ---------- Confidentialite --------
      ths.dat_fin_cfd_ths,                              -- Date de fin de confidentialite de la these

      ---------- Jury et resultats --------
      tre.cod_neg_tre,                                  -- Resultat positif (1) ou non (0)
      ths.eta_rpd_ths,                                  -- Reproduction de la these ( O=Oui / C=Oui avec corrections / N=Non )
      decode(ths.eta_rpd_ths,
        'N', 'obligatoire',
        'C', 'facultative',
        null) as correction_possible                    -- Témoin de corrections attendues

    from inscription_administrative iae
           join individu                   ind on ind.cod_ind = iae.cod_ind
           join version_diplome            vdi on vdi.cod_dip = iae.cod_dip and vdi.cod_vrs_vdi = iae.cod_vrs_vdi
           join these_hdr_sout             ths on ths.cod_ind = iae.cod_ind and ths.cod_dip = iae.cod_dip and ths.cod_vrs_vdi = iae.cod_vrs_vdi
           left join ancienne_these        anc on anc.cod_ind = ths.cod_ind and anc.cod_dip_anc = ths.cod_dip and anc.cod_vrs_vdi_anc = ths.cod_vrs_vdi and anc.eta_ths = ths.eta_ths
           left join annee_uni             ans on ans.cod_anu = ths.daa_fin_ths
           left join ecole_doctorale       edo on edo.cod_edo = ths.cod_edo
           left join secteur_rch           ser on ser.cod_ser = ths.cod_ser
           left join equipe_rch            eqr on eqr.cod_eqr = ths.cod_eqr
           left join resultat_vdi          rvi on rvi.cod_ind = iae.cod_ind and rvi.cod_dip = iae.cod_dip and rvi.cod_vrs_vdi = iae.cod_vrs_vdi and rvi.cod_ses = '0' and rvi.cod_adm = '1' and rvi.cod_tre is not null
           left join annee_uni             anr on anr.cod_anu = rvi.cod_anu
           left join typ_resultat          tre on tre.cod_tre = rvi.cod_tre
           left join mention               men on men.cod_men = rvi.cod_men
           left join hierarchie_structures ccm on ccm.cod_cmp_inf = ths.cod_cmp
           left join composante            cmp on cmp.cod_cmp = nvl ( ccm.cod_cmp_sup, ths.cod_cmp )
           left join diplome_sise          dis on dis.cod_dis = ths.cod_dis
           left join etablissement         etb on etb.cod_etb = ths.cod_etb
           left join pays                  pay on pay.cod_pay = ths.cod_pay
           left join etablissement         sou on sou.cod_etb = ths.cod_etb_sou
           left join etablissement         ori on ori.cod_etb = ths.cod_etb_origine
           left join langue                lng on lng.cod_lng = ths.cod_lng
    where
          ths.cod_ths_trv = '1' and --  Exclusion des travaux
          anc.cod_dip_anc is null
/
```

La nouvelle vue `SYGAL_THESE_ANNEE_UNIV` doit être créée :

```sql
CREATE VIEW SYGAL_THESE_ANNEE_UNIV AS
  with old_these as (
    select distinct
      cod_ind,
      cod_dip_anc,
      cod_vrs_vdi_anc,
      'A' eta_ths
    from these_hdr_sout
    where cod_ths_trv = '1'
      and cod_dip_anc is not null
    )
    select distinct
      'apogee'    as source_id,
      ths.cod_ths || '_' || iae.cod_anu as id,
      ths.cod_ths as these_id,
      iae.cod_anu as annee_univ
    from these_hdr_sout ths
           left join old_these old on old.cod_ind = ths.cod_ind and old.cod_dip_anc = ths.cod_dip and old.cod_vrs_vdi_anc = ths.cod_vrs_vdi and old.eta_ths = ths.eta_ths
           join diplome        dip on dip.cod_dip = ths.cod_dip
           join typ_diplome    tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb
           join ins_adm_etp    iae on iae.cod_ind = ths.cod_ind and ( iae.cod_dip, iae.cod_vrs_vdi ) in ( ( ths.cod_dip, ths.cod_vrs_vdi ), ( ths.cod_dip_anc, ths.cod_vrs_vdi_anc ) )
           join individu       ind on ind.cod_ind = iae.cod_ind
    where ths.cod_ths_trv     = '1'   -- Exclusion des travaux
      and old.cod_dip_anc     is null
      and dip.cod_tpd_etb     in ( '39', '40' )
      and tpd.eta_ths_hdr_drt =  'T'  -- Diplome de type these
      and tpd.tem_sante       =  'N'  -- Exclusion des theses d exercice
      and iae.eta_iae         =  'E'  -- Inscription administrative non annulee
      and iae.eta_pmt_iae     =  'P'  -- Inscription administrative payee
/
```

### Physalis

Pour écrire la vue `SYGAL_THESE`, voir les explications concernant Apogée ci-dessus.

La nouvelle vue `SYGAL_THESE_ANNEE_UNIV` doit lister pour chaque thèse toutes les années universitaires 
où le doctorant était inscrit en thèse. En cas de "césure" pour une thèse donnée, il devrait y avoir un trou dans les 
années universitaires.
Voici les colonnes de cette vue :
- `source_id` : identifiant unique de la source de données, en l'occurence c'est `'physalis'`
- `id` : identifiant quelconque mais *unique* de la ligne dans la vue, ex: concaténation de l'identifiant unique de 
la thèse et du code de l'année universitaire.
- `these_id` : identifiant unique de la thèse, cf. colonne `id` de la vue SYGAL_THESE.
- `annee_univ` : code de l'année universitaire, ex: `2015` pour 2015/2016.