Commit Graph

17 Commits

Author SHA1 Message Date
03c6adc77e Add per-role badge colors 2026-07-20 10:08:14 -04:00
384b8f7668 ADR-014 Phase 2: flask plugin prune-schema for lean per-site DBs 2026-07-19 11:39:51 -04:00
99025d10f0 ADR-013 Phase 5: lean per-site builds (build-site.sh + guards + CI) 2026-07-19 00:11:41 -04:00
fd2ab0ab1c ADR-013 Phase 3 complete: asset-panels + asset-presentation + map-overlays renderers 2026-07-18 23:10:27 -04:00
69922a4e16 ADR-013 Phase 3: asset-presentation search routing 2026-07-18 22:59:19 -04:00
72e3484497 ADR-013 Phase 3: generic asset-panels renderer (Path A) 2026-07-18 22:44:06 -04:00
197b51f2b3 ADR-013 Phase 2: import guard round-4 fix (init-less dir .py sibling) 2026-07-18 22:28:40 -04:00
bbd5224bcd ADR-013 Phase 2: import guard hardening (round-3 review fixes) 2026-07-18 22:12:27 -04:00
83a5ce79d9 ADR-013 Phase 2: meta_path import guard (re-review fix) 2026-07-18 21:47:40 -04:00
77ca2e0d2d ADR-013 Phase 2: enforcement + signed shelf + adopt (adversarial-review hardened) 2026-07-18 21:06:38 -04:00
0ff5edc553 ADR-013 Phase 1: signed plugin artifacts (pack/validate/keygen) 2026-07-18 20:22:07 -04:00
41f5dbf5e0 ADR-013 Phase 0: plugin lifecycle groundwork (validate, apply-profile, dependency fixes) 2026-07-18 18:08:48 -04:00
365b0f2f69 printedparts: gage-lab asset tag + print-files redesign
The gage lab assigns real WJRP asset numbers: internal itemcode stays
auto-minted, a new optional unique gagelabtag carries the lab's number,
searchable and kiosk-resolved (scans and bare digits against either
identifier). Print files render as stacked revision cards instead of a
scrolling table.
2026-07-17 14:01:10 -04:00
fce7937b9b Shopfloor feed resolves employee names live when none is stored
Photos already resolved at read time; names only came from the stored
column, so imports without the employee source showed bare SSOs. New
mode-aware display-name resolver backs a live fallback; stored names
still win.
2026-07-17 13:29:35 -04:00
6de329a390 Users: deleting a user clears their API tokens and detaches audit rows
Deleting any user who owned an API token or appeared in the audit log
hit the users FK and returned 500. Tokens are revoked outright; audit
history is kept but detached so the trail survives the account.
2026-07-17 10:54:48 -04:00
11c8d79ba4 Add the printedparts plugin: 3D-printed parts storefront and kiosk
Catalog with photos and append-only print-file revisions, a stock
ledger attributing every take/restock/adjust to a badge-resolved
employee, a touch kiosk (scan bin, scan badge, keypad quantity) with a
deliberately open decrement-only take endpoint, 1x0.5in CODE128 bin
labels, low-stock email alerts to selected users, roles, or addresses,
and stock/consumption/by-person reports with a cache-vs-ledger
reconcile. Ships disabled; enable per site. Contract 0.13.0 adds the
mailer and the User/Role models to the plugin surface.
2026-07-17 09:29:01 -04:00
a9d0dfff4a Initial import: shopdb-flask multi-site asset platform
Flask + Vue rewrite of the classic-ASP shopdb, built as a plugin
framework so sister GE Aerospace sites can adopt it. Product version
0.7.0-pre-0.8.0, plugin contract 0.11.0, 966 backend tests.

Key entry points:
- docs/INSTALL-WINDOWS-IIS.md - tested Windows + IIS install runbook
  (own-site and subpath deployment methods)
- docs/PILOT-DEPLOY.md - production pilot: stand up + import + verify
- docs/IMPORT-API.md - schema-agnostic legacy data import contract
- scripts/site_imports/wjf/ - West Jefferson reference import loader
- docs/adr/ - twelve accepted architecture decision records
2026-07-14 07:58:51 -04:00