Commit 1ee29727 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Doc

parent a36830af
Loading
Loading
Loading
Loading
+387 −21
Original line number Diff line number Diff line
Version 4.0.0 (XX/XX/2023)
Version 4.0.0 (11/10/2023)
====

Évolution
---
- Passage à PHP 8.0
- Interface pour déclarer les référentiel de compétences.
- Changement des formulaires de saisie des compétences : Référentiel et Identifiant source.
- Interface d'import des compétences depuis le CSV d'un référentiel de compétence
@@ -11,6 +12,391 @@ Modification en BD
---

```postgresql
-- ------------------------------------------------------------------------------------------------------------------ --
-- Liste des opérations réalisées sur le serveur de prod de UNICAEN lors du passage à la version php8                 --
-- ------------------------------------------------------------------------------------------------------------------ --

-- ----------------------------------------------------------------------------
-- Réorganisation de tables incorrectement nommées ----------------------------
-- ----------------------------------------------------------------------------

alter table agent_autorite rename to agent_hierarchie_autorite;
create sequence agent_hierarchie_autorite_id_seq;
alter table agent_hierarchie_autorite alter column id set default nextval('agent_hierarchie_autorite_id_seq');
alter sequence agent_hierarchie_autorite_id_seq owned by agent_hierarchie_autorite.id;
alter sequence agent_hierarchie_autorite_id_seq restart with 3000;
alter table agent_superieur rename to agent_hierarchie_superieur;
create sequence agent_hierarchie_superieur_id_seq;
alter table agent_hierarchie_superieur alter column id set default nextval('agent_hierarchie_superieur_id_seq');
alter sequence agent_hierarchie_superieur_id_seq owned by agent_hierarchie_superieur.id;
alter sequence agent_hierarchie_superieur_id_seq restart with 3000;
alter table carriere_corps add superieur_as_autorite bool default false not null;
alter table agent_carriere_grade rename column bap_id to correspondance_id;

-- ----------------------------------------------------------------------------
-- Référentiel de compétence --------------------------------------------------
-- ----------------------------------------------------------------------------

create table element_competence_referentiel
(
    id                    serial
        constraint element_competence_referentiel_pk
            primary key,
    libelle_court         varchar(64)             not null,
    libelle_long          varchar(1024)           not null,
    couleur               varchar(64),
    histo_creation        timestamp default now() not null,
    histo_createur_id     integer   default 0     not null
        constraint element_competence_referentiel_unicaen_utilisateur_user_id_fk
            references unicaen_utilisateur_user,
    histo_modification    timestamp,
    histo_modificateur_id integer
        constraint element_competence_referentiel_unicaen_utilisateur_user_id_fk2
            references unicaen_utilisateur_user,
    histo_destruction     timestamp,
    histo_destructeur_id  integer
        constraint element_competence_referentiel_unicaen_utilisateur_user_id_fk3
            references unicaen_utilisateur_user
);
comment on column element_competence_referentiel.libelle_court is 'Est utilisé pour l''affichage du badge';
comment on column element_competence_referentiel.couleur is 'Est utilisée pour l''afficahge du badge';

alter table element_competence add referentiel_id integer;
alter table element_competence add constraint element_competence_element_competence_referentiel_id_fk
        foreign key (referentiel_id) references element_competence_referentiel on delete set null;

INSERT INTO element_competence_referentiel (libelle_court, libelle_long, couleur) VALUES ('EMC2', 'Référentiel interne à EMC2', '#3465a4');
INSERT INTO element_competence_referentiel (libelle_court, libelle_long, couleur) VALUES ('REFERENS3', 'Référentiel des BIATSS', '#ce5c00');
update element_competence set source='REFERENS3' where source='REFERENS 3';
update element_competence set referentiel_id=r.id from element_competence c join element_competence_referentiel r on r.libelle_court=c.source;

INSERT INTO unicaen_privilege_categorie (code, libelle, namespace, ordre) VALUES ('competencereferentiel', 'Gestion des référentiels de compétences', 'Element\Provider\Privilege', 70800);
INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'competencereferentiel_index', 'Accéder à l''index', 10 UNION
    SELECT 'competencereferentiel_afficher', 'Afficher', 20 UNION
    SELECT 'competencereferentiel_ajouter', 'Ajouter', 30 UNION
    SELECT 'competencereferentiel_modifier', 'Modifier', 40 UNION
    SELECT 'competencereferentiel_historiser', 'Historiser/Restaurer', 50 UNION
    SELECT 'competencereferentiel_effacer', 'Supprimer', 60
)
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
JOIN unicaen_privilege_categorie cp ON cp.CODE = 'competencereferentiel';
-- todo attribuer les nouveaux privileges !!!

-- ----------------------------------------------------------------------------
-- Passage à UnicaenEtat ------------------------------------------------------
-- ----------------------------------------------------------------------------

-- Tables de la librairie -----------------------------------------------------

create table unicaen_etat_categorie
(
    id                      serial          not null constraint unicaen_etat_categorie_pk primary key,
    code                    varchar(256)    not null,
    libelle                 varchar(256)    not null,
    icone                   varchar(256),
    couleur                 varchar(256),
    ordre                   integer
);
create unique index unicaen_etat_categorie_id_uindex on unicaen_etat_categorie (id);

create table unicaen_etat_type
(
    id                      serial          not null constraint unicaen_etat_type_pk primary key,
    code                    varchar(256)    not null,
    libelle                 varchar(256)    not null,
    categorie_id            integer         constraint unicaen_etat_type_categorie_id_fk references unicaen_etat_categorie,
    icone                   varchar(256),
    couleur                 varchar(256),
    ordre                   integer         not null default 9999
);
create unique index unicaen_etat_type_id_uindex on unicaen_etat_type (id);

create table unicaen_etat_instance
(
    id                      serial          constraint unicaen_etat_instance_pk primary key,
    type_id                 integer         not null constraint unicaen_etat_instance_type_id references unicaen_etat_type,
    histo_creation          timestamp       default now() not null,
    histo_createur_id       integer         default 0 not null constraint unicaen_content_content_user_id_fk references unicaen_utilisateur_user,
    histo_modification      timestamp,
    histo_modificateur_id   integer         constraint unicaen_content_content_user_id_fk_2 references unicaen_utilisateur_user,
    histo_destruction       timestamp,
    histo_destructeur_id    integer         constraint unicaen_content_content_user_id_fk_3 references unicaen_utilisateur_user
);
create unique index unicaen_etat_instance_id_index on unicaen_etat_instance (id);


-- Fiche METIER --------------------------------------------------------------------------------------------------------

-- linker
create table fichemetier_etat
(
    fichemetier_id          integer         not null constraint fichemetier_etat_fichemetier_id_fk references fichemetier on delete cascade,
    etat_id                 integer         not null constraint fichemetier_etat_etat_id_fk references unicaen_etat_instance on delete cascade,
    constraint fichemetier_etat_pk primary key (fichemetier_id, etat_id)
);

-- categorie et etats
insert into unicaen_etat_categorie (code, libelle, icone, couleur, ordre)
values ('FICHE_METIER', 'États associés aux fiches métiers', 'fas fa-book-open', '#fcaf3e', 100);
INSERT INTO unicaen_etat_type(code, libelle, categorie_id, icone, couleur)
WITH d(code, libelle, icone, couleur) AS (
    SELECT 'FICHE_METIER_REDACTION', 'Fiche métier en rédaction', 'fas fa-edit', '#729fcf',10 UNION
    SELECT 'FICHE_METIER_OK', 'Fiche métier compléte', 'far fa-check-square', 'darkgreen',20 UNION
    SELECT 'FICHE_METIER_MASQUEE', 'Fiche métier masquée', 'fas fa-mask', 'darkred',30
)
SELECT d.code, d.libelle, cp.id, d.icone, d.couleur
FROM d
JOIN unicaen_etat_categorie cp ON cp.CODE = 'FICHE_METIER';

-- insertion
alter table unicaen_etat_instance add column complement varchar(1024);
insert into unicaen_etat_instance (type_id, complement)
select uet.id as type_id, concat('FICHEMETIER ',fm.id) as fichemetier_id
from fichemetier fm
         join unicaen_etat_etat uee on fm.etat_id = uee.id
         join unicaen_etat_type uet on uet.code = uee.code;

insert into fichemetier_etat(fichemetier_id, etat_id)
select cast (split_part(complement, ' ',2) as INTEGER) as fichemetier_id, id as etat_id
from unicaen_etat_instance
where complement ilike 'FICHEMETIER%';

-- !!! SI CELA A FONCTIONNEE !!! --
alter table fichemetier drop column etat_id;

-- Fiche POSTE ---------------------------------------------------------------------------------------------------------

-- linker
create table ficheposte_etat
(
    ficheposte_id          integer         not null constraint ficheposte_etat_fichemetier_id_fk references ficheposte on delete cascade,
    etat_id                 integer         not null constraint ficheposte_etat_etat_id_fk references unicaen_etat_instance on delete cascade,
    constraint ficheposte_etat_pk primary key (ficheposte_id, etat_id)
);

-- categorie et etats
insert into unicaen_etat_categorie (code, libelle, icone, couleur, ordre)
values ('FICHE_POSTE', 'États associés aux fiches de poste', 'fas fa-book-reader', '#8ae234', 200);
INSERT INTO unicaen_etat_type(code, libelle, categorie_id, icone, couleur)
WITH d(code, libelle, icone, couleur) AS (
    SELECT uee.code, uee.libelle, uee.icone, uee.couleur
    FROM unicaen_etat_etat uee
    join unicaen_etat_etat_type ueet on uee.type_id = ueet.id
    where ueet.code='FICHE_POSTE'
)
SELECT d.code, d.libelle, cp.id, d.icone, d.couleur
FROM d
JOIN unicaen_etat_categorie cp ON cp.CODE = 'FICHE_POSTE';

-- insertion
insert into unicaen_etat_instance (type_id, complement)
select uet.id as type_id, concat('FICHEPOSTE ',fp.id) as fichemetier_id
from ficheposte fp
         join unicaen_etat_etat uee on fp.etat_id = uee.id
         join unicaen_etat_type uet on uet.code = uee.code;

insert into ficheposte_etat(ficheposte_id, etat_id)
select cast (split_part(complement, ' ',2) as INTEGER) as ficheposte_id, id as etat_id
from unicaen_etat_instance
where complement ilike 'FICHEPOSTE%';

-- !!! SI CELA A FONCTIONNEE !!! --
alter table ficheposte drop column etat_id;

-- ENTRETIEN PROFESSIONNEL ---------------------------------------------------------------------------------------------

-- linker
create table entretienprofessionnel_etat
(
    entretien_id            integer         not null constraint entretienprofessionnel_etat_entretien_id_fk references entretienprofessionnel on delete cascade,
    etat_id                 integer         not null constraint entretienprofessionnel_etat_etat_id_fk references unicaen_etat_instance on delete cascade,
    constraint entretienprofessionnel_etat_pk primary key (entretien_id, etat_id)
);

-- categorie et etats
insert into unicaen_etat_categorie (code, libelle, icone, couleur, ordre)
values ('ENTRETIEN_PROFESSIONNEL', 'États associés aux entretiens professionnels', 'fas fa-briefcase', '#75507b', 200);
INSERT INTO unicaen_etat_type(code, libelle, categorie_id, icone, couleur)
WITH d(code, libelle, icone, couleur) AS (
    SELECT uee.code, uee.libelle, uee.icone, uee.couleur
    FROM unicaen_etat_etat uee
             join unicaen_etat_etat_type ueet on uee.type_id = ueet.id
    where ueet.code='ENTRETIEN_PROFESSIONNEL'
)
SELECT d.code, d.libelle, cp.id, d.icone, d.couleur
FROM d
JOIN unicaen_etat_categorie cp ON cp.CODE = 'ENTRETIEN_PROFESSIONNEL';

-- insertion
insert into unicaen_etat_instance (type_id, complement)
select uet.id as type_id, concat('ENTRETIENPROFESSIONNEL ',ep.id) as fichemetier_id
from entretienprofessionnel ep
         join unicaen_etat_etat uee on ep.etat_id = uee.id
         join unicaen_etat_type uet on uet.code = uee.code;
insert into entretienprofessionnel_etat(entretien_id, etat_id)
select cast (split_part(complement, ' ',2) as INTEGER) as entretien_id, id as etat_id
from unicaen_etat_instance
where complement ilike 'ENTRETIENPROFESSIONNEL%';

-- !!! SI CELA A FONCTIONNEE !!! --
alter table entretienprofessionnel drop column etat_id;

-- Demande de formation externe ----------------------------------------------------------------------------------------

-- Linker
create table formation_demande_externe_etat
(
    demande_id              integer         not null constraint formation_demande_externe_etat_formation_demande_externe_id_fk references formation_demande_externe on delete cascade,
    etat_id                 integer         not null constraint formation_demande_externe_etat_unicaen_etat_instance_id_fk references unicaen_etat_instance on delete cascade,
    constraint formation_demande_externe_etat_pk primary key (demande_id, etat_id)
);

-- categorie et etats
insert into unicaen_etat_categorie (code, libelle, icone, couleur, ordre)
values ('DEMANDE_EXTERNE', 'Gestion des demandes de formations externes', 'fas fa-school', 'cadetblue', 200);
INSERT INTO unicaen_etat_type(code, libelle, categorie_id, icone, couleur)
WITH d(code, libelle, icone, couleur) AS (
    SELECT uee.code, uee.libelle, uee.icone, uee.couleur
    FROM unicaen_etat_etat uee
             join unicaen_etat_etat_type ueet on uee.type_id = ueet.id
    where ueet.code='DEMANDE_EXTERNE'
)
SELECT d.code, d.libelle, cp.id, d.icone, d.couleur
FROM d
JOIN unicaen_etat_categorie cp ON cp.CODE = 'DEMANDE_EXTERNE';

-- insertion
insert into unicaen_etat_instance (type_id, complement)
select uet.id as type_id, concat('DEMANDE_EXTERNE ',ep.id) as fichemetier_id
from formation_demande_externe ep
         join unicaen_etat_etat uee on ep.etat_id = uee.id
         join unicaen_etat_type uet on uet.code = uee.code;
insert into formation_demande_externe_etat(demande_id, etat_id)
select cast (split_part(complement, ' ',2) as INTEGER) as demande_id, id as etat_id
from unicaen_etat_instance
where complement ilike 'DEMANDE_EXTERNE%';

-- !!! SI CELA A FONCTIONNEE !!! --
alter table formation_demande_externe drop column etat_id;

-- FORMATION SESSION ---------------------------------------------------------------------------------------------------

-- Linker
create table formation_session_etat
(
    session_id              integer         not null constraint formation_instance_etat_session_id_fk references formation_instance on delete cascade,
    etat_id                 integer         not null constraint formation_instance_etat_etat_id_fk references unicaen_etat_instance on delete cascade,
    constraint formation_session_etat_pk primary key (session_id, etat_id)
);

-- categorie et type
insert into unicaen_etat_categorie (code, libelle, icone, couleur, ordre)
values ('FORMATION_SESSION','Gestion des sessions de formation','fas fa-chalkboard','#3465a4', 300);
INSERT INTO unicaen_etat_type(code, libelle, categorie_id, icone, couleur)
WITH d(code, libelle, icone, couleur) AS (
    SELECT uee.code, uee.libelle, uee.icone, uee.couleur
    FROM unicaen_etat_etat uee
             join unicaen_etat_etat_type ueet on uee.type_id = ueet.id
    where ueet.code='FORMATION_SESSION'
)
SELECT d.code, d.libelle, cp.id, d.icone, d.couleur
FROM d
JOIN unicaen_etat_categorie cp ON cp.CODE = 'FORMATION_SESSION';

-- insertion
insert into unicaen_etat_instance (type_id, complement)
select uet.id as type_id, concat('FORMATION_SESSION ',ep.id) as fichemetier_id
from formation_instance ep
         join unicaen_etat_etat uee on ep.etat_id = uee.id
         join unicaen_etat_type uet on uet.code = uee.code;
insert into formation_session_etat(session_id, etat_id)
select cast (split_part(complement, ' ',2) as INTEGER) as session_id, id as etat_id
from unicaen_etat_instance
where complement ilike 'FORMATION_SESSION%';

-- !!! SI CELA A FONCTIONNEE !!! --
alter table formation_instance drop column etat_id;

-- Formation inscription -----------------------------------------------------------------------------------------------

-- linker
create table formation_inscription_etat
(
    inscription_id          integer         not null constraint formation_inscription_etat_inscription_id_fk references formation_instance_inscrit on delete cascade,
    etat_id                 integer         not null constraint formation_inscription_etat_etat_id_fk references unicaen_etat_instance on delete cascade,
    constraint formation_inscription_etat_pk primary key (inscription_id, etat_id)
);

-- categorie et type
insert into unicaen_etat_categorie (code, libelle, icone, couleur, ordre)
values ('FORMATION_INSCRIPTION','Gestion des inscriptions au formation','fas fa-chalkboard-teacher','#204a87', 400);
INSERT INTO unicaen_etat_type(code, libelle, categorie_id, icone, couleur)
WITH d(code, libelle, icone, couleur) AS (
    SELECT uee.code, uee.libelle, uee.icone, uee.couleur
    FROM unicaen_etat_etat uee
             join unicaen_etat_etat_type ueet on uee.type_id = ueet.id
    where ueet.code='FORMATION_INSCRIPTION'
)
SELECT d.code, d.libelle, cp.id, d.icone, d.couleur
FROM d
         JOIN unicaen_etat_categorie cp ON cp.CODE = 'FORMATION_INSCRIPTION';

-- insertion
insert into unicaen_etat_instance (type_id, complement)
select uet.id as type_id, concat('FORMATION_INSCRIPTION ',ep.id) as fichemetier_id
from formation_instance_inscrit ep
         join unicaen_etat_etat uee on ep.etat_id = uee.id
         join unicaen_etat_type uet on uet.code = uee.code;
insert into formation_inscription_etat(inscription_id, etat_id)
select cast (split_part(complement, ' ',2) as INTEGER) as inscription_id, id as etat_id
from unicaen_etat_instance
where complement ilike 'FORMATION_INSCRIPTION%';

-- !!! SI CELA A FONCTIONNEE !!! --
alter table formation_instance_inscrit drop column etat_id;

-- Rertrait des anciennes tables ---------------------------------------------------------------------------------------

drop table unicaen_etat_etat;
drop table unicaen_etat_etat_type;
-- quid des usage de unicaen_etat_etat_type
SELECT conrelid::regclass AS table_name,
       conname AS foreign_key,
       pg_get_constraintdef(oid)
FROM   pg_constraint
WHERE  contype = 'f' and pg_get_constraintdef(oid) ilike '%unicaen_etat_etat_type(id)%'
  AND    connamespace = 'public'::regnamespace
ORDER  BY conrelid::regclass::text, contype DESC;
-- quid des usage de unicaen_etat_etat
SELECT conrelid::regclass AS table_name,
       conname AS foreign_key,
       pg_get_constraintdef(oid)
FROM   pg_constraint
WHERE  contype = 'f' and pg_get_constraintdef(oid) ilike '%unicaen_etat_etat(id)%'
  AND    connamespace = 'public'::regnamespace
ORDER  BY conrelid::regclass::text, contype DESC;

-- agent_ccc_accompagnement, agent_ccc_ppp, agent_ccc_stageobs, agent_ccc_tutorat
alter table agent_ccc_accompagnement drop column etat_id;
alter table agent_ccc_ppp drop column etat_id;
alter table agent_ccc_tutorat drop column etat_id;
alter table agent_ccc_stageobs drop column etat_id;

drop table unicaen_etat_etat;
drop table unicaen_etat_etat_type;

-- ---------------------------------------------------------------------------------------------------------------------
-- PASSAGE A UNICAEN VALIDATION ----------------------------------------------------------------------------------------
-- ---------------------------------------------------------------------------------------------------------------------

alter table unicaen_validation_instance add justification text;
alter table unicaen_validation_instance drop column refus;
alter table unicaen_validation_instance add refus boolean default false not null;

-- Nouveaux privileges
```

Evolution des librairies
@@ -30,23 +416,3 @@ composer install

Evolution des macros et templates
---

La campagne d'entretiens professionnels a débuté le 10 mai 2023

Qu’est-ce que c’est ?
L’entretien professionnel constitue un élément important de la gestion des personnels. C’est un moment privilégié d’échange et de dialogue avec son supérieur hiérarchique au cours duquel il est possible de formaliser ses souhaits d’évolution professionnelle et de mobilité. C’est l’occasion également d’aborder le niveau de réalisation des objectifs initiaux fixés à l'agent et des conditions réelles d’organisation et de fonctionnement du service dont il relève.

L’entretien professionnel permet de mettre en évidence le potentiel professionnel de l’agent, ses connaissances et ses compétences professionnelles qu’il a mobilisées, ses points forts et ceux qu’il faut améliorer. L'entretien se doit d'être mené dans un esprit constructif afin de mettre en valeur les marges de progression. Il permet ainsi de mieux situer l’activité de l’agent dans l’organisation et le fonctionnement du service et de préciser les missions afférentes à son poste de travail.

Qui est concerné ?
Tous les personnels BIATSS titulaires en activité ainsi que les agents contractuels recrutés depuis plus d’un an sont concernés.

Compte rendu de l’entretien professionnel (CREP)
1- L’agent est informé de son entretien par son supérieur hiérarchique 15 jours minimum avant.
2- Lors de l’entretien, réalisation préalable de la fiche de poste en s’appuyant sur les référentiels métiers.
3- Saisie de l’entretien professionnel par le supérieur hiérarchique
4- Demande de validation par l’agent
5- Notification envoyée à l’autorité hiérarchique.


En savoir plus
 No newline at end of file