Commit graph

102 commits

Author SHA1 Message Date
Grovy311
cd89c4a499 Add buildings above floors and a building structure page
Projects with several buildings could not be structured: floors and rooms
hung directly off the project. Floors can now belong to a building
(migration 0009: table buildings, nullable floors.building_id). Rooms and
distribution boards keep their floor; their building follows from it.
Existing floors stay without a building.

Buildings use the location-structure command store with
project-building.insert/.update/.delete, inverses and persistent Undo/Redo;
deleting a building with assigned floors is rejected. Floor commands carry
buildingId since command version 2. Version 1 floor commands from existing
history predate buildings and are upgraded with buildingId = null before
they are executed and persisted, so forward and inverse keep one version.

Project snapshot schema 7 stores buildings and floor.buildingId; versions
1-6 are upgraded without buildings. Restore and portable transfer include
buildings, and the transfer remaps building ids.

Buildings, floors and rooms move from the project overview to their own
page /projects/:id/struktur with three columns (Gebäude -> Etagen -> Räume)
that filter each other, and a sidebar entry. Floor selects in the board and
room dialogs are grouped by building. Unchanged dialogs close without a
command. Details in docs/building-structure.md; see issue #6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 12:52:34 +02:00
Grovy311
7692699ee2 Add print cover fields and office profile
- Project settings gain siteAddress, workStage, projectLead and
  projectEditor (project.update-settings schema version 3, migration 0009);
  versions 2 and 1 stay executable and keep the current cover values.
  Snapshot schema 6 carries the fields; older versions upgrade with null.
- Global office profile (office name/address) next to the document logo:
  table document_branding_settings, PUT /api/document-branding/office,
  editable from the print view toolbar.
- Cover page reads all fields; empty values show the "[ergänzen]" marker.
  The Planstände editor column shows the project editor.
- Shared logo constants moved to a dependency-free module so the Next.js
  bundler can import them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 10:39:18 +02:00
Grovy311
4779e4a1a7 Add print view, board info card and document logo upload
- Seitenansicht (/projects/:projectId/print): tabular cover page, board
  overview with supply structure and power sums, one plan per board with a
  repeating title block; PDF via the browser print dialog with named @page
  rules (A4 portrait cover, A4/A3 landscape plans, page x of y).
- Distribution-board info card (board number, location, fed-from, remark)
  in the board edit dialog, persisted through the additively extended
  distribution-board.update command (migration 0008, snapshot schema 6,
  legacy subtree commands normalized).
- Global document logo upload (PNG/JPEG/SVG, max 2 MB) outside project
  revisions and snapshots.
- fed-from stays free text; the overview hierarchy and cumulated sums are
  preliminary until the feed link is modeled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 10:38:59 +02:00
a99980c47b Update docs for the code-review fixes
- circuit-list-editor-api.md: next-identifier moved under
  /projects/:projectId and now documents its 404 scoping behavior.
- current-architecture.md: clarify that the BMK trigger register's
  DB-level normalization is ASCII-only and describe the added
  application-level Unicode-aware uniqueness check that closes the
  umlaut gap; note the additive migration 0006 indexes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 21:33:28 +02:00
74bea1a3c9 Add Revit circuit list object feed 2026-08-02 18:59:01 +02:00
a69b7b603f Add external object new circuit command 2026-08-02 18:55:57 +02:00
347b3717c3 Add external object new row command 2026-08-02 18:44:46 +02:00
1a7dd7fe03 Add external object row assignment command 2026-08-02 18:38:38 +02:00
dac19b093c Add external row quantity foundation 2026-08-02 18:26:22 +02:00
bc2bc7ece5 Add Revit catalog creation flow 2026-08-02 18:08:18 +02:00
ab2449419b Add Revit initial import wizard 2026-08-02 17:52:21 +02:00
8646f346e6 Add Revit initial import apply API 2026-08-02 17:42:29 +02:00
c9e5fdd876 Add Revit initial import planning 2026-08-02 17:38:17 +02:00
c634570018 Add atomic Revit initial import 2026-08-02 17:33:32 +02:00
e87a3289fa Include external models in project snapshots 2026-08-02 17:25:25 +02:00
76493b573e Add external model persistence foundation 2026-08-02 17:18:24 +02:00
a9d6301753 Add Revit CSV project dialog 2026-08-02 16:59:18 +02:00
caa6caf99f Add Revit CSV preview API 2026-08-02 16:49:42 +02:00
219da5ec3b Persist Revit CSV configuration 2026-08-02 16:33:18 +02:00
44b6fde940 Add public building project setting 2026-07-31 17:41:30 +02:00
43a3bb0b69 Align documentation with clean baseline 2026-07-31 16:41:37 +02:00
1eed19ef6b Add editable project floors and rooms 2026-07-31 14:46:06 +02:00
734a2bcfc4 Create clean release database baseline 2026-07-31 14:07:26 +02:00
5bee3cb103 Add distribution board copy and delete controls 2026-07-31 12:03:52 +02:00
7c8d4a7ddf Document protected circuit groups 2026-07-31 08:06:10 +02:00
ab989cc637 Delete populated circuit groups safely 2026-07-31 08:01:55 +02:00
93ec294759 Move circuits between groups 2026-07-31 07:58:42 +02:00
be9c6f0d52 Renumber circuit groups explicitly 2026-07-31 07:53:07 +02:00
0cb280ddb2 Reorder circuit groups 2026-07-31 07:47:45 +02:00
8898117ed4 Configure circuit protection 2026-07-31 07:45:48 +02:00
18ca5eb3d4 Persist circuit protection updates 2026-07-31 07:37:38 +02:00
0c92fbd09e Manage circuit groups 2026-07-31 07:32:46 +02:00
756e307bd8 Manage distribution board components 2026-07-31 07:29:25 +02:00
31589875b5 Render protected circuit structure 2026-07-31 07:22:26 +02:00
ac21d6eb5d WIP multiple sections 2026-07-30 20:27:17 +02:00
7a9530a914 Expose protected tree structure 2026-07-30 20:14:45 +02:00
99bdf6491b Persist populated group deletion 2026-07-30 20:10:10 +02:00
db4c757018 Define circuit group subtrees 2026-07-30 20:06:09 +02:00
3399fcd88b Persist circuit group moves 2026-07-30 20:03:11 +02:00
9ad91887b2 Plan circuit group moves 2026-07-30 19:58:45 +02:00
07925b2fd9 Persist circuit group renumbering 2026-07-30 19:56:59 +02:00
63650a623c Plan circuit group renumbering 2026-07-30 19:51:44 +02:00
e702712bd8 Add circuit group reordering 2026-07-30 19:49:27 +02:00
1250f9a6af Add circuit group commands 2026-07-30 19:46:55 +02:00
69b020339e Add component update commands 2026-07-30 19:42:09 +02:00
604604f056 Add component structure commands 2026-07-30 19:38:48 +02:00
9d4d4082fe Create protected board defaults 2026-07-30 19:30:53 +02:00
012308984d Include components in project snapshots 2026-07-30 19:24:28 +02:00
e7607c90c4 Add component persistence foundation 2026-07-30 19:15:00 +02:00
9ea081179d Add distribution power summaries 2026-07-29 19:02:18 +02:00