Employee directory: note it varies per site + add self-hosted option

- Flag the employee directory as the integration most likely to differ per
  site; USB (cmmc_usb) is standardized and rarely needs adaptation.
- Add "Option B: stand up a self-hosted directory" with the canonical employees
  table DDL, for sites with no HR database. In-app management (CRUD/CSV import)
  noted as a possible future enhancement.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
cproudlock
2026-07-10 08:39:53 -04:00
parent 65b0197b2b
commit bad7aa29bb
2 changed files with 43 additions and 0 deletions

View File

@@ -8,6 +8,10 @@ Read-only lookups against a **separate** employee/HR directory database. Powers:
The plugin never writes to this database. Use a read-only account.
> **This is the integration most likely to differ per site.** HR / directory
> systems vary widely, so expect to map a site's schema to the contract below -
> the `CREATE VIEW` recipe at the end is the normal way to do it.
## Connection
Credentials resolve **settings-first, then environment**, except the password
@@ -63,6 +67,39 @@ The app renders it as `/static/employees/<Picture>`, so the image files must
live in the app's `static/employees/` directory. Leave `Picture` empty/NULL for
people with no photo; the UI falls back to initials.
## Two ways to provide the directory
**Option A - map an existing HR/directory database** (see the view recipe
below). Use this when the site already has a system of record for people.
**Option B - stand up a self-hosted directory** for sites with no HR database.
Create the canonical table and point `employee_db_*` at it:
```sql
CREATE DATABASE shopdb_directory CHARACTER SET utf8mb4;
USE shopdb_directory;
CREATE TABLE employees (
SSO INT NOT NULL PRIMARY KEY,
First_Name VARCHAR(100) NOT NULL,
Last_Name VARCHAR(100) NOT NULL,
Team VARCHAR(100) NULL,
Role VARCHAR(100) NULL,
Picture VARCHAR(255) NULL
);
-- add people (or bulk-load from CSV with LOAD DATA INFILE)
INSERT INTO employees (SSO, First_Name, Last_Name, Team, Role, Picture)
VALUES (123456, 'Jane', 'Doe', 'Inspection', 'Quality Tech', '123456.jpg');
```
Put photo files (named as in `Picture`) under the app's `static/employees/`.
This can be a dedicated MySQL database or another schema on the same server as
the main app DB - the plugin connects to it independently.
> A future enhancement could manage this self-hosted directory in-app (add /
> edit people, CSV import) so a site needs no direct SQL. Not built yet.
## Adapting a different site schema (recommended: a view)
Sites whose HR/directory database uses different table or column names should