Imugiii
49ab77b3a3
feat(admin): CRUD produits avec PIN conditionnel et audit
...
CI / php-lint (push) Successful in 25s
CI / secret-scan (pull_request) Successful in 9s
CI / secret-scan (push) Successful in 13s
CI / static-tests (push) Successful in 36s
CI / php-lint (pull_request) Successful in 19s
CI / static-tests (pull_request) Successful in 41s
CI / auto-merge (push) Has been skipped
CI / auto-merge (pull_request) Failing after 5s
CRUD produits server-rendered sous /admin/products (index/create/edit/delete).
- ProductRepository sur DatabaseInterface : all/find/create/update/delete +
categoryExists, allowlist mass-assignment (RG-T16).
- ProductController : validation serveur bornee (RG-T18) — categorie existante,
nom <=120, prix > 0 et <= UINT32, TVA dans {55,100}, image <=255,
display_order 0..65535.
- PIN equipier (RG-T13) exige UNIQUEMENT si price_cents ou vat_rate change a
l'update, et systematiquement a la suppression ; sinon write simple sans PIN.
- audit_log (RG-T14) ecrit dans la meme transaction (RG-T08) que la mutation,
acteur resolu via PinVerifier::resolveActingUser (email + PIN, is_active = 1).
- Suppression FK-safe : hard delete seulement si non referencee, sinon
PDOException 23000 -> 422.
- Mitigation brute-force PIN : chaque echec ecrit un audit_log pin.failed
(detectable). Le throttle PIN degressif complet est un chunk dedie a venir.
Tests : 172 verts (452 assertions), PHPStan L6 clean.
2026-06-15 20:31:51 +00:00
f63ac9873c
feat: PIN self-service P3 (/admin/profile/pin) ( #16 )
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 18s
CI / static-tests (push) Successful in 35s
CI / auto-merge (push) Has been skipped
2026-06-15 22:04:14 +02:00
8290ceabc4
feat: CRUD categories P3 (rendu serveur, garde + CSRF + validation) ( #15 )
CI / secret-scan (push) Successful in 7s
CI / php-lint (push) Successful in 18s
CI / static-tests (push) Successful in 27s
CI / auto-merge (push) Has been skipped
2026-06-15 21:45:31 +02:00
2bc22ab5c8
feat: shell back-office P3 (pages rendues serveur + garde) ( #14 )
CI / secret-scan (push) Successful in 7s
CI / php-lint (push) Successful in 16s
CI / static-tests (push) Successful in 30s
CI / auto-merge (push) Has been skipped
2026-06-15 21:25:06 +02:00
7c35f8e2dc
feat: PIN d action sensible P2 (PinVerifier RG-T13) ( #13 )
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 16s
CI / static-tests (push) Successful in 30s
CI / auto-merge (push) Has been skipped
2026-06-15 21:00:11 +02:00
f979a2339e
feat: RBAC P2 (autorisation par permission + garde de session + /api/me) ( #12 )
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 19s
CI / static-tests (push) Successful in 33s
CI / auto-merge (push) Has been skipped
2026-06-15 20:45:19 +02:00
1b0b20c12d
feat: authentification back-office P2 (login/logout/reset, throttle, audit) ( #11 )
CI / secret-scan (push) Successful in 7s
CI / php-lint (push) Successful in 17s
CI / static-tests (push) Successful in 32s
CI / auto-merge (push) Has been skipped
2026-06-15 20:18:59 +02:00
c8f5370cfd
refactor(core): src/app structure + fix auto-merge label gate ( #10 )
CI / secret-scan (push) Successful in 7s
CI / php-lint (push) Successful in 19s
CI / static-tests (push) Successful in 32s
CI / auto-merge (push) Has been skipped
2026-06-15 17:01:10 +02:00
93a6b8e292
Merge pull request 'feat(core): PHP MVC skeleton from scratch (autoloader/router/PDO + tests + CI)' ( #9 ) from feat/p2-core-php into dev
...
CI / secret-scan (push) Successful in 9s
CI / php-lint (push) Successful in 29s
CI / static-tests (push) Successful in 34s
CI / auto-merge (push) Has been skipped
Reviewed-on: #9
2026-06-15 16:24:45 +02:00
Imugiii
56d0b941e8
ci: install php-xml/php-mbstring for phpunit/phpstan (bookworm php-cli lacks dom/mbstring/xml)
CI / php-lint (push) Successful in 23s
CI / static-tests (push) Successful in 41s
CI / secret-scan (pull_request) Successful in 13s
CI / secret-scan (push) Successful in 9s
CI / php-lint (pull_request) Successful in 27s
CI / static-tests (pull_request) Successful in 37s
CI / auto-merge (push) Has been skipped
CI / auto-merge (pull_request) Has been skipped
2026-06-15 14:18:10 +00:00
Imugiii
e265b0cb92
Merge remote-tracking branch 'forgejo/dev' into feat/p2-core-php
CI / static-tests (pull_request) Failing after 35s
CI / secret-scan (pull_request) Successful in 11s
CI / php-lint (pull_request) Successful in 26s
CI / secret-scan (push) Successful in 13s
CI / php-lint (push) Successful in 26s
CI / static-tests (push) Failing after 31s
CI / auto-merge (pull_request) Has been skipped
CI / auto-merge (push) Has been skipped
2026-06-15 14:13:49 +00:00
Imugiii
8c93b26ec0
feat(core): from-scratch PHP MVC skeleton (autoloader/config/PDO/router/front controller) + PHPUnit/PHPStan + composer-less CI
2026-06-15 14:13:49 +00:00
dca5860869
Merge pull request 'feat(db): seed data (RBAC + allergens + catalogue)' ( #8 ) from feat/p2-seed-data into dev
...
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 18s
CI / static-tests (push) Successful in 5s
CI / auto-merge (push) Has been skipped
Reviewed-on: #8
2026-06-15 15:57:14 +02:00
Imugiii
04404dc8c5
docs: clarify manager has read-only user access (user.read), not zero access
CI / secret-scan (pull_request) Successful in 7s
CI / php-lint (pull_request) Successful in 18s
CI / static-tests (pull_request) Successful in 4s
CI / auto-merge (push) Has been skipped
CI / auto-merge (pull_request) Has been skipped
CI / secret-scan (push) Successful in 10s
CI / php-lint (push) Successful in 18s
CI / static-tests (push) Successful in 5s
2026-06-15 13:47:58 +00:00
Imugiii
fcf52a0895
feat(db): seed data - RBAC matrix + INCO allergens + admin user + catalogue (9 cat / 53 products / 13 menus + composition)
CI / secret-scan (push) Successful in 11s
CI / static-tests (push) Successful in 9s
CI / secret-scan (pull_request) Successful in 10s
CI / php-lint (push) Successful in 26s
CI / php-lint (pull_request) Successful in 25s
CI / static-tests (pull_request) Successful in 7s
CI / auto-merge (push) Has been skipped
CI / auto-merge (pull_request) Has been skipped
2026-06-15 13:45:14 +00:00
41f9c96d33
feat(db): initial schema DDL (21 tables) + migration runner ( #6 )
CI / secret-scan (push) Successful in 9s
CI / php-lint (push) Successful in 16s
CI / static-tests (push) Successful in 4s
CI / auto-merge (push) Has been skipped
2026-06-15 15:36:05 +02:00
5581d2adea
ci: opt-in auto-merge job (label-gated, API merge on green) ( #7 )
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 21s
CI / static-tests (push) Successful in 4s
CI / auto-merge (push) Has been skipped
2026-06-15 15:31:49 +02:00
2a67b6fc34
docs(merise): traduction de la prose en francais (identifiants inchanges) ( #5 )
CI / secret-scan (push) Successful in 9s
CI / php-lint (push) Successful in 17s
CI / static-tests (push) Successful in 5s
2026-06-15 15:23:06 +02:00
79d8ad9985
docs(merise): MLD relational schema diagrams (4 sub-domains) ( #4 )
CI / secret-scan (push) Successful in 12s
CI / php-lint (push) Successful in 21s
CI / static-tests (push) Successful in 5s
2026-06-15 12:39:59 +02:00
32ff6a63ba
P1 conception: security-by-design layer (Merise 21 entities, Forgejo CI/CD, hardening) ( #3 )
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 16s
CI / static-tests (push) Successful in 4s
2026-06-15 12:16:11 +02:00
822fdc1bc4
ci: add Forgejo Actions pipeline + gitleaks secret-scan ( #2 )
CI / secret-scan (push) Successful in 7s
CI / php-lint (push) Successful in 15s
CI / static-tests (push) Successful in 6s
2026-06-15 12:01:31 +02:00
Imugiii
971ce0c7d0
chore: add Forgejo PR template (BYAN conventions)
2026-06-04 15:31:38 +00:00
Imugiii
a3eae01906
Merge pull request #6 from AcadeNice/feat/p3-admin-shell
...
feat(admin): admin back-office visual shell (P3 scaffold)
2026-06-04 17:28:31 +02:00
Imugiii
803b840536
Merge pull request #4 from AcadeNice/feat/p5-front-landing
...
feat(front): P5 kiosk complete flow with vanilla JS and JSON fallback
2026-06-04 17:28:13 +02:00
Imugiii
a9938b6e5c
Merge pull request #5 from AcadeNice/feat/p1-conception
...
docs(merise): MCD diagrams in drawio XML (4 files)
2026-06-04 17:27:52 +02:00
Imugiii
392ba9a040
docs(merise): rewrite MLT to prod-like v0.2 (logical treatment rules)
...
service_day 10h cutoff, VAT snapshot by line, drive cross-constraint, atomic stock
decrement/re-credit, optimistic concurrency on status, dashboard filter by role_visible_source,
Maxi format multiplier (quantity_normal/quantity_maxi).
2026-06-04 15:17:33 +00:00
Imugiii
6057ef990f
docs(merise): rewrite MCT to prod-like v0.2 (4-state machine)
...
Drop MARK_IN_PREPARATION / MARK_READY; DELIVER_ORDER as single counter/drive gesture.
Add stock operations (sale decrement, restock, inventory_correction) and RBAC operations.
Actors: 5 seed roles + customer.
2026-06-04 15:17:33 +00:00
Imugiii
36332b4284
docs(merise): rewrite MLD to prod-like v0.2 (19 tables)
...
Polymorphic order_item (exclusivity CHECK), composite-PK join tables, service_day as
query-time CASE (10h cutoff, generated column dropped), line-by-line VAT, ON DELETE rules,
recommended indexes.
2026-06-04 15:17:33 +00:00
Imugiii
6c1cede3f0
docs(merise): rewrite MCD to prod-like v0.2 (19 entities across 4 subdomains)
...
Catalogue / Ingredients and Stock / Order / RBAC subdomains, Mermaid erDiagram inline,
Merise (min,max) cardinality tables, cross-validation 19/19.
2026-06-04 15:17:33 +00:00
Imugiii
6ceebf7fb1
docs(merise): rewrite data dictionary to prod-like v0.2 (19 entities, English)
...
Drop commande_event and menu_produit. Add ingredient configurator (ingredient,
product_ingredient, allergen, ingredient_allergen), numeric stock (stock_movement),
customizable menus (menu_slot, menu_slot_option, order_item_selection, order_item_modifier),
RBAC role attributes (default_route, order_source) and role_visible_source. VAT carried by
product (vat_rate), 4-state order machine, English snake_case naming. Decisions D1-D8 + stock.
2026-06-04 15:17:33 +00:00
Imugiii
de355da54c
docs: journal entry for 2026-06-04 prod-like conception decisions
...
Records the alignment review of all project docs and the point-by-point
decision session: drop commande_event, English naming convention, VAT
carried by product (after BOFiP fact-check), real menu customization,
full ingredient configurator, allergen modal. Lists open points D4-D8.
2026-06-04 10:19:25 +00:00
Imugiii
b8cb3ef68d
docs(merise): commit P1 conception v0.1 (dictionary, MCD, MCT, MLT, MLD) + UML
...
Baseline of the P1 conception work produced over sessions 5-7 (was
uncommitted in the working tree). 11-entity model, French naming.
Superseded next by the prod-like revision (English, ~16 entities) per
the 2026-06-04 decision session - this commit preserves the baseline
in history before that rewrite.
2026-06-04 10:19:25 +00:00
Imugiii
17b792acfa
feat(admin): vanilla JS for dropdowns, sortable tables, inline search
2026-05-09 09:27:51 +00:00
Imugiii
199d926903
feat(admin): orders, kitchen view, users pages with realistic placeholders
2026-05-09 09:27:48 +00:00
Imugiii
447cc598f6
feat(admin): catalogue page with tabs categories/products/menus
2026-05-09 09:27:45 +00:00
Imugiii
b9a5414c37
feat(admin): dashboard with KPI cards and recent orders table
2026-05-09 09:27:42 +00:00
Imugiii
0b028e534b
feat(admin): admin design system CSS (palette, typography, components)
2026-05-09 09:27:40 +00:00
Imugiii
6f07238569
feat(admin): scaffold login screen and admin layout shell (sidebar, topbar)
2026-05-09 09:27:38 +00:00
Imugiii
c9fafd1c78
feat(front): render menu composition breakdown in cart lines with supplement total
2026-05-09 09:18:56 +00:00
Imugiii
e64adb60d3
feat(front): add menu composer multi-step logic and burger pre-selection
2026-05-09 09:18:49 +00:00
Imugiii
ad0b59a668
feat(front): extend cart state for menu composition with size supplements
2026-05-09 09:18:47 +00:00
Imugiii
6db68da0f9
feat(front): add menu composer modal HTML structure and CSS
2026-05-09 09:18:42 +00:00
Imugiii
6a7e772646
feat(front): extend CSS design system for P5 new screens
...
Adds components (sections 7-13 in style.css):
- Shared: .btn, .mode-badge, .cart-badge, .site-header__cart
- products page: .products-grid, .product-card (3-col grid)
- product detail: .product-detail, skeleton animation, composition block
- cart: .cart-line, .qty-btn, .cart-summary
- payment: .payment-choice with inline SVG icons
- confirmation: .confirmation-banner with check animation
All new components reuse existing design tokens; no new palette entries.
2026-05-09 07:59:50 +00:00
Imugiii
0d83512a4f
feat(front): payment selection and order confirmation pages
...
payment.html - card / cash choice with inline SVG icons; both simulate payment (MVP)
confirmation.html - order number WK-<base36 timestamp>, cart cleared on load,
new-order button resets flow to index.html
2026-05-09 07:59:45 +00:00
Imugiii
c517b16569
feat(front): cart page with quantity controls and TVA breakdown
...
Displays line items with - / + controls and delete button.
TVA 10% (restauration FR 2024, simplified).
TODO in P3: verify rate with accountant (sur-place vs a-emporter + product type).
Abandon button clears cart and returns to categories.
2026-05-09 07:59:40 +00:00
Imugiii
cd6e05c353
feat(front): products list and product detail pages
...
products.html - dynamic grid from ?category=<id>, JS fetch from data/produits.json
product.html - detail view; menus show fixed composition note (MVP: no selection)
Both pages: cart badge, mode badge, keyboard/RGAA accessible cards
2026-05-09 07:59:35 +00:00
Imugiii
43b6e7a309
feat(front): vanilla JS state management, data loader, and nav helpers
...
state.js - cart (localStorage) + mode + price formatting in centimes
data.js - fetch wrapper over static JSON with in-memory cache; P4 swap points marked
nav.js - mode badge injection and cart count badge across pages
2026-05-09 07:59:31 +00:00
Imugiii
6f5daca679
feat(front): copy school JSON sources to public/data for static fetch fallback
...
Normalizes produits.json:
- Prix converted from float EUR to integer centimes
- Image paths rewritten to match actual filesystem (lowercase, dashes)
- Added type field ('produit'|'menu') on each entry
- Added slug field to categories.json
In P4, swap fetch URLs in assets/js/data.js (marked with TODO comments).
2026-05-09 07:59:26 +00:00
Imugiii
71c863d2b2
feat(front): borne welcome screen and category list scaffold using school assets
...
- Welcome screen (index.html): background photo, white card, Sur Place / A Emporter
choice buttons with verified school illustrations; pure HTML <a> navigation, no JS
- Category grid (categories.html): 9 categories from categories.json rendered as 3-col
card grid with verified category images; stub links to products.html?category=<id>
- Design system CSS (assets/css/style.css): CSS custom properties for brand yellow
#FFC72C, spacing scale, border-radius, shadows extracted from maquette PDF;
BEM-style component classes; WCAG AA focus-visible rings; kiosk portrait 1080px primary
2026-05-09 07:12:55 +00:00
Imugiii
64f5a279da
docs(merise): add drawio XML sources for MCD diagrams
...
Switch from Mermaid to drawio for MCD diagrams to gain manual layout
control on the global view (10 entites + 10 associations, planarite
intrinseque non resolue par Mermaid auto-layout).
- mcd-global.drawio : 10 entites + 8 associations (vue compacte sans attributs)
- mcd-catalogue.drawio : Categorie / Produit / Menu / MenuProduit avec attributs
- mcd-commande.drawio : Commande / LigneCommande + polymorphisme vers Produit/Menu
- mcd-rbac.drawio : User / Role / Permission / RolePermission
Notation Merise (min,max) sur chaque cote d'association. Layout de
depart a affiner manuellement dans drawio web (Edit Diagram -> XML).
SVG a regenerer en exportant depuis drawio web.
2026-05-09 07:03:27 +00:00