Commit Graph

243 Commits

Author SHA1 Message Date
seb
c78237a1dd Persist Google picture and sub on login via setProfile.
Store profile fields from the verified ID token and read picture from the DB on authenticated requests.
2026-08-05 11:04:44 +02:00
seb
782c49a680 Add article history by SKU and SSE update signals for live clients.
Expose getHistoryBySku as GET /article/:sku/history, and document mutation-emitted company signals via GET /events.
2026-08-05 09:54:56 +02:00
seb
4a9403bfd1 export 2026-08-04 01:24:19 +02:00
seb
c6cb1bc229 feat: add article search index endpoint and category export.zip
- Add GET /api/articleIndex returning the article search index (listSearchIndex)
- Add GET /api/category/export.zip returning a kategorien.zip with a
  Windows-1252 CSV (depth-first, Ebene N columns) plus one AVIF per category image
  (content-addressed, deduplicated) using jszip
2026-08-04 00:30:32 +02:00
seb
bfcb073e32 fix: unwrap double-nested article response in GET /api/article/:sku 2026-08-03 08:38:26 +02:00
seb
a3f8ff0e93 feat: add category image upload/delete endpoints
- POST /category/:id/image - upload AVIF image for a category
- DELETE /category/:id/image - remove category image
- Returns { category: { id, fullHash, thumbW, thumbH, thumbHash } }
- Full image stored as-is when AVIF ≤1000x1000, otherwise scaled
- Thumb always scaled to max 200x200
2026-08-03 07:38:38 +02:00
seb
c8f8dd3d54 typo 2026-08-03 06:45:00 +02:00
seb
a4b78ad6d5 feat: add posterminal API endpoints
- Add posterminal to STORE_NAMESPACES for timing wrappers
- Create db/posterminal.js wrapper for store methods
- Create routes/posterminal.js with all endpoints:
  - GET /api/posterminal - list terminals
  - PUT /api/posterminal - create terminal (name only, pin randomized)
  - DELETE /api/posterminal/:id - delete terminal
  - PUT/DELETE /api/posterminal/:id/category/:categoryId - toggle category
  - PUT/DELETE /api/posterminal/:id/categories - toggle all categories

Closes #<issue-number>
2026-08-03 06:32:39 +02:00
seb
b132f0c17c u 2026-08-03 03:57:20 +02:00
seb
f2b6715961 Remove dedicated POST /category/:id/move route.
Dropping the standalone move endpoint; category relocation is now covered
by PATCH /category/:id via parentId (merged with name rename). Removes the
move route docs and regenerates API docs.
2026-08-03 03:07:50 +02:00
seb
c8f6936aa6 Extend PATCH /category/:id to also move (parentId) alongside rename.
PATCH now accepts name (rename, re-slugify) and/or parentId (move under a
new parent, cycle/self guarded), merging both results. Renames the PATCH
docs file to category/update.md and regenerates API docs.
2026-08-03 03:05:45 +02:00
seb
faefa3b9cf Add POST /category/:id/move to relocate a category.
Wires up the existing category.move store method (validates source and
target in the same company, rejects self/descendant cycles, assigns the
next sibling sort) behind an authenticated HTTP route, plus @openapi
docs and regenerated API docs.
2026-08-03 03:01:53 +02:00
seb
a0f9a8a716 Add PUT /category/order to reorder sibling categories.
Wires up existing category.order store method (validates categoryIds are
exactly the current children of parentId, sets each child sort to its
index in one transaction) behind an authenticated HTTP route, plus
@openapi docs and regenerated API docs.
2026-08-02 19:42:54 +02:00
seb
aed0857f23 u 2026-08-02 19:04:56 +02:00
seb
bfb1d8762a Add unit API and article unitamount/unitSi patch.
Units use the selected company; article PATCH accepts name/unitamount/unitSi.
2026-08-01 06:15:30 +02:00
seb
aba9779161 Update API documentation for POS price replacement to clarify pricing as gross and adjust example values. 2026-08-01 06:00:15 +02:00
seb
8a94abf1c9 Add PUT /article/:sku/prices for POS price replace-all. 2026-08-01 05:17:33 +02:00
seb
bdcd745c4d Add compact colored prettyJson helper for request logs. 2026-08-01 04:40:32 +02:00
seb
71c8507805 rule 2026-08-01 03:46:01 +02:00
seb
e8d8846de7 u 2026-08-01 03:39:10 +02:00
seb
eaee806569 u 2026-08-01 03:37:49 +02:00
seb
067503f4ed u 2026-08-01 02:15:29 +02:00
seb
152879bf9f u 2026-08-01 01:55:37 +02:00
seb
60d623f7df u 2026-08-01 01:36:54 +02:00
seb
c77337507f u 2026-07-31 20:10:14 +02:00
seb
6074aa7304 u 2026-07-31 18:25:42 +02:00
seb
1a05a5b7d6 u 2026-07-31 18:20:54 +02:00
seb
63df454861 u 2026-07-31 17:52:04 +02:00
seb
18ee68312f u 2026-07-31 09:12:36 +02:00
seb
52355aba4a u 2026-07-31 07:07:31 +02:00
seb
043305c04c u 2026-07-31 07:07:12 +02:00
seb
db8b192094 u 2026-07-31 05:54:13 +02:00
seb
6db7d4d75c u 2026-07-19 23:42:28 +02:00
seb
92dc32bf12 cat 2026-07-19 19:43:23 +02:00
seb
eea8e99358 search update 2026-07-19 17:09:14 +02:00
seb
06c235055a watch 2026-07-19 17:07:26 +02:00
seb
b320887508 search 2026-06-29 19:42:04 +02:00
seb
3bff749b49 reshape search 2026-06-29 10:23:32 +02:00
seb
b278d3cf92 cleasnup 2026-06-24 09:54:34 +02:00
seb
9b11a8a24c services 2026-06-24 09:50:08 +02:00
seb
185b68fe52 search 2026-06-24 09:37:34 +02:00
seb
977ece3099 docs 2026-06-23 11:18:46 +02:00
seb
667f498573 Genesis 2026-06-23 11:04:07 +02:00