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

Doc de version

parent 43647481
Loading
Loading
Loading
Loading
+6 −0
Changes for CHANGELOG.md: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -27,3 +27,9 @@ sur 2 pages distinctes retournées par le web service.

- [BUGFIX] Correction du script de la vue Apogée SYGAL_INDIVIDU qui inversait le nom usuel et le nom de naissance 
des acteurs.

## v1.2.0 (07/11/2018)

- [FEATURE] Sygal peut désormais avoir connaissance de tous les acteurs des thèses (ex: co-directeurs sur les thèses de Rouen) 
            tout en permettant à l'établissement source de conserver sa propre codification des rôles des acteurs.
- [FEATURE] Le service Version retourne désormais la version déployée effective (à l'aide de git).
+169 −0
Changes for doc/release-notes/v1.2.0.md: 169 added lines, 0 removed lines.
Original line number Diff line number Diff line
# v1.2.0

## Sources PHP

Sur le serveur, placez-vous dans le répertoire du web service (sans doute `/var/www/sygal-import-ws`) 
puis lancez la commande git suivante pour "installer" la nouvelle version :
```bash
git fetch && git fetch --tags && git checkout --force 1.2.0
```

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

Avis à ceux qui ont Apogée, pour que Sygal puisse avoir connaissance de tous les acteurs des thèses (ex: co-directeurs) 
tout en permettant à votre établissement de conserver sa propre codification des rôles des acteurs, plusieurs vues 
SYGAL_* doivent être modifiées/créées dans Apogée. 

La vue **`SYGAL_ROLE_TR`** doit être personnalisée pour votre établissement car elle spécifie la traduction 
du code de rôle utilisé dans votre établissement (`FROM_COD_ROJ`) en celui attendu par Sygal (`TO_COD_ROJ`).

La version non commentée ci-dessous convient à Caen et au Havre. 
La version commentée convient à Rouen. 

```sql
-- UCN et ULHN
create or replace view SYGAL_ROLE_TR(FROM_COD_ROJ, TO_COD_ROJ) as
  select 'A', 'A' from dual union
  select 'B', 'B' from dual union
  select 'C', 'C' from dual union
  select 'D', 'D' from dual union
  select 'K', 'K' from dual union
  select 'M', 'M' from dual union
  select 'P', 'P' from dual union
  select 'R', 'R' from dual
/
/*
-- URN
create or replace view SYGAL_ROLE_TR(FROM_COD_ROJ, TO_COD_ROJ) as
  select 'A', 'R' from dual union -- rapporteur du jury
  select 'C', 'K' from dual union -- co-dir
  select 'D', 'D' from dual union -- dir
  select 'E', 'M' from dual union -- examinateur => membre du jury (discutable)
  select 'M', 'M' from dual union -- membre du jury
  select 'N', 'B' from dual union -- co-encadrant
  select 'P', 'P' from dual union -- président du jury
  select 'R', 'R' from dual       -- rapporteur du jury
/
*/

create or replace view SYGAL_ROLE_NOMENC(COD_ROJ, LIC_ROJ, LIB_ROJ) as
  select 'A', 'Absent',     'Membre absent'         from dual union
  select 'B', 'Co-encadr',  'Co-encadrant'          from dual union
  select 'C', 'Chef Labo',  'Chef de laboratoire'   from dual union
  select 'D', 'Directeur',  'Directeur de thèse'    from dual union
  select 'K', 'Co-direct',  'Co-directeur de thèse' from dual union
  select 'M', 'Membre',     'Membre du jury'        from dual union
  select 'P', 'Président',  'Président du jury'     from dual union
  select 'R', 'Rapporteur', 'Rapporteur du jury'    from dual
/

create or replace view SYGAL_ROLE_JURY as
  select distinct
    rtr.TO_COD_ROJ as COD_ROJ,
    sr.LIB_ROJ,
    sr.LIC_ROJ
  from role_jury ar
    join SYGAL_ROLE_TR rtr on ar.COD_ROJ = rtr.FROM_COD_ROJ
    join SYGAL_ROLE_NOMENC sr on sr.COD_ROJ = rtr.TO_COD_ROJ
/

create or replace view SYGAL_ROLE as
  select
    'apogee' as source_id, -- Id de la source
    COD_ROJ as id,         -- Id du rôle
    LIB_ROJ,
    LIC_ROJ
  from SYGAL_ROLE_JURY
/

create or replace view SYGAL_ACTEUR as
  with acteur as (
    select
      'D_' || rowid as id,
      ths.cod_ths,
      'D'              as cod_roj,
      ths.cod_per_dir  as cod_per,
      ths.cod_etb_dir  as cod_etb,
      ths.cod_cps_dir  as cod_cps,
      null             as tem_rap_recu,
      null             as cod_roj_compl
    from these_hdr_sout ths
    where ths.cod_ths_trv = '1' and ths.cod_per_dir is not null
    union
    select
      'K1_' || rowid as id,
      ths.cod_ths,
      'K'              as cod_roj,
      ths.cod_per_cdr  as cod_per,
      ths.cod_etb_cdr  as cod_etb,
      ths.cod_cps_cdr  as cod_cps,
      null             as tem_rap_recu,
      null             as cod_roj_compl
    from these_hdr_sout ths
    where ths.cod_ths_trv = '1' and ths.cod_per_cdr is not null
    union
    select
      'K2_' || rowid as id,
      ths.cod_ths,
      'K'              as cod_roj,
      ths.cod_per_cdr2 as cod_per,
      ths.cod_etb_cdr2 as cod_etb,
      ths.cod_cps_cdr2 as cod_cps,
      null             as tem_rap_recu,
      null             as cod_roj_compl
    from these_hdr_sout ths
    where ths.cod_ths_trv = '1' and ths.cod_per_cdr2 is not null
    union
    select
      'R_' || rowid as id,
      trs.cod_ths,
      'R'              as cod_roj,
      trs.cod_per,
      null             as cod_etb,
      null             as cod_cps,
      trs.tem_rap_recu,
      null             as cod_roj_compl
    from ths_rap_sou trs
    union
    select
      'M_' || rowid as id,
      tjp.cod_ths,
      'M'              as cod_roj,
      tjp.cod_per,
      tjp.cod_etb,
      tjp.cod_cps,
      null             as tem_rap_recu,
      case when tjp.cod_roj in ( 'P', 'B', 'A' ) then tjp.cod_roj else null end as cod_roj_compl
    from ths_jur_per tjp
  )
  select distinct
    act.id                                                                as id,
    'apogee'                                                              as source_id,               -- Id de la source
    act.cod_ths                                                           as these_id,                -- Identifiant de la these
    roj.cod_roj                                                           as role_id,                 -- Identifiant du rôle
    cast(act.cod_roj_compl as varchar2(1 char))                           as cod_roj_compl,           -- Code du complement sur le role dans le jury
    rjc.lib_roj                                                           as lib_roj_compl,           -- Libelle du complement sur le role dans le jury
    coalesce(
        regexp_replace(per.num_dos_har_per,'[^0-9]',''),
        'COD_PER_'||act.cod_per
    )                                                                     as individu_id,             -- Code Harpege ou Apogee de l acteur
    nvl ( act.cod_etb, per.cod_etb )                                      as acteur_etablissement_id, -- Id de l'etablissement de l'acteur
    case when etb.cod_dep = '099' then etb.cod_pay_adr_etb else null end  as cod_pay_etb,             -- Code pays etablissement
    case when etb.cod_dep = '099' then pay.lib_pay         else null end  as lib_pay_etb,             -- Libelle pays etablissement
    cps.cod_cps,                                                                                      -- Code du corps d'appartenance
    cps.lib_cps,                                                                                      -- Libelle du corps d'appartenance
    per.tem_hab_rch_per,                                                                              -- HDR (O/N)
    act.tem_rap_recu                                                                                  -- Rapport recu (O/N)
  from acteur                  act
    join SYGAL_ROLE_JURY       roj on roj.cod_roj = act.cod_roj
    join personnel             per on per.cod_per = act.cod_per
    left join corps_per        cps on cps.cod_cps = nvl ( act.cod_cps, per.cod_cps )
    left join etablissement    etb on etb.cod_etb = nvl ( act.cod_etb, per.cod_etb )
    left join pays             pay on pay.cod_pay = etb.cod_pay_adr_etb
    left join SYGAL_ROLE_JURY  rjc on rjc.cod_roj = act.cod_roj_compl
/
```