Import initial de Vivier depuis l'hebergement OVH
This commit is contained in:
commit
839e5e57c5
126 files changed
+22447
No files matched your search
@@ -0,0 +1 @@
|
||||
Require all denied
|
||||
@@ -0,0 +1,375 @@
|
||||
# The account manager's role
|
||||
|
||||
The account manager has the same rights as everyone else on profiles. In addition, they have the **Manage** menu:
|
||||
|
||||
- **Accounts**: invite, create, edit, disable an account, reset a two-step verification, lift a block
|
||||
- **Sign-ins**: the log of every sign-in attempt
|
||||
- **Activity log**: the actions on all profiles
|
||||
- **Retention** and **Trash**: the retention period and the deletion of profiles
|
||||
- **Backup**: status, run, download
|
||||
- **Errors**: unexpected errors, with their reference
|
||||
|
||||
They also have the CSV export of the profile list, the backup alert on their dashboard and this administration guide.
|
||||
|
||||
The first account created is the account manager. It can grant this role to other accounts. Keep at least two account managers: if one loses their phone and backup codes, the other resets their two-step verification.
|
||||
|
||||
The **Security** guide, readable by everyone, explains the protections to users. This page explains how to manage them.
|
||||
|
||||
# Accounts
|
||||
|
||||
**Manage** menu, **Accounts**.
|
||||
|
||||
## Inviting someone
|
||||
|
||||
The recommended way: nobody but the person knows their password.
|
||||
|
||||
1. **Invite someone** block: type their name, optional, then **Create an invitation link**.
|
||||
2. Copy the link shown and send it to the person, by email or internal chat. It is shown only once.
|
||||
3. The person opens the link, chooses a username and password, then sets up two-step verification. The account is active right away.
|
||||
|
||||
The link works once and expires after 48 hours. **Open links** lists the links not used yet. **Cancel the link** makes it unusable. Link lost or expired: create another one.
|
||||
|
||||
The invitation link uses the address of the page you have open. To fix it, fill in the `adresse` key of `config/config.php`.
|
||||
|
||||
## Creating an account
|
||||
|
||||
You can also create the account yourself.
|
||||
|
||||
1. Type the person's name.
|
||||
2. Choose their username: 3 to 40 characters, unaccented letters, digits, dot, hyphen.
|
||||
3. Choose a temporary password: at least 12 characters.
|
||||
4. Click **Create account**, then give the username and password to the person, in person or through a different channel from the username.
|
||||
|
||||
At first sign-in, the person chooses their own password, then sets up two-step verification.
|
||||
|
||||
## Reading the account list
|
||||
|
||||
Each account shows its username, role, two-step verification status and last sign-in. **Two-step verification to set up** flags an account that has not done it yet. **Password to change** flags a temporary password not yet replaced.
|
||||
|
||||
## Editing an account
|
||||
|
||||
Under each account, **Change the name, username or password**. Leave the password empty to keep it.
|
||||
|
||||
A new password is temporary: the person changes it at next sign-in, and their open sessions close. To give one, type your own password again.
|
||||
|
||||
- **Disable account**: the person can no longer sign in and their sessions close at once. Their actions stay in the activity log. **Enable account** restores access.
|
||||
- **Grant account management**: the account becomes an account manager. **Remove account management** does the opposite. Type your password to confirm.
|
||||
- **Sign-ins** opens the sign-in log of this account.
|
||||
|
||||
You cannot disable your own account, nor remove your own role. An account cannot be deleted: the activity log keeps its actions.
|
||||
|
||||
## Forgotten password
|
||||
|
||||
Give a temporary password through **Change the name, username or password**. The person replaces it at sign-in.
|
||||
|
||||
## Lost phone
|
||||
|
||||
The person first signs in with a backup code, then sets up another app from **My account**.
|
||||
|
||||
No backup codes left:
|
||||
|
||||
1. Check that it really is the person: by phone, in person. A request by email is not enough.
|
||||
2. Under their account, **Reset two-step verification**, then type your password.
|
||||
3. The person sets up a new app at next sign-in. Their open sessions are closed.
|
||||
|
||||
## Blocked sign-ins
|
||||
|
||||
The **Blocked sign-ins** block appears while a block is active:
|
||||
|
||||
- a username blocked from an address, after 5 failures (15 minutes, then 30 and 60)
|
||||
- an address blocked for every username, after 20 failures in an hour
|
||||
|
||||
**Unblock** lifts the block at once. Do it only if you know who is trying, for example a colleague who mistyped their password. A series of failures from an unknown address: leave the block and check the sign-in log.
|
||||
|
||||
## Requests made before version 1.8
|
||||
|
||||
The public account request page no longer exists. Requests still waiting show in **Account requests to approve**. **Approve** opens access: the person sets up two-step verification when signing in. **Decline** erases the request.
|
||||
|
||||
# Sign-in log
|
||||
|
||||
**Manage** menu, **Sign-ins**.
|
||||
|
||||
Every sign-in attempt is listed: date, account, username typed, IP address, network, browser, result. Filter by account or keep failures only. The log keeps 12 months. The scheduled task and an account manager's sign-in erase older rows.
|
||||
|
||||
| Result | Meaning |
|
||||
|---|---|
|
||||
| Signed in | Password and code correct |
|
||||
| Wrong password | Known or unknown username, wrong password |
|
||||
| Wrong code | Correct password, wrong two-step code |
|
||||
| Attempt blocked | Attempt refused during a block |
|
||||
| Account disabled | Attempt on a disabled account |
|
||||
|
||||
**The email alert.** When an account manager signs in from a network never seen for that account, Vivier sends an email to the `comptes.notifier` addresses, or to the sender address. The network is the address range (the first three numbers of an IPv4 address). An account's first sign-in triggers no alert.
|
||||
|
||||
You don't recognise a sign-in: change the account's password, reset its two-step verification, then close its sessions by disabling and enabling it.
|
||||
|
||||
# Errors
|
||||
|
||||
**Manage** menu, **Errors**.
|
||||
|
||||
When a page fails, the user reads "Something went wrong" and a six-character reference. The **Errors** page lists the last 300, with the reference, date, page, cause and code location. No candidate data is stored there. Pass the row to whoever maintains Vivier. **Clear the log** empties the list.
|
||||
|
||||
# Deleting profiles and the trash
|
||||
|
||||
Only the account manager deletes a profile: the **Delete profile** button at the bottom of the profile page, or **Delete** on the Retention page. Other accounts do not see these buttons.
|
||||
|
||||
## What deleting does
|
||||
|
||||
The profile goes to the trash. It disappears at once from the board, the profiles, search, client requests, follow-up, the dashboard, the CSV export and the Retention page. Its page and its documents no longer open. In the activity log, its name is replaced by its reference.
|
||||
|
||||
## The Trash page
|
||||
|
||||
**Manage** menu, **Trash**. Each line gives the profile, the deletion date, the account that deleted it and the erasure date.
|
||||
|
||||
- **Restore** puts the profile back, with all its data. It returns to the bottom of its column.
|
||||
- **Erase now** erases the profile without waiting. This cannot be undone.
|
||||
|
||||
## Erasure after 30 days
|
||||
|
||||
After 30 days, Vivier erases the profile, the original CV, the photo, the attachments, the comments, the interviews, the follow-ups, the keywords and the history. The activity log keeps one line: the profile's reference, the account that deleted it and the date it went to the trash. No name.
|
||||
|
||||
Erasure happens at three moments: the scheduled task on Sunday, an account manager signing in, the Trash page being opened. A profile can therefore stay a few days longer if nobody signs in.
|
||||
|
||||
The period is set by `CORBEILLE_JOURS`, at the top of `src/bootstrap.php`.
|
||||
|
||||
## Good to know
|
||||
|
||||
- While a profile is in the trash, its email address stays taken. Importing the same candidate is refused: restore the profile or erase it.
|
||||
- Backups already made keep the profiles deleted since. A backup made during the 30 days contains the profiles in the trash.
|
||||
|
||||
# Backup
|
||||
|
||||
**Manage** menu, **Backup**.
|
||||
|
||||
## What is backed up
|
||||
|
||||
| Item | Where | How |
|
||||
|---|---|---|
|
||||
| Database | Email and copy on the server | Every week, by the scheduled task |
|
||||
| Files: CVs, reports, attachments, photos | Download | By hand, **Download the files archive** button, after typing your password |
|
||||
|
||||
The database holds the profiles, comments, interviews, follow-ups, requests, activity log and accounts. The files are too heavy for an email.
|
||||
|
||||
## The weekly backup
|
||||
|
||||
The hosting's scheduled task runs the `cron/sauvegarde.php` script. The script:
|
||||
|
||||
1. exports the whole database to an SQL file
|
||||
2. compresses it into a zip
|
||||
3. keeps a copy in `stockage/sauvegardes/`
|
||||
4. sends the zip to the addresses set in `config/config.php`
|
||||
|
||||
The file is not encrypted. It holds candidates' data, password fingerprints and the encrypted two-step verification keys. Its protection is that of the inboxes that receive it: strong password and two-factor authentication.
|
||||
|
||||
## Scheduling the task at OVH
|
||||
|
||||
1. Control panel, hosting, **More** tab, **Scheduled tasks**, **Add a schedule**.
|
||||
2. Command: `vivier/cron/sauvegarde.php`. Language: PHP 8.3.
|
||||
3. Frequency: the day and hour you want. OVH does not set minutes: a task planned for 6 am starts between 6:00 and 6:59.
|
||||
4. Report address: optional. OVH sends what the script prints to it.
|
||||
|
||||
## Checking that it works
|
||||
|
||||
1. Backup page, **Send a test email, without attachment**. Check the inboxes, spam folders included.
|
||||
2. Tick **Also send the backup by email**, then **Back up now**.
|
||||
3. Open the zip you receive: it contains a `.sql` file.
|
||||
4. After the scheduled task has run once, check the "Scheduled task" line in the history.
|
||||
|
||||
If the email lands in spam, create a rule for the sender. The domain of the sender address must authorise the OVH server in its SPF record, and publish a single SPF record.
|
||||
|
||||
## Alerts
|
||||
|
||||
| Signal | Meaning |
|
||||
|---|---|
|
||||
| "ÉCHEC de la sauvegarde" email | The backup failed, or it was made but could not be sent. The email is written in French |
|
||||
| Red banner on the dashboard | No successful backup for more than 8 days, or a problem with the last one |
|
||||
|
||||
The banner covers the case where the task no longer starts or the email no longer goes out: in that case no alert email arrives.
|
||||
|
||||
## Copies on the server
|
||||
|
||||
The history on the page lists every backup. **Download** fetches the zip. **Delete** removes the copy from the server, not the emails received.
|
||||
|
||||
The `semaines_conservees` setting sets how long: 0 keeps every copy, a number deletes older copies.
|
||||
|
||||
A copy still holds profiles deleted since. To respect the data retention period, delete old backup copies and emails.
|
||||
|
||||
## If the file gets too heavy
|
||||
|
||||
Above `taille_max_email`, Vivier runs the export again without the search index, which can be rebuilt. If it is still too heavy, the email goes out without attachment and the file is downloaded from Vivier.
|
||||
|
||||
## Restoring
|
||||
|
||||
1. phpMyAdmin, Vivier's database, **Import** tab: load the `.sql` file from the zip. It replaces every table.
|
||||
2. By FTP, copy the `docs/` and `photos/` folders from the files archive into `stockage/`.
|
||||
3. If the SQL file says at the top that the search index is not included: Manage menu, Accounts, **Reindex all profiles**.
|
||||
4. Keep `config/cle-secrets.php`, or the `cle_secrets` key: it decrypts the two-step verification keys in the backup.
|
||||
5. Sign in. Accounts, passwords and two-step verification are those of the day of the backup.
|
||||
|
||||
Download the files archive on the same day as the database backup: the database only finds the files that existed that day.
|
||||
|
||||
# Installing on OVH hosting
|
||||
|
||||
Vivier needs PHP 8.3 and a MySQL or MariaDB database. No framework, no dependency to install.
|
||||
|
||||
1. Control panel, **Databases** tab: create a MySQL database. Note the host, name, user and password.
|
||||
2. phpMyAdmin, **Import** tab: load `sql/schema.sql`.
|
||||
3. Upload the whole `vivier/` folder by FTP, next to `www/`.
|
||||
4. **Multisite** tab: add the subdomain with `vivier/public` as root folder. Tick SSL.
|
||||
5. Copy `config/config.exemple.php` to `config/config.php` and fill in the database.
|
||||
6. Open the site address with `https://`. The first-run page creates your account, the account manager, then has you set up two-step verification.
|
||||
7. Schedule the weekly backup.
|
||||
|
||||
The root folder must be `vivier/public`. The other folders then cannot be reached by an address. `.htaccess` files block them too, as a second protection.
|
||||
|
||||
| Folder | Purpose |
|
||||
|---|---|
|
||||
| `public/` | Web root: `index.php`, styles, scripts, fonts |
|
||||
| `src/` | PHP code |
|
||||
| `vues/` | Screens |
|
||||
| `lang/` | Translations of the interface and the CVs |
|
||||
| `aide/` | The texts of this help |
|
||||
| `config/` | Configuration |
|
||||
| `stockage/` | CVs, documents, photos, backups |
|
||||
| `cron/` | Weekly backup script |
|
||||
| `sql/` | Database creation and migrations |
|
||||
| `claude/` | Instructions, schema and example for the Claude analysis project |
|
||||
| `tests/` | Tests |
|
||||
|
||||
# Updating
|
||||
|
||||
1. Export the database in phpMyAdmin, **Export** tab.
|
||||
2. Run, in order, the `sql/migration-*.sql` files that have not been run yet.
|
||||
Migration 1.5 adds the trash and account requests. It also creates the account manager `ypilla`, or updates its password and role if it exists.
|
||||
Migration 1.8 adds two-step verification, invitations, the sign-in log, nationality, work permit, classified availability and the Europass CV fields. It classifies the availability already entered and keeps the original text as a note.
|
||||
3. Replace by FTP the `public/`, `src/`, `vues/`, `lang/`, `aide/`, `cron/`, `sql/`, `claude/` and `tests/` folders. Keep `config/config.php` and `stockage/`.
|
||||
4. Copy the new keys of `config/config.exemple.php` into `config/config.php`. In 1.8: `adresse`, `cle_secrets`, `securite`.
|
||||
5. The `config/` folder must be writable at first run: Vivier creates `cle-secrets.php` there. Otherwise, fill in `cle_secrets` yourself.
|
||||
6. In Vivier: Manage menu, Accounts, **Reindex all profiles**, then **Translate all profiles**.
|
||||
7. In the Claude analysis project: replace the instructions, the schema and the example with those of the `claude/` folder.
|
||||
|
||||
After the 1.8 update, every account sets up two-step verification at its next sign-in. Tell users: they need their phone.
|
||||
|
||||
# Configuration
|
||||
|
||||
Everything is set in `config/config.php`. This file must never be published.
|
||||
|
||||
| Key | Purpose |
|
||||
|---|---|
|
||||
| `nom_app` | The name shown in the header |
|
||||
| `fuseau` | The time zone of dates |
|
||||
| `db` | The host, port, name, user and password of the database |
|
||||
| `societe` | IT Club's details on exported CVs |
|
||||
| `claude` | The API key, the model, the maximum response length, the time limit |
|
||||
| `sauvegarde` | The recipients, the sender, how long copies are kept, the maximum email size |
|
||||
| `stockage` | The files folder, outside the web root |
|
||||
| `taille_max` | The maximum size of an uploaded file, in bytes |
|
||||
| `conservation_mois` | The retention period of a profile, in months |
|
||||
| `comptes` | `notifier`: the addresses that receive the alert when an account manager signs in from a new network |
|
||||
| `adresse` | Vivier's public address, used in invitation links. Optional |
|
||||
| `cle_secrets` | The encryption key of two-step verification keys. Empty: Vivier creates `config/cle-secrets.php` |
|
||||
| `securite` | `mots_de_passe_fuites`: `false` turns off the check for passwords found in breaches |
|
||||
| `https` | `true` in production: the session cookie only travels over HTTPS |
|
||||
|
||||
# Automatic analysis
|
||||
|
||||
To turn it on, fill in `cle_api` in the `claude` key of `config/config.php`. Without a key, only the import of files already analysed is offered.
|
||||
|
||||
- The key is created in the Anthropic console. API usage is billed separately from a Claude subscription.
|
||||
- Formats read: PDF, DOCX, ODT, MD, TXT.
|
||||
- The instructions sent to Claude are those of the `claude/` folder. Changing them changes both analysis routes.
|
||||
- The CV is sent to Anthropic for the analysis.
|
||||
- Time limit: 240 seconds, adjustable. If the hosting cuts the request earlier, use the files already analysed.
|
||||
|
||||
# Profile translation
|
||||
|
||||
Each profile shows in the interface language. A recruiter working in English reads the titles, summary, positions and points of attention in English.
|
||||
|
||||
- At import, Vivier plans the profile's translation into each interface language.
|
||||
- Translations run in the background, one at a time, while a Vivier page stays open for a user.
|
||||
- An edited profile is queued again. Meanwhile, the original text shows with a banner.
|
||||
- Comments, interview reports, client requests and work permits are not translated: they stay in their author's language.
|
||||
- Names of technologies, companies, clients and projects stay as they are.
|
||||
|
||||
**Manage** menu, **Accounts**, **Maintenance** block:
|
||||
|
||||
- the number of translations to do
|
||||
- the translations dropped after 3 attempts, with their cause
|
||||
- **Translate all profiles** queues every profile without an up-to-date translation, and retries dropped ones
|
||||
|
||||
Without automatic analysis, translations go through a file, from the IT Club CV preview, as before.
|
||||
|
||||
# Search: index and synonyms
|
||||
|
||||
Vivier stores each profile in a search index. The index is updated at every import or edit.
|
||||
|
||||
**Reindex all profiles** (Manage menu, Accounts) rebuilds the index. Run it after a Vivier update or a restore without index.
|
||||
|
||||
Synonyms are set in the `synonymes_recherche` table, with phpMyAdmin:
|
||||
|
||||
| Type | Effect | Example |
|
||||
|---|---|---|
|
||||
| `seniorite` | The word becomes a seniority filter | `senior` to `confirme` and `expert` |
|
||||
| `texte` | The word gains a variant | `dev` to `développeur` |
|
||||
|
||||
A synonym change takes effect at once, without reindexing.
|
||||
|
||||
# Security
|
||||
|
||||
The **Security** guide, in the help, describes the protections for users. Here is what falls to you.
|
||||
|
||||
| Setting | Value | Where |
|
||||
|---|---|---|
|
||||
| Two-step verification | Required for everyone, 6-digit codes (RFC 6238), 10 backup codes | `src/securite.php` |
|
||||
| Password | At least 12 characters, at most 200, rejected if found in a known breach | `LONGUEUR_MOT_DE_PASSE`, `LONGUEUR_MAX_MOT_DE_PASSE` |
|
||||
| Password fingerprint | Argon2id, recomputed at sign-in for older accounts | `hacher_mot_de_passe()` |
|
||||
| Username block | 5 failures: 15 min, then 30 and 60 min | `ECHECS_SERIE`, `BLOCAGES_MINUTES` |
|
||||
| Address block | 20 failures in an hour | `ECHECS_IP_HEURE` |
|
||||
| Session | 2 h of inactivity, 12 h at most | `DUREE_INACTIVITE`, `DUREE_SESSION_MAX` |
|
||||
| Invitation link | 48 h, single use | `INVITATION_HEURES` |
|
||||
| Sign-in log | 12 months | `CONNEXIONS_MOIS` |
|
||||
|
||||
The constants sit at the top of `src/bootstrap.php` and `src/securite.php`.
|
||||
|
||||
Other protections:
|
||||
|
||||
- HTTPS required when `https` is `true`: `http://` addresses are redirected and a one-year HSTS header is sent. Set `https` to `false` only for a trial on a local machine.
|
||||
- Two-step verification keys are encrypted (AES-256-GCM). The encryption key is in `config/cle-secrets.php`, created when first needed, or in the `cle_secrets` key of `config/config.php`. Back it up with `config.php`: without it, everyone has to sign in with a backup code and set up two-step verification again.
|
||||
- Passwords are checked against the Pwned Passwords service: only the first 5 characters of the SHA-1 fingerprint leave the server. If the service does not answer, the password is accepted. `securite.mots_de_passe_fuites` set to `false` turns this check off.
|
||||
- Your password is asked again to grant or remove account management, give a password to another account, reset a two-step verification and download the files archive.
|
||||
- CSV export, activity log, retention, trash, profile deletion: account manager only.
|
||||
- Site kept out of search engines: `X-Robots-Tag` header and `robots` tag on every page.
|
||||
- Files stored outside the web root, under a random name.
|
||||
- Every action is recorded in the activity log, with its author.
|
||||
- No call to an external service, except the Claude API when automatic analysis is on, and Pwned Passwords.
|
||||
|
||||
# Languages
|
||||
|
||||
The interface exists in French and English. CVs are generated in French, English and German.
|
||||
|
||||
Adding an interface language:
|
||||
|
||||
1. Copy `lang/en.php` to `lang/xx.php` and translate the values. An untranslated key shows in French.
|
||||
2. Add the language to `LANGUES_INTERFACE` in `src/i18n.php`.
|
||||
3. Copy `aide/guide.en.md` and `aide/administration.en.md` with the language code, and translate them. Without these files, the help shows in French.
|
||||
|
||||
For a CV language, a few dozen labels are enough: see `lang/de.php`. The language is added to `LANGUES_CV`.
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
| Symptom | Likely cause | What to do |
|
||||
|---|---|---|
|
||||
| "Configuration absente" | `config/config.php` is missing | Copy `config/config.exemple.php` and fill it in |
|
||||
| "Something went wrong" | Server-side error | Manage menu, **Errors**: look up the reference the user gives you |
|
||||
| A user has neither their phone nor their codes | Two-step verification lost | Check who they are, then **Reset two-step verification** |
|
||||
| "Too many failed attempts" | Block after failures | Wait, or **Unblock** in Accounts if you know who is trying |
|
||||
| Two-step code always rejected | Phone clock off | Set the phone's time to automatic |
|
||||
| Nobody can validate their code any more | `config/cle-secrets.php` lost or changed | Put the original file back. Otherwise, everyone signs in with a backup code and sets up two-step verification again |
|
||||
| "Vivier only works over HTTPS" | Form sent over `http://` | Open the address with `https://`. Check the multisite SSL certificate |
|
||||
| Profiles still in French in English | Translations not done | Accounts, **Translate all profiles**, then keep a page open |
|
||||
| The automatic analysis exceeds the time limit | Hosting time limit | Use the files already analysed |
|
||||
| The search finds nothing | Empty index | **Reindex all profiles** |
|
||||
| No backup email | Task stopped, SPF, spam folder | Test email, then check the task in the control panel |
|
||||
| A file upload fails | File above 10 MB | Shrink the file, or raise `taille_max` and the PHP limit |
|
||||
|
||||
Tests run from the command line: `php tests/test_import.php`, then the same for `test_recherche.php`, `test_photo.php`, `test_i18n.php`, `test_suivi.php`, `test_aide.php` and `test_securite.php`.
|
||||
@@ -0,0 +1,375 @@
|
||||
# Rôle du gestionnaire
|
||||
|
||||
Le gestionnaire des comptes a les mêmes droits que les autres sur les profils. Il a en plus le menu **Gestion** :
|
||||
|
||||
- **Comptes** : inviter, créer, modifier, désactiver un compte, remettre à zéro une double authentification, lever un blocage
|
||||
- **Connexions** : le journal de chaque essai de connexion
|
||||
- **Journal** : les actions sur tous les profils
|
||||
- **Conservation** et **Corbeille** : la durée de conservation et la suppression des profils
|
||||
- **Sauvegarde** : état, lancement, téléchargement
|
||||
- **Erreurs** : les erreurs imprévues, avec leur référence
|
||||
|
||||
Il a aussi l'export CSV de la liste des profils, l'alerte de sauvegarde sur son tableau de bord et ce guide d'administration.
|
||||
|
||||
Le premier compte créé est gestionnaire. Il peut confier ce rôle à d'autres comptes. Gardez au moins deux gestionnaires : si l'un perd son téléphone et ses codes de secours, l'autre remet sa double authentification à zéro.
|
||||
|
||||
Le guide **Sécurité**, lisible par tous, explique les protections aux utilisateurs. Cette page dit comment les gérer.
|
||||
|
||||
# Comptes
|
||||
|
||||
Menu **Gestion**, **Comptes**.
|
||||
|
||||
## Inviter une personne
|
||||
|
||||
La voie conseillée : personne d'autre que la personne ne connaît son mot de passe.
|
||||
|
||||
1. Bloc **Inviter une personne** : saisissez son nom, facultatif, puis **Créer un lien d'invitation**.
|
||||
2. Copiez le lien affiché et envoyez-le à la personne, par email ou messagerie interne. Il ne s'affiche qu'une fois.
|
||||
3. La personne ouvre le lien, choisit son identifiant et son mot de passe, puis active la double authentification. Son compte est actif tout de suite.
|
||||
|
||||
Le lien sert une seule fois et expire après 48 heures. **Liens en cours** liste les liens pas encore utilisés. **Annuler le lien** le rend inutilisable. Lien perdu ou expiré : créez-en un autre.
|
||||
|
||||
Le lien d'invitation reprend l'adresse de la page ouverte. Pour la fixer, renseignez la clé `adresse` de `config/config.php`.
|
||||
|
||||
## Créer un compte
|
||||
|
||||
Vous pouvez aussi créer le compte vous-même.
|
||||
|
||||
1. Saisissez le nom de la personne.
|
||||
2. Choisissez son identifiant : 3 à 40 caractères, lettres sans accent, chiffres, point, tiret.
|
||||
3. Choisissez un mot de passe provisoire : 12 caractères au moins.
|
||||
4. Cliquez sur **Créer le compte**, puis transmettez l'identifiant et le mot de passe à la personne, de vive voix ou par un canal différent de l'identifiant.
|
||||
|
||||
À sa première connexion, la personne choisit son propre mot de passe, puis active la double authentification.
|
||||
|
||||
## Lire la liste des comptes
|
||||
|
||||
Chaque compte affiche son identifiant, son rôle, l'état de sa double authentification et sa dernière connexion. **Double authentification à activer** signale un compte qui ne l'a pas encore faite. **Mot de passe à changer** signale un mot de passe provisoire pas encore remplacé.
|
||||
|
||||
## Modifier un compte
|
||||
|
||||
Sous chaque compte, **Modifier le nom, l'identifiant ou le mot de passe**. Laissez le mot de passe vide pour le garder.
|
||||
|
||||
Un nouveau mot de passe est provisoire : la personne le change à sa prochaine connexion, et ses sessions ouvertes se ferment. Pour le donner, retapez votre propre mot de passe.
|
||||
|
||||
- **Désactiver le compte** : la personne ne peut plus se connecter et ses sessions se ferment aussitôt. Ses actions restent dans le journal. **Réactiver le compte** rétablit l'accès.
|
||||
- **Confier la gestion des comptes** : le compte devient gestionnaire. **Retirer la gestion des comptes** fait l'inverse. Retapez votre mot de passe pour confirmer.
|
||||
- **Ses connexions** ouvre le journal des connexions de ce compte.
|
||||
|
||||
Vous ne pouvez ni désactiver votre propre compte, ni retirer votre propre rôle. Un compte ne se supprime pas : le journal garde ses actions.
|
||||
|
||||
## Mot de passe oublié
|
||||
|
||||
Donnez un mot de passe provisoire par **Modifier le nom, l'identifiant ou le mot de passe**. La personne le remplace à la connexion.
|
||||
|
||||
## Téléphone perdu
|
||||
|
||||
La personne se connecte d'abord avec un code de secours, puis configure une autre application depuis **Mon compte**.
|
||||
|
||||
Plus de code de secours :
|
||||
|
||||
1. Vérifiez qu'il s'agit bien de la personne : par téléphone, en personne. Une demande par email ne suffit pas.
|
||||
2. Sous son compte, **Remettre à zéro la double authentification**, puis retapez votre mot de passe.
|
||||
3. La personne active une nouvelle application à sa prochaine connexion. Ses sessions ouvertes sont fermées.
|
||||
|
||||
## Connexions bloquées
|
||||
|
||||
Le bloc **Connexions bloquées** apparaît quand un blocage est en cours :
|
||||
|
||||
- un identifiant bloqué depuis une adresse, après 5 échecs (15 minutes, puis 30 et 60)
|
||||
- une adresse bloquée pour tous les identifiants, après 20 échecs en une heure
|
||||
|
||||
**Débloquer** lève le blocage tout de suite. Faites-le seulement si vous savez qui essaie, par exemple un collègue qui s'est trompé de mot de passe. Des échecs en série depuis une adresse inconnue : laissez le blocage et regardez le journal des connexions.
|
||||
|
||||
## Demandes faites avant la version 1.8
|
||||
|
||||
La page publique de demande de compte n'existe plus. Les demandes restées en attente s'affichent dans **Demandes à valider**. **Accepter** ouvre l'accès : la personne active la double authentification à sa connexion. **Refuser** efface la demande.
|
||||
|
||||
# Journal des connexions
|
||||
|
||||
Menu **Gestion**, **Connexions**.
|
||||
|
||||
Chaque essai de connexion y figure : date, compte, identifiant saisi, adresse IP, réseau, navigateur, résultat. Filtrez par compte ou gardez les échecs seulement. Le journal garde 12 mois. La tâche planifiée et la connexion d'un gestionnaire effacent les lignes plus anciennes.
|
||||
|
||||
| Résultat | Sens |
|
||||
|---|---|
|
||||
| Connexion réussie | Mot de passe et code bons |
|
||||
| Mot de passe incorrect | Identifiant connu ou non, mauvais mot de passe |
|
||||
| Code incorrect | Bon mot de passe, mauvais code de double authentification |
|
||||
| Essai bloqué | Essai refusé pendant un blocage |
|
||||
| Compte désactivé | Essai sur un compte désactivé |
|
||||
|
||||
**L'alerte par email.** Quand un compte gestionnaire se connecte depuis un réseau jamais vu pour ce compte, Vivier envoie un email aux adresses de `comptes.notifier`, ou à l'adresse d'expédition. Le réseau est la plage d'adresses (les trois premiers nombres d'une adresse IPv4). La première connexion d'un compte ne déclenche pas d'alerte.
|
||||
|
||||
Vous ne reconnaissez pas une connexion : changez le mot de passe du compte, remettez à zéro sa double authentification, puis fermez ses sessions en le désactivant et en le réactivant.
|
||||
|
||||
# Erreurs
|
||||
|
||||
Menu **Gestion**, **Erreurs**.
|
||||
|
||||
Quand une page échoue, l'utilisateur lit « Une erreur est survenue » et une référence de six caractères. La page **Erreurs** liste les 300 dernières, avec la référence, la date, la page, la cause et l'endroit du code. Aucune donnée de candidat n'y figure. Transmettez la ligne à la personne qui maintient Vivier. **Vider le journal** efface la liste.
|
||||
|
||||
# Suppression des profils et corbeille
|
||||
|
||||
Seul le gestionnaire supprime un profil : bouton **Supprimer le profil** en bas de la fiche, ou **Supprimer** sur la page Conservation. Les autres comptes ne voient pas ces boutons.
|
||||
|
||||
## Ce que fait la suppression
|
||||
|
||||
Le profil part à la corbeille. Il disparaît aussitôt du Kanban, des profils, de la recherche, des besoins, du suivi, du tableau de bord, de l'export CSV et de la page Conservation. Sa fiche et ses documents ne s'ouvrent plus. Dans le journal, son nom est remplacé par sa référence.
|
||||
|
||||
## La page Corbeille
|
||||
|
||||
Menu **Gestion**, **Corbeille**. Chaque ligne donne le profil, la date de suppression, le compte qui a supprimé et la date d'effacement.
|
||||
|
||||
- **Restaurer** remet le profil en place, avec toutes ses données. Il revient en bas de sa colonne.
|
||||
- **Effacer maintenant** efface le profil sans attendre. L'action est sans retour.
|
||||
|
||||
## L'effacement après 30 jours
|
||||
|
||||
Au bout de 30 jours, Vivier efface la fiche, le CV d'origine, la photo, les pièces jointes, les commentaires, les entretiens, les relances, les mots-clés et l'historique. Le journal garde une ligne : la référence du profil, le compte qui a supprimé et la date de mise à la corbeille. Aucun nom.
|
||||
|
||||
L'effacement se fait à trois moments : la tâche planifiée du dimanche, la connexion d'un gestionnaire, l'ouverture de la page Corbeille. Un profil peut donc rester quelques jours de plus si personne ne se connecte.
|
||||
|
||||
Le délai se règle par `CORBEILLE_JOURS`, en tête de `src/bootstrap.php`.
|
||||
|
||||
## À savoir
|
||||
|
||||
- Tant qu'un profil est à la corbeille, son adresse email reste prise. L'import du même candidat est refusé : restaurez le profil ou effacez-le.
|
||||
- Les sauvegardes déjà faites gardent les profils supprimés depuis. Une sauvegarde faite pendant les 30 jours contient les profils à la corbeille.
|
||||
|
||||
# Sauvegarde
|
||||
|
||||
Menu **Gestion**, **Sauvegarde**.
|
||||
|
||||
## Ce qui est sauvegardé
|
||||
|
||||
| Élément | Où | Comment |
|
||||
|---|---|---|
|
||||
| Base de données | Email et copie sur le serveur | Chaque semaine, par la tâche planifiée |
|
||||
| Fichiers : CV, rapports, pièces jointes, photos | Téléchargement | À la main, bouton **Télécharger l'archive des fichiers**, après avoir retapé votre mot de passe |
|
||||
|
||||
La base contient les profils, les commentaires, les entretiens, les relances, les besoins, le journal et les comptes. Les fichiers sont trop lourds pour un email.
|
||||
|
||||
## La sauvegarde hebdomadaire
|
||||
|
||||
La tâche planifiée de l'hébergement lance le script `cron/sauvegarde.php`. Le script :
|
||||
|
||||
1. exporte toute la base dans un fichier SQL
|
||||
2. le compresse en zip
|
||||
3. garde une copie dans `stockage/sauvegardes/`
|
||||
4. envoie le zip aux adresses réglées dans `config/config.php`
|
||||
|
||||
Le fichier n'est pas chiffré. Il contient les données des candidats, les empreintes des mots de passe et les clés de double authentification chiffrées. Sa protection est celle des boîtes qui le reçoivent : mot de passe solide et double authentification.
|
||||
|
||||
## Programmer la tâche chez OVH
|
||||
|
||||
1. Espace client, hébergement, onglet **Plus**, **Planificateur de tâches**, **Ajouter une planification**.
|
||||
2. Commande : `vivier/cron/sauvegarde.php`. Langage : PHP 8.3.
|
||||
3. Fréquence : le jour et l'heure voulus. OVH ne règle pas les minutes : une tâche prévue à 6 h part entre 6 h 00 et 6 h 59.
|
||||
4. Adresse du rapport : facultative. OVH y envoie ce que le script affiche.
|
||||
|
||||
## Vérifier que tout marche
|
||||
|
||||
1. Page Sauvegarde, **Envoyer un email d'essai, sans pièce jointe**. Regardez les boîtes de réception, courriers indésirables compris.
|
||||
2. Cochez **Envoyer aussi la sauvegarde par email**, puis **Sauvegarder maintenant**.
|
||||
3. Ouvrez le zip reçu : il contient un fichier `.sql`.
|
||||
4. Après le premier passage de la tâche planifiée, vérifiez la ligne « Tâche planifiée » dans l'historique.
|
||||
|
||||
Si l'email arrive dans les courriers indésirables, créez une règle pour l'expéditeur. Le domaine de l'adresse d'expédition doit autoriser le serveur d'OVH dans son enregistrement SPF, et ne publier qu'un seul enregistrement SPF.
|
||||
|
||||
## Les alertes
|
||||
|
||||
| Signal | Sens |
|
||||
|---|---|
|
||||
| Email « ÉCHEC de la sauvegarde » | La sauvegarde a échoué, ou elle est faite mais son envoi a échoué |
|
||||
| Bandeau rouge sur le tableau de bord | Aucune sauvegarde réussie depuis plus de 8 jours, ou un problème à la dernière |
|
||||
|
||||
Le bandeau couvre le cas où la tâche ne démarre plus ou l'email ne part plus : dans ce cas, aucun email d'alerte n'arrive.
|
||||
|
||||
## Les copies sur le serveur
|
||||
|
||||
L'historique de la page liste chaque sauvegarde. **Télécharger** récupère le zip. **Supprimer** efface la copie du serveur, pas les emails reçus.
|
||||
|
||||
Le réglage `semaines_conservees` fixe la durée : 0 garde toutes les copies, un nombre supprime les copies plus anciennes.
|
||||
|
||||
Une copie garde les profils supprimés depuis. Pour respecter la durée de conservation des données, supprimez les copies et les emails de sauvegarde anciens.
|
||||
|
||||
## Si le fichier devient trop lourd
|
||||
|
||||
Au-delà de `taille_max_email`, Vivier refait l'export sans l'index de recherche, qui se reconstruit. S'il reste trop lourd, l'email part sans pièce jointe et le fichier se télécharge dans Vivier.
|
||||
|
||||
## Restaurer
|
||||
|
||||
1. phpMyAdmin, base de Vivier, onglet **Importer** : chargez le fichier `.sql` extrait du zip. Il remplace toutes les tables.
|
||||
2. Par FTP, copiez les dossiers `docs/` et `photos/` de l'archive des fichiers dans `stockage/`.
|
||||
3. Si le fichier SQL annonce en tête que l'index de recherche n'est pas inclus : menu Gestion, Comptes, **Réindexer tous les profils**.
|
||||
4. Gardez `config/cle-secrets.php`, ou la clé `cle_secrets` : elle déchiffre les clés de double authentification de la sauvegarde.
|
||||
5. Connectez-vous. Les comptes, les mots de passe et la double authentification sont ceux du jour de la sauvegarde.
|
||||
|
||||
Téléchargez l'archive des fichiers le même jour que la sauvegarde de la base : la base ne retrouve que les fichiers qui existaient ce jour-là.
|
||||
|
||||
# Installation sur l'hébergement OVH
|
||||
|
||||
Vivier demande PHP 8.3 et une base MySQL ou MariaDB. Aucun framework, aucune dépendance à installer.
|
||||
|
||||
1. Espace client, onglet **Bases de données** : créez une base MySQL. Notez l'hôte, le nom, l'utilisateur et le mot de passe.
|
||||
2. phpMyAdmin, onglet **Importer** : chargez `sql/schema.sql`.
|
||||
3. Envoyez tout le dossier `vivier/` par FTP, à côté de `www/`.
|
||||
4. Onglet **Multisite** : ajoutez le sous-domaine avec pour dossier racine `vivier/public`. Cochez SSL.
|
||||
5. Copiez `config/config.exemple.php` en `config/config.php` et renseignez la base.
|
||||
6. Ouvrez l'adresse du site en `https://`. La page de premier lancement crée votre compte, gestionnaire des comptes, puis vous fait activer la double authentification.
|
||||
7. Programmez la sauvegarde hebdomadaire.
|
||||
|
||||
Le dossier racine doit être `vivier/public`. Les autres dossiers restent ainsi inaccessibles par une adresse. Des fichiers `.htaccess` les bloquent aussi, en seconde protection.
|
||||
|
||||
| Dossier | Rôle |
|
||||
|---|---|
|
||||
| `public/` | Racine web : `index.php`, styles, scripts, polices |
|
||||
| `src/` | Code PHP |
|
||||
| `vues/` | Écrans |
|
||||
| `lang/` | Traductions de l'interface et des CV |
|
||||
| `aide/` | Les textes de cette aide |
|
||||
| `config/` | Configuration |
|
||||
| `stockage/` | CV, documents, photos, sauvegardes |
|
||||
| `cron/` | Script de la sauvegarde hebdomadaire |
|
||||
| `sql/` | Création de la base et migrations |
|
||||
| `claude/` | Consignes, schéma et exemple du projet Claude d'analyse |
|
||||
| `tests/` | Tests |
|
||||
|
||||
# Mise à jour
|
||||
|
||||
1. Exportez la base dans phpMyAdmin, onglet **Exporter**.
|
||||
2. Exécutez dans l'ordre les fichiers `sql/migration-*.sql` qui n'ont pas encore été passés.
|
||||
La migration 1.5 ajoute la corbeille et les demandes de compte. Elle crée aussi le compte gestionnaire `ypilla`, ou met à jour son mot de passe et son rôle s'il existe.
|
||||
La migration 1.8 ajoute la double authentification, les invitations, le journal des connexions, la nationalité, le permis de travail, la disponibilité classée et les champs du CV Europass. Elle classe les disponibilités déjà saisies et garde le texte d'origine en note.
|
||||
3. Remplacez par FTP les dossiers `public/`, `src/`, `vues/`, `lang/`, `aide/`, `cron/`, `sql/`, `claude/` et `tests/`. Gardez `config/config.php` et `stockage/`.
|
||||
4. Reportez dans `config/config.php` les nouvelles clés de `config/config.exemple.php`. En 1.8 : `adresse`, `cle_secrets`, `securite`.
|
||||
5. Le dossier `config/` doit être accessible en écriture au premier lancement : Vivier y crée `cle-secrets.php`. Sinon, renseignez `cle_secrets` vous-même.
|
||||
6. Dans Vivier : menu Gestion, Comptes, **Réindexer tous les profils**, puis **Traduire tous les profils**.
|
||||
7. Dans le projet Claude d'analyse : remplacez les consignes, le schéma et l'exemple par ceux du dossier `claude/`.
|
||||
|
||||
Après la mise à jour 1.8, chaque compte active la double authentification à sa connexion suivante. Prévenez les utilisateurs : il leur faut leur téléphone.
|
||||
|
||||
# Configuration
|
||||
|
||||
Tout se règle dans `config/config.php`. Ce fichier ne doit jamais être publié.
|
||||
|
||||
| Clé | Rôle |
|
||||
|---|---|
|
||||
| `nom_app` | Le nom affiché dans l'en-tête |
|
||||
| `fuseau` | Le fuseau horaire des dates |
|
||||
| `db` | L'hôte, le port, le nom, l'utilisateur et le mot de passe de la base |
|
||||
| `societe` | Les mentions d'IT Club sur les CV exportés |
|
||||
| `claude` | La clé d'API, le modèle, la longueur maximale de réponse, le délai |
|
||||
| `sauvegarde` | Les destinataires, l'expéditeur, la durée des copies, la taille maximale d'un email |
|
||||
| `stockage` | Le dossier des fichiers, hors de la racine web |
|
||||
| `taille_max` | La taille maximale d'un fichier chargé, en octets |
|
||||
| `conservation_mois` | La durée de conservation d'un profil, en mois |
|
||||
| `comptes` | `notifier` : les adresses qui reçoivent l'alerte de connexion d'un gestionnaire depuis un nouveau réseau |
|
||||
| `adresse` | L'adresse publique de Vivier, reprise dans les liens d'invitation. Facultative |
|
||||
| `cle_secrets` | La clé de chiffrement des clés de double authentification. Vide : Vivier crée `config/cle-secrets.php` |
|
||||
| `securite` | `mots_de_passe_fuites` : `false` coupe le contrôle des mots de passe connus dans des fuites |
|
||||
| `https` | `true` en production : HTTPS obligatoire, en-tête HSTS, cookie de session limité à HTTPS |
|
||||
|
||||
# Analyse automatique
|
||||
|
||||
Pour l'activer, renseignez `cle_api` dans la clé `claude` de `config/config.php`. Sans clé, seul l'import par fichiers déjà analysés est proposé.
|
||||
|
||||
- La clé se crée dans la console d'Anthropic. L'usage de l'API est facturé à part d'un abonnement Claude.
|
||||
- Formats lus : PDF, DOCX, ODT, MD, TXT.
|
||||
- Les consignes envoyées à Claude sont celles du dossier `claude/`. Les modifier change les deux voies d'analyse.
|
||||
- Le CV est transmis à Anthropic pour l'analyse.
|
||||
- Délai maximal : 240 secondes, réglable. Si l'hébergement coupe avant, passez par les fichiers déjà analysés.
|
||||
|
||||
# Traduction des profils
|
||||
|
||||
Chaque profil s'affiche dans la langue de l'interface. Un recruteur en anglais lit les intitulés, la synthèse, les expériences et les points d'attention en anglais.
|
||||
|
||||
- À l'import, Vivier prévoit la traduction du profil dans chaque langue de l'interface.
|
||||
- Les traductions se font en arrière-plan, une par une, tant qu'une page de Vivier reste ouverte chez un utilisateur.
|
||||
- Une fiche modifiée est de nouveau mise en file. En attendant, le texte d'origine s'affiche avec un bandeau.
|
||||
- Les commentaires, comptes rendus d'entretien, besoins clients et permis de travail ne sont pas traduits : ils restent dans la langue de leur auteur.
|
||||
- Les noms de technologies, d'entreprises, de clients et de projets restent tels quels.
|
||||
|
||||
Menu **Gestion**, **Comptes**, bloc **Maintenance** :
|
||||
|
||||
- le nombre de traductions à faire
|
||||
- les traductions abandonnées après 3 essais, avec leur cause
|
||||
- **Traduire tous les profils** met en file chaque profil sans traduction à jour, et relance les traductions abandonnées
|
||||
|
||||
Sans analyse automatique, les traductions passent par un fichier, depuis l'aperçu du CV IT Club, comme avant.
|
||||
|
||||
# Recherche : index et synonymes
|
||||
|
||||
Vivier range chaque fiche dans un index de recherche. L'index se met à jour à chaque import ou modification.
|
||||
|
||||
**Réindexer tous les profils** (menu Gestion, Comptes) reconstruit l'index. À relancer après une mise à jour de Vivier ou une restauration sans index.
|
||||
|
||||
Les synonymes se règlent dans la table `synonymes_recherche`, avec phpMyAdmin :
|
||||
|
||||
| Type | Effet | Exemple |
|
||||
|---|---|---|
|
||||
| `seniorite` | Le mot devient un filtre de séniorité | `senior` vers `confirme` et `expert` |
|
||||
| `texte` | Le mot gagne une variante | `dev` vers `développeur` |
|
||||
|
||||
Un changement de synonyme agit tout de suite, sans réindexer.
|
||||
|
||||
# Sécurité
|
||||
|
||||
Le guide **Sécurité**, dans l'aide, décrit les protections pour les utilisateurs. Voici ce qui vous revient.
|
||||
|
||||
| Réglage | Valeur | Où |
|
||||
|---|---|---|
|
||||
| Double authentification | Obligatoire pour tous, codes à 6 chiffres (RFC 6238), 10 codes de secours | `src/securite.php` |
|
||||
| Mot de passe | 12 caractères au moins, 200 au plus, refusé s'il figure dans une fuite connue | `LONGUEUR_MOT_DE_PASSE`, `LONGUEUR_MAX_MOT_DE_PASSE` |
|
||||
| Empreinte du mot de passe | Argon2id, recalculée à la connexion pour les anciens comptes | `hacher_mot_de_passe()` |
|
||||
| Blocage d'un identifiant | 5 échecs : 15 min, puis 30 et 60 min | `ECHECS_SERIE`, `BLOCAGES_MINUTES` |
|
||||
| Blocage d'une adresse | 20 échecs en une heure | `ECHECS_IP_HEURE` |
|
||||
| Session | 2 h sans activité, 12 h au plus | `DUREE_INACTIVITE`, `DUREE_SESSION_MAX` |
|
||||
| Lien d'invitation | 48 h, une seule fois | `INVITATION_HEURES` |
|
||||
| Journal des connexions | 12 mois | `CONNEXIONS_MOIS` |
|
||||
|
||||
Les constantes se trouvent en tête de `src/bootstrap.php` et de `src/securite.php`.
|
||||
|
||||
Autres protections :
|
||||
|
||||
- HTTPS obligatoire quand `https` vaut `true` : redirection des adresses en `http://` et en-tête HSTS d'un an. Ne passez `https` à `false` que pour un essai sur un poste local.
|
||||
- Les clés de double authentification sont chiffrées (AES-256-GCM). La clé de chiffrement est dans `config/cle-secrets.php`, créé au premier besoin, ou dans la clé `cle_secrets` de `config/config.php`. Sauvegardez-la avec `config.php` : sans elle, chacun doit se connecter avec un code de secours puis réactiver sa double authentification.
|
||||
- Mots de passe vérifiés auprès du service Pwned Passwords : seuls les 5 premiers caractères de l'empreinte SHA-1 partent. Si le service ne répond pas, le mot de passe est accepté. `securite.mots_de_passe_fuites` à `false` coupe ce contrôle.
|
||||
- Votre mot de passe est redemandé pour confier ou retirer la gestion, donner un mot de passe à un autre compte, remettre à zéro une double authentification et télécharger l'archive des fichiers.
|
||||
- Export CSV, journal, conservation, corbeille, suppression des profils : gestionnaire seulement.
|
||||
- Site exclu des moteurs de recherche : en-tête `X-Robots-Tag` et balise `robots` sur chaque page.
|
||||
- Fichiers stockés hors de la racine web, sous un nom aléatoire.
|
||||
- Chaque action est tracée dans le journal, avec son auteur.
|
||||
- Aucun appel à un service externe, sauf l'API Claude quand l'analyse automatique est activée, et Pwned Passwords.
|
||||
|
||||
# Langues
|
||||
|
||||
L'interface existe en français et en anglais. Les CV se génèrent en français, anglais et allemand.
|
||||
|
||||
Ajouter une langue d'interface :
|
||||
|
||||
1. Copiez `lang/en.php` en `lang/xx.php` et traduisez les valeurs. Une clé non traduite s'affiche en français.
|
||||
2. Ajoutez la langue à `LANGUES_INTERFACE` dans `src/i18n.php`.
|
||||
3. Copiez `aide/guide.en.md` et `aide/administration.en.md` avec le code de la langue, et traduisez-les. Sans ces fichiers, l'aide s'affiche en français.
|
||||
|
||||
Pour une langue de CV, quelques dizaines de libellés suffisent : voir `lang/de.php`. La langue s'ajoute à `LANGUES_CV`.
|
||||
|
||||
# Dépannage
|
||||
|
||||
| Symptôme | Cause probable | Que faire |
|
||||
|---|---|---|
|
||||
| « Configuration absente » | `config/config.php` manque | Copiez `config/config.exemple.php` et renseignez-le |
|
||||
| « Une erreur est survenue » | Erreur côté serveur | Menu Gestion, **Erreurs** : cherchez la référence donnée par l'utilisateur |
|
||||
| Un utilisateur n'a plus son téléphone ni ses codes | Double authentification perdue | Vérifiez son identité, puis **Remettre à zéro la double authentification** |
|
||||
| « Trop d'essais infructueux » | Blocage après des échecs | Attendez, ou **Débloquer** dans Comptes si vous savez qui essaie |
|
||||
| Code de double authentification toujours refusé | Heure du téléphone décalée | Réglez l'heure du téléphone en automatique |
|
||||
| Personne ne peut plus valider son code | `config/cle-secrets.php` perdu ou changé | Remettez le fichier d'origine. Sinon, chacun se connecte avec un code de secours et réactive sa double authentification |
|
||||
| « Vivier ne s'utilise qu'en HTTPS » | Formulaire envoyé en `http://` | Ouvrez l'adresse en `https://`. Vérifiez le certificat SSL du multisite |
|
||||
| Profils restés en français en anglais | Traductions pas faites | Comptes, **Traduire tous les profils**, puis gardez une page ouverte |
|
||||
| L'analyse automatique dépasse le délai | Limite de durée de l'hébergement | Passez par les fichiers déjà analysés |
|
||||
| La recherche ne trouve rien | Index vide | **Réindexer tous les profils** |
|
||||
| Aucun email de sauvegarde | Tâche arrêtée, SPF, courriers indésirables | Email d'essai, puis vérifiez la tâche dans l'espace client |
|
||||
| Un chargement de fichier échoue | Fichier au-dessus de 10 Mo | Réduisez le fichier, ou relevez `taille_max` et la limite de PHP |
|
||||
|
||||
Les tests se lancent en ligne de commande : `php tests/test_import.php`, puis de même pour `test_recherche.php`, `test_photo.php`, `test_i18n.php`, `test_suivi.php`, `test_aide.php` et `test_securite.php`.
|
||||
@@ -0,0 +1,598 @@
|
||||
# Vivier at a glance
|
||||
|
||||
Vivier tracks the CVs IT Club receives, from first contact to hiring.
|
||||
|
||||
- Each CV becomes a **profile**: identity, experience, technologies, languages, seniority.
|
||||
- Profiles move across a six-column **board**.
|
||||
- On each profile you record interviews, follow-ups, comments and documents.
|
||||
- **Client requests** describe the assignments to fill. Vivier suggests the profiles that match.
|
||||
- Vivier generates a **CV in the IT Club format** and a **Europass CV**, named or anonymised, in French, English or German.
|
||||
- Each profile shows in the interface language, translated automatically.
|
||||
- Every action is recorded in an activity log.
|
||||
|
||||
Every account can read and edit every profile. The account manager also has the **Manage** menu: accounts, activity log, retention, trash, backup.
|
||||
|
||||
The **Security** guide explains how Vivier protects your access and what you can do on your side.
|
||||
|
||||
# Signing in
|
||||
|
||||
1. Open the Vivier address in your browser.
|
||||
2. Enter your username and password, then **Continue**.
|
||||
3. Enter the 6-digit code shown by the authenticator app on your phone.
|
||||
|
||||
Good to know:
|
||||
|
||||
- A password is at least 12 characters long. Vivier rejects passwords found in known data breaches.
|
||||
- After 5 failed attempts, sign-in is blocked for 15 minutes for that username, then longer.
|
||||
- The session closes after 2 hours without activity, and at the latest 12 hours after sign-in. Vivier then brings you back to the page you had open.
|
||||
- Phone not at hand: type a backup code in the code field.
|
||||
- Forgotten password, or lost phone with no backup code: contact the account manager.
|
||||
|
||||
The **Security** guide covers each point in detail.
|
||||
|
||||
## Getting an account
|
||||
|
||||
Vivier has no open sign-up.
|
||||
|
||||
1. The account manager sends you an invitation link. It works once and expires after 48 hours.
|
||||
2. Open the link. Choose your username and password.
|
||||
3. Set up two-step verification: install an authenticator app on your phone, scan the QR code, enter the code shown.
|
||||
4. Keep the ten backup codes Vivier gives you. They are shown only once.
|
||||
|
||||
The account manager can also create your account with a temporary password. At first sign-in, you choose your own, then set up two-step verification.
|
||||
|
||||
# The screen and the menu
|
||||
|
||||
The black header stays at the top of every page.
|
||||
|
||||
| Item | Purpose |
|
||||
|---|---|
|
||||
| Board | Active profiles, sorted by status |
|
||||
| Profiles | The full list and the search |
|
||||
| Requests | Assignments to fill at clients |
|
||||
| Follow-up | Follow-ups due and upcoming interviews |
|
||||
| Dashboard | The pool's figures |
|
||||
| Manage | For the account manager only: Retention, Activity log, Sign-ins, Accounts, Trash, Backup, Errors |
|
||||
| Search field | Searches every profile |
|
||||
| Import | Adds one or several CVs |
|
||||
| Question mark | Opens this help |
|
||||
| Your initials | My account, interface language, sign out |
|
||||
|
||||
A gold badge on **Follow-up** counts the follow-ups that are due. For the account manager, a badge on **Manage** adds up the profiles past their retention date and the account requests to approve. The submenu gives the detail.
|
||||
|
||||
On a narrow screen, the **Menu** button unfolds these items.
|
||||
|
||||
# Importing a CV
|
||||
|
||||
**Import** button, in the header. Two routes lead to the same review screen.
|
||||
|
||||
## Automatic analysis
|
||||
|
||||
1. In the **Automatic analysis** card, choose the CV: PDF, DOCX, ODT, MD or TXT.
|
||||
2. Click **Analyse CV**. Allow one to two minutes, without closing the page.
|
||||
3. Vivier shows the review screen.
|
||||
|
||||
This route needs a Claude API key, set by the account manager. Without a key, the card says "Not set up".
|
||||
|
||||
A DOC or RTF file is not read by this route: convert it to PDF.
|
||||
|
||||
## Files already analysed
|
||||
|
||||
You run the analysis yourself in a Claude project, then upload the result.
|
||||
|
||||
1. In the Claude analysis project, attach the CV and write: "analyse ce CV pour Vivier".
|
||||
2. Claude produces two files: the structured profile (`.json`) and the detailed report (`.md`). Download them.
|
||||
3. In Vivier, **Files already analysed** card, upload the JSON, the original CV and the report. The report is optional.
|
||||
4. Click **Check profile**.
|
||||
|
||||
If the JSON does not comply, Vivier rejects the import and lists every issue to fix.
|
||||
|
||||
## Review before saving
|
||||
|
||||
The review screen shows what Vivier is about to save.
|
||||
|
||||
- Check the identity, email, phone number and the dates of each position.
|
||||
- **Seniority** is recalculated by Vivier from the dates. If it differs from the analysis, a message says so.
|
||||
- The **points to check** raised by the analysis are shown: gaps in the career, vague dates, missing information.
|
||||
- If the CV contains a **photo**, it appears with the **Keep this photo** box. Untick it to discard the photo.
|
||||
|
||||
Click **Save profile**. The profile lands in the **Received** column. **Cancel** drops the import and deletes the uploaded files.
|
||||
|
||||
## Duplicates
|
||||
|
||||
Vivier compares the profile with existing ones, archived profiles included. A profile in the trash counts too: it is shown by its reference, and the account manager can restore or erase it.
|
||||
|
||||
| Similarity | Effect |
|
||||
|---|---|
|
||||
| Same email address | Saving is refused. Update the existing profile instead. |
|
||||
| Same phone number | Warning. A box confirms this is someone else. |
|
||||
| Same first name and name | Warning. A box confirms this is someone else. |
|
||||
|
||||
Phone numbers are compared without country code, spaces or punctuation. Names are compared without case, accents or order.
|
||||
|
||||
## Importing several CVs
|
||||
|
||||
Import page, **Import several CVs** button. The batch holds 20 CVs at most.
|
||||
|
||||
**CVs to analyse**: select several files, then **Add the CVs**. Vivier analyses them one after the other. Keep the page open. If you close it, the analyses resume when you open it again.
|
||||
|
||||
**Profiles already analysed**: select the JSON files, the CVs and the reports together, then **Add the files**. Vivier pairs each JSON with the CV named in its `source.fichier_origine` field. A report is paired when its name repeats the JSON's name or the candidate's name.
|
||||
|
||||
Each line of the batch has a status:
|
||||
|
||||
| Status | Next step |
|
||||
|---|---|
|
||||
| Waiting | The analysis is about to start |
|
||||
| Ready for review | **Review** opens the review screen |
|
||||
| Error | The reason is shown. **Run the analysis again** or **Remove** |
|
||||
|
||||
**Save the ready profiles** saves in one go those that look like no existing profile. The others stay in the batch, to review one by one. A CV left in the batch is removed after 7 days.
|
||||
|
||||
# The board and the statuses
|
||||
|
||||
The board shows active profiles in six columns.
|
||||
|
||||
| Status | Meaning |
|
||||
|---|---|
|
||||
| Received | The CV has just come in |
|
||||
| In progress | The profile is being studied, before any interview |
|
||||
| Interviewing | One or more interviews are planned or done |
|
||||
| Approved | IT Club selects the profile |
|
||||
| Hired | The candidate has joined IT Club |
|
||||
| Rejected | The profile is set aside. A reason is required |
|
||||
|
||||
## Moving a card
|
||||
|
||||
- Drag the card from one column to another. The change is saved at once.
|
||||
- Moving to **Rejected** opens a window that asks for the reason.
|
||||
- Within a column, drag a card to change the order.
|
||||
- On a touch screen, press and hold to pick up the card.
|
||||
|
||||
The status can also be changed on the profile page.
|
||||
|
||||
## Reading a card
|
||||
|
||||
A card shows the photo or initials, the name, the title, the seniority, the years of experience and the three main technologies. When they exist, it also shows:
|
||||
|
||||
- the date of the next interview
|
||||
- the number of follow-ups due
|
||||
- a red marker when the residence permit expires within 2 months, or has expired
|
||||
- the reason, in the Rejected column
|
||||
|
||||
The stacked bars left of a column name show progress: one bar for Received, five for Hired.
|
||||
|
||||
## Filtering
|
||||
|
||||
The **Filter cards** field keeps the cards that contain the words typed: name, title or technology. The **Seniority** list keeps one level. The filter only affects the screen.
|
||||
|
||||
# The profile page
|
||||
|
||||
Click a name to open the profile. It has a header band and four tabs.
|
||||
|
||||
## The header band
|
||||
|
||||
The band stays at the top of the profile, whatever the tab.
|
||||
|
||||
- The photo, the name, the title, the seniority and the years of experience.
|
||||
- **Original CV**: the file received from the candidate.
|
||||
- **IT Club CV** and **Europass CV**: choose **Named** or **Anonymised** to open the preview of the generated CV.
|
||||
- **Edit**: the profile in six blocks, described below. Vivier saves the last name in capitals.
|
||||
- **Status**: choose the status then **Update**.
|
||||
- The candidate's availability, expected daily rate and city.
|
||||
- The reason, if the profile is **Not selected**.
|
||||
|
||||
A **To do** line appears when an action is waiting: overdue follow-up, interview feedback to give, next interview, residence permit to renew, retention period over. A click opens the matching tab and section. Red dots mark something overdue.
|
||||
|
||||
## Editing the profile
|
||||
|
||||
**Edit** button. Six blocks:
|
||||
|
||||
| Block | Content |
|
||||
|---|---|
|
||||
| Identity and CV | First name, last name, title, summary. Used on the CVs |
|
||||
| Contact details | Email, phone, address. Only the city and country appear on the named CV |
|
||||
| Nationality and work permit | Up to three nationalities, the work permit, its expiry date. On no CV |
|
||||
| Availability | A choice from a list, a date if needed, a free note |
|
||||
| Commercial details | Daily rate, salary, mobility, remote work. On no CV |
|
||||
| Europass CV | Volunteering and driving licence, used on the Europass CV only |
|
||||
|
||||
**Availability.** Choose Immediate, Within 1 month, Within 2 months, Within 3 months, Specific date or To be confirmed. "Specific date" asks for the date. "Within N months" computes an estimated date, used for matching with client requests. The free note keeps an internal detail, for example a notice period to negotiate.
|
||||
|
||||
**Nationality and work permit.** Pick the nationality from the list: type the first letters of the country to go faster. An EU, EEA or Swiss nationality needs no work permit in Luxembourg: Vivier says so and hides the permit fields. Otherwise, describe the permit in free text and enter its expiry date. Vivier then plans a follow-up 2 months before, shown in **Follow-up**. Do not upload a copy of the permit to Vivier.
|
||||
|
||||
The analysis picks up the nationality when the CV states it. The work permit is always entered by hand.
|
||||
|
||||
## The four tabs
|
||||
|
||||
The tabs stay under the header. With the keyboard, the arrow keys move from one tab to the next.
|
||||
|
||||
| Tab | Content |
|
||||
|---|---|
|
||||
| Profile | Summary, points to check, experience, technologies, education and certifications, contact details, nationality and work permit, languages, volunteering |
|
||||
| Follow-up | Interviews, comments, follow-ups |
|
||||
| Assignments | Client requests and commercial details |
|
||||
| File | Documents, keywords and classification, history, personal data, photo, manage |
|
||||
|
||||
The profile opens on the **Profile** tab. After you save something, Vivier returns to the tab you were on: a posted comment brings you back to **Follow-up**, an added document to **File**. Links on the **Follow-up** page open the profile on the **Follow-up** tab.
|
||||
|
||||
A red badge on **Follow-up** counts overdue follow-ups and interview feedback to give. An exclamation mark on **File** flags a retention period that is over. The small grey number next to a tab counts what it holds.
|
||||
|
||||
On the **Profile** tab, the three most recent positions and the ten most practised technologies are shown. The **Show…** link below the list expands the rest. The add forms (interview, follow-up, document, photo) open with a click on their title.
|
||||
|
||||
## Comments
|
||||
|
||||
Write in **New comment**, then **Post**. A comment carries your name and the date. It cannot be edited.
|
||||
|
||||
## Documents
|
||||
|
||||
- The original CV and the report are attached at import.
|
||||
- **Add a document**: choose the file and its type. Maximum size: 10 MB.
|
||||
- Accepted formats: PDF, DOCX, DOC, ODT, RTF, MD, TXT, PNG, JPG, XLSX.
|
||||
- **Read** opens a `.md` or `.txt` report inside Vivier.
|
||||
|
||||
## Keywords
|
||||
|
||||
Keywords come from the analysis. They improve the search.
|
||||
|
||||
- Add a word with its type, then **Add**. A word added by hand shows on a light background.
|
||||
- The cross removes a word.
|
||||
- Words added by hand survive an update of the analysis.
|
||||
|
||||
## Photo
|
||||
|
||||
The photo helps recognise the candidate in Vivier: profile page, board, search results. It never appears on an exported CV. Vivier does not analyse it.
|
||||
|
||||
## Commercial details
|
||||
|
||||
**Edit** button, **Commercial details** block: expected daily rate, expected gross annual salary, mobility, remote work.
|
||||
|
||||
These details feed the matching with client requests and the CSV export. They never appear on an exported CV. Availability has its own block.
|
||||
|
||||
# Interviews, follow-ups and tracking
|
||||
|
||||
## Recording an interview
|
||||
|
||||
On the profile page, **Follow-up** tab, **Interviews** section, **Add an interview**.
|
||||
|
||||
1. Enter the date. The time is optional.
|
||||
2. Choose the type: phone, video call, on site, technical interview, client interview.
|
||||
3. Say who conducts the interview and, if there is one, the related client request.
|
||||
4. Click **Save the interview**.
|
||||
|
||||
For a Received or In progress profile, the **Move the profile to "Interviewing"** box is ticked: the profile changes column at the same time.
|
||||
|
||||
After the interview, open **Add the assessment and notes**: positive, mixed or negative assessment, then the notes. A past interview without assessment is marked "assessment needed".
|
||||
|
||||
## Planning a follow-up
|
||||
|
||||
On the profile page, **Follow-up** tab, **Follow-ups** section, open **Plan a follow-up**: write what needs doing, choose the due date, then **Plan the follow-up**.
|
||||
|
||||
When it is done, click **Mark as done**. The follow-up stays on the profile, dated and signed.
|
||||
|
||||
## The Follow-up page
|
||||
|
||||
**Follow-up** menu. The title counts the planned follow-ups and, in red, those due today or overdue. Three lists:
|
||||
|
||||
- **Follow-ups**: oldest first. A follow-up that is due shows in red.
|
||||
- **Interviews in the next 30 days**.
|
||||
- **Past interviews without assessment**: to complete.
|
||||
|
||||
Archived profiles are not listed.
|
||||
|
||||
# Client requests and matching
|
||||
|
||||
**Requests** menu. A request describes an assignment to fill.
|
||||
|
||||
## Creating a request
|
||||
|
||||
Open **New request**. The client and the job title are required. Fill in what you know:
|
||||
|
||||
- the required technologies, separated by commas
|
||||
- the minimum seniority
|
||||
- the required languages
|
||||
- the location and remote work
|
||||
- the start date and the daily budget
|
||||
|
||||
The more precise the request, the more precise the matching.
|
||||
|
||||
## Reading the matching
|
||||
|
||||
The page of an **open** request lists the profiles in the pool that match it, best scores first.
|
||||
|
||||
- The score, out of 100, shows on the right of each profile.
|
||||
- Technologies found on the profile show on a gold background, with the years of practice.
|
||||
- Missing technologies show with a dashed outline.
|
||||
- Gaps show in red: lower seniority, missing language, availability too late, daily rate above the budget.
|
||||
|
||||
| Criterion | Points | Rule |
|
||||
|---|---|---|
|
||||
| Technologies | 55 | Share of the required technologies found on the profile. A technology found earns 60% of its share, 100% from 5 years of practice |
|
||||
| Job title | 15 | Share of the words of the job title found on the profile |
|
||||
| Seniority | 10 | 10 if the level is reached, 4 one level below, 0 otherwise |
|
||||
| Languages | 10 | Share of the required languages found on the profile |
|
||||
| Availability | 5 | 5 if the profile is available before the start, 0 after |
|
||||
| Rate | 5 | 5 if the daily rate fits the budget, 2 up to 10% above, 0 beyond |
|
||||
|
||||
A criterion missing from the request earns all its points. A value missing from the profile earns half. Archived and rejected profiles are left out.
|
||||
|
||||
The score ranks the profiles. It does not replace reading the profile.
|
||||
|
||||
## Putting a profile forward
|
||||
|
||||
- On the request page: **Put forward**, next to the profile.
|
||||
- On the profile page: **Assignments** tab, **Client requests** section, choose the request, then **Put forward**.
|
||||
|
||||
A profile put forward goes through four statuses:
|
||||
|
||||
| Status | Meaning |
|
||||
|---|---|
|
||||
| To present | The profile is selected internally |
|
||||
| Presented to the client | The CV has gone to the client |
|
||||
| Selected by the client | The client wants this profile |
|
||||
| Set aside | The profile does not fit this request |
|
||||
|
||||
**Update**, under the profile's name, changes the status and adds a note.
|
||||
|
||||
## Closing a request
|
||||
|
||||
Change the **Request status**: Open, Filled or Closed. Only an open request shows the matching. Deleting a request deletes its list of profiles put forward. The profiles stay.
|
||||
|
||||
# Searching for a profile
|
||||
|
||||
The header field and the **Profiles** menu search every profile.
|
||||
|
||||
## Writing a search
|
||||
|
||||
- Every word typed must appear on the profile.
|
||||
- Accents, capitals and plurals are ignored.
|
||||
- A word of three letters or more also finds words that start with it: `dev` finds "developer".
|
||||
- `senior` keeps Senior and Expert profiles. `junior` and `expert` filter the same way.
|
||||
- A phrase in quotation marks is searched as is: `"gestion documentaire"`.
|
||||
- Technology symbols are kept: C#, C++, .NET, Node.js, CI/CD.
|
||||
|
||||
| Search | Result |
|
||||
|---|---|
|
||||
| `senior java developer` | Senior or Expert profiles that carry "developer" and "java" |
|
||||
| `XML` | Profiles that mention XML, anywhere |
|
||||
| `angular luxembourg` | Profiles that carry both words |
|
||||
| `"product owner"` | Profiles that carry the exact phrase |
|
||||
|
||||
Vivier searches both the original texts and their translation.
|
||||
|
||||
## Ranking and filters
|
||||
|
||||
Results are ranked by relevance. A word weighs more in the name, the title or the technologies than in a job description. Technologies and keywords found show on a gold background.
|
||||
|
||||
Six filters: status, seniority, language, nationality, residence permit, archived profiles. Archived profiles are hidden by default. Changing a filter runs the search at once. On a phone, the **Filters** button shows or hides them.
|
||||
|
||||
| Filter | Values |
|
||||
|---|---|
|
||||
| Nationality | EU, EEA or Switzerland (no work permit needed), Non-EU, Not specified |
|
||||
| Residence permit | Expired or expiring within 2 months |
|
||||
|
||||
The search finds a profile through its original texts and their translation: `developer` and `développeur` return the same profiles.
|
||||
|
||||
**Export to CSV** downloads the profiles shown. This button is for the account manager only.
|
||||
|
||||
# The CV in the IT Club format
|
||||
|
||||
On a profile page, **IT Club CV** and **Anonymised CV** open an A4 preview.
|
||||
|
||||
## What the CV contains
|
||||
|
||||
- The name, the title, the seniority, the languages, the availability.
|
||||
- The summary, the technical skills, the experience with its project, assignment and workload, the education, the certifications.
|
||||
- IT Club's details in the footer.
|
||||
|
||||
The CV carries no personal contact details: contact goes through IT Club. It carries no photo, no commercial details, no nationality and no work permit.
|
||||
|
||||
The **anonymised version** replaces the name with a reference, for example "Profile ITC-0001", and hides the location. Employer and client names stay visible.
|
||||
|
||||
## Exporting
|
||||
|
||||
| Button | Result |
|
||||
|---|---|
|
||||
| Download as Word | An editable `.docx` file |
|
||||
| Save as PDF | The browser's print dialog. Choose "Save as PDF" and untick "Headers and footers" |
|
||||
|
||||
Each export is recorded in the profile's history.
|
||||
|
||||
## Changing the CV language
|
||||
|
||||
In the preview bar, choose FR, EN or DE. With the interface in English, the preview opens in English. In French, it opens in the language of the original CV.
|
||||
|
||||
- The CV headings follow the chosen language.
|
||||
- The content stays in the language of the original CV until it is translated. The preview says so.
|
||||
|
||||
To translate the content:
|
||||
|
||||
- **Translate content**, if automatic analysis is set up. Review the result before sending the CV.
|
||||
- **Translate with a file**, otherwise: download the file, drop it in the Claude analysis project, then upload the translated file.
|
||||
|
||||
The translation is kept. It also serves the profile page and the Europass CV. If the profile changes afterwards, Vivier redoes the translation in the background. Meanwhile, the original content comes back. Names of technologies, companies and clients are not translated.
|
||||
|
||||
# The Europass CV
|
||||
|
||||
On a profile page, **Europass CV**, then **Named** or **Anonymised**. The preview follows the layout of IT Club's Europass CV: blue band, Europass logo, sections About me, Education and training, Work experience, Language skills, Skills, Volunteering, Driving licence.
|
||||
|
||||
## What the CV contains
|
||||
|
||||
- Positions: employer, location, dates, job title, client, project, assignment, technologies, workload, then achievements.
|
||||
- Education with its dates and location, when known.
|
||||
- Languages: the European grid (understanding, speaking, writing) when the original CV gives it, otherwise one line per language, for example "English: C1".
|
||||
- Skills, grouped: certifications, technical, databases, software and tools, cloud, methods.
|
||||
- Volunteering and driving licence, only when filled in.
|
||||
|
||||
The Europass CV carries no date of birth, no nationality, no work permit and no commercial details.
|
||||
|
||||
## Preview settings
|
||||
|
||||
| Button | Effect |
|
||||
|---|---|
|
||||
| Named, Anonymised | The anonymised version replaces the name with the reference and removes photo and contact details |
|
||||
| Contact details | Shows or removes the email, phone, LinkedIn profile and address |
|
||||
| Photo | Adds the profile photo. Off by default |
|
||||
| FR, EN, DE | The CV language, as for the IT Club CV |
|
||||
| Download as Word | An editable `.docx` file |
|
||||
| Save as PDF | The browser's print dialog, in A4 |
|
||||
|
||||
Each export is recorded in the profile's history.
|
||||
|
||||
# Profiles in your language
|
||||
|
||||
Vivier shows each profile in the interface language. In English, you read the title, summary, positions, education, volunteering and points to check in English.
|
||||
|
||||
- Translation runs automatically after import, in the background, while a Vivier page stays open.
|
||||
- A profile not translated yet shows in its original language, with a banner. **Translate now** starts the translation right away.
|
||||
- Under a translated profile, **View the original** shows the original text.
|
||||
- Comments, interview reports, client requests and the work permit stay in their author's language.
|
||||
- Names of technologies, companies, clients and projects are not translated.
|
||||
|
||||
The translation is automatic. Review it before sending a CV.
|
||||
|
||||
# Dashboard and CSV export
|
||||
|
||||
**Dashboard** menu.
|
||||
|
||||
- The black band gives the key figures: profiles in the pool, received in 30 days, in progress, hired, interviews within 7 days, follow-ups due, open requests, retention to handle.
|
||||
- **Profiles by status** and **Seniority**: clicking a line opens the matching list.
|
||||
- **Average time spent at each stage**: time between entering a status and leaving it.
|
||||
- **Most common technologies**: a click runs the search.
|
||||
|
||||
Archived profiles are counted separately.
|
||||
|
||||
The CSV export (Profiles menu, **Export to CSV**) holds one line per profile shown, commercial details, nationality and work permit included. The separator is the semicolon: Excel opens the file directly. This export, which takes the whole pool out at once, is for the account manager only.
|
||||
|
||||
# Personal data and retention
|
||||
|
||||
Vivier holds personal data. Three tools help comply with the GDPR.
|
||||
|
||||
## The candidate's consent
|
||||
|
||||
On the profile page, **File** tab, **Personal data** section, **Record the candidate's consent**: record the date the candidate agreed that IT Club keeps their CV, and how they said so. The consent can be edited and withdrawn.
|
||||
|
||||
## The retention period
|
||||
|
||||
Each profile has a retention date, set at import: 24 months by default.
|
||||
|
||||
The account manager tracks retention dates: **Manage** menu, **Retention**. The page lists the profiles whose date has passed or falls within 60 days.
|
||||
|
||||
- **Extend** pushes the date back, if the candidate has confirmed their consent.
|
||||
- **Delete** moves the profile to the trash.
|
||||
|
||||
On the profile page, the **To do** line flags a retention period that is over to everyone. Tell the account manager if the candidate has renewed their consent.
|
||||
|
||||
## Exporting a candidate's data
|
||||
|
||||
On the profile page, **File** tab, **Personal data** section, **Export the candidate's data**. Vivier downloads a zip with all the profile's data, nationality and work permit included, its documents and its photo. Hand it to a candidate who asks for access to their data.
|
||||
|
||||
## Automatic analysis
|
||||
|
||||
With automatic analysis, the CV is sent to Anthropic, the publisher of Claude, for analysis and translation. Mention it in the information given to candidates.
|
||||
|
||||
# Archiving, updating, deleting
|
||||
|
||||
**File** tab, **Manage** section.
|
||||
|
||||
## Archiving
|
||||
|
||||
**Archive the profile** takes the profile off the board, the dashboard, the follow-up page and the everyday search. Its data, its documents and its retention date stay.
|
||||
|
||||
To find it again: **Profiles** menu, **Archived** filter set to "Only". On the profile page, **Unarchive** puts it back in its column. The status of an archived profile does not change.
|
||||
|
||||
## Updating from a new analysis
|
||||
|
||||
A candidate sends a more recent CV: upload the new JSON and, if you have them, the new CV and the new report.
|
||||
|
||||
- Replaced: experience, technologies, languages, education, keywords from the analysis.
|
||||
- Kept: status, comments, interviews, follow-ups, documents, history, keywords added by hand.
|
||||
|
||||
## Deleting
|
||||
|
||||
Only the account manager deletes a profile. If a profile has to go, ask them.
|
||||
|
||||
**Delete profile** moves the profile to the trash. It disappears at once from the board, the profiles, search, client requests, follow-up and exports. For 30 days, the account manager can restore it with all its data.
|
||||
|
||||
After 30 days, Vivier erases the profile, its documents, its photo, its comments, its interviews, its follow-ups, its keywords and its history. The activity log keeps one line with the profile's reference, without the name.
|
||||
|
||||
# Activity log
|
||||
|
||||
The account manager sees the full log: **Manage** menu, **Activity log**. The last 300 actions, across all profiles, filterable by account.
|
||||
|
||||
Each line gives the date, the account, the profile, the action and its detail: old and new value of a field, status change, document added, CV exported.
|
||||
|
||||
On each profile, the history shows everyone the same lines for that profile only: **File** tab.
|
||||
|
||||
# My account and language
|
||||
|
||||
Click your initials, top right.
|
||||
|
||||
- **My account**: your identity, two-step verification, password, sessions.
|
||||
- **Language**: French or English. The choice is kept for your account.
|
||||
- **Sign out**.
|
||||
|
||||
In **My account**:
|
||||
|
||||
| Action | Effect |
|
||||
|---|---|
|
||||
| Generate new backup codes | Ten new codes. The old ones stop working |
|
||||
| Set up another app | For a new phone. The old one stops working |
|
||||
| Change password | Your other sessions close |
|
||||
| Sign out my other sessions | Closes everything except the current session |
|
||||
| Your latest sign-ins | Date, browser and address of your latest sign-ins |
|
||||
|
||||
The interface language changes how profiles show: they appear translated. Comments and interview reports stay as they were written.
|
||||
|
||||
# Frequently asked questions
|
||||
|
||||
## The automatic analysis failed
|
||||
|
||||
The message gives the cause. The most common ones:
|
||||
|
||||
| Message | What to do |
|
||||
|---|---|
|
||||
| Time limit exceeded | Run it again. If it keeps failing, use the files already analysed |
|
||||
| The document is not a CV | Check the uploaded file |
|
||||
| API key refused | Tell the account manager |
|
||||
| Too many requests or credit used up | Try again later, or tell the account manager |
|
||||
|
||||
## The seniority does not match the CV
|
||||
|
||||
Vivier calculates it from the dates of each position. Internships are excluded, overlapping periods are counted once. A date without a month counts as January.
|
||||
|
||||
| Experience | Level |
|
||||
|---|---|
|
||||
| Less than 4 years | Junior |
|
||||
| 4 to less than 8 years | Mid-level |
|
||||
| 8 to less than 12 years | Senior |
|
||||
| 12 years and more | Expert |
|
||||
|
||||
If the dates are wrong, fix the JSON and update the profile from a new analysis.
|
||||
|
||||
## The photo in the CV was not found
|
||||
|
||||
Vivier keeps the image that looks like a portrait. A cut-out portrait on a wide white background may be discarded. Upload the photo by hand: **File** tab, **Photo** section.
|
||||
|
||||
## A profile has disappeared from the board
|
||||
|
||||
It is archived or deleted. Look for it in **Profiles** with the **Archived** filter set to "Included". If it is not there, ask the account manager: the activity log says who moved it to the trash and when. For 30 days, they can restore it.
|
||||
|
||||
## A card will not move
|
||||
|
||||
The change was not saved: a red message appears and the card goes back to its place. Check your connection and reload the page.
|
||||
|
||||
## My two-step code is rejected
|
||||
|
||||
Check that the phone sets its time automatically, then enter the code shown now. A code works only once: wait for the next one. Otherwise, use a backup code.
|
||||
|
||||
## I lost my phone
|
||||
|
||||
Sign in with a backup code, then **My account**, **Set up another app**. No backup codes left: the account manager resets your two-step verification.
|
||||
|
||||
## A profile stays in French while I work in English
|
||||
|
||||
Its translation is not done yet. The profile banner says so. Click **Translate now**, or wait: the translation runs in the background.
|
||||
|
||||
## I cannot find a profile with the search
|
||||
|
||||
Remove a word: every word must appear on the profile. Check the **Archived** filter. If the search seems empty after a Vivier update, the account manager runs the indexing again.
|
||||
@@ -0,0 +1,596 @@
|
||||
# Vivier en bref
|
||||
|
||||
Vivier suit les CV reçus par IT Club, du premier contact à l'embauche.
|
||||
|
||||
- Chaque CV devient un **profil** : identité, expériences, technologies, langues, séniorité.
|
||||
- Les profils avancent dans un **Kanban** à six colonnes.
|
||||
- Sur chaque profil, vous notez les entretiens, les relances, les commentaires et les documents.
|
||||
- Les **besoins clients** décrivent les missions à pourvoir. Vivier propose les profils qui y répondent.
|
||||
- Vivier génère un **CV au format IT Club** et un **CV Europass**, nominatifs ou anonymisés, en français, anglais ou allemand.
|
||||
- Chaque profil s'affiche dans la langue de l'interface, traduit automatiquement.
|
||||
- Chaque action est tracée dans un journal.
|
||||
|
||||
Tous les comptes lisent et modifient tous les profils. Le gestionnaire des comptes a en plus le menu **Gestion** : comptes, journal, conservation, corbeille, sauvegarde.
|
||||
|
||||
Le guide **Sécurité** explique comment Vivier protège vos accès et ce que vous pouvez faire de votre côté.
|
||||
|
||||
# Se connecter
|
||||
|
||||
1. Ouvrez l'adresse de Vivier dans votre navigateur.
|
||||
2. Saisissez votre identifiant et votre mot de passe, puis **Continuer**.
|
||||
3. Saisissez le code à 6 chiffres affiché par l'application d'authentification de votre téléphone.
|
||||
|
||||
À savoir :
|
||||
|
||||
- Un mot de passe compte au moins 12 caractères. Vivier refuse un mot de passe connu dans des fuites de données.
|
||||
- Après 5 essais infructueux, la connexion se bloque 15 minutes pour cet identifiant, puis plus longtemps.
|
||||
- La session se ferme après 2 heures sans activité, et au plus tard 12 heures après la connexion. Vivier vous ramène ensuite à la page que vous aviez ouverte.
|
||||
- Téléphone pas sous la main : saisissez un code de secours dans le champ du code.
|
||||
- Mot de passe oublié ou téléphone perdu sans code de secours : adressez-vous au gestionnaire des comptes.
|
||||
|
||||
Le guide **Sécurité** détaille chaque point.
|
||||
|
||||
## Obtenir un compte
|
||||
|
||||
Vivier n'a pas d'inscription libre.
|
||||
|
||||
1. Le gestionnaire des comptes vous envoie un lien d'invitation. Il sert une fois et expire après 48 heures.
|
||||
2. Ouvrez le lien. Choisissez votre identifiant et votre mot de passe.
|
||||
3. Activez la double authentification : installez une application d'authentification sur votre téléphone, scannez le QR code, saisissez le code affiché.
|
||||
4. Gardez les dix codes de secours que Vivier vous donne. Ils ne s'affichent qu'une fois.
|
||||
|
||||
Le gestionnaire peut aussi créer votre compte avec un mot de passe provisoire. À la première connexion, vous choisissez le vôtre, puis vous activez la double authentification.
|
||||
|
||||
# L'écran et le menu
|
||||
|
||||
L'en-tête noir reste en haut de chaque page.
|
||||
|
||||
| Élément | Rôle |
|
||||
|---|---|
|
||||
| Kanban | Les profils actifs, rangés par état |
|
||||
| Profils | La liste complète et la recherche |
|
||||
| Besoins | Les missions à pourvoir chez les clients |
|
||||
| Suivi | Les relances à faire et les entretiens à venir |
|
||||
| Tableau de bord | Les chiffres du vivier |
|
||||
| Gestion | Pour le gestionnaire seulement : Conservation, Journal, Connexions, Comptes, Corbeille, Sauvegarde, Erreurs |
|
||||
| Champ de recherche | Cherche dans toutes les fiches |
|
||||
| Importer | Ajoute un ou plusieurs CV |
|
||||
| Point d'interrogation | Ouvre cette aide |
|
||||
| Vos initiales | Mon compte, langue de l'interface, déconnexion |
|
||||
|
||||
Une pastille dorée sur **Suivi** compte les relances arrivées à échéance. Pour le gestionnaire, une pastille sur **Gestion** additionne les profils dont la conservation est dépassée et les demandes de compte à valider. Le sous-menu donne le détail.
|
||||
|
||||
Sur un écran étroit, le bouton **Menu** déplie ces rubriques.
|
||||
|
||||
# Importer un CV
|
||||
|
||||
Bouton **Importer**, dans l'en-tête. Deux voies mènent au même écran de relecture.
|
||||
|
||||
## Analyse automatique
|
||||
|
||||
1. Dans la carte **Analyse automatique**, choisissez le CV : PDF, DOCX, ODT, MD ou TXT.
|
||||
2. Cliquez sur **Analyser le CV**. Comptez une à deux minutes, sans fermer la page.
|
||||
3. Vivier affiche l'écran de relecture.
|
||||
|
||||
Cette voie demande une clé d'API Claude, réglée par le gestionnaire. Sans clé, la carte indique « Non configurée ».
|
||||
|
||||
Un fichier DOC ou RTF n'est pas lu par cette voie : convertissez-le en PDF.
|
||||
|
||||
## Fichiers déjà analysés
|
||||
|
||||
Vous faites l'analyse vous-même dans un projet Claude, puis vous chargez le résultat.
|
||||
|
||||
1. Dans le projet Claude d'analyse, joignez le CV et écrivez : « analyse ce CV pour Vivier ».
|
||||
2. Claude produit deux fichiers : le profil structuré (`.json`) et le rapport détaillé (`.md`). Téléchargez-les.
|
||||
3. Dans Vivier, carte **Fichiers déjà analysés**, chargez le JSON, le CV d'origine et le rapport. Le rapport est facultatif.
|
||||
4. Cliquez sur **Contrôler le profil**.
|
||||
|
||||
Si le JSON n'est pas conforme, Vivier refuse l'import et liste chaque point à corriger.
|
||||
|
||||
## Relecture avant enregistrement
|
||||
|
||||
L'écran de relecture montre ce que Vivier va enregistrer.
|
||||
|
||||
- Vérifiez l'identité, l'email, le téléphone et les dates des expériences.
|
||||
- La **séniorité** est recalculée par Vivier à partir des dates. Si elle diffère de l'analyse, un message le signale.
|
||||
- Les **points d'attention** relevés par l'analyse s'affichent : trous dans le parcours, dates floues, informations manquantes.
|
||||
- Si le CV contient une **photo**, elle apparaît avec la case **Garder cette photo**. Décochez-la pour ne pas la garder.
|
||||
|
||||
Cliquez sur **Enregistrer le profil**. Le profil arrive dans la colonne **Reçu**. **Annuler** abandonne l'import et efface les fichiers chargés.
|
||||
|
||||
## Doublons
|
||||
|
||||
Vivier compare le profil aux fiches existantes, archivées comprises. Un profil à la corbeille compte aussi : il est signalé par sa référence, et le gestionnaire des comptes peut le restaurer ou l'effacer.
|
||||
|
||||
| Ressemblance | Effet |
|
||||
|---|---|
|
||||
| Même adresse email | L'enregistrement est refusé. Mettez à jour la fiche existante. |
|
||||
| Même téléphone | Avertissement. Une case confirme qu'il s'agit d'une autre personne. |
|
||||
| Même prénom et même nom | Avertissement. Une case confirme qu'il s'agit d'une autre personne. |
|
||||
|
||||
La comparaison des téléphones ignore l'indicatif, les espaces et la ponctuation. Celle des noms ignore la casse, les accents et l'ordre.
|
||||
|
||||
## Importer plusieurs CV
|
||||
|
||||
Page Importer, bouton **Importer plusieurs CV**. Le lot contient 20 CV au plus.
|
||||
|
||||
**CV à analyser** : sélectionnez plusieurs fichiers, puis **Déposer les CV**. Vivier les analyse l'un après l'autre. Gardez la page ouverte. Si vous la fermez, les analyses reprennent à sa réouverture.
|
||||
|
||||
**Profils déjà analysés** : sélectionnez ensemble les JSON, les CV et les rapports, puis **Déposer les fichiers**. Vivier associe chaque JSON au CV que nomme son champ `source.fichier_origine`. Un rapport est associé quand son nom reprend celui du JSON ou le nom du candidat.
|
||||
|
||||
Chaque ligne du lot porte un état :
|
||||
|
||||
| État | Suite |
|
||||
|---|---|
|
||||
| En attente | L'analyse va démarrer |
|
||||
| Prêt à relire | **Relire** ouvre l'écran de relecture |
|
||||
| Erreur | Le motif s'affiche. **Relancer l'analyse** ou **Retirer** |
|
||||
|
||||
**Enregistrer les profils prêts** enregistre d'un coup ceux qui ne ressemblent à aucun profil existant. Les autres restent dans le lot, à relire un par un. Un CV laissé dans le lot est retiré après 7 jours.
|
||||
|
||||
# Le Kanban et les états
|
||||
|
||||
Le Kanban montre les profils actifs en six colonnes.
|
||||
|
||||
| État | Sens |
|
||||
|---|---|
|
||||
| Reçu | Le CV vient d'entrer |
|
||||
| En cours | Le profil est à l'étude, avant tout entretien |
|
||||
| Entretiens en cours | Un ou plusieurs entretiens sont prévus ou passés |
|
||||
| Validé | IT Club retient le profil |
|
||||
| Embauché | Le candidat a rejoint IT Club |
|
||||
| Non retenu | Le profil est écarté. Un motif est obligatoire |
|
||||
|
||||
## Déplacer une carte
|
||||
|
||||
- Glissez la carte d'une colonne à l'autre. Le changement s'enregistre aussitôt.
|
||||
- Le passage en **Non retenu** ouvre une fenêtre qui demande le motif.
|
||||
- Dans une même colonne, glissez une carte pour changer l'ordre.
|
||||
- Sur écran tactile, maintenez l'appui pour saisir la carte.
|
||||
|
||||
Le statut se change aussi sur la fiche du profil.
|
||||
|
||||
## Lire une carte
|
||||
|
||||
Une carte affiche la photo ou les initiales, le nom, le titre, la séniorité, les années d'expérience et les trois technologies principales. S'y ajoutent, quand ils existent :
|
||||
|
||||
- la date du prochain entretien
|
||||
- le nombre de relances à faire
|
||||
- un repère rouge quand le titre de séjour expire dans moins de 2 mois, ou a expiré
|
||||
- le motif, dans la colonne Non retenu.
|
||||
|
||||
Les barres empilées à gauche du nom d'une colonne montrent l'avancement : une barre pour Reçu, cinq pour Embauché.
|
||||
|
||||
## Filtrer
|
||||
|
||||
Le champ **Filtrer les cartes** garde les cartes qui contiennent les mots saisis : nom, titre ou technologie. La liste **Séniorité** garde un niveau. Le filtre agit à l'écran seulement.
|
||||
|
||||
# La fiche d'un profil
|
||||
|
||||
Cliquez sur un nom pour ouvrir sa fiche. Elle se compose d'un bandeau et de quatre onglets.
|
||||
|
||||
## Le bandeau
|
||||
|
||||
Le bandeau reste en haut de la fiche, quel que soit l'onglet.
|
||||
|
||||
- La photo, le nom, le titre, la séniorité et les années d'expérience.
|
||||
- **CV d'origine** : le fichier reçu du candidat.
|
||||
- **CV IT Club** et **CV Europass** : choisissez **Nominatif** ou **Anonymisé** pour ouvrir l'aperçu du CV généré.
|
||||
- **Modifier** : la fiche en six blocs, décrits plus bas. Vivier enregistre le nom de famille en capitales.
|
||||
- **Statut** : choisissez l'état puis **Mettre à jour**.
|
||||
- La disponibilité, le TJM souhaité et la ville du candidat.
|
||||
- Le motif, si le profil est **Non retenu**.
|
||||
|
||||
Une ligne **À faire** apparaît quand une action attend : relance en retard, avis d'entretien à donner, prochain entretien, titre de séjour à renouveler, conservation dépassée. Un clic ouvre l'onglet et la section concernés. Les points rouges signalent un retard.
|
||||
|
||||
## Modifier la fiche
|
||||
|
||||
Bouton **Modifier**. Six blocs :
|
||||
|
||||
| Bloc | Contenu |
|
||||
|---|---|
|
||||
| Identité et CV | Prénom, nom, titre, synthèse. Repris sur les CV |
|
||||
| Coordonnées | Email, téléphone, adresse. Seuls la ville et le pays figurent sur le CV nominatif |
|
||||
| Nationalité et permis de travail | Jusqu'à trois nationalités, le permis de travail, sa date d'expiration. Sur aucun CV |
|
||||
| Disponibilité | Un choix dans une liste, une date si besoin, une note libre |
|
||||
| Données commerciales | TJM, salaire, mobilité, télétravail. Sur aucun CV |
|
||||
| CV Europass | Bénévolat et permis de conduire, repris sur le CV Europass seulement |
|
||||
|
||||
**Disponibilité.** Choisissez Immédiate, Sous 1 mois, Sous 2 mois, Sous 3 mois, Date précise ou À préciser. « Date précise » demande la date. « Sous N mois » calcule une date estimée, utilisée pour le rapprochement avec les besoins clients. La note libre garde une précision interne, par exemple un préavis à négocier.
|
||||
|
||||
**Nationalité et permis de travail.** Choisissez la nationalité dans la liste : tapez les premières lettres du pays pour aller plus vite. Une nationalité de l'Union européenne, de l'Espace économique européen ou suisse n'a pas besoin de permis de travail au Luxembourg : Vivier l'indique et masque les champs du permis. Sinon, décrivez le titre en texte libre et indiquez sa date d'expiration. Vivier prévoit alors une relance 2 mois avant, visible dans **Suivi**. Ne chargez pas de copie du titre dans Vivier.
|
||||
|
||||
L'analyse reprend la nationalité quand le CV l'écrit. Le permis de travail se saisit toujours à la main.
|
||||
|
||||
## Les quatre onglets
|
||||
|
||||
Les onglets restent collés sous l'en-tête. Au clavier, les flèches passent d'un onglet à l'autre.
|
||||
|
||||
| Onglet | Contenu |
|
||||
|---|---|
|
||||
| Profil | Synthèse, points d'attention, expériences, technologies, formation et certifications, coordonnées, nationalité et permis de travail, langues, bénévolat |
|
||||
| Suivi | Entretiens, commentaires, relances |
|
||||
| Missions | Besoins clients et données commerciales |
|
||||
| Dossier | Documents, mots-clés et classement, historique, données personnelles, photo, gestion |
|
||||
|
||||
La fiche s'ouvre sur l'onglet **Profil**. Après un enregistrement, Vivier revient sur l'onglet où vous étiez : un commentaire publié vous ramène dans **Suivi**, un document ajouté dans **Dossier**. Les liens de la page **Suivi** ouvrent la fiche sur l'onglet **Suivi**.
|
||||
|
||||
Une pastille rouge sur **Suivi** compte les relances en retard et les avis d'entretien à donner. Un point d'exclamation sur **Dossier** signale une conservation dépassée. Le petit nombre gris à côté d'un onglet compte ce qu'il contient.
|
||||
|
||||
Dans l'onglet **Profil**, les trois expériences les plus récentes et les dix technologies les plus pratiquées s'affichent. Le lien **Voir…** placé sous la liste déplie le reste. Les formulaires d'ajout (entretien, relance, document, photo) s'ouvrent d'un clic sur leur titre.
|
||||
|
||||
## Commentaires
|
||||
|
||||
Écrivez dans **Nouveau commentaire**, puis **Publier**. Un commentaire porte votre nom et la date. Il ne se modifie pas.
|
||||
|
||||
## Documents
|
||||
|
||||
- Le CV d'origine et le rapport sont attachés à l'import.
|
||||
- **Ajouter un document** : choisissez le fichier et son type. Taille maximale : 10 Mo.
|
||||
- Formats acceptés : PDF, DOCX, DOC, ODT, RTF, MD, TXT, PNG, JPG, XLSX.
|
||||
- **Lire** ouvre un rapport `.md` ou `.txt` dans Vivier.
|
||||
|
||||
## Mots-clés
|
||||
|
||||
Les mots-clés viennent de l'analyse. Ils améliorent la recherche.
|
||||
|
||||
- Ajoutez un mot avec son type, puis **Ajouter**. Un mot ajouté à la main s'affiche sur fond clair.
|
||||
- La croix retire un mot.
|
||||
- Les mots ajoutés à la main survivent à une mise à jour de l'analyse.
|
||||
|
||||
## Photo
|
||||
|
||||
La photo sert à reconnaître le candidat dans Vivier : fiche, Kanban, résultats de recherche. Elle ne figure sur aucun CV exporté. Vivier ne l'analyse pas.
|
||||
|
||||
## Données commerciales
|
||||
|
||||
Bouton **Modifier**, bloc **Données commerciales** : TJM souhaité, salaire annuel brut souhaité, mobilité, télétravail.
|
||||
|
||||
Ces données servent au rapprochement avec les besoins clients et à l'export CSV. Elles ne figurent sur aucun CV exporté. La disponibilité a son propre bloc.
|
||||
|
||||
# Entretiens, relances et suivi
|
||||
|
||||
## Noter un entretien
|
||||
|
||||
Sur la fiche, onglet **Suivi**, section **Entretiens**, **Ajouter un entretien**.
|
||||
|
||||
1. Saisissez la date. L'heure est facultative.
|
||||
2. Choisissez le type : téléphone, visioconférence, sur place, entretien technique, entretien client.
|
||||
3. Indiquez qui mène l'entretien et, s'il y en a un, le besoin client concerné.
|
||||
4. Cliquez sur **Enregistrer l'entretien**.
|
||||
|
||||
Pour un profil Reçu ou En cours, la case **Passer le profil en « Entretiens en cours »** est cochée : le profil change de colonne en même temps.
|
||||
|
||||
Après l'entretien, ouvrez **Donner l'avis et le compte rendu** : avis favorable, réservé ou défavorable, puis le compte rendu. Un entretien passé sans avis porte la mention « avis à donner ».
|
||||
|
||||
## Prévoir une relance
|
||||
|
||||
Sur la fiche, onglet **Suivi**, section **Relances**, ouvrez **Prévoir une relance** : écrivez ce qu'il faut faire, choisissez l'échéance, puis **Prévoir la relance**.
|
||||
|
||||
Quand c'est fait, cliquez sur **Marquer comme faite**. La relance reste sur la fiche, datée et signée.
|
||||
|
||||
## La page Suivi
|
||||
|
||||
Menu **Suivi**. Le titre compte les relances prévues et, en rouge, celles à faire aujourd'hui ou en retard. Trois listes :
|
||||
|
||||
- **Relances** : les plus anciennes d'abord. Une relance arrivée à échéance s'affiche en rouge.
|
||||
- **Entretiens des 30 prochains jours**.
|
||||
- **Entretiens passés sans avis** : à compléter.
|
||||
|
||||
Les profils archivés n'y figurent pas.
|
||||
|
||||
# Besoins clients et rapprochement
|
||||
|
||||
Menu **Besoins**. Un besoin décrit une mission à pourvoir.
|
||||
|
||||
## Créer un besoin
|
||||
|
||||
Ouvrez **Nouveau besoin**. Le client et l'intitulé du poste sont obligatoires. Renseignez ce que vous savez :
|
||||
|
||||
- les technologies demandées, séparées par des virgules
|
||||
- la séniorité minimale
|
||||
- les langues demandées
|
||||
- le lieu et le télétravail
|
||||
- la date de début et le budget journalier.
|
||||
|
||||
Plus la demande est précise, plus le rapprochement l'est.
|
||||
|
||||
## Lire le rapprochement
|
||||
|
||||
La fiche d'un besoin **ouvert** liste les profils du vivier qui y répondent, les mieux notés d'abord.
|
||||
|
||||
- La note, sur 100, s'affiche à droite de chaque profil.
|
||||
- Les technologies trouvées sur la fiche s'affichent sur fond doré, avec les années de pratique.
|
||||
- Les technologies manquantes s'affichent en pointillé.
|
||||
- Les écarts s'affichent en rouge : séniorité inférieure, langue absente, disponibilité trop tardive, TJM au-dessus du budget.
|
||||
|
||||
| Critère | Points | Règle |
|
||||
|---|---|---|
|
||||
| Technologies | 55 | Part des technologies demandées présentes sur la fiche. Une technologie présente vaut 60 % de sa part, 100 % à partir de 5 ans de pratique |
|
||||
| Intitulé | 15 | Part des mots de l'intitulé présents sur la fiche |
|
||||
| Séniorité | 10 | 10 si le niveau est atteint, 4 un niveau en dessous, 0 sinon |
|
||||
| Langues | 10 | Part des langues demandées présentes sur la fiche |
|
||||
| Disponibilité | 5 | 5 si le profil est disponible avant le début, 0 après |
|
||||
| Tarif | 5 | 5 si le TJM tient dans le budget, 2 jusqu'à 10 % au-dessus, 0 au-delà |
|
||||
|
||||
Un critère absent du besoin donne tous ses points. Une donnée absente de la fiche donne la moitié. Les profils archivés ou non retenus sont exclus.
|
||||
|
||||
La note classe les profils. Elle ne remplace pas la lecture de la fiche.
|
||||
|
||||
## Proposer un profil
|
||||
|
||||
- Sur la fiche du besoin : **Proposer**, en face du profil.
|
||||
- Sur la fiche du profil : onglet **Missions**, section **Besoins clients**, choisissez le besoin, puis **Proposer**.
|
||||
|
||||
Un profil proposé suit quatre états :
|
||||
|
||||
| État | Sens |
|
||||
|---|---|
|
||||
| À présenter | Le profil est retenu en interne |
|
||||
| Présenté au client | Le CV est parti chez le client |
|
||||
| Retenu par le client | Le client veut ce profil |
|
||||
| Écarté | Le profil ne convient pas pour ce besoin |
|
||||
|
||||
**Mettre à jour**, sous le nom du profil, change l'état et ajoute une note.
|
||||
|
||||
## Clore un besoin
|
||||
|
||||
Changez le **Statut du besoin** : Ouvert, Pourvu ou Fermé. Seul un besoin ouvert affiche le rapprochement. Supprimer un besoin efface la liste des profils proposés. Les profils restent.
|
||||
|
||||
# Rechercher un profil
|
||||
|
||||
Le champ de l'en-tête et le menu **Profils** interrogent toutes les fiches.
|
||||
|
||||
## Écrire une recherche
|
||||
|
||||
- Tous les mots saisis doivent figurer sur la fiche.
|
||||
- Accents, majuscules et pluriels sont ignorés.
|
||||
- Un mot de trois lettres ou plus trouve aussi les mots qui commencent par lui : `dev` trouve « développeur ».
|
||||
- `senior` garde les profils Confirmé et Expert. `junior`, `confirmé`, `expert` filtrent de même.
|
||||
- Une expression entre guillemets est cherchée telle quelle : `"gestion documentaire"`.
|
||||
- Les symboles des technologies sont gardés : C#, C++, .NET, Node.js, CI/CD.
|
||||
|
||||
| Recherche | Résultat |
|
||||
|---|---|
|
||||
| `développeur java senior` | Profils Confirmé ou Expert qui portent « développeur » et « java » |
|
||||
| `XML` | Profils qui citent XML, où que ce soit |
|
||||
| `angular luxembourg` | Profils qui portent les deux mots |
|
||||
| `"product owner"` | Profils qui portent l'expression exacte |
|
||||
|
||||
## Classement et filtres
|
||||
|
||||
Les résultats sont classés par pertinence. Un mot pèse plus dans le nom, le titre ou les technologies que dans une description de poste. Les technologies et les mots-clés trouvés s'affichent sur fond doré.
|
||||
|
||||
Six filtres : statut, séniorité, langue, nationalité, titre de séjour, profils archivés. Les profils archivés sont masqués par défaut. Un filtre changé relance la recherche aussitôt. Sur téléphone, le bouton **Filtres** les affiche ou les replie.
|
||||
|
||||
| Filtre | Valeurs |
|
||||
|---|---|
|
||||
| Nationalité | UE, EEE ou Suisse (pas de permis de travail), Hors UE, Non renseignée |
|
||||
| Titre de séjour | Expiré ou expire sous 2 mois |
|
||||
|
||||
La recherche trouve un profil par ses textes d'origine comme par leur traduction : `developer` et `développeur` donnent les mêmes profils.
|
||||
|
||||
**Exporter en CSV** télécharge les profils affichés. Ce bouton est réservé au gestionnaire des comptes.
|
||||
|
||||
# Le CV au format IT Club
|
||||
|
||||
Sur une fiche, **CV IT Club** et **CV anonymisé** ouvrent un aperçu au format A4.
|
||||
|
||||
## Ce que contient le CV
|
||||
|
||||
- Le nom, le titre, la séniorité, les langues, la disponibilité.
|
||||
- La synthèse, les compétences techniques, les expériences avec leur projet, leur mission et leur charge, la formation, les certifications.
|
||||
- Les mentions d'IT Club en pied de page.
|
||||
|
||||
Le CV ne porte aucune coordonnée personnelle : le contact passe par IT Club. Il ne porte ni photo, ni donnée commerciale, ni nationalité, ni permis de travail.
|
||||
|
||||
La **version anonymisée** remplace le nom par une référence, par exemple « Profil ITC-0001 », et masque la localisation. Les noms d'employeurs et de clients restent visibles.
|
||||
|
||||
## Exporter
|
||||
|
||||
| Bouton | Résultat |
|
||||
|---|---|
|
||||
| Télécharger en Word | Un fichier `.docx` modifiable |
|
||||
| Enregistrer en PDF | L'impression du navigateur. Choisissez « Enregistrer au format PDF » et décochez « En-têtes et pieds de page » |
|
||||
|
||||
Chaque export est tracé dans l'historique du profil.
|
||||
|
||||
## Changer la langue du CV
|
||||
|
||||
Dans la barre de l'aperçu, choisissez FR, EN ou DE. L'aperçu s'ouvre dans la langue du CV d'origine. Avec l'interface en anglais, il s'ouvre en anglais.
|
||||
|
||||
- Les intitulés du CV suivent la langue choisie.
|
||||
- Le contenu reste dans la langue du CV d'origine tant qu'il n'est pas traduit. L'aperçu le signale.
|
||||
|
||||
Pour traduire le contenu :
|
||||
|
||||
- **Traduire le contenu**, si l'analyse automatique est configurée. Relisez le résultat avant d'envoyer le CV.
|
||||
- **Traduire par fichier**, sinon : téléchargez le fichier, déposez-le dans le projet Claude d'analyse, puis rechargez le fichier traduit.
|
||||
|
||||
La traduction est gardée. Elle sert aussi à l'affichage de la fiche et au CV Europass. Si la fiche change ensuite, Vivier refait la traduction en arrière-plan. En attendant, le contenu d'origine revient. Les noms de technologies, d'entreprises et de clients ne sont pas traduits.
|
||||
|
||||
# Le CV Europass
|
||||
|
||||
Sur une fiche, **CV Europass**, puis **Nominatif** ou **Anonymisé**. L'aperçu reprend la présentation du CV Europass d'IT Club : bandeau bleu, logo Europass, rubriques À propos de moi, Éducation et formation, Expérience professionnelle, Compétences linguistiques, Compétences, Bénévolat, Permis de conduire.
|
||||
|
||||
## Ce que contient le CV
|
||||
|
||||
- Les expériences : employeur, lieu, dates, poste, client, projet, mission, technologies, charge, puis les réalisations.
|
||||
- Les formations avec leurs dates et leur lieu, quand ils sont connus.
|
||||
- Les langues : la grille européenne (compréhension, expression orale, écrit) quand le CV d'origine la donne, sinon une ligne par langue, par exemple « Anglais : C1 ».
|
||||
- Les compétences, groupées : certifications, technique, bases de données, logiciels et outils, cloud, méthodes.
|
||||
- Le bénévolat et le permis de conduire, seulement s'ils sont remplis.
|
||||
|
||||
Le CV Europass ne porte ni date de naissance, ni nationalité, ni permis de travail, ni donnée commerciale.
|
||||
|
||||
## Les réglages de l'aperçu
|
||||
|
||||
| Bouton | Effet |
|
||||
|---|---|
|
||||
| Nominatif, Anonymisé | La version anonymisée remplace le nom par la référence et retire photo et coordonnées |
|
||||
| Coordonnées | Montre ou retire l'email, le téléphone, le profil LinkedIn et l'adresse |
|
||||
| Photo | Ajoute la photo du profil. Retirée par défaut |
|
||||
| FR, EN, DE | La langue du CV, comme pour le CV IT Club |
|
||||
| Télécharger en Word | Un fichier `.docx` modifiable |
|
||||
| Enregistrer en PDF | L'impression du navigateur, au format A4 |
|
||||
|
||||
Chaque export est tracé dans l'historique du profil.
|
||||
|
||||
# Profils dans votre langue
|
||||
|
||||
Vivier affiche chaque profil dans la langue de l'interface. En anglais, vous lisez le titre, la synthèse, les expériences, les formations, le bénévolat et les points d'attention en anglais.
|
||||
|
||||
- La traduction se fait automatiquement après l'import, en arrière-plan, tant qu'une page de Vivier reste ouverte.
|
||||
- Un profil pas encore traduit s'affiche dans sa langue d'origine, avec un bandeau. **Traduire maintenant** lance la traduction sans attendre.
|
||||
- Sous un profil traduit, **Voir l'original** affiche le texte d'origine.
|
||||
- Les commentaires, les comptes rendus d'entretien, les besoins clients et le permis de travail restent dans la langue de leur auteur.
|
||||
- Les noms de technologies, d'entreprises, de clients et de projets ne sont pas traduits.
|
||||
|
||||
La traduction est automatique. Relisez-la avant d'envoyer un CV.
|
||||
|
||||
# Tableau de bord et export CSV
|
||||
|
||||
Menu **Tableau de bord**.
|
||||
|
||||
- Le bandeau noir donne les chiffres clés : profils dans le vivier, reçus sur 30 jours, en cours de parcours, embauchés, entretiens sur 7 jours, relances à faire, besoins ouverts, conservation à traiter.
|
||||
- **Profils par statut** et **Séniorité** : un clic sur une ligne ouvre la liste correspondante.
|
||||
- **Temps moyen passé à chaque étape** : durée entre l'entrée dans un état et sa sortie.
|
||||
- **Technologies les plus présentes** : un clic lance la recherche.
|
||||
|
||||
Les profils archivés sont comptés à part.
|
||||
|
||||
L'export CSV (menu Profils, **Exporter en CSV**) contient une ligne par profil affiché, données commerciales, nationalité et permis de travail compris. Le séparateur est le point-virgule : Excel ouvre le fichier directement. Cet export, qui sort tout le vivier d'un coup, est réservé au gestionnaire des comptes.
|
||||
|
||||
# Données personnelles et conservation
|
||||
|
||||
Vivier contient des données personnelles. Trois outils aident à respecter le RGPD.
|
||||
|
||||
## L'accord du candidat
|
||||
|
||||
Sur la fiche, onglet **Dossier**, section **Données personnelles**, **Enregistrer l'accord du candidat** : notez la date à laquelle le candidat a accepté que IT Club conserve son CV, et la façon dont il l'a dit. L'accord se modifie et se retire.
|
||||
|
||||
## La durée de conservation
|
||||
|
||||
Chaque profil porte une échéance, fixée à l'import : 24 mois par défaut.
|
||||
|
||||
Le gestionnaire des comptes suit les échéances : menu **Gestion**, **Conservation**. La page liste les profils dont l'échéance est dépassée ou arrive dans 60 jours.
|
||||
|
||||
- **Prolonger** repousse l'échéance, si le candidat a confirmé son accord.
|
||||
- **Supprimer** met le profil à la corbeille.
|
||||
|
||||
Sur la fiche, la ligne **À faire** signale à tous une conservation dépassée. Prévenez le gestionnaire si le candidat a renouvelé son accord.
|
||||
|
||||
## L'export des données d'un candidat
|
||||
|
||||
Sur la fiche, onglet **Dossier**, section **Données personnelles**, **Exporter les données du candidat**. Vivier télécharge un zip avec toutes les données du profil, nationalité et permis de travail compris, ses documents et sa photo. Remettez-le au candidat qui demande l'accès à ses données.
|
||||
|
||||
## L'analyse automatique
|
||||
|
||||
Avec l'analyse automatique, le CV est transmis à Anthropic, l'éditeur de Claude, pour l'analyse et pour la traduction. Mentionnez-le dans l'information donnée aux candidats.
|
||||
|
||||
# Archiver, mettre à jour, supprimer
|
||||
|
||||
Onglet **Dossier**, section **Gestion**.
|
||||
|
||||
## Archiver
|
||||
|
||||
**Archiver le profil** sort le profil du Kanban, du tableau de bord, du suivi et de la recherche courante. Ses données, ses documents et son échéance de conservation restent.
|
||||
|
||||
Pour le retrouver : menu **Profils**, filtre **Archivés** sur « Seulement ». Sur la fiche, **Désarchiver** le remet dans sa colonne. Le statut d'un profil archivé ne change pas.
|
||||
|
||||
## Mettre à jour depuis une nouvelle analyse
|
||||
|
||||
Un candidat envoie un CV plus récent : chargez le nouveau JSON, et si vous les avez, le nouveau CV et le nouveau rapport.
|
||||
|
||||
- Remplacés : expériences, technologies, langues, formation, mots-clés issus de l'analyse.
|
||||
- Gardés : statut, commentaires, entretiens, relances, documents, historique, mots-clés ajoutés à la main.
|
||||
|
||||
## Supprimer
|
||||
|
||||
Seul le gestionnaire des comptes supprime un profil. Si un profil doit partir, demandez-le-lui.
|
||||
|
||||
**Supprimer le profil** met la fiche à la corbeille. Elle disparaît aussitôt du Kanban, des profils, de la recherche, des besoins, du suivi et des exports. Pendant 30 jours, le gestionnaire peut la restaurer avec toutes ses données.
|
||||
|
||||
Après 30 jours, Vivier efface la fiche, ses documents, sa photo, ses commentaires, ses entretiens, ses relances, ses mots-clés et son historique. Le journal garde une ligne avec la référence du profil, sans son nom.
|
||||
|
||||
# Journal
|
||||
|
||||
Le gestionnaire des comptes voit le journal complet : menu **Gestion**, **Journal**. Les 300 dernières actions, tous profils confondus, filtrables par compte.
|
||||
|
||||
Chaque ligne donne la date, le compte, le profil, l'action et son détail : ancienne et nouvelle valeur d'un champ, changement de statut, document ajouté, CV exporté.
|
||||
|
||||
Sur chaque fiche, l'historique montre à tous les mêmes lignes pour ce seul profil : onglet **Dossier**.
|
||||
|
||||
# Mon compte et langue
|
||||
|
||||
Cliquez sur vos initiales, en haut à droite.
|
||||
|
||||
- **Mon compte** : votre identité, la double authentification, le mot de passe, les sessions.
|
||||
- **Langue** : français ou anglais. Le choix est gardé pour votre compte.
|
||||
- **Déconnexion**.
|
||||
|
||||
Dans **Mon compte** :
|
||||
|
||||
| Action | Effet |
|
||||
|---|---|
|
||||
| Générer de nouveaux codes de secours | Dix nouveaux codes. Les anciens cessent de marcher |
|
||||
| Configurer une autre application | Pour un nouveau téléphone. L'ancien cesse de marcher |
|
||||
| Changer le mot de passe | Vos autres sessions se ferment |
|
||||
| Déconnecter mes autres sessions | Ferme tout sauf la session en cours |
|
||||
| Vos dernières connexions | Date, navigateur et adresse de vos dernières connexions |
|
||||
|
||||
La langue de l'interface change l'affichage des profils : ils s'affichent traduits. Les commentaires et les comptes rendus restent tels qu'ils ont été écrits.
|
||||
|
||||
# Questions fréquentes
|
||||
|
||||
## L'analyse automatique a échoué
|
||||
|
||||
Le message donne la cause. Les plus courantes :
|
||||
|
||||
| Message | Que faire |
|
||||
|---|---|
|
||||
| Délai dépassé | Relancez. Si l'échec persiste, passez par les fichiers déjà analysés |
|
||||
| Le document n'est pas un CV | Vérifiez le fichier chargé |
|
||||
| Clé d'API refusée | Prévenez le gestionnaire des comptes |
|
||||
| Trop de demandes ou crédit épuisé | Réessayez plus tard, ou prévenez le gestionnaire |
|
||||
|
||||
## La séniorité ne correspond pas au CV
|
||||
|
||||
Vivier la calcule à partir des dates des expériences. Stages exclus, périodes qui se chevauchent comptées une fois. Une date sans mois vaut janvier.
|
||||
|
||||
| Expérience | Niveau |
|
||||
|---|---|
|
||||
| Moins de 4 ans | Junior |
|
||||
| De 4 à moins de 8 ans | Intermédiaire |
|
||||
| De 8 à moins de 12 ans | Confirmé |
|
||||
| 12 ans et plus | Expert |
|
||||
|
||||
Si les dates sont fausses, corrigez le JSON et mettez la fiche à jour depuis une nouvelle analyse.
|
||||
|
||||
## La photo du CV n'a pas été trouvée
|
||||
|
||||
Vivier garde l'image qui ressemble à un portrait. Un portrait détouré sur un large fond blanc peut être écarté. Chargez la photo à la main : onglet **Dossier**, section **Photo**.
|
||||
|
||||
## Un profil a disparu du Kanban
|
||||
|
||||
Il est archivé ou supprimé. Cherchez-le dans **Profils** avec le filtre **Archivés** sur « Inclus ». S'il n'y est pas, demandez au gestionnaire des comptes : le journal indique qui l'a mis à la corbeille et quand. Pendant 30 jours, il peut le restaurer.
|
||||
|
||||
## Une carte ne se déplace pas
|
||||
|
||||
Le changement n'a pas été enregistré : un message rouge s'affiche et la carte revient à sa place. Vérifiez votre connexion et rechargez la page.
|
||||
|
||||
## Mon code de double authentification est refusé
|
||||
|
||||
Vérifiez que l'heure du téléphone se règle automatiquement, puis saisissez le code affiché maintenant. Un code ne sert qu'une fois : attendez le suivant. Sinon, utilisez un code de secours.
|
||||
|
||||
## J'ai perdu mon téléphone
|
||||
|
||||
Connectez-vous avec un code de secours, puis **Mon compte**, **Configurer une autre application**. Plus de code de secours : le gestionnaire des comptes remet votre double authentification à zéro.
|
||||
|
||||
## Un profil reste en français alors que je suis en anglais
|
||||
|
||||
Sa traduction n'est pas encore faite. Le bandeau du profil le signale. Cliquez sur **Traduire maintenant**, ou attendez : la traduction se fait en arrière-plan.
|
||||
|
||||
## Je ne trouve pas un profil par la recherche
|
||||
|
||||
Retirez un mot : tous les mots doivent figurer sur la fiche. Vérifiez le filtre **Archivés**. Si la recherche semble vide après une mise à jour de Vivier, le gestionnaire relance l'indexation.
|
||||
@@ -0,0 +1,161 @@
|
||||
# Why Vivier protects its access
|
||||
|
||||
Vivier holds the CVs, contact details and exchanges of hundreds of candidates. This is personal data. IT Club is accountable for it to the candidates and under the law (GDPR).
|
||||
|
||||
A password alone is no longer enough: it can be guessed, stolen through a fake email, or leaked by another website. Vivier adds several protections. Each one blocks a specific attack.
|
||||
|
||||
| Protection | What it prevents |
|
||||
|---|---|
|
||||
| Access by invitation | A stranger creating an account |
|
||||
| Two-step verification | A stolen password being enough to get in |
|
||||
| Password checks | Using a password already published after a breach |
|
||||
| Blocking failed attempts | A program trying thousands of passwords |
|
||||
| Limited sessions | A forgotten computer staying signed in for days |
|
||||
| Sign-in log | An intrusion going unnoticed |
|
||||
| Account manager rights | A single compromised account exporting the whole pool |
|
||||
|
||||
This page applies to every account. You can also read it without signing in, from the sign-in page.
|
||||
|
||||
# Getting an account: the invitation
|
||||
|
||||
Vivier has no open sign-up.
|
||||
|
||||
1. The Vivier account manager creates an invitation link for you.
|
||||
2. They send it to you, by email or internal chat.
|
||||
3. You open the link and choose your username and password.
|
||||
4. You set up two-step verification. Your account is ready.
|
||||
|
||||
The link works once and expires after 48 hours. Link expired: ask for a new one.
|
||||
|
||||
The account manager can also create your account with a temporary password. You then change it at first sign-in. After that, nobody but you knows your password.
|
||||
|
||||
# Two-step verification
|
||||
|
||||
Each time you sign in, Vivier asks for two proofs:
|
||||
|
||||
1. your password, something you know
|
||||
2. a 6-digit code shown on your phone, something you have
|
||||
|
||||
A thief who knows your password stays out without your phone.
|
||||
|
||||
## Setting it up
|
||||
|
||||
At first sign-in, Vivier guides you through three steps.
|
||||
|
||||
1. Install an authenticator app: Google Authenticator, Microsoft Authenticator, or the password manager you already use (Bitwarden, 1Password, Apple Passwords).
|
||||
2. In the app, add an account and scan the QR code Vivier shows. Without a camera, type the key written under the QR code.
|
||||
3. Enter the 6-digit code the app shows.
|
||||
|
||||
The code changes every 30 seconds. The app works without a network.
|
||||
|
||||
## Backup codes
|
||||
|
||||
Vivier then gives you ten backup codes, like `abcd-efgh`. They replace the phone code if you lose or forget your phone.
|
||||
|
||||
- Each code works once.
|
||||
- They are shown only once. Copy them into your password manager, or print them and store the sheet.
|
||||
- Running low? **My account**, **Generate new backup codes**. The old ones stop working.
|
||||
|
||||
## Changing phones
|
||||
|
||||
**My account**, **Set up another app**. Scan the new QR code with the new phone. The old one stops working, your other sessions close and you get ten new backup codes.
|
||||
|
||||
## Lost phone
|
||||
|
||||
1. Sign in with a backup code, in the code field.
|
||||
2. Set up another app right away from **My account**.
|
||||
|
||||
No backup codes left: the account manager resets your two-step verification, after checking it is really you. You set it up again at your next sign-in.
|
||||
|
||||
## The code is rejected
|
||||
|
||||
- Check that your phone sets its time automatically. A gap of more than a minute breaks the code.
|
||||
- Enter the code shown now, not the previous one.
|
||||
- A code already used does not work twice: wait for the next one.
|
||||
|
||||
# Your password
|
||||
|
||||
- At least 12 characters. A phrase of several words is easier to remember than a jumble of symbols: `four cats on the blue roof`.
|
||||
- Vivier rejects passwords found in known data breaches. To check, it sends the Pwned Passwords service the first 5 characters of the password's fingerprint, never the password itself.
|
||||
- Use a password for Vivier only. A reused password falls with the weakest website.
|
||||
- Vivier only keeps a fingerprint of the password (Argon2id). Nobody, not even the account manager, can read it.
|
||||
|
||||
To change it: **My account**, **Change password**. Your other sessions close.
|
||||
|
||||
Forgot your password: the account manager gives you a temporary one, which you change at sign-in.
|
||||
|
||||
# Blocking
|
||||
|
||||
Vivier counts failed attempts.
|
||||
|
||||
- 5 failures on a username, from the same address: blocked for 15 minutes. Then 30 minutes at the 10th failure, and 60 minutes at the 15th.
|
||||
- 20 failures in an hour from the same address, any username: the address is blocked.
|
||||
- A wrong two-step code counts as a failure.
|
||||
- Wrong passwords typed to confirm a sensitive action count too.
|
||||
|
||||
The block targets the address the attempts come from. A stranger therefore cannot block your account from their own place.
|
||||
|
||||
You are blocked: wait for the time shown, or ask the account manager to lift the block.
|
||||
|
||||
# Sessions
|
||||
|
||||
- A session closes after 2 hours of inactivity.
|
||||
- It always closes 12 hours after sign-in.
|
||||
- Changing your password closes your other sessions.
|
||||
- **My account**, **Sign out my other sessions** closes everything except the current session. Useful if you stayed signed in on another computer or lost a phone.
|
||||
- A disabled account loses all its sessions at once.
|
||||
|
||||
Vivier only works over HTTPS: an `http://` address is redirected, and the browser remembers for a year that it must use HTTPS.
|
||||
|
||||
# Who sees what
|
||||
|
||||
Every account reads and edits all profiles. Some actions affect the whole pool at once: they are for the account manager only.
|
||||
|
||||
| Action | Every account | Account manager |
|
||||
|---|---|---|
|
||||
| Board, profiles, requests, follow-up, dashboard | Yes | Yes |
|
||||
| Import, edit, comment on, archive a profile | Yes | Yes |
|
||||
| IT Club and Europass CVs, export of one candidate's data | Yes | Yes |
|
||||
| CSV export of the profile list | No | Yes |
|
||||
| Activity log, retention, trash | No | Yes |
|
||||
| Delete a profile | No | Yes |
|
||||
| Accounts, invitations, sign-in log | No | Yes |
|
||||
| Backup and file archive | No | Yes, with their password |
|
||||
|
||||
The account manager types their password again to grant account management to another account, change someone else's password, reset a two-step verification or download the file archive. A session left open is therefore not enough for these actions.
|
||||
|
||||
# The sign-in log
|
||||
|
||||
Vivier records every sign-in attempt: date, account, IP address, browser, result. The log is kept for 12 months.
|
||||
|
||||
- You see your latest sign-ins in **My account**. A sign-in you don't recognise: change your password and tell the account manager.
|
||||
- The account manager sees all sign-ins, **Manage** menu, **Sign-ins**.
|
||||
- An account manager signing in from a never-seen network triggers an alert email to IT Club.
|
||||
|
||||
# The data
|
||||
|
||||
- CVs, reports and photos are stored outside the public part of the site, under a random name. They only open after sign-in.
|
||||
- Two-step verification keys are encrypted. The encryption key is kept outside the database.
|
||||
- No Vivier page appears in a search engine.
|
||||
- Every action on a profile is recorded with its author.
|
||||
- With automatic analysis, the CV is sent to Anthropic, the maker of Claude, for analysis and translation. No other external service receives candidate data.
|
||||
|
||||
# Good habits
|
||||
|
||||
- Never share your password or a code, not even with the account manager. They never need it.
|
||||
- Be wary of an email asking you to sign in. Type Vivier's address yourself.
|
||||
- Lock your screen when you leave your desk.
|
||||
- On a shared computer, use **Sign out** when you leave.
|
||||
- Download a CV only when you need it, and delete the copy afterwards.
|
||||
- Send an anonymised CV when the name is not needed.
|
||||
|
||||
# Reporting a problem
|
||||
|
||||
Tell the Vivier account manager right away if:
|
||||
|
||||
- you see a sign-in you don't recognise
|
||||
- you lost your phone or a computer where Vivier was open
|
||||
- you typed your password on a suspicious page
|
||||
- you receive a code or an invitation link you did not ask for
|
||||
|
||||
The account manager can close your sessions, change your password, reset your two-step verification and check the sign-in log.
|
||||
@@ -0,0 +1,161 @@
|
||||
# Pourquoi Vivier protège ses accès
|
||||
|
||||
Vivier contient les CV, les coordonnées et les échanges avec des centaines de candidats. Ces données sont personnelles. IT Club en est responsable devant les candidats et devant la loi (RGPD).
|
||||
|
||||
Un mot de passe seul ne suffit plus : il se devine, se vole par un faux email ou circule après la fuite d'un autre site. Vivier ajoute donc plusieurs protections. Chacune bloque une attaque précise.
|
||||
|
||||
| Protection | Ce qu'elle empêche |
|
||||
|---|---|
|
||||
| Accès sur invitation | Qu'un inconnu se crée un compte |
|
||||
| Double authentification | Qu'un mot de passe volé suffise à entrer |
|
||||
| Contrôle des mots de passe | L'usage d'un mot de passe déjà publié après une fuite |
|
||||
| Blocage des essais | Qu'un programme essaie des milliers de mots de passe |
|
||||
| Sessions limitées | Qu'un ordinateur oublié reste ouvert des jours |
|
||||
| Journal des connexions | Qu'une intrusion passe inaperçue |
|
||||
| Droits du gestionnaire | Qu'un seul compte compromis permette d'exporter tout le vivier |
|
||||
|
||||
Cette page vaut pour tous les comptes. Elle se lit aussi sans être connecté, depuis la page de connexion.
|
||||
|
||||
# Obtenir un compte : l'invitation
|
||||
|
||||
Vivier n'a pas d'inscription libre.
|
||||
|
||||
1. Le gestionnaire de Vivier crée un lien d'invitation à votre nom.
|
||||
2. Il vous l'envoie, par email ou par la messagerie interne.
|
||||
3. Vous ouvrez le lien, choisissez votre identifiant et votre mot de passe.
|
||||
4. Vous activez la double authentification. Votre compte est prêt.
|
||||
|
||||
Le lien sert une seule fois et expire après 48 heures. Lien expiré : demandez-en un nouveau.
|
||||
|
||||
Le gestionnaire peut aussi créer votre compte avec un mot de passe provisoire. Vous le changez alors à la première connexion. Personne d'autre que vous ne connaît ensuite votre mot de passe.
|
||||
|
||||
# La double authentification
|
||||
|
||||
À chaque connexion, Vivier demande deux preuves :
|
||||
|
||||
1. votre mot de passe, ce que vous savez
|
||||
2. un code à 6 chiffres affiché par votre téléphone, ce que vous avez.
|
||||
|
||||
Un voleur qui connaît votre mot de passe reste dehors sans votre téléphone.
|
||||
|
||||
## L'activer
|
||||
|
||||
À la première connexion, Vivier vous guide en trois étapes.
|
||||
|
||||
1. Installez une application d'authentification : Google Authenticator, Microsoft Authenticator, ou le gestionnaire de mots de passe que vous utilisez déjà (Bitwarden, 1Password, Mots de passe d'Apple).
|
||||
2. Dans l'application, ajoutez un compte et scannez le QR code affiché par Vivier. Sans appareil photo, saisissez la clé écrite sous le QR code.
|
||||
3. Saisissez le code à 6 chiffres que l'application affiche.
|
||||
|
||||
Le code change toutes les 30 secondes. L'application fonctionne sans réseau.
|
||||
|
||||
## Les codes de secours
|
||||
|
||||
Vivier vous remet ensuite dix codes de secours, de la forme `abcd-efgh`. Ils remplacent le code du téléphone si vous le perdez ou l'oubliez.
|
||||
|
||||
- Chaque code sert une seule fois.
|
||||
- Ils ne s'affichent qu'une fois. Copiez-les dans votre gestionnaire de mots de passe, ou imprimez-les et rangez la feuille.
|
||||
- Il en reste peu ? **Mon compte**, **Générer de nouveaux codes de secours**. Les anciens cessent de marcher.
|
||||
|
||||
## Changer de téléphone
|
||||
|
||||
**Mon compte**, **Configurer une autre application**. Scannez le nouveau QR code avec le nouveau téléphone. L'ancien cesse de marcher, vos autres sessions se ferment et vous recevez dix nouveaux codes de secours.
|
||||
|
||||
## Téléphone perdu
|
||||
|
||||
1. Connectez-vous avec un code de secours, dans le champ du code.
|
||||
2. Configurez tout de suite une autre application depuis **Mon compte**.
|
||||
|
||||
Plus de code de secours : le gestionnaire remet votre double authentification à zéro, après avoir vérifié qu'il s'agit bien de vous. Vous l'activez de nouveau à la connexion suivante.
|
||||
|
||||
## Le code est refusé
|
||||
|
||||
- Vérifiez que l'heure de votre téléphone est réglée automatiquement. Un écart de plus d'une minute fausse le code.
|
||||
- Saisissez le code affiché maintenant, pas celui d'avant.
|
||||
- Un code déjà utilisé ne sert pas deux fois : attendez le suivant.
|
||||
|
||||
# Le mot de passe
|
||||
|
||||
- 12 caractères au moins. Une phrase de plusieurs mots se retient mieux qu'un mélange de signes : `quatre chats sur le toit bleu`.
|
||||
- Vivier refuse un mot de passe connu dans des fuites de données. Pour le vérifier, il envoie au service Pwned Passwords les 5 premiers caractères de l'empreinte du mot de passe, jamais le mot de passe lui-même.
|
||||
- Gardez un mot de passe propre à Vivier. Un mot de passe réutilisé tombe avec le site le moins protégé.
|
||||
- Vivier ne garde qu'une empreinte du mot de passe (Argon2id). Personne, même le gestionnaire, ne peut le lire.
|
||||
|
||||
Pour le changer : **Mon compte**, **Changer de mot de passe**. Vos autres sessions se ferment.
|
||||
|
||||
Mot de passe oublié : le gestionnaire vous en donne un provisoire, que vous changez à la connexion.
|
||||
|
||||
# Les blocages
|
||||
|
||||
Vivier compte les essais manqués.
|
||||
|
||||
- 5 échecs sur un identifiant, depuis une même adresse : blocage de 15 minutes. Puis 30 minutes au 10e échec, et 60 minutes au 15e.
|
||||
- 20 échecs en une heure depuis une même adresse, tous identifiants confondus : l'adresse est bloquée.
|
||||
- Un code de double authentification faux compte comme un échec.
|
||||
- Les essais de mot de passe faits pour confirmer une action sensible comptent aussi.
|
||||
|
||||
Le blocage vise l'adresse d'où viennent les essais. Un inconnu ne peut donc pas bloquer votre compte depuis chez lui.
|
||||
|
||||
Vous êtes bloqué : attendez la durée affichée, ou demandez au gestionnaire de lever le blocage.
|
||||
|
||||
# Les sessions
|
||||
|
||||
- Une session se ferme après 2 heures sans activité.
|
||||
- Elle se ferme dans tous les cas 12 heures après la connexion.
|
||||
- Changer de mot de passe ferme vos autres sessions.
|
||||
- **Mon compte**, **Déconnecter mes autres sessions** ferme tout sauf la session en cours. Utile après un oubli sur un autre ordinateur ou la perte d'un téléphone.
|
||||
- Un compte désactivé perd aussitôt toutes ses sessions.
|
||||
|
||||
Vivier ne fonctionne qu'en HTTPS : une adresse en `http://` est redirigée, et le navigateur retient pendant un an qu'il doit passer par HTTPS.
|
||||
|
||||
# Qui voit quoi
|
||||
|
||||
Tous les comptes lisent et modifient tous les profils. Certaines actions touchent tout le vivier d'un coup : elles sont réservées au gestionnaire.
|
||||
|
||||
| Action | Tous les comptes | Gestionnaire |
|
||||
|---|---|---|
|
||||
| Kanban, profils, besoins, suivi, tableau de bord | Oui | Oui |
|
||||
| Importer, modifier, commenter, archiver un profil | Oui | Oui |
|
||||
| CV IT Club et Europass, export des données d'un candidat | Oui | Oui |
|
||||
| Export CSV de la liste des profils | Non | Oui |
|
||||
| Journal des actions, conservation, corbeille | Non | Oui |
|
||||
| Supprimer un profil | Non | Oui |
|
||||
| Comptes, invitations, journal des connexions | Non | Oui |
|
||||
| Sauvegarde et archive des fichiers | Non | Oui, avec son mot de passe |
|
||||
|
||||
Le gestionnaire retape son mot de passe pour confier la gestion à un autre compte, changer le mot de passe d'un autre, remettre à zéro une double authentification ou télécharger l'archive des fichiers. Une session laissée ouverte ne suffit donc pas pour ces actions.
|
||||
|
||||
# Le journal des connexions
|
||||
|
||||
Vivier note chaque essai de connexion : date, compte, adresse IP, navigateur, résultat. Le journal se garde 12 mois.
|
||||
|
||||
- Vous voyez vos dernières connexions dans **Mon compte**. Une connexion que vous ne reconnaissez pas : changez votre mot de passe et prévenez le gestionnaire.
|
||||
- Le gestionnaire voit toutes les connexions, menu **Gestion**, **Connexions**.
|
||||
- Un compte gestionnaire qui se connecte depuis un réseau jamais vu déclenche un email d'alerte à IT Club.
|
||||
|
||||
# Les données
|
||||
|
||||
- Les CV, rapports et photos sont rangés hors de la partie publique du site, sous un nom aléatoire. Ils ne s'ouvrent qu'après connexion.
|
||||
- Les clés de double authentification sont chiffrées. La clé de chiffrement est gardée hors de la base de données.
|
||||
- Aucune page de Vivier n'apparaît dans un moteur de recherche.
|
||||
- Chaque action sur un profil est tracée avec son auteur.
|
||||
- Avec l'analyse automatique, le CV est transmis à Anthropic, éditeur de Claude, pour l'analyse et la traduction. Aucun autre service externe ne reçoit de données des candidats.
|
||||
|
||||
# Les bons réflexes
|
||||
|
||||
- Ne communiquez jamais votre mot de passe ni un code, même au gestionnaire. Il n'en a jamais besoin.
|
||||
- Méfiez-vous d'un email qui vous demande de vous connecter. Tapez vous-même l'adresse de Vivier.
|
||||
- Verrouillez votre écran quand vous quittez votre poste.
|
||||
- Sur un ordinateur partagé, utilisez **Déconnexion** en partant.
|
||||
- Téléchargez un CV seulement si vous en avez besoin, et supprimez la copie après usage.
|
||||
- Envoyez un CV anonymisé quand le nom n'est pas nécessaire.
|
||||
|
||||
# Signaler un problème
|
||||
|
||||
Prévenez le gestionnaire de Vivier sans attendre si :
|
||||
|
||||
- vous voyez une connexion que vous ne reconnaissez pas
|
||||
- vous avez perdu votre téléphone ou un ordinateur où Vivier était ouvert
|
||||
- vous avez saisi votre mot de passe sur une page douteuse
|
||||
- vous recevez un code ou un lien d'invitation que vous n'avez pas demandé.
|
||||
|
||||
Le gestionnaire peut fermer vos sessions, changer votre mot de passe, remettre à zéro votre double authentification et consulter le journal des connexions.
|
||||
Reference in new issue
Block a user