P12 Flow-Editor Neuausrichtung + alle 30 Baustein-Konfig-Modale

- Flow-Editor auf n8n-Stil umgestellt: V1 Vollbild minimal als Basis (Vollbild-Canvas, Umschalter Bauen/Aktivität/Auswertung, Probelauf unten Mitte, Aktiv-Toggle + History im Header)
- Baustein-Konfig als Modal entschieden (Dialog-Komponente); S05a Vorplanung mit allen 31 Panels, 30 v1-Panels in Subframe gebaut (K-Seiten, Nacht-Build 2026-07-12)
- Subframe-Links + Abgleich-Notizen in P12-Screens und Tracker nachgetragen
- D-FORM Form Builder: Review-Stand, Simple-Builder-Neuausrichtung, aufgeräumte Varianten
- P15 Kommunikation + P16 Termine Pakete, Map/Canvas-Pflege

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
davidandClaude Fable 5 committed 2026-07-13 19:45:43 +02:00
1 parent ef07e3d005
commit 04220c1431
100 files changed
+10937 -2185

No files matched your search

+3 -1
View File
@@ -1,3 +1,5 @@
[
"editor-width-slider"
"editor-width-slider",
"better-embedded-canvas",
"advanced-canvas"
]
File diff suppressed because it is too large. Load diff
+11
View File
@@ -0,0 +1,11 @@
{
"id": "advanced-canvas",
"name": "Advanced Canvas",
"version": "6.4.0",
"minAppVersion": "1.7.2",
"description": "Supercharge your canvas experience! Create presentations, flowcharts and more!",
"author": "Developer-Mike",
"authorUrl": "https://github.com/Developer-Mike",
"fundingUrl": "https://ko-fi.com/X8X27IA08",
"isDesktopOnly": false
}
+536
View File
@@ -0,0 +1,536 @@
/* src/styles.scss */
.ac-settings .properties-field > .setting-item-info {
flex: 0;
margin: 0;
padding: var(--size-4-1) var(--size-4-2);
border: var(--input-border-width) solid var(--background-modifier-border);
border-radius: var(--input-radius) 0 0 var(--input-radius);
}
.ac-settings .properties-field > .setting-item-control > input {
width: 100%;
border-radius: 0 var(--input-radius) var(--input-radius) 0;
}
.ac-settings .ac-settings-heading:not(:first-child) {
margin-top: var(--size-4-10) !important;
}
.ac-settings .ac-settings-heading:has(.checkbox-container:not(.is-enabled)) {
border-bottom-color: var(--background-modifier-border-hover);
}
.ac-settings .ac-settings-heading .setting-item-description {
margin-inline-end: 20px;
}
.ac-settings .settings-header-children {
transform-origin: top center;
transform: scaleY(1);
transition: transform 0.2s ease-in-out;
}
.ac-settings .ac-settings-heading:has(.checkbox-container:not(.is-enabled)) + .settings-header-children {
opacity: 0.5;
pointer-events: none;
height: 0;
transform: scaleY(0);
}
.ac-settings .setting-item > .setting-item-control input[type=text] {
width: 75px;
}
.ac-settings details.setting-item {
flex-direction: column;
align-items: initial;
}
.ac-settings details.setting-item:not([open]) {
row-gap: 0;
}
.ac-settings details.setting-item[open] {
padding-bottom: var(--size-4-2);
}
.ac-settings details.setting-item[open] > summary {
margin-bottom: var(--size-4-2);
}
.ac-settings details.setting-item > *:not(summary) {
border: 1px solid var(--background-primary);
}
.ac-settings .kofi-banner {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: var(--size-4-3);
background-color: var(--background-primary-alt);
border-radius: var(--radius-m);
}
.ac-settings .kofi-banner .ac-kofi-banner-title {
margin: 0;
font-size: var(--font-ui-small);
font-weight: 600;
}
.ac-settings .kofi-banner .ac-kofi-button {
width: min-content;
height: min-content;
line-height: 0;
}
.ac-settings .kofi-banner .ac-kofi-button img {
min-width: 75px;
width: 25%;
max-width: 100px;
}
.canvas-wrapper > .document-search-container {
transform: translateZ(0);
margin: 0;
}
.canvas-wrapper:not(.mod-readonly) .show-while-readonly {
display: none;
}
.canvas-control-item[data-toggled=true] {
background-color: var(--color-accent);
}
.canvas-control-item[data-toggled=true] svg {
stroke: var(--text-on-accent);
}
.reactive-node,
.canvas-node[data-shape=database],
.canvas-node[data-shape=document],
.canvas-node[data-shape=predefined-process],
.canvas-node[data-shape=diamond] {
--border-color: rgb(var(--canvas-color));
--border-width: 3px;
--box-shadow: none;
}
.reactive-node.is-focused,
.is-focused.canvas-node[data-shape=database],
.is-focused.canvas-node[data-shape=document],
.is-focused.canvas-node[data-shape=predefined-process],
.is-focused.canvas-node[data-shape=diamond],
.reactive-node.is-selected,
.is-selected.canvas-node[data-shape=database],
.is-selected.canvas-node[data-shape=document],
.is-selected.canvas-node[data-shape=predefined-process],
.is-selected.canvas-node[data-shape=diamond] {
--border-color: var(--color-accent);
--border-width: 5px;
--box-shadow: var(--shadow-border-accent);
}
.reactive-node.is-themed,
.is-themed.canvas-node[data-shape=database],
.is-themed.canvas-node[data-shape=document],
.is-themed.canvas-node[data-shape=predefined-process],
.is-themed.canvas-node[data-shape=diamond] {
--border-color: rgba(var(--canvas-color), 0.7);
}
.reactive-node.is-themed.is-focused,
.is-themed.is-focused.canvas-node[data-shape=database],
.is-themed.is-focused.canvas-node[data-shape=document],
.is-themed.is-focused.canvas-node[data-shape=predefined-process],
.is-themed.is-focused.canvas-node[data-shape=diamond],
.reactive-node.is-themed.is-selected,
.is-themed.is-selected.canvas-node[data-shape=database],
.is-themed.is-selected.canvas-node[data-shape=document],
.is-themed.is-selected.canvas-node[data-shape=predefined-process],
.is-themed.is-selected.canvas-node[data-shape=diamond] {
--border-color: rgb(var(--canvas-color));
--box-shadow: var(--shadow-border-themed);
}
.canvas-node[data-text-align=center] .markdown-preview-view {
scrollbar-gutter: auto;
}
.canvas-node[data-text-align=center] .markdown-preview-view .markdown-preview-section {
display: flex;
flex-direction: column;
justify-content: center;
text-align: center;
vertical-align: middle;
}
.canvas-node[data-text-align=right] {
text-align: right;
}
.canvas-node[data-shape] .canvas-node-container .markdown-preview-view.markdown-rendered {
transform: unset;
}
.canvas-node[data-shape=pill] .canvas-node-container {
border-radius: 5000px;
}
.canvas-node[data-shape=diamond] {
}
.canvas-node[data-shape=diamond].is-focused,
.canvas-node[data-shape=diamond].is-selected {
border-radius: var(--radius-m);
outline: 2px solid var(--color-accent);
outline-offset: 5px;
}
.canvas-node[data-shape=diamond] .canvas-node-container {
border: none;
box-shadow: none !important;
}
.canvas-node[data-shape=diamond] .canvas-node-container:not(:has(.embed-iframe)) {
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
mask-repeat: no-repeat;
-webkit-mask-repeat: no-repeat;
mask-size: 100%;
-webkit-mask-size: 100%;
}
.canvas-node[data-shape=diamond] .canvas-node-container .canvas-node-placeholder::after {
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
mask-repeat: no-repeat;
-webkit-mask-repeat: no-repeat;
mask-size: 100%;
-webkit-mask-size: 100%;
}
.canvas-node[data-shape=diamond]::before {
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 141.42135624 141.42135624' preserveAspectRatio='none'%3E%3Cstyle%3E rect %7B transform-origin: center; transform: rotate(45deg) scale(1.05); %7D %3C/style%3E%3Crect rx='8' x='20.71067812' y='20.71067812' width='100' height='100' /%3E%3C/svg%3E");
mask-repeat: no-repeat;
-webkit-mask-repeat: no-repeat;
mask-size: 100%;
-webkit-mask-size: 100%;
content: "";
position: absolute;
top: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
width: calc(100% + var(--border-width) * 2);
height: calc(100% + var(--border-width) * 2);
background-color: var(--border-color);
}
.canvas-node[data-shape=parallelogram] .canvas-node-container {
transform: skewX(-20deg);
backface-visibility: hidden;
}
.canvas-node[data-shape=parallelogram] .canvas-node-container .canvas-node-content > .markdown-embed-content {
transform: skewX(20deg);
}
.canvas-node[data-shape=circle] .canvas-node-container {
border-radius: 50%;
}
.canvas-node[data-shape=circle] .canvas-node-container .markdown-preview-view {
overflow-y: initial;
}
.canvas-node[data-shape=predefined-process] .canvas-node-container .canvas-node-content {
padding: 0 10px;
}
.canvas-node[data-shape=predefined-process] .canvas-node-container::before,
.canvas-node[data-shape=predefined-process] .canvas-node-container::after {
content: "";
z-index: 1;
position: absolute;
top: 0;
width: 0;
height: 100%;
border-left: var(--border-width) solid var(--border-color);
}
.canvas-node[data-shape=predefined-process] .canvas-node-container::before {
left: calc(10px - var(--border-width));
}
.canvas-node[data-shape=predefined-process] .canvas-node-container::after {
right: calc(10px - var(--border-width));
}
.canvas-node[data-shape=document] {
--border-width: 2.5px;
filter: drop-shadow(0 var(--border-width) 0 var(--border-color)) drop-shadow(0 calc(var(--border-width) * -1) 0 var(--border-color));
}
.canvas-node[data-shape=document] .canvas-node-container {
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 75 45' preserveAspectRatio='none'%3E%3Cpath d='M75 0 75 39.375Q56.25 29.25 37.5 39.375 18.75 49.5 0 39.375L0 0Z' /%3E%3C/svg%3E");
-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 75 45' preserveAspectRatio='none'%3E%3Cpath d='M75 0 75 39.375Q56.25 29.25 37.5 39.375 18.75 49.5 0 39.375L0 0Z' /%3E%3C/svg%3E");
mask-repeat: no-repeat;
-webkit-mask-repeat: no-repeat;
mask-size: 100%;
-webkit-mask-size: 100%;
border: var(--border-width) solid var(--border-color);
border-top: none;
border-bottom: none;
}
.canvas-node[data-shape=document].is-focused,
.canvas-node[data-shape=document].is-selected {
--border-width: 4px;
}
.canvas-node[data-shape=database] {
}
.canvas-node[data-shape=database] .canvas-node-container {
border: var(--border-width) solid var(--border-color);
border-bottom: 0;
border-top: 0;
border-radius: 0;
box-shadow: none !important;
}
.canvas-node[data-shape=database] .canvas-node-container .canvas-node-placeholder {
transform: translateY(25px);
}
.canvas-node[data-shape=database]::before,
.canvas-node[data-shape=database]::after {
content: "";
position: absolute;
left: 0;
box-sizing: border-box;
width: 100%;
height: 50px;
border-radius: 50%;
border: var(--border-width) solid var(--border-color);
background-color: var(--background-primary);
}
.canvas-node[data-shape=database]::after {
top: -25px;
}
.canvas-node[data-shape=database]::before {
bottom: -25px;
}
.canvas-node[data-shape=database].is-themed .canvas-node-content {
background-color: transparent;
}
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe)) .canvas-node-container,
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::after,
.canvas-node[data-shape=database].is-themed:not(:has(.embed-iframe))::before {
box-shadow: inset 0 0 0 1000px rgba(var(--canvas-color), 0.07) !important;
}
.canvas-node[data-shape=database] .canvas-node-content:not(:has(.embed-iframe)) {
transform: translateY(20px);
}
.canvas-node[data-shape=database]:has(.embed-iframe)::after {
z-index: -1;
}
.canvas-node[data-border=dashed] .canvas-node-container {
box-shadow: none;
border-style: dashed;
}
.canvas-node[data-border=dotted] .canvas-node-container {
box-shadow: none;
border-style: dotted;
}
.canvas-node[data-border=invisible] {
box-shadow: none;
}
.canvas-node[data-border=invisible]:not(.is-focused):not(.is-selected) .canvas-node-container {
border-color: transparent !important;
}
.canvas-node[data-border=invisible] .canvas-node-label {
display: none;
}
.canvas-node[data-border=invisible] .canvas-node-container {
background-color: transparent;
box-shadow: none;
}
.canvas-node[data-border][data-shape=predefined-process] {
--border-width: 2px;
}
.canvas-node[data-border][data-shape=predefined-process] .is-focused,
.canvas-node[data-border][data-shape=predefined-process] .is-selected {
--border-width: 2px;
}
.canvas-node[data-border=dashed][data-shape=predefined-process] .canvas-node-container::before,
.canvas-node[data-border=dashed][data-shape=predefined-process] .canvas-node-container::after {
border-left: var(--border-width) dashed var(--border-color);
}
.canvas-node[data-border=dotted][data-shape=predefined-process] .canvas-node-container::before,
.canvas-node[data-border=dotted][data-shape=predefined-process] .canvas-node-container::after {
border-left: var(--border-width) dotted var(--border-color);
}
.canvas-node[data-border][data-shape=document] .canvas-node-container {
border-top: none;
border-bottom: none;
}
.canvas-edges path[data-path=dotted] {
stroke-dasharray: calc(3px * var(--zoom-multiplier));
}
.canvas-edges path[data-path=short-dashed] {
stroke-dasharray: 9px;
}
.canvas-edges path[data-path=long-dashed] {
stroke-dasharray: 18px;
}
.canvas-edges [data-arrow=triangle-outline] polygon,
.canvas-edges [data-arrow=diamond-outline] polygon,
.canvas-edges [data-arrow=circle-outline] polygon {
fill: var(--canvas-background);
stroke: rgb(var(--canvas-color));
stroke-width: calc(3px * var(--zoom-multiplier));
}
.canvas-edges [data-arrow=thin-triangle] polygon {
fill: transparent;
stroke: rgb(var(--canvas-color));
stroke-width: calc(4px * var(--zoom-multiplier));
}
.icon-modal-suggestion {
display: flex;
align-items: center;
gap: var(--size-4-4);
}
.icon-modal-suggestion .icon-modal-suggestion-icon {
line-height: 0;
}
.icon-modal-suggestion .icon-modal-suggestion-id {
font-size: var(--font-ui-smaller);
color: var(--text-muted);
}
.canvas.is-exporting {
--zoom-multiplier: 1;
}
.canvas.is-exporting * {
pointer-events: none !important;
transition: none !important;
}
.canvas.is-exporting .collapse-button {
display: none;
}
.canvas.is-exporting #watermark-ac {
z-index: 9999999;
position: absolute;
}
.canvas-wrapper[data-collapsible-groups-feature-enabled=true] .canvas.is-exporting .canvas-node .canvas-group-label {
left: 0;
}
.progress-bar-modal-ac {
margin-top: 0.75em;
}
.progress-bar-modal-ac.error .setting-progress-bar {
color: var(--color-error);
}
.canvas-wrapper[data-disable-font-size-relative-to-zoom=true] {
--zoom-multiplier: 1 !important;
}
.canvas-wrapper.mod-readonly .canvas-controls .canvas-control-group:nth-child(3),
.canvas-wrapper.mod-readonly .canvas-card-menu {
display: none;
}
.canvas-wrapper.mod-readonly[data-hide-background-grid-when-in-readonly=true] .canvas-background {
visibility: hidden;
}
.collapse-button {
position: absolute;
left: 0;
top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier));
padding: var(--size-4-1) var(--size-4-2);
transform-origin: bottom left;
transform: translate(0, -100%) scale(var(--zoom-multiplier));
border-radius: var(--radius-s);
color: var(--text-muted);
background-color: rgba(var(--canvas-color), 0.1);
font-size: 1.5em;
line-height: 1;
pointer-events: initial;
cursor: pointer;
transition: transform 500ms cubic-bezier(0.16, 1, 0.3, 1);
}
.canvas-wrapper[data-collapsible-groups-feature-enabled=true] .canvas-node .canvas-group-label {
left: calc(40px * var(--zoom-multiplier));
}
.canvas-node[data-collapsed] .canvas-node-container {
display: none;
}
.canvas-node[data-collapsed] .canvas-group-label {
max-width: initial;
}
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-collapsed] .canvas-node-container {
display: block;
opacity: 0.5;
border-style: dashed;
}
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-collapsed] .canvas-node-container .canvas-node-content {
background-color: transparent;
}
.canvas-node-interaction-layer[data-target-collapsed] .canvas-node-resizer {
pointer-events: none;
cursor: inherit;
}
.canvas-node-interaction-layer[data-target-collapsed] .canvas-node-resizer .canvas-node-connection-point {
display: none;
pointer-events: none;
}
.canvas-wrapper[data-allow-floating-edge-creation=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group)::after {
all: unset;
content: "";
z-index: 100;
position: absolute;
top: 50%;
left: 50%;
width: max(10px, 100% - 50px * var(--zoom-multiplier) * 2);
height: max(10px, 100% - 50px * var(--zoom-multiplier) * 2);
transform: translate(-50%, -50%);
border-radius: var(--radius-m);
outline: calc(4px * var(--zoom-multiplier)) dashed hsla(var(--color-accent-hsl), 0.5);
}
.canvas-wrapper[data-allow-floating-edge-creation=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group).hovering-floating-edge-zone::after {
outline-color: var(--color-accent);
outline-style: solid;
background-color: hsla(var(--color-accent-hsl), 0.1);
}
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-node:not(.is-focused) {
filter: blur(5px);
}
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-edges > g:not(.is-focused) {
filter: blur(5px);
}
.canvas-wrapper[data-focus-mode-enabled=true] .canvas:has(.canvas-node.is-focused) .canvas-path-label-wrapper > .canvas-path-label:not(.is-focused) {
filter: blur(5px);
}
.canvas-wrapper.presentation-mode .canvas-controls {
visibility: hidden;
}
.canvas-wrapper.presentation-mode .canvas-card-menu {
visibility: hidden;
}
.canvas-wrapper:not(.presentation-mode) .canvas-node[data-is-start-node=true]::before {
content: "Start";
position: absolute;
top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier));
right: 0;
transform: translate(0, -100%) scale(var(--zoom-multiplier));
transform-origin: bottom right;
max-width: calc(100% / var(--zoom-multiplier));
padding: var(--size-4-1) var(--size-4-2);
font-size: 1em;
border-radius: var(--radius-s);
color: var(--color-green);
background-color: rgba(var(--color-green-rgb), 0.1);
}
.canvas-node[data-is-portal-loaded=true] {
pointer-events: all;
}
.canvas-node[data-is-portal-loaded=true]:not(.is-focused) {
pointer-events: none;
}
.canvas-node[data-is-portal-loaded=true]:not(.is-focused) .canvas-node-label {
pointer-events: all;
}
.canvas-node[data-is-portal-loaded=true] .canvas-node-container {
background-color: transparent;
border-style: dashed;
}
.canvas-node[data-is-portal-loaded=true] .canvas-node-container .canvas-node-content {
display: none;
}
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer {
pointer-events: none;
cursor: inherit;
}
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer .canvas-node-connection-point {
pointer-events: all;
}
.ac-card-embed {
display: flex;
flex-direction: column;
overflow: hidden;
background-color: var(--background-primary);
border: 1px solid rgb(var(--canvas-color));
border-radius: var(--radius-m);
box-shadow: var(--shadow-stationary);
}
.ac-card-embed.is-themed {
background-color: rgba(var(--canvas-color), 0.07);
border-color: rgba(var(--canvas-color), 0.7);
box-shadow: inset 0 0 0 1px rgba(var(--canvas-color), 0.7), var(--shadow-stationary);
}
.ac-card-embed > .markdown-content {
position: relative;
overflow-y: auto;
overflow-wrap: break-word;
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
padding: 0 var(--size-4-4);
font-size: var(--font-text-size);
font-family: var(--font-text);
line-height: var(--line-height-normal);
color: var(--text-normal);
user-select: text;
-webkit-user-select: text;
scrollbar-gutter: stable;
}
+9
View File
@@ -0,0 +1,9 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin:
https://github.com/kotaindah55/better-embedded-canvas
*/
var P=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var j=(n,e)=>{for(var t in e)P(n,t,{get:e[t],enumerable:!0})},w=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of q(e))!G.call(n,s)&&s!==t&&P(n,s,{get:()=>e[s],enumerable:!(i=_(e,s))||i.enumerable});return n},k=(n,e,t)=>(w(n,e,"default"),t&&w(t,e,"default"));var Q=n=>w(P({},"__esModule",{value:!0}),n);var te={};j(te,{BetterEmbeddedCanvasPlugin:()=>C,default:()=>ee});module.exports=Q(te);var a={};k(a,require("obsidian"));function U(n){return{app:n,containerEl:createDiv(),history:{backHistory:[],forwardHistory:[]}}}function D(n){let e=n.internalPlugins.getPluginById("canvas").views.canvas;u=e(U(n)).canvas.constructor}var u;function O(n){let e=new u(n);return e.quickSettingsButton.parentElement?.detach(),e.undoBtnEl.parentElement?.detach(),a.Platform.isMobile||e.canvasControlsEl.lastElementChild?.detach(),e.cardMenuEl.detach(),e.setReadonly(!0),e.wrapperEl.addEventListener("drop",t=>t.preventDefault(),!0),e}function I(n,e,t){let i=n.embedRegistry,s=i.embedByExtension[e]??null;return i.unregisterExtension(e),i.registerExtension(e,t),s}function g(n,e){return n.internalPlugins.getPluginById(e)}function x(n){return n.matches("body > div.print *")}var S={A3:{width:1123,height:1587},A4:{width:794,height:1123},A5:{width:559,height:794},Legal:{width:816,height:1344},Letter:{width:816,height:1054},Tabloid:{width:1056,height:1632}},A=37;var L={tooltipOpenCanvas:"Open canvas",tooltipEnableInteraction:"Enable interaction",tooltipDisableInteraction:"Disable interaction",reloadNotesPrompt:{title:"Reload notes",desc:"Select \u201CReload\u201D to reload all open notes and revert embedded canvases to their default (your data is preserved).",buttonReload:"Reload"},settings:{showCanvasName:{name:"Show canvas name",desc:"Show canvas name as embed title."}}};var M={tooltipOpenCanvas:"Buka kanvas",tooltipEnableInteraction:"Nyalakan interaksi",tooltipDisableInteraction:"Matikan interaksi",reloadNotesPrompt:{title:"Muat ulang catatan",desc:"Pilih \u201CMuat ulang\u201D untuk memuat ulang catatan yang terbuka dan mengembalikan kanvas yang disematkan pada tampilan bawaan (data Anda tetap terjaga).",buttonReload:"Muat ulang"},settings:{showCanvasName:{name:"Tampilkan nama kanvas",desc:"Tampilkan nama kanvas sebagai judul sematan."}}};var T=i18next.createInstance({lng:(0,a.getLanguage)(),fallbackLng:"en",resources:{en:{translation:L},id:{translation:M}}});T.init();var l=T.t.bind(T);var c=new Map,p=new Map;function X(n){let{wrapperEl:e}=n,t=e.getBoundingClientRect(),i=t.left+e.clientLeft,s=t.top+e.clientTop,r=e.clientWidth,o=e.clientHeight;n.canvasRect={left:i,top:s,width:r,height:o,cx:i+r/2,cy:s+o/2,minX:-r/2,minY:-o/2,maxX:r/2,maxY:r/2}}function B(){p.has(this)||p.set(this,(0,a.debounce)(()=>{c.get(this)?.forEach(n=>X(n.canvas)),p.delete(this)},20)())}function R(n){c.forEach(e=>e.forEach(n))}function N(n){let e=n.contentEl.win,t=c.get(e);t?t.add(n):(c.set(e,new Set([n])),e.addEventListener("scroll",B,{capture:!0,passive:!0}))}function z(n){let e=n.contentEl.win,t=c.get(e);t?.delete(n),t&&!t.size&&(p.get(e)?.cancel(),p.delete(e),c.delete(e),e.removeEventListener("scroll",B,!0))}function H(){p.forEach(n=>n.cancel()),p.clear(),c.forEach((n,e)=>{e.removeEventListener("scroll",B,!0),n.forEach(t=>t.unload())}),c.clear()}var K=300;function $(n){return n.matches(".canvas-node *")}var h=class n extends a.Component{app;canvas;contentEl;plugin;file;ctx;subpath;becPlugin;containerEl;headerEl;mainControlsEl;zoomControlsEl;openCanvasBtnEl;toggleInteractionBtnEl;resizeObserver;mutationObserver;constructor(e,t,i,s){super(),this.app=t.app,this.plugin=g(this.app,"canvas").instance,this.becPlugin=e,this.ctx=t,this.file=i,this.subpath=s,this.containerEl=t.containerEl,this.containerEl.addClass("canvas-embed","better-canvas-embed"),this.containerEl.toggleClass("inline-embed",t.showInline??!1),this.headerEl=this.containerEl.createDiv("embed-title",r=>{r.createSpan("file-embed-icon",o=>(0,a.setIcon)(o,"lucide-layout-dashboard")),r.appendText(" "+i.basename),r.addEventListener("click",o=>this.openOnClick(o)),r.toggle(e.settings.get("showCanvasName"))}),this.contentEl=this.containerEl.createDiv("canvas-content"),this.resizeObserver=new ResizeObserver(()=>this.canvas.onResize()),this.mutationObserver=new MutationObserver(()=>this.updateHeight()),this.canvas=O(this),this.zoomControlsEl=this.canvas.canvasControlsEl.firstElementChild,this.mainControlsEl=this.canvas.canvasControlsEl.createDiv({cls:["canvas-control-group","mod-raised"],prepend:!0}),this.openCanvasBtnEl=this.mainControlsEl.createDiv("canvas-control-item",r=>{(0,a.setIcon)(r,"lucide-maximize-2"),(0,a.setTooltip)(r,l("tooltipOpenCanvas"),{placement:"left"}),r.addEventListener("click",o=>this.openOnClick(o))}),this.toggleInteractionBtnEl=this.mainControlsEl.createDiv("canvas-control-item",r=>{(0,a.setIcon)(r,"pointer"),(0,a.setTooltip)(r,l("tooltipLine truncated
/* nosourcemap */
+10
View File
@@ -0,0 +1,10 @@
{
"id": "better-embedded-canvas",
"name": "Better Embedded Canvas",
"version": "0.2.4",
"minAppVersion": "1.10.0",
"description": "Give your embedded canvas better display and interactivity.",
"author": "Kotaindah55",
"authorUrl": "https://github.com/kotaindah55",
"isDesktopOnly": false
}
+1
View File
@@ -0,0 +1 @@
body{--embedded-canvas-min-height: 300px;--embedded-canvas-border-width: 1px;--embedded-canvas-border-color: var(--background-modifier-border)}.canvas-embed.better-canvas-embed.internal-embed>.canvas-content>.canvas-wrapper{position:relative}.canvas-embed.better-canvas-embed>.embed-title{width:fit-content;cursor:pointer}.canvas-embed.better-canvas-embed>.canvas-content{height:var(--embedded-canvas-min-height);border:var(--embedded-canvas-border-width) solid var(--embedded-canvas-border-color);border-radius:var(--radius-m);overflow:hidden}.canvas-embed.better-canvas-embed>.canvas-content>.canvas-wrapper>.canvas-controls{visibility:hidden}.canvas-embed.better-canvas-embed>.canvas-content:hover>.canvas-wrapper>.canvas-controls{visibility:visible}.canvas-embed.better-canvas-embed .canvas-wrapper.mod-readonly[data-hide-background-grid-when-in-readonly=true] .canvas-background{visibility:visible}.canvas-embed.better-canvas-embed .canvas-node-content.markdown-embed>.markdown-embed-content>.markdown-preview-view>.markdown-preview-sizer{margin-left:unset;margin-right:unset}.canvas-embed.better-canvas-embed .inline-title{display:block}
@@ -29,7 +29,7 @@ Nach Davids Feedback wurde die Lead-Zuweisung ergaenzt:
- `Felder zuweisen` fuehrt nach S02L.
- S02L ordnet Formularfragen per Dropdown Lead-Feldern zu.
- E05 zeigt fehlende oder unmoegliche Zuweisungen.
- Advanced-Canvas und D07-D09 bleiben Referenz, aber nicht Hauptfluss.
- Die alten Advanced-Screens und S01B sind aus dem Obsidian-Handoff entfernt; S01C/S01D/S01E bleiben nur als Referenz-Beispiele.
## Review-Reihenfolge
@@ -51,15 +51,9 @@ Nach Davids Feedback wurde die Lead-Zuweisung ergaenzt:
Danach nur bei Bedarf:
- [[Screens/80 S01B Gefuehrter Fragen Editor]]
- [[Screens/81 S01C Website Formular Editor]]
- [[Screens/82 S01D Umfrage Editor]]
- [[Screens/83 S01E Internes Formular Editor]]
- [[Screens/90 ADV Form-Builder Canvas]]
- [[Screens/90b ADV Form-Builder Canvas 2]]
- [[Screens/91 D07 Logic Regel Detail]]
- [[Screens/92 D08 Action Detail mit Mapping]]
- [[Screens/93 D09 Publish Blocker Summary]]
## Bitte pruefen
@@ -48,7 +48,7 @@ Die erste Builder-Richtung war fachlich vollstaendig, aber fuer normale Handwerk
| Technische Feldtypen | Verstaendliche Fragetypen |
| Lead-Mapping wirkt wie Admin-Konfiguration | Lead-Felder werden einfach per Dropdown zugewiesen |
Empfehlung: S02 ist der Haupteditor. ADV-S01 bleibt nur Referenz fuer spaetere Advanced-/Power-User-Funktionen.
Empfehlung: S02 ist der Haupteditor. S01B und die alten Advanced-Screens sind aus dem Obsidian-Handoff entfernt, damit der Review nicht mehr doppelt wirkt.
## 3. Aktueller Hauptfluss
@@ -85,21 +85,15 @@ S00 Formulare verwalten
| 12 | E03 | S05 Keine Antworten | Empty State fuer Antworten-Tab | https://app.subframe.com/f023064a5ca0/design/6f56c14f-d66e-4734-8a29-a900ac74a8a7/edit |
| 13 | E04 | S05 Export Fehler | Fehlerzustand fuer Excel/CSV-Export | https://app.subframe.com/f023064a5ca0/design/00553ea4-9839-4d22-b540-9b9ef0bf014f/edit |
## 5. Spaetere Varianten und Referenzseiten
## 5. Spaetere Varianten
Diese Seiten sind gebaut oder dokumentiert, aber nicht Teil des aktuellen Hauptflusses:
Diese Seiten liegen noch als optionale Beispiele im Subframe-Flow, sind aber nicht Teil des aktuellen Hauptflusses:
| Nr. | ID | Screen | Status | Subframe |
|---|---|---|---|---|
| 80 | S01B | Gefuehrter Fragen Editor | Spaeter / Referenz | https://app.subframe.com/f023064a5ca0/design/d0fb9c3d-4b03-4d59-bd98-9f668ab018eb/edit |
| 81 | S01C | Website Formular Editor | Spaeter / Referenz | https://app.subframe.com/f023064a5ca0/design/d7d33e94-5c12-48e8-8ec6-1e94590ee89c/edit |
| 82 | S01D | Umfrage Editor | Spaeter / Referenz | https://app.subframe.com/f023064a5ca0/design/5abd7799-7058-40b3-9772-884cbda97b9c/edit |
| 83 | S01E | Internes Formular Editor | Spaeter / Referenz | https://app.subframe.com/f023064a5ca0/design/ea08fd1c-1a76-4e2c-b27c-1091baa0586a/edit |
| 90 | ADV-S01 | Form-Builder Canvas | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/e5502f88-9858-460e-abae-671f28464270/edit |
| 90b | ADV-S01-2 | Form-Builder Canvas 2 | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/9529ac6f-eb71-4e5c-8774-7cebe9c8162c/edit |
| 91 | D07 | Logic Regel Detail | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/07b60457-8151-46b9-ba34-34eceffc08bb/edit |
| 92 | D08 | Action Detail mit Mapping | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/0759d779-91f5-4e06-b1d6-7cd0095461ea/edit |
| 93 | D09 | Publish Blocker Summary | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/211e8ca7-fc0b-4c52-a4a4-a1e660209e58/edit |
## 6. Formulararten
@@ -171,12 +165,7 @@ Fuer den einfachen Haupteditor:
- Harte Blocker zeigen einen Banner/Popover mit Sprungzielen.
- Unpublish braucht einen Confirm-Dialog, weil der Public-Link danach nicht mehr erreichbar ist.
Fuer Advanced/Referenz:
- D07 zeigt Logic-Regel-Detail.
- D08 zeigt Action-Detail mit Mapping.
- D09 zeigt Publish-Blocker-Summary.
- D01/D02/D03/D06/D10 und M01-M04 sind in Markdown dokumentiert, aber nicht zwingend als Subframe-Hauptscreen noetig.
Als reine Markdown-Notizen bleiben D01/D02/D03/D06/D10 und M01-M04 dokumentiert. Sie sind keine Subframe-Hauptscreens und nicht Teil der Review-Reihenfolge.
## 10. Public Formular
@@ -224,7 +213,7 @@ Bitte David pruefen lassen:
- Passt E05 fuer fehlende/unmoegliche Lead-Zuweisungen?
- Sind S03 Design und S05 Antworten tief genug fuer D-FORM, ohne in andere Tickets abzurutschen?
- Sind Public States S04/V01/V02/V03 vollstaendig genug?
- Duerfen S01B/S01C/S01D/S01E, ADV-S01 Canvas 1/2 und D07/D08/D09 als Referenz liegen bleiben?
- Sollen S01C/S01D/S01E als spaetere Beispielvarianten im Subframe-Flow liegen bleiben?
- Muessen M01-M04 als echte Dialog-Screens gebaut werden, oder reicht Dokumentation?
- In Subframe bitte bei S02L/E05 nochmal visuell pruefen, ob das richtige Default Page Layout gesetzt ist.
@@ -248,15 +237,9 @@ Bitte David pruefen lassen:
Danach nur bei Bedarf:
16. S01B Gefuehrter Fragen Editor
17. S01C Website Formular Editor
18. S01D Umfrage Editor
19. S01E Internes Formular Editor
20. ADV-S01 Form-Builder Canvas
21. ADV-S01-2 Form-Builder Canvas 2
22. D07 Logic Regel Detail
23. D08 Action Detail mit Mapping
24. D09 Publish Blocker Summary
16. S01C Website Formular Editor
17. S01D Umfrage Editor
18. S01E Internes Formular Editor
## 14. Lokale Detaildateien
@@ -279,4 +262,4 @@ Wichtige Detailnotizen im Paket:
## 15. Kurztext zum Mitschicken
Hey David, hier ist die aufgeraeumte D-FORM-Uebergabe. Ich habe den Builder nach deinem Feedback nochmal vereinfacht und die Lead-Zuweisung ergaenzt: S02 bleibt der einfache Google-Forms-nahe Haupteditor, S02L zeigt die Lead-Felder-Zuweisung per Dropdown, E05 deckt fehlende/unmoegliche Zuweisungen ab. Advanced-Canvas und D07-D09 bleiben als Referenz, aber nicht als Hauptfluss. Kannst du bitte einmal pruefen, ob die Richtung und die offenen Punkte fuer dich passen?
Hey David, hier ist die aufgeraeumte D-FORM-Uebergabe. Ich habe den Builder nach deinem Feedback nochmal vereinfacht und die Lead-Zuweisung ergaenzt: S02 bleibt der einfache Google-Forms-nahe Haupteditor, S02L zeigt die Lead-Felder-Zuweisung per Dropdown, E05 deckt fehlende/unmoegliche Zuweisungen ab. Die alten Advanced-Screens und S01B sind aus dem Obsidian-Handoff raus, damit der Review nur noch den aktuellen Hauptfluss zeigt. Kannst du bitte einmal pruefen, ob die Richtung und die offenen Punkte fuer dich passen?
@@ -17,11 +17,11 @@ Startpunkt fuer die weitergebbare Version: [[00 Start hier - David]] und [[D-FOR
David hat den groben fachlichen Scope als passend bewertet. Die Empfehlungen aus dieser Checkliste werden damit als Arbeitsentscheidung uebernommen.
Wichtige Nacharbeit aus dem Review: Beim alten Advanced-S01 fehlte die Interaktionslogik auf der Ebene "was passiert nach Klick?". Diese Nacharbeit ist in [[Screens/90 ADV Form-Builder Canvas|ADV-S01 Form-Builder Canvas]] ergaenzt: Feldbearbeitung, Feldaktionen, Logic, Actions, Sharing, Preview, Settings, Publish und Unpublish sind jetzt nach Inline/Inspector, Menue, Panel, Popover oder Confirm-Dialog sortiert.
Wichtige Nacharbeit aus dem Review: Die Interaktionslogik wurde in den einfachen S02-Hauptfluss uebersetzt. Logic bleibt als `Bedingung` an der Frage, Actions als `Nach Absenden`/Lead-Card und Publish-Blocker als Banner/Popover im selben Editor.
Subframe ist als Draft gebaut und verlinkt. Der aktuelle Hauptfluss ist S00, E01/E02, S01, S02, S03, S04/V01/V02/V03, S05 und E03/E04. S01B/S01C/S01D/S01E, ADV-S01 Canvas 1/2 und D07/D08/D09 bleiben spaetere Varianten bzw. Referenz.
Subframe ist als Draft gebaut und verlinkt. Der aktuelle Hauptfluss ist S00, E01/E02, S01, S02, S02L/E05, S03, S04/V01/V02/V03, S05 und E03/E04. S01C/S01D/S01E bleiben spaetere Varianten bzw. Referenz. S01B und die alten Advanced-Screens wurden aus dem Obsidian-Handoff entfernt.
Aktuelle Arbeitsentscheidung: Fuer normale Handwerksbetriebe wird S02 als einfache Google-Forms-nahe Richtung empfohlen. Alle Formulararten starten in S02 mit anderer Vorlage/Startfragen. Der alte Profi-Canvas bleibt als Advanced-/Referenzscreen, nicht als erste Nutzerfuehrung. Als Kunden-/Handwerker-Wording wird `Bereich` statt `Gewerk` verwendet.
Aktuelle Arbeitsentscheidung: Fuer normale Handwerksbetriebe wird S02 als einfache Google-Forms-nahe Richtung empfohlen. Alle Formulararten starten in S02 mit anderer Vorlage/Startfragen. Als Kunden-/Handwerker-Wording wird `Bereich` statt `Gewerk` verwendet.
## 0b. David-Feedback Lead-Zuweisung
@@ -44,7 +44,7 @@ Ergebnis: Die Abgrenzung `D-FORM = Form-Builder-Canvas + oeffentliches Formular`
| Quelle | Aussage | Konsequenz fuer D-FORM |
|---|---|---|
| `ticket-docs/D-FORM.md` | D-FORM deckt nur Form-Builder-Canvas und oeffentliches Formular ab. Booking/Kalender gehen an `D-BOOK`; Forms-Liste, Submissions und Signatur sind Compose/andere Tickets. | D-FORM bleibt bei Builder und Public: S02 einfacher Editor plus S04/Public-Varianten; ADV-S01 nur als Referenz. |
| `ticket-docs/D-FORM.md` | D-FORM deckt Form-Builder und oeffentliches Formular ab. Booking/Kalender gehen an `D-BOOK`; Forms-Liste, Submissions und Signatur sind Compose/andere Tickets. | D-FORM bleibt bei Builder und Public: S02 einfacher Editor plus S04/Public-Varianten. |
| `designer-briefs/P16-kalender-booking-forms-signatur.md` | P16 ist gebuendelt, aber soll in Gruppen getrennt werden: Kalender-Sync, Booking, Form-Builder, Signatur. | Nicht alle P16-Screens gehoeren in D-FORM. |
| `SCREEN-MAP.md` Paragraph 3 | Listet Form-Builder-Canvas, oeffentliches Formular und Submissions im Umfeld. Submissions ist A2/A3-Compose, Builder/Public sind Bespoke. | Submissions nicht als D-FORM-Bespoke bauen. |
| `D-BOOK.md` | D-BOOK deckt Booking-Page und Kalender-View ab; verweist Form-Builder/Public Form zurueck auf D-FORM. | Booking und Kalender bleiben raus. |
@@ -55,7 +55,7 @@ Ergebnis: Die Abgrenzung `D-FORM = Form-Builder-Canvas + oeffentliches Formular`
| Punkt | Empfehlung | David-Entscheidung |
|---|---|---|
| D-FORM umfasst den Builder; aktuell S02 als Haupteditor und ADV-S01 als Advanced-Referenz. | Ja. | angenommen |
| D-FORM umfasst den Builder; aktuell S02 als Haupteditor. | Ja. | angenommen |
| D-FORM umfasst S04 Oeffentliches Formular. | Ja. | angenommen |
| V01 Public Erfolg/Redirect wird als eigene Variante gebaut. | Ja, weil copy- und vertrauenskritisch. | angenommen |
| V02 Public Formular nicht verfuegbar wird als eigene Variante gebaut. | Ja, weil externer Nutzer blockiert ist. | angenommen |
@@ -144,12 +144,9 @@ Ergebnis: Die Abgrenzung `D-FORM = Form-Builder-Canvas + oeffentliches Formular`
| Punkt | Empfehlung | David-Entscheidung |
|---|---|---|
| 5 Hauptframes/Varianten bauen: S01, S02, V01, V02, V03. | Ja. | angenommen |
| Zusaetzlich D07 Logic Regel Detail bauen. | Ja, damit Logic visuell pruefbar ist. | angenommen als Empfehlung |
| Zusaetzlich D08 Action Detail mit Mapping bauen. | Ja, weil Mapping komplex und fehleranfaellig ist. | angenommen als Empfehlung |
| Zusaetzlich D09 Publish Blocker Summary bauen. | Ja, weil Publish ein kritischer Moment ist. | angenommen als Empfehlung |
| Hauptfluss bauen: S00, S01, S02, S02L/E05, S03, S04/V01/V02/V03, S05 und E01-E04. | Ja. | angenommen |
| M01 Feld loeschen Confirm und M02 Unpublish Confirm vorerst nur dokumentieren. | Ja, fachlich klar; spaeter baubar, falls David es sehen will. | angenommen als Empfehlung |
| Sharing, Logic, Actions, Preview und Settings nicht als eigene Subframe-Screens, sondern als Bereiche/Zustaende von S01. | Ja. | angenommen; Interaktionslogik in S01 nachgezogen |
| Sharing, Logic, Actions, Preview und Settings nicht als eigene Subframe-Screens, sondern einfach im S02-Kontext halten. | Ja. | angenommen |
| Nach Subframe-Bau Links in Paket, Screen-Dateien, Tracker und Handoff eintragen. | Ja. | erledigt |
## 11. David-Feedback: S01 Nacharbeit
@@ -169,14 +166,14 @@ Arbeitsentscheidung fuer S01:
| Publish | Publish-Check inline im Builder; bei Blockern Summary mit Sprungzielen, bei Erfolg Toast/Statuswechsel. |
| Unpublish | Confirm-Dialog, weil der Public-Link danach nicht mehr erreichbar ist. |
Damit reicht S01 weiter als Hauptscreen. D07, D08 und D09 sind als wichtige S01-Zustandsframes gebaut. Die kleineren Menues und Confirm-Dialoge bleiben dokumentiert und muessen nicht automatisch eigene Subframe-Screens werden.
Damit reicht S02 als Haupteditor. Die kleineren Menues und Confirm-Dialoge bleiben dokumentiert und muessen nicht automatisch eigene Subframe-Screens werden.
Vor-Subframe-Nacharbeit erledigt: Die wichtigsten ADV-S01-Zustaende sind als eigene Markdown-Dateien ausgearbeitet: [[Screens/D01 Sharing Panel URL QR iFrame]], [[Screens/D02 Post-Submit Actions]], [[Screens/D03 Conditional Logic Editor]], [[Screens/D06 Feldkarten Menue]], [[Screens/M01 Feld loeschen Confirm]], [[Screens/91 D07 Logic Regel Detail|D07 Logic Regel Detail]], [[Screens/92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]], [[Screens/93 D09 Publish Blocker Summary|D09 Publish Blocker Summary]], [[Screens/M02 Unpublish Confirm]], [[Screens/M03 Archive Confirm]], [[Screens/M04 Unsaved Changes Confirm]].
Vor-Subframe-Nacharbeit erledigt: Die wichtigsten Detailzustaende sind als Markdown-Dateien ausgearbeitet: [[Screens/D01 Sharing Panel URL QR iFrame]], [[Screens/D02 Post-Submit Actions]], [[Screens/D03 Conditional Logic Editor]], [[Screens/D06 Feldkarten Menue]], [[Screens/M01 Feld loeschen Confirm]], [[Screens/M02 Unpublish Confirm]], [[Screens/M03 Archive Confirm]], [[Screens/M04 Unsaved Changes Confirm]].
Weitere Nacharbeit nach neuer Rueckmeldung: [[Screens/D10 Builder Interaktionsfaelle]] dokumentiert jetzt die "Was passiert wenn...?"-Faelle: Auswahlfolgen, Checkboxen, vergessene Zwischenschritte, Datei/Foto, Dropdowns, halb gesetztes Mapping, Publish-Blocker und konkrete Modal-/Popover-Inhalte.
Aktueller Subframe-Stand: Der Hauptfluss S00/E01/E02/S01/S02/S03/S04/V01/V02/V03/S05/E03/E04 ist gebaut und verlinkt. S01B/S01C/S01D/S01E, ADV-S01 Canvas 1/2 und D07/D08/D09 sind gebaut, aber aktuell nur spaetere Varianten bzw. Referenz. M01/M02/M03/M04 und D10 bleiben dokumentiert.
Aktueller Subframe-Stand: Der Hauptfluss S00/E01/E02/S01/S02/S02L/E05/S03/S04/V01/V02/V03/S05/E03/E04 ist gebaut und verlinkt. S01C/S01D/S01E sind gebaut, aber aktuell nur spaetere Varianten bzw. Referenz. M01/M02/M03/M04 und D10 bleiben dokumentiert.
## 12. Kurztext fuer David
`D-FORM ist fachlich passend abgegrenzt, die Advanced-Builder-Klicklogik ist nachgezogen und der Subframe-Draft ist gebaut. Der aktuelle Hauptfluss ist S00, S01, S02, S03, S04/Public States und S05 plus E01-E04. S02 ist die Google-Forms-nahe Hauptvariante; Logic/Actions/Publish bleiben dort bewusst einfach und inline. S01B/S01C/S01D/S01E, ADV-S01 Canvas 1/2 und D07/D08/D09 sind nur spaetere Varianten bzw. Referenz. S05 bleibt ohne Kennzahl-Kacheln und ohne extra Link-teilen-Button.`
`D-FORM ist fachlich passend abgegrenzt und der Subframe-Draft ist gebaut. Der aktuelle Hauptfluss ist S00, S01, S02, S02L/E05, S03, S04/Public States und S05 plus E01-E04. S02 ist die Google-Forms-nahe Hauptvariante; Logic/Actions/Publish bleiben dort bewusst einfach und inline. S01C/S01D/S01E sind nur spaetere Varianten bzw. Referenz. S05 bleibt ohne Kennzahl-Kacheln und ohne extra Link-teilen-Button.`
@@ -41,7 +41,7 @@ Der Screen ist nicht der Builder selbst, sondern die Formular-Zentrale vor dem B
- Klick auf `Neues Formular` fuehrt zu [[04 S01 Formularart auswaehlen|S01 Formularart auswaehlen]].
- Klick auf `Bearbeiten` oeffnet aktuell [[05 S02 Einfacher Fragen Editor|S02]].
- Die Formularart bestimmt in S02 nur Vorlage, Startfragen und Hinweise. S01B/S01C/S01D/S01E bleiben spaetere Varianten bzw. Referenzseiten.
- Die Formularart bestimmt in S02 nur Vorlage, Startfragen und Hinweise. S01C/S01D/S01E bleiben spaetere Varianten bzw. Referenzseiten.
- Filterchips koennen kombiniert werden, z. B. `Erstellt` + `Unveroeffentlicht` oder `Website / Extern` + `Lead`.
- Als Beispiel sind mehrere Status-Chips aktiv, damit klar ist: Es ist kein einzelner Tab, sondern eine Mehrfachauswahl. Art-Chips stehen daneben als zusaetzliche auswaehlbare Filter bereit.
- Aktionen je Zeile: bearbeiten, Vorschau, Link kopieren, Antworten ansehen, duplizieren, loeschen.
@@ -50,7 +50,7 @@ Entscheidung 2026-07-08: Weniger ist hier besser. Keine separate Vorlagenzeile u
| Fragebogen / Umfrage | Feedback sammeln und Antworten spaeter auswerten. | Oeffnet [[05 S02 Einfacher Fragen Editor|S02]] mit Umfrage-Startfragen. |
| Internes Formular | Meldungen und Anfragen fuer Mitarbeitende. | Oeffnet [[05 S02 Einfacher Fragen Editor|S02]] mit interner Formularvorlage. |
Arbeitsentscheidung 2026-07-08: S02 ist der Haupt-Editor fuer alle vier Formulararten. S01B/S01C/S01D/S01E bleiben nur spaetere Varianten bzw. Referenzseiten.
Arbeitsentscheidung 2026-07-08: S02 ist der Haupt-Editor fuer alle vier Formulararten. S01C/S01D/S01E bleiben nur spaetere Varianten bzw. Referenzseiten.
## Lead-Formular Verhalten
@@ -81,5 +81,5 @@ Qualitaetsregel:
- Nutzt das vorhandene `Default Page Layout`.
- Keine eigene Sidebar oder Header-Navigation.
- Liegt im selben Flow neben `ADV-S01-2 Form-Builder Canvas 2`.
- Liegt im D-FORM-Flow neben S02/S02L/E05, S03, S04 und S05.
- Ersetzt nicht S04 Public Form, sondern liegt vor dem Builder.
@@ -159,7 +159,7 @@ S02 ist der Haupt-Editor fuer normale Nutzer. Deshalb werden Logic, Actions und
| Actions | `Nach Absenden` bleibt im Screen. Bei Lead-Formularen ist `Lead anlegen` aktiv und zeigt `Felder zuweisen`. | Kein Automation-Editor, aber die wichtigste Lead-Zuordnung ist sichtbar. |
| Publish-Blocker | Einfacher Banner/Popover im selben Screen mit Sprung zur betroffenen Frage. | Verstaendlich genug, kein eigener Screen noetig. |
D07, D08 und D09 bleiben als Advanced-/Referenzseiten fuer spaeter oder fuer David, falls er die Detailtiefe sehen will. Fuer den aktuellen S02-Hauptfluss sind sie nicht notwendig. Die Lead-Zuweisung ist aber nicht mehr nur Hintergrundlogik, sondern ein eigener S02-Zustand.
Die alten Advanced-Detailframes sind aus dem Obsidian-Handoff entfernt. Fuer den aktuellen S02-Hauptfluss sind sie nicht notwendig. Die Lead-Zuweisung ist aber nicht mehr nur Hintergrundlogik, sondern ein eigener S02-Zustand.
## Publish
@@ -180,6 +180,6 @@ Qualitaetsregel:
- Nutzt das vorhandene `Default Page Layout`.
- Keine eigene Sidebar oder Header-Navigation.
- Liegt im selben Flow neben `ADV-S01-2 Form-Builder Canvas 2`.
- Liegt im D-FORM-Flow neben S02L/E05, S03, S04 und S05.
- Nah an Google Forms, aber mit HiveGrid-Komponenten.
- Lead-Verknuepfung bleibt einfach sichtbar. `Felder zuweisen` wird als einfacher S02-Zustand gezeigt, nicht als Advanced-Mapping.
@@ -1,110 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: S01B
screen: Gefuehrter Fragen Editor
typ: Simple Builder Alternative
umsetzung: Alternative bauen
status: Subframe Draft / Review offen
route: /forms/:id/edit
subframe: "https://app.subframe.com/f023064a5ca0/design/d0fb9c3d-4b03-4d59-bd98-9f668ab018eb/edit"
---
# S01B - Gefuehrter Fragen Editor
## Ziel
Noch weniger Komplexitaet als S02. Der Nutzer wird durch wenige Schritte gefuehrt: Fragen, Einstellungen, Vorschau, Veroeffentlichen.
## Leitidee
S01B ist fuer Nutzer, die bei zu vielen Buttons sofort aussteigen.
Der Screen sagt:
`Erst Fragen. Dann pruefen. Dann teilen.`
## Aufbau
Interne Seite mit vorhandenem `Default rage Layout`. Keine eigene Sidebar nachbauen.
Screen-Zonen:
- Kopfzeile mit Formularname, Speichern, Vorschau.
- Step-Leiste oben: 1 Fragen, 2 Einstellungen, 3 Vorschau, 4 Veroeffentlichen.
- Linke schmale Fragenliste: Frage 1, Frage 2, Frage 3.
- Hauptbereich: nur die aktuell gewaehlte Frage als grosse Karte.
- Rechte Seite: Hilfe/rreview-Zusammenfassung, nicht voller Inspector.
## Hauptaktionen
| Aktion | UI |
|---|---|
| Frage hinzufuegen | grosser Button `+ Frage hinzufuegen` unter Fragenliste |
| Fragetyp wechseln | grosses Dropdown in der Fragekarte |
| Option hinzufuegen | Inline in der Fragekarte |
| rflichtfrage | Toggle mit Text `Muss beantwortet werden` |
| Bedingung | Button `Nur anzeigen, wenn ...` |
| Frage loeschen | Drei-runkte-Menue, Confirm nur bei Risiko |
| Vorschau | eigener Schritt oder Button oben |
## Vereinfachung gegenueber S02
| S02 | S01B |
|---|---|
| rechte Mini-Werkzeugleiste | keine Werkzeugleiste |
| mehrere Fragekarten sichtbar | Fokus auf eine Frage |
| tabs wie Google Forms | Schrittfolge |
| mehr direkte Kontrolle | mehr Fuehrung |
## Lead-Formular Verhalten
Bei Lead-Formular:
- Schritt `Einstellungen` zeigt automatisch:
- Lead-Erstellung aktiv
- Ziel-ripeline
- verantwortliches Team
- Nutzer kann diese Werte aendern, muss aber nichts mappen.
- Fragenliste startet mit vorgeschlagenen Lead-Fragen.
## rublic rreview
Der Schritt `Vorschau` zeigt, wie der Kunde das Formular sieht.
Wichtig:
- Keine rDF-Sprache.
- Keine interne Builder-Sprache.
- rreview entspricht S02 rublic Form.
## rublish
Im Schritt `Veroeffentlichen` sieht Nutzer:
- rublic Link
- QR-Code
- Einbetten
- Status der rruefung
Fehlt etwas, steht es als einfache Checkliste:
- `Frage 2 braucht mindestens eine Antwortoption.`
- `Oeffentliche URL fehlt.`
- `Datenschutz-Hinweis pruefen.`
## Subframe-Hinweis
Gebaut in Subframe:
https://app.subframe.com/f023064a5ca0/design/d0fb9c3d-4b03-4d59-bd98-9f668ab018eb/edit
Qualitaetsregel:
- Nutzt das vorhandene `Default rage Layout`.
- Keine eigene Sidebar oder Header-Navigation.
- Liegt im selben Flow neben `ADV-S01-2 Form-Builder Canvas 2`.
- Weniger Google-Forms-nah als S02, aber fuer sehr unsichere Nutzer wahrscheinlich leichter.
- Lead-Verknuepfung bleibt als einfache aktive Einstellung sichtbar, ohne Mapping-ranel.
@@ -53,5 +53,5 @@ Qualitaetsregel:
- Nutzt das vorhandene `Default Page Layout`.
- Keine eigene Sidebar oder Header-Navigation.
- Liegt im selben Flow neben `ADV-S01-2 Form-Builder Canvas 2`.
- Liegt im D-FORM-Flow als optionale Referenzvariante.
- Wiederhergestellte Layout-Version vom 2026-07-07; alte kaputte Subframe-ID wurde ersetzt.
@@ -51,5 +51,5 @@ Qualitaetsregel:
- Nutzt das vorhandene `Default Page Layout`.
- Keine eigene Sidebar oder Header-Navigation.
- Liegt im selben Flow neben `ADV-S01-2 Form-Builder Canvas 2`.
- Liegt im D-FORM-Flow als optionale Referenzvariante.
- Korrigierte Version; die falsch generierte Variante ohne Layout wurde geloescht.
@@ -52,5 +52,5 @@ Qualitaetsregel:
- Nutzt das vorhandene `Default Page Layout`.
- Keine eigene Sidebar oder Header-Navigation.
- Liegt im selben Flow neben `ADV-S01-2 Form-Builder Canvas 2`.
- Liegt im D-FORM-Flow als optionale Referenzvariante.
- Wiederhergestellte Layout-Version vom 2026-07-07; alte kaputte Subframe-ID wurde ersetzt.
@@ -1,661 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: ADV-S01
screen: Form-Builder Canvas
typ: Bespoke Builder
umsetzung: Bauen
status: Subframe Draft / Review offen
route: /forms/:id/edit
subframe: "https://app.subframe.com/f023064a5ca0/design/e5502f88-9858-460e-abae-671f28464270/edit"
---
# ADV-S01 - Form-Builder Canvas
## Ziel
Interne Nutzer bauen, konfigurieren, pruefen und veroeffentlichen ein Formular an einem Arbeitsort.
Der Screen muss Feldaufbau, Validierung, Conditional Logic, Preview, Sharing und Post-Submit-Actions sichtbar machen, ohne in mehrere neue Routen zu zerfallen.
## Pattern / Archetyp
BESPOKE Builder.
Nutzt A4 Form/Input-Kit fuer die Feldtypen und A7 Zustands-Kit fuer Empty/Loading/Error/Permission.
## Arbeitsbereiche
Dies ist keine finale Layout-Vorgabe, sondern die Arbeitslogik fuer David.
| Bereich | Zweck | Sichtbarkeit |
|---|---|---|
| Header / Statusbar | Form-Name, Status, Save, Preview, Publish, Share. | dauerhaft sichtbar |
| Feld-Palette | 12 Feldtypen hinzufuegen. | primaer |
| Canvas | Feldliste in Reihenfolge, Drag-and-Drop, Empty State, Feldfehler. | primaer |
| Feld-Inspector | ausgewaehltes Feld konfigurieren. | primaer |
| Logic | Wenn-Dann-Regeln fuer sichtbare Felder. | Sekundaer-Tab/Panel |
| Actions | Post-Submit-Actions und Field-Mapping. | Sekundaer-Tab/Panel |
| Sharing | Public URL, QR, iFrame. | Sekundaer-Tab/Panel |
| Preview | Public-nahe Vorschau. | Umschaltmodus oder Side Preview |
| Settings | Slug, Success, Redirect, Branding, technische Public-Settings. | Sekundaer-Tab/Panel |
Empfehlung: Der Screen soll sich wie ein Builder anfuehlen, nicht wie eine lange Settings-Seite. Palette, Canvas und Inspector sind die Arbeitsmitte. Alles andere ist nah dran, aber nicht dauernd gleich laut.
## Detail-Brainstorming S01
Status: Arbeitsentwurf fuer David. Nach Review vom 2026-07-06 wurde die Interaktionslogik nachgezogen; finale Subframe-Freigabe bleibt offen.
Ziel dieses Blocks: Den riesigen Builder-Umfang so aufteilen, dass David daraus einen echten Subframe-Frame bauen kann, ohne dass wichtige Produktentscheidungen im Kopf bleiben.
### Layout-Optionen
| Option | Aufbau | Vorteil | Risiko | Empfehlung |
|---|---|---|---|---|
| D | Feste Builder-Shell: links Palette, Mitte Canvas, rechts Inspector; oben Header; sekundaere Modi als Tabs/Drawer. | Fuehlt sich wie ein echter Builder an, alle Kernaktionen sind nah beieinander. | Dichte hoch; braucht gute visuelle Hierarchie. | Empfohlen fuer den Advanced Builder. |
| B | Getrennte Seiten/Tabs: Felder, Logic, Actions, Sharing, Settings, Preview. | Ruhiger je Bereich. | Zerlegt den Canvas, mehr Navigationslast, weniger Bespoke-Gefuehl. | Nicht fuer v1-Hauptscreen. |
| C | Canvas + alles andere in Modals. | Hauptscreen wirkt leerer. | Viele Modal-Wechsel, Mapping und Preview werden unhandlich. | Nur fuer Confirm-/Blocker-Dialoge. |
Arbeitsentscheidung: S01 soll als **Builder-Shell** gedacht werden, nicht als Settings-Seite. Der primaere Arbeitszustand zeigt Palette, Canvas und Inspector gleichzeitig. Logic, Actions, Sharing, Preview und Settings sind Modi am selben Datensatz.
### Empfohlene Bildschirmaufteilung
| Zone | Inhalt | Verhalten |
|---|---|---|
| Topbar | Breadcrumb, Form-Name, Status, Save, Preview, Publish, Share, More. | Bleibt dauerhaft sichtbar. |
| Linke Palette | Feldtypen, Such-/Filtermöglichkeit, Templates/Abschnitte falls erlaubt. | Schmal, scanbar, Drag oder Klick fuegt Feld hinzu. |
| Canvas-Mitte | Feldliste, Dropzonen, Feldkarten, Empty State, Fehleranker. | Hauptarbeitsflaeche; Auswahl steuert rechten Inspector. |
| Rechter Inspector | Eigenschaften des ausgewaehlten Felds oder Form-/Modus-Einstellungen. | Kontextsensitiv, kein leerer rechter Bereich. |
| Modus-Leiste | Builder, Logic, Actions, Sharing, Preview, Settings. | Als Tabs/Segment im Arbeitsbereich oder rechts oben; keine neuen Routen. |
| Bottom/Status-Hinweis | Unsaved Changes, letzte Speicherung, Publish-Blocker kurz. | Dezent, damit es nicht mit Canvas konkurriert. |
### Modus-Matrix
| Modus | Hauptfrage | Was David zeigen sollte | Eigener Screen? |
|---|---|---|---|
| Builder | Welche Felder hat das Formular und wie sind sie konfiguriert? | Palette, Canvas, Inspector. | nein, Kern von S01 |
| Logic | Wann werden Felder angezeigt oder verborgen? | Regel-Liste, Regel-Editor, kaputte Referenzen, Test-Hinweise. | nein |
| Actions | Was passiert nach Submit? | Action-Liste, Mapping, Test/Preview, Warnungen. | nein |
| Sharing | Wie wird das Formular verteilt? | Public URL, QR, iFrame, Copy-Aktionen, Publish-Hinweis. | nein |
| Preview | Wie sieht das Public Form aus? | Public-nahe Vorschau, Desktop/Mobile-Umschalter, Logic live. | nein, aber im S01 klar sichtbar |
| Settings | Welche Form-Stammdaten steuern die Public-Version? | Slug, Beschreibung, Success, Redirect, Close/Limit, Branding. | nein |
Empfehlung: Builder bleibt Default. Preview darf prominent sein, aber nicht die Feldbearbeitung verdraengen.
## Detail: Interaktionslogik / Was passiert nach Klick?
Diese Nacharbeit beantwortet Davids Review-Hinweis vom 2026-07-06. S01 muss nicht jede kleine UI-Ebene als eigenen Screen bauen, aber die wichtigsten Klicks brauchen eine klare Entscheidung: inline, Inspector, Menue, Panel/Drawer, Popover oder Confirm-Dialog.
### Grundprinzipien
| UI-Form | Wann verwenden? | Regel fuer S01 |
|---|---|---|
| Inline / Canvas | Schnelle direkte Manipulation am Feld. | Auswahl, Drag, Pflicht-Quicktoggle, Fehleranker bleiben im Canvas. |
| Rechter Inspector | Alles, was ein Feld oder ein gewaehltes Objekt dauerhaft konfiguriert. | Feld bearbeiten passiert hier, nicht im Modal. |
| 3-Punkte-Menue | Sekundaere Aktionen auf Feld-/Action-/Regel-Karten. | Duplizieren, Loeschen, Deaktivieren, Drchivieren-Einstiege. |
| Panel / Drawer im S01 | Komplexere Konfiguration mit mehreren Feldern. | Logic-Regel, Action-Detail, Sharing, Settings bleiben im selben Screen. |
| Popover | Kurze Auswahl oder kurzer Statuscheck. | Action-Typ waehlen, Publish-Kurzcheck, Copy/Share-Hilfe. |
| Confirm-Dialog | Destruktive oder public-wirksame Aktionen. | Loeschen mit Abhaengigkeiten, Unpublish, Archive, ungespeichert verlassen. |
| Toast | Ergebnisfeedback ohne Entscheidung. | Gespeichert, kopiert, veroeffentlicht, dupliziert. |
Arbeitsentscheidung: Routinearbeit bleibt im Builder. Modals sind nur fuer echte Risiko-Momente erlaubt.
### Klick-Matrix
| Aktion | Einstieg | Was passiert nach Klick? | UI-Form | Eigener Subframe-Frame? |
|---|---|---|---|---|
| Feld per Palette anklicken | Linke Palette | Feld wird am Ende eingefuegt, markiert und im Inspector geoeffnet. | Inline + Inspector | nein |
| Feld per Drag hinzufuegen | Linke Palette -> Canvas | Dropzonen erscheinen, Feld landet an Position, danach selected. | Canvas-Zustand | nein |
| Feld auswaehlen | Feldkarte | Fokusrahmen auf Karte, rechter Inspector zeigt Basisdaten. | Inline + Inspector | nein |
| Feld bearbeiten | Inspector | Label, Key, Pflichtfeld, Optionen, Validation usw. werden rechts bearbeitet. | Inspector | nein |
| Pflichtfeld schnell setzen | Feldkarte oder Inspector | Toggle aendert Pflichtstatus, Dirty State wird gesetzt. | Inline | nein |
| Feld duplizieren | Feldkarte-Aktion oder 3-Punkte-Menue | Kopie entsteht unter Original, neuer `field_key` wird vorgeschlagen, Kopie ist selected. | Menue + Toast | nein |
| Feld loeschen ohne Abhaengigkeit | 3-Punkte-Menue oder Gefahrenzone | Kurzer Confirm ist optional; danach Feld entfernen und Toast zeigen. | Menue/Confirm klein | nur dokumentieren |
| Feld loeschen mit Logic/Action-Bezug | 3-Punkte-Menue oder Gefahrenzone | Confirm zeigt betroffene Regeln/Actions; nach Loeschen werden Referenzen markiert oder geloescht. | Confirm-Dialog | nur dokumentieren |
| Feld verschieben | Drag Handle | Reihenfolge aendert sich, Dropziel sichtbar, Dirty State. | Canvas-Zustand | nein |
| Feld einklappen | Feldkarte | Karte wird kompakt, bleibt in Reihenfolge sichtbar. | Inline | nein |
| Fehler anklicken | Summary oder Feldkarte | Scroll/Focus zum betroffenen Feld und passenden Inspector-Abschnitt. | Inline Navigation | nein |
| Logic-Modus oeffnen | Modus-Leiste | Canvas bleibt Kontext, Logic-Liste/Editor wird als Arbeitsbereich sichtbar. | Panel im S01 | nein |
| Logic-Regel anlegen | Button im Logic-Modus | Neue Regel startet als Detailbereich im Panel; kein Modal. | Panel/Drawer | nur dokumentieren |
| Logic-Regel bearbeiten | Regelkarte | Detailbereich oeffnet/rechts aktualisiert sich. | Panel/Inspector | nein |
| Logic-Regel deaktivieren | Toggle auf Regelkarte | Regel bleibt sichtbar, wirkt aber nicht; kein Confirm. | Inline | nein |
| Logic-Regel loeschen | 3-Punkte-Menue | Bei aktiver/published Form Confirm, sonst kleine Menue-Aktion mit Undo/Toast. | Menue + Confirm nach Risiko | nur dokumentieren |
| Actions-Modus oeffnen | Modus-Leiste | Action-Liste und Detailbereich erscheinen im selben Builder. | Panel im S01 | nein |
| Post-Submit-Action hinzufuegen | Button im Actions-Modus | Typ-Auswahl oeffnet als kleines Auswahlpanel/Popover, danach Detailkonfiguration. | Popover + Panel/Drawer | nur dokumentieren |
| Action bearbeiten | Actionkarte | Detailpanel zeigt Ziel, Mapping, Test und Warnungen. | Panel/Drawer | nein |
| Field-Mapping setzen | Action-Detail | Mapping-Zeilen werden inline bearbeitet. | Inline im Panel | nein |
| Action testen | Action-Detail | Ergebnis erscheint inline im Action-Detail, zusaetzlich Toast bei Erfolg. | Inline + Toast | nein |
| Action deaktivieren | Toggle auf Actionkarte | Action bleibt sichtbar, wird beim Submit nicht ausgefuehrt. | Inline | nein |
| Action loeschen | 3-Punkte-Menue | Confirm, wenn Action aktiv/published oder Mapping besitzt. | Confirm-Dialog | nur dokumentieren |
| Sharing oeffnen | Header-Share oder Modus-Leiste | Sharing-Panel mit URL, QR, iFrame wird sichtbar. | Panel im S01 | nein |
| Public URL kopieren | Sharing-Panel | Copy-Aktion, danach Toast. | Button + Toast | nein |
| QR/iFrame kopieren | Sharing-Panel | Copy/Download, danach Toast; kein Modal. | Button + Toast | nein |
| Sharing im Draft | Sharing-Panel | URL/QR/iFrame ausgegraut, Publish-Hinweis und Sprung zu Publish/Settings. | Inline Hinweis | nein |
| Preview oeffnen | Header oder Modus-Leiste | Builder wechselt in Public-nahe Vorschau mit Desktop/Mobile-Umschalter. | Modus im S01 | nein |
| Settings oeffnen | Modus-Leiste | Slug, Success, Redirect, Branding und Public-Settings erscheinen im Panel/Inspector. | Panel im S01 | nein |
| Publish klicken | Header | Publish-Check laeuft inline; bei Blockern Summary mit Sprungzielen. | Inline Check / Popover | nur dokumentieren |
| Publish erfolgreich | Header | Status wechselt zu Published, Public URL aktiv, Toast. | Statuswechsel + Toast | nein |
| Publish mit Warnungen | Header | Nicht-blockierende Warnungen erscheinen vor Bestaetigung. | Popover/Inline Summary | nur dokumentieren |
| Unpublish klicken | Header/More | Confirm erklaert, dass Public-Link nicht mehr erreichbar ist. | Confirm-Dialog | nur dokumentieren |
| Archive klicken | More-Menue | Confirm, weil Bearbeitung/Public-Kontext endet. | Confirm-Dialog | nur dokumentieren |
| Weg navigieren mit Dirty State | Zurueck/Breadcrumb/Routewechsel | Warnung vor ungespeicherten Aenderungen. | Confirm-Dialog | nur dokumentieren |
### Zusaetzliche dokumentierte Zustaende nach Review
Diese Zustaende muessen bewusst beschrieben werden. D07, D08 und D09 sind nach aktueller Empfehlung zusaetzliche Subframe-Zustaende; die restlichen bleiben dokumentiert.
| ID | Zustand / Ebene | UI-Form | Empfehlung |
|---|---|---|---|
| D01 | [[D01 Sharing Panel URL QR iFrame]] | Panel im S01 | In S01 integrieren, kein eigener Screen. |
| D02 | [[D02 Post-Submit Actions]] | Panel im S01 | In S01 integrieren, kein eigener Screen. |
| D03 | [[D03 Conditional Logic Editor]] | Panel im S01 | In S01 integrieren, kein eigener Screen. |
| D06 | [[D06 Feldkarten Menue]] | 3-Punkte-Menue | In S01 dokumentieren, kein eigener Screen. |
| M01 | [[M01 Feld loeschen Confirm]] | Kleiner Confirm-Dialog | Nur als Zustand dokumentieren; extra Frame nur wenn David ihn sehen will. |
| D07 | [[91 D07 Logic Regel Detail|D07 Logic Regel Detail]] | Panel/Drawer im S01 | Als zusaetzlichen Subframe-Zustand bauen, damit Logic visuell pruefbar ist. |
| D08 | [[92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]] | Panel/Drawer im S01 | Als zusaetzlichen Subframe-Zustand bauen, weil Mapping komplex ist. |
| D09 | [[93 D09 Publish Blocker Summary|D09 Publish Blocker Summary]] | Inline Banner/Popover | Als zusaetzlichen Subframe-Zustand bauen, weil Publish kritisch ist. |
| M02 | [[M02 Unpublish Confirm]] | Confirm-Dialog | Nur dokumentieren, weil public-wirksam. |
| M03 | [[M03 Archive Confirm]] | Confirm-Dialog | Nur dokumentieren, nicht Hauptscreen. |
| M04 | [[M04 Unsaved Changes Confirm]] | Confirm-Dialog | Standardzustand, nur dokumentieren. |
| D10 | [[D10 Builder Interaktionsfaelle]] | Case-Matrix | Auswahlfolgen, vergessene Pflichtteile, Dropdowns, Popovers und Folgefehler dokumentieren. |
### Antworten auf Davids Beispiel-Fragen
| Frage | Antwort fuer D-FORM |
|---|---|
| Feld bearbeiten: inline im rechten Inspector oder eigenes Modal? | Rechter Inspector. Kein Modal fuer normale Feldbearbeitung. |
| Feld loeschen/duplizieren: Feldkarte, 3-Punkte-Menue oder Confirm? | Duplizieren ueber Feldkarte/3-Punkte-Menue ohne Confirm. Loeschen ueber 3-Punkte-Menue oder Gefahrenzone; Confirm bei Abhaengigkeiten oder published Risiko. |
| Logic-Regel anlegen: gleiches Panel, Drawer oder Modal? | Gleiches Logic-Panel bzw. rechter Detailbereich im S01. Kein Modal. |
| Post-Submit-Action hinzufuegen: Inline, Drawer oder Modal? | Typauswahl als kleines Auswahlpanel/Popover; Konfiguration im Action-Detail-Panel/Drawer. |
| Sharing oeffnen: Tab/Panel, Popover oder Modal? | Panel/Modus im S01. Copy-Aktionen nur mit Toast. |
| Publish/Unpublish: Inline-Check, Popover oder Confirm? | Publish als Inline-Check mit Summary/Popover; Unpublish als Confirm-Dialog. |
### Was-passiert-wenn-Faelle
Die Detailfaelle fuer Auswahlfolgen, vergessene Zwischenschritte, Checkboxen, Dropdowns, Bild/Datei-Folgen, Modaltexte und Publish-Blocker liegen in [[D10 Builder Interaktionsfaelle]].
Merksatz fuer den Advanced Builder: Jede Auswahl, die Folgefelder veraendert, muss sichtbar machen, was danach wichtig wird. Wenn Nutzer einen mittleren Pflichtschritt vergessen, bleibt der Fehler lokal sichtbar und wird beim Publish/Test mit konkretem Sprungziel aufgegriffen.
## Detail: Header / Statusbar
| Element | Zustand / Inhalt | Aktion / Ergebnis |
|---|---|---|
| Breadcrumb | Formulare > Formularname | Zur Forms-Liste zurueck, aber Forms-Liste ist nicht Teil von D-FORM. |
| Form-Name inline | Name, Dirty Marker, ggf. fehlender Name | Klick/Enter bearbeitet Name; leerer Name blockiert Publish. |
| Status-Badge | Draft, Published, Archived, Unpublished changes, Error | Erklaert, ob Public-Link aktiv ist. |
| Autosave/Save | Ungespeichert, Speichert, Gespeichert, Fehler | Speichert Form-Stammdaten, Felder, Logic, Actions. |
| Preview | Desktop/Mobile/Public-nahe Vorschau | Oeffnet Preview-Modus im selben Builder. |
| Publish | Draft -> Published | Startet Publish-Check; bei Blockern kein Publish. |
| Unpublish | Published -> Draft/private | Zeigt Warnung, weil Public-Link danach nicht mehr nutzbar ist. |
| Share | URL/QR/iFrame | Oeffnet Sharing-Modus; bei Draft mit Hinweis. |
| More-Menue | Duplizieren, Drchivieren, ggf. Vorlage erstellen | Keine destruktive Aktion ohne Confirm. |
### Header-Zustaende
| Zustand | UI-Hinweis | Naechste Aktion |
|---|---|---|
| Entwurf ohne Fehler | Draft-Badge, Save aktiv wenn dirty | Weiter bearbeiten oder publishen. |
| Entwurf mit Blockern | Validation-Summary sichtbar | Fehler anklicken und beheben. |
| Published ohne Aenderungen | Published-Badge, Public-Link aktiv | Teilen oder unpublishen. |
| Published mit ungespeicherten Aenderungen | Hinweis "Aenderungen noch nicht veroeffentlicht" | Speichern/Publish-Update pruefen. |
| Archived | Bearbeitung eingeschraenkt oder read-only | Duplizieren oder zur Liste zurueck. |
| Save fehlgeschlagen | Banner/Inline in Headernaehe | Erneut speichern. |
## Detail: Feld-Palette
Die Palette soll nicht wie eine lange Komponentenliste wirken, sondern wie ein schneller Baukasten.
| Gruppe | Feldtypen | Notiz |
|---|---|---|
| Text & Kontakt | Text, Textarea, Email, Telefon | Die haeufigsten Felder oben. |
| Zahlen & Datum | Zahl, Waehrung, Datum, Datum-Range | Mit kurzem Format-Hinweis. |
| Auswahl | Select, Multi-Select, Boolean | Radio/Checkbox-Liste sind Darstellungsvarianten, keine extra Feldtypen. |
| Upload | Datei | Foto ist mobile Upload-Variante. |
### Palette-Aktionen
| Aktion | Ergebnis |
|---|---|
| Feld anklicken | Feld wird am Ende des Canvas eingefuegt und direkt ausgewaehlt. |
| Feld ziehen | Dropzone im Canvas erscheint; Feld wird an Position eingefuegt. |
| Feld suchen | Palette filtert nach Feldtyp/Use Case. |
| Feld disabled | Tooltip erklaert, warum Feldtyp nicht verfuegbar ist. |
### Palette-Abgrenzung
| Element | In Palette? | Begruendung |
|---|---|---|
| mCaptcha/Honeypot | nein | Systemschutz, kein normales Formularfeld. |
| Signature | nein fuer v1 | Signatur-Kontext bleibt separat/offen. |
| Address | nein fuer v1 | Haengt an Maps/Autocomplete, v2 oder Spezialbaustein. |
| Section Header / Description | offen | Kann nuetzlich sein, ist aber kein A4-12-Feldtyp. Als "Content Block" spaeter pruefen. |
| Hidden Field | nein fuer v1 | Personalisierte Links/URL-Parameter sind v2. |
## Detail: Canvas
Der Canvas ist keine freie Zeichenflaeche, sondern eine sortierbare Formularstruktur.
| Canvas-Element | Zweck |
|---|---|
| Formular-Intro | Titel/Beschreibung aus Stammdaten als Kontext, nicht voll editieren im Canvas. |
| Feldkarte | Label, Typ, Pflichtmarker, kurzer Helptext, Fehlerstatus, Aktionen. |
| Dropzone zwischen Feldern | Zeigt, wo ein neues/gezogenes Feld landet. |
| Ausgewaehltes Feld | Sichtbarer Fokusrahmen; Inspector zeigt Details. |
| Inline-Fehler | Direkt an Feldkarte, wenn Label/Optionen/Validation fehlen. |
| Canvas-Summary | Oben im Canvas: Anzahl Felder, sichtbare Fehler, Logic-Warnungen. |
### Canvas-Aktionen
| Aktion | Erwartetes Verhalten |
|---|---|
| Feld auswahlen | Rechts oeffnet Field Inspector. |
| Feld verschieben | Reihenfolge aendert sich; Dirty State wird gesetzt. |
| Feld duplizieren | Kopie unter Original; neuer field_key wird vorgeschlagen. |
| Feld loeschen | Confirm, wenn Feld in Logic oder Actions verwendet wird. |
| Feld einklappen/ausklappen | Lange Formulare bleiben scanbar. |
| Feld als Pflicht markieren | Schnellaktion oder Inspector-Setting. |
| Fehler anklicken | Springt zum betroffenen Feld/Inspector-Abschnitt. |
### Canvas-Zustaende
| Zustand | Darstellung | Umsetzung |
|---|---|---|
| Empty | Grosse Dropzone mit CTA "Feld hinzufuegen"; Beispiel-Felder optional. | Bauen in S01 |
| Dragging | Dropzones sichtbar, Zielposition klar. | In S01 beschreiben |
| Feld selected | Fokusrahmen + Inspector offen. | Bauen |
| Feld invalid | Feldkarte mit Warnung und Summary oben. | Bauen/dokumentieren |
| Lange Liste | Sticky Header, Feldkarten kompakt, ggf. Mini-Navigation. | Beschreiben |
| Referenzbruch | Feldkarte zeigt "Wird in Logic/Action verwendet". | Wichtig fuer Delete/Publish |
## Detail: Feld-Inspector
Der Inspector ist der eigentliche Produktivbereich fuer Felddetails. Er braucht klare Sektionen, sonst wird der Builder unlesbar.
| Inspector-Sektion | Inhalt | Sichtbarkeit |
|---|---|---|
| Basis | Label, field_key, Beschreibung, Placeholder, Pflichtfeld. | immer |
| Darstellung | Breite/Variante, Helptext-Position, Auswahl-Darstellung. | je Feldtyp |
| Optionen | Select/Multi-Select-Optionen, Reihenfolge, Default. | Auswahlfelder |
| Validation | Min/max, Regex, Datei-Typ/Groesse, Custom Error. | je Feldtyp |
| Default | Vorbefuellung, sofern erlaubt. | optional |
| Logic-Hinweis | Welche Regeln dieses Feld nutzen. | wenn betroffen |
| Mapping-Hinweis | Welche Actions dieses Feld verwenden. | wenn betroffen |
| Gefahrenzone | Feld loeschen. | unten, klar getrennt |
### Field-Key-Regel
`field_key` soll sichtbar, aber nicht lauter als Label sein. Empfehlung:
- Automatisch aus Label erzeugen.
- Editierbar in Advanced/Basisdetails.
- Warnung, wenn doppelt oder ungueltig.
- Beim Umbenennen zeigen, ob Actions/Logic betroffen sind.
## Detail: Feldtypen und Inspector-Properties
| Feldtyp | Basis-Properties | Spezielle Properties | Validation |
|---|---|---|---|
| Text | Label, Key, Helptext, Placeholder, Pflicht | Einzeilig, Default | min/max Laenge, Regex, Custom Error |
| Textarea | Label, Key, Helptext, Placeholder, Pflicht | Zeilenhoehe, Markdown-Anmutung optional | min/max Laenge, Custom Error |
| Zahl | Label, Key, Helptext, Placeholder, Pflicht | Ganzzahl/Dezimal, Schrittweite | min/max Wert, Custom Error |
| Waehrung | Label, Key, Helptext, Pflicht | Waehrung, Dezimalstellen, Format | min/max Betrag |
| Datum | Label, Key, Helptext, Pflicht | Datum, optional Zeit als v2/Variante | min/max Datum |
| Datum-Range | Label, Key, Helptext, Pflicht | Start-/End-Label, Zeitraum | Ende nach Start, min/max Datum |
| Select | Label, Key, Helptext, Pflicht | Optionen, Default, Darstellung Dropdown/Radio | mind. 1 Option, keine leeren Optionen |
| Multi-Select | Label, Key, Helptext, Pflicht | Optionen, max. Auswahl, Chips/Checkboxen | min/max Auswahl |
| Boolean | Label, Key, Helptext | Checkbox/Toggle, Zustimmungstext | Muss true sein optional |
| Email | Label, Key, Helptext, Placeholder, Pflicht | Formatvalidierung, ggf. Submitter-Email markieren | Email-Format |
| Telefon | Label, Key, Helptext, Placeholder, Pflicht | Land/Format-Hinweis | Telefonformat |
| Datei | Label, Key, Helptext, Pflicht | Erlaubte Dateitypen, max. Groesse, mehrere Dateien, Foto-Hinweis | Datei-Typ, Groesse |
### Feldtypen-Entscheidungen offen fuer David
| Frage | Empfehlung |
|---|---|
| URL als eigener Feldtyp? | Nicht in A4-12, fuer v1 als Text mit URL-Validation oder spaeterer Spezialtyp. |
| Foto als eigener Feldtyp? | Nein, als Datei-Upload-Variante mit Mobile-Kamera-Hinweis. |
| Signature als Feldtyp? | Nicht in D-FORM v1, weil Signatur-Wizard/Abnahme eigener Kontext ist. |
| Section Header/Description Block? | Als optionaler Content Block pruefen, aber nicht als Pflichtbestandteil der 12 Feldtypen. |
| Hidden Field? | Raus fuer v1, weil personalisierte Links/URL-Parameter v2 sind. |
### Feld-Interaktionsfaelle
Siehe [[D10 Builder Interaktionsfaelle]] fuer:
- Select-Feld ohne Optionen.
- Datei/Fotofeld mit Upload-, Kamera-, Groessen- und Typ-Hinweisen.
- Field Key wird geaendert und betrifft Logic/Actions.
- Option wird geloescht, obwohl sie in Logic genutzt wird.
- Feldtyp wird nachtraeglich geaendert.
## Detail: Validation
Validation muss zwei Ebenen haben: Feldvalidierung beim Bearbeiten und Publish-Validierung fuer das gesamte Formular.
| Ebene | Beispiele | UI-Form |
|---|---|---|
| Feld-Validation | Label fehlt, Option leer, min > max, Datei ohne erlaubte Typen. | Inline am Feld + Inspector. |
| Form-Validation | Kein sichtbares Feld, Slug fehlt, Slug-Konflikt, kaputte Logic. | Summary-Banner + klickbare Liste. |
| Action-Validation | Pflichtmapping fehlt, Webhook-URL ungueltig, Empfaenger fehlt. | Im Actions-Modus + Publish-Summary. |
| Sharing-Validation | Draft nicht public, iFrame ohne Publish, Allowed-Origin-Warnung. | Im Sharing-Modus. |
### Publish-Blocker
| Blocker | Warum blockiert? | Wo zeigen? |
|---|---|---|
| Formularname fehlt | Public/Intern nicht identifizierbar. | Header + Summary |
| Slug fehlt oder Konflikt | Public URL kann nicht erzeugt werden. | Settings + Summary |
| Kein sichtbares Feld | Public Form waere leer. | Canvas Empty + Summary |
| Feld ohne Label | Public Form waere unklar. | Feldkarte + Inspector |
| Select ohne Optionen | Submitter kann nicht antworten. | Feldkarte + Inspector |
| Datum-Range ungueltig | Regel ist widerspruechlich. | Inspector |
| Kaputte Logic-Referenz | Public-Anzeige nicht verlaesslich. | Logic-Modus + Summary |
| Pflichtmapping fehlt | Action wuerde fehlschlagen. | Actions-Modus + Summary |
### Nicht blockierend, aber warnen
| Warnung | Grund |
|---|---|
| Required Email ohne Submitter-Email-Markierung | Kann fuer Auto-Match/Antwortmail relevant sein. |
| Datei-Upload ohne Typbeschraenkung | Risiko fuer Public Form. |
| Sehr langes Formular | Public-Conversion/Mobile leidet. |
| Published Form wird stark geaendert | Bestehender Public-Link bleibt aktiv, Aenderung ist relevant. |
## Detail: Conditional Logic
V1 soll einfach bleiben: Anzeige/Ausblenden, keine komplexe Verzweigungsmaschine.
| Element | Inhalt |
|---|---|
| Regelname optional | z. B. "Zeige Upload bei Foto vorhanden". |
| Wenn-Feld | Nur vorhandene Felder, die als Bedingung sinnvoll sind. |
| Operator | ist, ist nicht, enthaelt, enthaelt nicht, ist leer, ist nicht leer. |
| Wert | Abhaengig vom Feldtyp, z. B. Option bei Select. |
| Dann-Aktion | Feld anzeigen oder Feld verstecken. |
| Ziel-Feld | Das Feld, dessen Sichtbarkeit gesteuert wird. |
| Aktiv/Inaktiv | Regel testen oder parken. |
### Logic-Regeln
| Fall | UI-Verhalten |
|---|---|
| Bedingungsfeld geloescht | Regel wird rot markiert und blockiert Publish. |
| Ziel-Feld geloescht | Regel wird rot markiert und blockiert Publish. |
| Ziel-Feld required aber versteckt | Hinweis: Pflicht gilt nur wenn sichtbar. |
| Mehrere Regeln fuer ein Feld | Hinweis auf Kombinationslogik; v1 braucht einfache Erklaerung. |
| Regel testen | Preview zeigt, welche Felder live erscheinen/verschwinden. |
Nicht v1: Multi-Step-Flow, Repeater, Cross-Field-Rechnung, If/Else-Baum, Scoring, A/B-Testing.
## Detail: Publish / Unpublish
| Aktion | Ablauf |
|---|---|
| Publish | Nutzer klickt Publish, System prueft Blocker, bei Erfolg Status Published und Public URL aktiv. |
| Publish mit Blockern | Kein Publish; Summary zeigt Fehler mit Sprungziel. |
| Update published Form | Hinweis, dass Aenderungen die public Version betreffen; Save/Publish-Update klar trennen falls noetig. |
| Unpublish | Confirm mit Hinweis, dass Public URL nicht mehr erreichbar ist. |
| Archive | More-Menue, Confirm; nicht als Hauptaktion. |
Empfehlung: Publish ist kein eigener Screen. Ein Confirm/Popover reicht, solange Blocker klar im Builder sichtbar sind.
## Detail: Sharing
Sharing ist v1, aber nur fuer einfache Verteilung.
| Bereich | Inhalt | Aktion |
|---|---|---|
| Public URL | `app.hivegrid.de/f/{tenant}/{slug}` | Kopieren, oeffnen. |
| QR-Code | QR fuer Public URL | Kopieren/downloaden. |
| iFrame | Embed-Code mit Breite/Hoehe/Auto-Resize-Hinweis | Code kopieren. |
| Publish-Hinweis | Draft/Unpublished zeigt Warnung | Zum Publish springen. |
| v2-Abgrenzung | Personalisierte Links, JS-Snippet | Nicht als aktiver UI-Teil. |
### Sharing-Zustaende
| Zustand | Darstellung |
|---|---|
| Draft | URL-Vorschau ausgegraut, Hinweis "erst nach Publish erreichbar". |
| Published | URL, QR, iFrame aktiv. |
| Slug fehlt | Sharing blockiert und verweist auf Settings. |
| Public geschlossen/Limit erreicht | Hinweis, dass Link zwar existiert, Public Form aber blockieren kann. |
## Detail: Post-Submit-Actions
Actions sind sichtbar, aber S01 darf nicht wie ein voller Automation-Editor werden.
| Action-Typ | Zweck in S01 | Konfiguration |
|---|---|---|
| Email an Submitter | Bestaetigung senden. | Empfaengerfeld, Betreff, Nachricht/Template. |
| Email an Team | Intern informieren. | Empfaenger, Betreff, Felder-Auswahl. |
| Lead erstellen | Submission in Lead-Inbox geben. | Mapping: Name, Email, Telefon, Nachricht, Quelle. |
| Kontakt erstellen | CRM-Kontakt anlegen. | Mapping, Duplikat-/Auto-Match-Hinweis. |
| Projekt erstellen | Projekt/Auftrag anlegen. | Pipeline/Status, Pflichtmapping, Verantwortlicher. |
| Task erstellen | Aufgabe erzeugen. | Titel, Beschreibung, Faelligkeit, Assignee. |
| Auto-Match | Bestehende Entitaet per Email/Telefon verknuepfen. | Match-Felder, Fallback. |
| Webhook | Externes System informieren. | URL, Methode falls noetig, Test. |
| Automation-Trigger | M17 Automation starten. | Automation-Auswahl/Trigger. |
| KWP Push | Laut M05 vorhanden, aber KWP v1 raus. | Nicht aktiv in D-FORM v1, hoechstens v2/raus markieren. |
### Action-UI
| Element | Zweck |
|---|---|
| Action-Liste | Reihenfolge, Typ, Status, Warnungen. |
| Add Action | Typ-Auswahl mit kurzer Erklaerung. |
| Action-Detail | Ziel, Bedingungen, Mapping, Test. |
| Field-Mapping-Zeilen | Form-Feld -> Ziel-Feld; Pflichtfelder sichtbar. |
| Test/Preview | Zeigt, was bei einer Beispiel-Submission erzeugt wuerde. |
| Action aktiv/inaktiv | Action parken ohne Loeschen. |
### Action-Blocker
| Blocker | UI |
|---|---|
| Pflichtmapping fehlt | Warnung an Action + Publish-Summary. |
| Ziel-Pipeline fehlt | Inline im Projekt-Action-Detail. |
| Email-Empfaenger fehlt | Inline im Email-Action-Detail. |
| Webhook-URL ungueltig | Inline + Test disabled. |
| Automation nicht aktiv/verfuegbar | Warnung mit Erklaerung. |
Nicht in S01 bauen: ActionLog, Re-Run, Fehlerhistorie je Submission. Das gehoert zur Submissions-Ansicht.
## Detail: Permissions / Read-only
| Permission / Rolle | Darf sehen | Darf tun |
|---|---|---|
| `forms.basic` | ggf. Submissions, aber nicht Builder-Fokus. | Kein Builder-Hauptflow. |
| `forms.builder` | Builder sehen und bearbeiten. | Felder, Logic, Settings speichern. |
| `forms.publisher` | Builder + Sharing. | Publish/Unpublish, Export/Submissions ausserhalb D-FORM. |
| `forms.admin` | Alles im Builder. | Actions, Templates, administrative Optionen. |
### Permission-Zustaende in S01
| Zustand | UI |
|---|---|
| Keine Builder-Rechte | Permission-State statt Builder; CTA "Admin kontaktieren" oder zurueck. |
| Read-only wegen fehlender Publish-Rechte | Publish disabled mit Tooltip, Bearbeitung ggf. erlaubt. |
| Actions nur Admin | Actions-Modus disabled oder read-only mit Hinweis. |
| Archived Form | Bearbeitung eingeschraenkt; Duplizieren als naechste Aktion. |
## Daten
- Form-Stammdaten: Name, Beschreibung, Slug, Status, Subtype.
- Form-Felder: Reihenfolge, Feldtyp, Label, Beschreibung/Hilfe, Placeholder, Pflichtfeld.
- Feldtypen v1: Text, Textarea, Zahl, Waehrung, Datum, Datum-Range, Select, Multi-Select, Boolean, Email, Telefon, Datei.
- Feld-Konfiguration: Optionen, Default, Validation, Datei-/Foto-Regeln je Feldtyp.
- Conditional Logic: einfache Wenn-Dann-Regeln.
- Live-Vorschau: gerenderte Form in Public-nahem Zustand.
- Sharing: Public URL, QR-Code, iFrame-Code.
- Post-Submit-Actions: Lead/Kontakt/Projekt/Task, Email, Webhook, Automation-Trigger, Auto-Match.
- Field-Mapping je Action.
- Publish-Status und moegliche Publish-Blocker.
## Header / Statusbar
| Element | Zweck |
|---|---|
| Form-Name inline | schnell umbenennen. |
| Status-Badge | Draft, Published, Archived, Fehler. |
| Save | Entwurf sichern. |
| Preview | Public-nahe Vorschau oeffnen/umschalten. |
| Publish/Unpublish | Public-Verfuegbarkeit steuern. |
| Share | URL, QR und iFrame erreichbar machen. |
| Validation-Summary | zeigt, ob Publish blockiert ist. |
## Aktionen
- Feld aus Palette hinzufuegen.
- Feld per Drag-and-Drop verschieben.
- Feld auswaehlen.
- Feld bearbeiten.
- Feld duplizieren.
- Feld loeschen.
- Feld als Pflichtfeld markieren.
- Validierung konfigurieren.
- Optionen fuer Select/Multi-Select/Radio pflegen.
- Conditional-Logic-Regel anlegen, bearbeiten, deaktivieren, loeschen.
- Vorschau ansehen.
- Form speichern.
- Form publishen/unpublishen.
- Public URL kopieren.
- QR-Code kopieren/downloaden.
- iFrame-Code kopieren.
- Post-Submit-Action hinzufuegen.
- Field-Mapping setzen.
- Webhook testen oder validieren.
## Feldtypen v1
| Feldtyp | Was David sichtbar machen sollte |
|---|---|
| Text | Label, Placeholder, Pflicht, min/max Laenge. |
| Textarea | Label, Helptext, Pflicht, min/max Laenge. |
| Zahl | Label, min/max, Dezimal/Ganzzahl-Hinweis. |
| Waehrung | Betrag, Waehrung/Format, min/max. |
| Datum | Date-Picker, Pflicht, min/max Datum optional. |
| Datum-Range | Start/Ende, Validierung Ende nach Start. |
| Select | Optionen, ein Wert. |
| Multi-Select | Optionen, mehrere Werte. |
| Boolean | Checkbox/Toggle, Pflicht-/Zustimmungsfall. |
| Email | Email-Validation automatisch. |
| Telefon | Telefonformat-Hinweis. |
| Datei | Upload, erlaubte Typen, max. Groesse; Foto als mobile Upload-Variante. |
Anti-Spam-Felder wie Honeypot/mCaptcha sind Systemschutz, nicht Teil der sichtbaren 12-Feld-Palette.
## Logic-Arbeitsbereich
| Element | Zweck |
|---|---|
| Regel-Liste | Alle aktiven Regeln scannen. |
| Neue Regel | Wenn Feld Y Operator Wert Z, dann Feld X anzeigen/verstecken. |
| Feld-Auswahl | Nur vorhandene Felder; kaputte Referenzen sichtbar markieren. |
| Operatoren | v1 simpel: ist, ist nicht, enthaelt, ist leer/nicht leer. |
| Ziel-Feld | Welches Feld wird angezeigt oder verborgen. |
| Regel aktiv/inaktiv | Regel testen oder parken. |
Nicht bauen: komplexe If/Else-Baeume, Multi-Step-Flow, Cross-Field-Rechnung.
## Post-Submit-Actions Schnitt
| Bereich | In S01 zeigen? | Notiz |
|---|---|---|
| Action-Typ waehlen | ja | Lead/Kontakt/Projekt/Task, Email, Webhook, Automation-Trigger, Auto-Match. |
| Reihenfolge | ja | Actions laufen in definierter Reihenfolge. |
| Aktiv/Inaktiv | ja | Einzelne Actions deaktivierbar. |
| Field-Mapping | ja | Form-Feld -> Ziel-Feld, Pflichtwarnungen sichtbar. |
| Bedingung pro Action | optional | Nur einfache Filter, kein voller Logic-Builder. |
| Test/Preview | ja | Was wuerde erzeugt/gesendet? |
| Voller ActionLog/Re-Run | nein | Gehoert zur Submissions-Ansicht, nicht zum Builder-Canvas. |
## Sharing-Arbeitsbereich
| Element | Zweck |
|---|---|
| Public URL | Link kopieren, ggf. oeffnen. |
| QR-Code | Fuer Print/Monteure/Kundenkontakt. |
| iFrame-Code | Einbettung auf Website. |
| Publish-Hinweis | Sharing ist erst sinnvoll, wenn published. |
| v2-Hinweis intern | Personalisierte Links und JS-Snippet nicht in v1. |
## Settings-Arbeitsbereich
| Element | Zweck |
|---|---|
| Slug | Public URL steuern. |
| Success Message | Text nach Submit. |
| Redirect URL | optionales Weiterleitungsziel. |
| Tenant Branding / Theme | Logo/Farbe/Fallback, soweit v1 vorgesehen. |
| Allowed Origins | falls iFrame/API eingeschraenkt wird. |
| Submission Limit / Close Date | optional, falls Dev fuer v1 bestaetigt. |
## Banner / Hinweise
- Publish-Blocker-Banner: zeigt konkrete fehlende Punkte, z. B. kein sichtbares Feld, fehlender Slug, ungueltige Logic-Regel.
- Unsaved-Changes-Hinweis: wenn Nutzer weg navigiert oder publizieren will.
- Reuse-Hinweis optional: Public Renderer wird auch fuer HR/Booking-Intake wiederverwendet, aber nicht als sichtbarer Feature-Text im UI.
## Toasts / Action-Feedback
- Gespeichert.
- Veroeffentlicht.
- Entwurf deaktiviert/unpublished.
- Public URL kopiert.
- QR-Code kopiert/downloadet.
- iFrame-Code kopiert.
- Action gespeichert.
- Test-Webhook erfolgreich/fehlgeschlagen.
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Keine Felder im Canvas | Empty State im Canvas | nein | Bauen | Feld aus Palette hinzufuegen. |
| Feld ohne Label | Inline am Feld + Summary | ja fuer Publish | Nur dokumentieren | Feld konkret benennen. |
| Required Email ohne Email-Validation | Inline-Warnung | nein/Publish-Warnung | Nur dokumentieren | Vorschlag: Email-Validation hinzufuegen. |
| Logic-Regel referenziert geloeschtes Feld | Inline im Logic-Panel + Summary | ja fuer Publish | Nur dokumentieren | Regel reparieren oder deaktivieren. |
| Ungueltige Webhook-URL | Inline im Action-Panel | ja fuer Action | Nur dokumentieren | URL muss http/https und erreichbar sein. |
| Publish erfolgreich | Toast + Statuswechsel | nein | Nur dokumentieren | Veroeffentlicht. |
| Kopieren erfolgreich | Toast | nein | Nur dokumentieren | In Zwischenablage kopiert. |
## Zustaende
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Leer | Neues Formular ohne Felder; Canvas zeigt Drop-Zone und CTA. | Bauen |
| Laden | Form-Definition und Actions werden geladen. | Wiederverwenden |
| Fehler | Form kann nicht geladen werden. | Nur dokumentieren |
| Keine Berechtigung | Nutzer hat keine `forms.builder`/`forms.publish`-Rechte. | Nur dokumentieren |
| Dirty State | Ungespeicherte Aenderungen. | Nur dokumentieren |
| Publish blocked | Form hat Fehler, die Public-Version verhindern. | Nur dokumentieren |
## Blockierende Error States
| Zustand | Was sieht der Nutzer? | Primaeraktion | Sekundare Aktion |
|---|---|---|---|
| Publish blockiert | Banner mit Liste der fehlenden Punkte. | Fehler beheben | Als Entwurf speichern |
| Keine Berechtigung | Permission-State mit Klartext. | Zurueck zu Formularen | Admin kontaktieren |
| Form nicht gefunden | Fehler-State. | Zurueck zu Formularen | - |
## Permissions / Gates
- `forms.builder`: Felder und Konfiguration bearbeiten.
- `forms.publisher`: Publish/Unpublish und Sharing aktivieren.
- `forms.admin`: Actions, Mapping und administrative Optionen.
## Subframe
- [Subframe](https://app.subframe.com/f023064a5ca0/design/e5502f88-9858-460e-abae-671f28464270/edit)
Layout-Regel: Der Advanced Builder nutzt das vorhandene Subframe `Default Page Layout`. Keine eigene Sidebar nachbauen.
## Notizen
Der Builder soll nicht den Automation-Flow-Editor nachbauen. Post-Submit-Actions brauchen nur Reihenfolge, Typ, Ziel und Field-Mapping.
Conditional Logic ist v1, aber eng: Wenn Feld Y = Wert Z, dann Feld X anzeigen. Kein Repeater, kein Multi-Step, keine Cross-Field-Validation.
Wichtig fuer David: Der Screen ist eine Arbeitsflaeche, kein Marketing-Screen. Dichte ist erlaubt, solange die Hauptarbeit gut scannbar bleibt.
@@ -1,34 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: ADV-S01-2
screen: Form-Builder Canvas 2
typ: Advanced / Referenz
umsetzung: Referenz behalten
status: Subframe Draft / aktuell nicht Hauptfluss
route: /forms/:id/edit
subframe: "https://app.subframe.com/f023064a5ca0/design/9529ac6f-eb71-4e5c-8774-7cebe9c8162c/edit"
---
# ADV-S01-2 - Form-Builder Canvas 2
## Status
Diese Seite ist aktuell **nicht Teil des Hauptflusses**.
Sie bleibt als Advanced-/Referenzscreen erhalten, falls David oder spaetere Umsetzung die umfangreichere Builder-Logik pruefen will.
## Warum nicht Hauptfluss
- Zu viel sichtbare Komplexitaet fuer normale Handwerksbetriebe.
- S02 ist aktuell die empfohlene Google-Forms-nahe Hauptvariante.
- Logic, Actions und Publish-Blocker werden in S02 einfacher geloest.
## Subframe
Gebaut in Subframe:
https://app.subframe.com/f023064a5ca0/design/9529ac6f-eb71-4e5c-8774-7cebe9c8162c/edit
@@ -1,98 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: D07
screen: Logic Regel Detail
typ: Panel-Zustand in S01
umsetzung: Bauen
status: Subframe Draft / Review offen
route: in S01 Logic-Modus, kein eigener Screen
subframe: "https://app.subframe.com/f023064a5ca0/design/07b60457-8151-46b9-ba34-34eceffc08bb/edit"
---
# D07 - Logic Regel Detail
## Ziel
Interne Nutzer koennen eine einzelne Sichtbarkeitsregel sauber anlegen oder bearbeiten.
## Pattern / Archetyp
Detailpanel / Drawer innerhalb des Logic-Modus von S01.
## Daten
- Regelname optional
- Bedingungsfeld
- Operator
- Wert
- Dann-Aktion: anzeigen oder verstecken
- Zielfeld
- Status aktiv/inaktiv
- Preview-/Testhinweis
## Aktionen
- Bedingungsfeld waehlen
- Operator waehlen
- Wert setzen
- Zielfeld waehlen
- Aktion anzeigen/verstecken waehlen
- Regel speichern
- Regel testen
- Regel deaktivieren
- Regel loeschen
## Verhalten
- `Neue Regel` oeffnet dieses Detailpanel im selben S01-Screen.
- Keine Modal-Kaskade fuer Logic.
- Feldauswahlen zeigen nur vorhandene passende Felder.
- Wenn ein referenziertes Feld fehlt, bleibt die Regel sichtbar und markiert kaputt.
- Test/Preview kann direkt den Preview-Modus beeinflussen oder eine kurze Vorschau im Panel zeigen.
- Detailfaelle fuer unvollstaendige Auswahlfolgen stehen in [[D10 Builder Interaktionsfaelle]].
## Zustaende
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Neue Regel | leeres Detailpanel mit Pflichtfeldern. | Nur dokumentieren |
| Gueltige Regel | alle Referenzen vorhanden. | Nur dokumentieren |
| Unvollstaendig | Pflichtteil fehlt; Regel kann nicht aktiv werden. | Nur dokumentieren |
| Referenz kaputt | Bedingungs- oder Zielfeld fehlt. | Nur dokumentieren |
| Testmodus | Preview zeigt Wirkung der Regel. | In S01 dokumentieren |
## Auswahlfolge im Panel
| Schritt | Verhalten |
|---|---|
| 1. Wenn-Feld | Nach Auswahl wird das Operator-Dropdown passend zum Feldtyp aktiv. |
| 2. Operator | Bei `ist leer`/`ist nicht leer` entfaellt das Wertfeld. Bei Select/Boolean wird das Wertfeld zur passenden Auswahl. |
| 3. Wert | Pflicht nur bei Operatoren, die einen Wert brauchen. |
| 4. Dann-Aktion | `anzeigen` oder `verstecken`; keine komplexe If/Else-Struktur. |
| 5. Zielfeld | Darf nicht identisch mit dem Bedingungsfeld sein. |
| 6. Aktiv | Erst aktivierbar, wenn alle Pflichtteile gueltig sind. |
## Fehlerlogik
| Fehler | Anzeige | Folge |
|---|---|---|
| Operator fehlt | Inline unter Operator. | Test disabled, aktive Regel nicht moeglich. |
| Wert fehlt | Inline unter Wertfeld. | Test disabled, Publish blockiert nur bei aktiver Regel. |
| Zielfeld fehlt | Inline unter Zielfeld. | Regel unvollstaendig. |
| Referenz kaputt | Rote Markierung an Regel und Detailpanel. | Publish blockiert, Sprung aus Summary. |
| Feldtyp geaendert | Dlter Wert kann ungueltig werden. | Wert neu waehlen oder Regel deaktivieren. |
## Subframe
- [Subframe](https://app.subframe.com/f023064a5ca0/design/07b60457-8151-46b9-ba34-34eceffc08bb/edit)
Gebaut als zusaetzlicher Builder-Zustand. Das Detail bleibt fachlich ein Zustand im Logic-Modus von S01, ist aber als eigener Frame sichtbar, damit David die Regelbearbeitung pruefen kann.
Layout-Regel: D07 nutzt das vorhandene Subframe `Default Page Layout`. Keine eigene Sidebar oder Header-Navigation nachbauen.
## Notizen
Die Regel-Logik bleibt bewusst eng: Wenn Feld Y Operator Wert Z, dann Feld X anzeigen/verstecken.
@@ -1,112 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: D08
screen: Action Detail mit Mapping
typ: Panel-Zustand in S01
umsetzung: Bauen
status: Subframe Draft / Review offen
route: in S01 Actions-Modus, kein eigener Screen
subframe: "https://app.subframe.com/f023064a5ca0/design/0759d779-91f5-4e06-b1d6-7cd0095461ea/edit"
---
# D08 - Action Detail mit Mapping
## Ziel
Interne Nutzer konfigurieren eine einzelne Post-Submit-Action und sehen sofort, ob Pflichtmapping oder Zielwerte fehlen.
## Pattern / Archetyp
Detailpanel / Drawer innerhalb des Actions-Modus von S01.
## Daten
- Action-Typ
- Action-Name
- Status aktiv/inaktiv
- Ziel, z. B. Empfaenger, Pipeline, Projektstatus, Webhook-URL
- Field-Mapping: Formularfeld -> Ziel-Feld
- Pflichtfelder
- optionale Bedingungen
- Teststatus
## Aktionen
- Action benennen
- Ziel konfigurieren
- Mapping-Zeilen setzen
- optionale Bedingung setzen
- Test ausfuehren
- Action speichern
- Action deaktivieren
- Action loeschen
## Verhalten
- Nach Auswahl eines Action-Typs oeffnet sich dieses Detailpanel.
- Mapping wird inline als Zeilenliste bearbeitet.
- Pflichtmapping wird klar markiert.
- Test zeigt ein Ergebnis im Panel, kein eigener Screen.
- Loeschen einer aktiven oder published-relevanten Action nutzt Confirm.
- Detailfaelle fuer halb gesetztes Mapping, Typwechsel und fehlende Pflichtziele stehen in [[D10 Builder Interaktionsfaelle]].
## Action-Typen
| Typ | Wichtigste Konfiguration |
|---|---|
| Email Submitter | Submitter-Email-Feld, Betreff, Nachricht. |
| Email Team | Empfaenger, Betreff, Feldauswahl. |
| Lead | Mapping fuer Name, Email, Telefon, Nachricht, Quelle. |
| Kontakt | Kontakt-Mapping und Duplikat-/Auto-Match-Hinweis. |
| Projekt | Pipeline, Status, Verantwortlicher, Pflichtmapping. |
| Task | Titel, Beschreibung, Faelligkeit, Assignee. |
| Auto-Match | Match-Felder, Fallback. |
| Webhook | URL, Test, Payload-Vorschau. |
| Automation-Trigger | Automation-Auswahl und Trigger-Hinweis. |
## Zustaende
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Neu | Action-Typ gewaehlt, Detail noch leer. | Nur dokumentieren |
| Vollstaendig | Pflichtfelder und Mapping gesetzt. | Nur dokumentieren |
| Pflichtmapping fehlt | Publish oder Action-Test blockiert. | Nur dokumentieren |
| Test erfolgreich | Inline-Ergebnis plus Toast. | Wiederverwenden |
| Test fehlgeschlagen | Inline-Fehler im Panel. | Nur dokumentieren |
## Auswahlfolge im Panel
| Schritt | Verhalten |
|---|---|
| 1. Action-Typ | Bestimmt, welche Pflichtfelder und Mapping-Zeilen erscheinen. |
| 2. Ziel | Empfaenger, Pipeline, Webhook-URL, Automation oder Entity-Ziel wird gesetzt. |
| 3. Mapping | Formularfelder werden Ziel-Feldern zugeordnet. |
| 4. Optional Bedingung | Nur einfache Bedingung; kein zweiter Logic-Builder. |
| 5. Test | Erst aktiv, wenn Pflichtziel und Pflichtmapping vollstaendig sind. |
| 6. Aktiv | Aktive unvollstaendige Actions blockieren Publish; inaktive unvollstaendige Actions nicht. |
## Was-passiert-wenn-Faelle
| Fall | UI-Reaktion | Folge |
|---|---|---|
| Action-Typ gewaehlt, Pflichtziel vergessen | Inline-Fehler im Zielbereich. | Test disabled; aktive Action blockiert Publish. |
| Mapping-Ziel gesetzt, Quelle vergessen | Mapping-Zeile markiert fehlende Quelle. | Test disabled; aktive Action blockiert Publish. |
| Email Submitter ohne Email-Feld | Hinweis mit CTD `Email-Feld hinzufuegen`. | Action bleibt unvollstaendig. |
| Projekt erstellen ohne Pipeline | Pipeline-Auswahl markiert. | Publish blockiert aktive Action. |
| Webhook-URL ungueltig | URL-Feld zeigt Fehler. | Test disabled. |
| Action-Typ nach Mapping wechseln | Confirm/Popover erklaert, dass Mapping ungueltig werden kann. | Nutzer bestaetigt oder bricht ab. |
## Subframe
- [Subframe](https://app.subframe.com/f023064a5ca0/design/0759d779-91f5-4e06-b1d6-7cd0095461ea/edit)
Gebaut als zusaetzlicher Builder-Zustand. Das Detail bleibt fachlich ein Zustand im Actions-Modus von S01, ist aber als eigener Frame sichtbar, weil Mapping und Pflichtfelder fuer den Builder sehr fehleranfaellig sind.
Layout-Regel: D08 nutzt das vorhandene Subframe `Default Page Layout`. Keine eigene Sidebar oder Header-Navigation nachbauen.
## Notizen
ActionLog, Re-Run und Fehlerhistorie pro Submission bleiben ausserhalb von D-FORM.
@@ -1,114 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: D09
screen: Publish Blocker Summary
typ: Inline-Zustand in S01
umsetzung: Bauen
status: Subframe Draft / Review offen
route: in S01 nach Klick auf Publish
subframe: "https://app.subframe.com/f023064a5ca0/design/211e8ca7-fc0b-4c52-a4a4-a1e660209e58/edit"
---
# D09 - Publish Blocker Summary
## Ziel
Interne Nutzer verstehen nach Klick auf Publish sofort, warum ein Formular nicht veroeffentlicht werden kann und wo sie es korrigieren.
## Pattern / Archetyp
Inline Summary-Banner / Popover mit Sprungzielen im S01-Builder.
## Daten
- Anzahl Blocker
- Blocker-Gruppe: Form, Feld, Logic, Actions, Sharing/Settings
- betroffener Feldname oder Action-Name
- Ziel im Builder, zu dem gesprungen werden kann
- nicht-blockierende Warnungen
## Aktionen
- Blocker anklicken
- zum Feld springen
- zum Inspector-Abschnitt springen
- Logic-Modus oeffnen
- Actions-Modus oeffnen
- Settings oeffnen
- Publish nach Korrektur erneut versuchen
## Verhalten
- Klick auf `Publish` startet einen Check im selben Screen.
- Bei Blockern wird nicht published.
- Die Summary erscheint oben im Builder oder als klarer Inline-Bereich nahe der Topbar.
- Jeder Blocker hat ein Sprungziel.
- Nicht-blockierende Warnungen koennen als eigener Abschnitt erscheinen und erlauben Publish nach Bestaetigung.
- Bei Erfolg gibt es Statuswechsel und Toast, keinen eigenen Erfolgsscreen.
- Ausfuehrliche Auswahl-/Vergessensfaelle stehen in [[D10 Builder Interaktionsfaelle]].
## Blocker
| Blocker | Ziel |
|---|---|
| Formularname fehlt | Header/Form-Name |
| Slug fehlt oder Konflikt | Settings |
| Kein sichtbares Feld | Canvas Empty State |
| Feld ohne Label | Feldkarte + Inspector |
| Select ohne Optionen | Feldkarte + Inspector Optionen |
| Kaputte Logic | Logic-Modus |
| Pflichtmapping fehlt | Actions-Modus |
| Webhook-URL ungueltig | Action-Detail |
## Was-passiert-wenn-Faelle
| Fall | Summary-Verhalten | Sprungziel |
|---|---|---|
| Nutzer hat Select-Feld angelegt, aber Optionen vergessen | Blocker `Auswahlfeld hat keine Optionen`. | Feldkarte + Inspector `Optionen` |
| Nutzer hat Logic-Regel halb gebaut | Blocker `Logic-Regel unvollstaendig`, wenn aktiv. | Logic-Regel-Detail |
| Nutzer hat Action-Typ gewaehlt, aber Mapping vergessen | Blocker `Pflichtmapping fehlt`, wenn Action aktiv. | Action-Detail mit Mapping |
| Nutzer hat Datei-Feld ohne Typbeschraenkung | Warnung, nicht zwingend Blocker. | Datei-Feld Inspector |
| Nutzer hat Field Key ungueltig geaendert | Blocker `Field Key ungueltig oder doppelt`. | Inspector Basis/Advanced |
| Nutzer hat nur inaktive unvollstaendige Action | Optional Warnung, kein harter Blocker. | Actions-Liste |
| Nutzer hat unsaved changes | Erst speichern oder Save-Check zeigen. | Header/Save |
## Zustaende
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Keine Blocker | Publish erfolgreich. | Toast/Statuswechsel |
| Blocker vorhanden | Summary mit Sprungzielen. | Nur dokumentieren |
| Nur Warnungen | Nutzer kann trotzdem publishen. | Nur dokumentieren |
| Save vorher noetig | Hinweis, dass Aenderungen erst gespeichert werden. | Nur dokumentieren |
## Copy-Richtung
| Situation | Copy-Beispiel |
|---|---|
| Feld ohne Label | `Dieses Feld braucht ein Label, bevor das Formular veroeffentlicht werden kann.` |
| Select ohne Optionen | `Fuege mindestens eine Option hinzu, damit Nutzer antworten koennen.` |
| Logic unvollstaendig | `Diese Regel ist noch nicht vollstaendig. Ergaenze Operator, Wert oder Zielfeld.` |
| Mapping fehlt | `Diese Action braucht noch eine Zuordnung fuer Pflichtfelder.` |
| Nur Warnung | `Du kannst veroeffentlichen, aber diese Einstellung sollte geprueft werden.` |
## Subframe
Gebaut in Subframe:
https://app.subframe.com/f023064a5ca0/design/211e8ca7-fc0b-4c52-a4a4-a1e660209e58/edit
Qualitaetsregel:
- Interner Builder-Zustand nutzt das vorhandene `Default Page Layout`.
- Keine eigene Sidebar oder Header-Navigation nachbauen.
- D09 bleibt Inline Summary/Banner im Builder, kein Modal/Dialog.
- Publish bleibt deaktiviert, bis harte Blocker geloest sind.
- Warnungen sind sichtbar, blockieren aber nicht zwingend.
- Jeder Blocker hat ein klares Sprungziel in Feld, Logic, Actions oder Settings.
## Notizen
Publish ist kein Wizard. Der Nutzer bleibt im Builder und korrigiert direkt dort.
@@ -8,7 +8,7 @@ screen: Sharing Panel URL QR iFrame
typ: Panel-Zustand in S01
umsetzung: Nur dokumentieren
status: Vor Subframe / dokumentiert
route: in ADV-S01 Form-Builder Canvas, kein eigener Screen
route: Detailnotiz, kein eigener Screen
subframe: "-"
---
@@ -5,10 +5,10 @@ ticket: D-FORM
package: WF-D-FORM Form Builder
id: D02
screen: Post-Submit Actions
typ: Panel-Zustand in S01
typ: Detailnotiz im S02-Kontext
umsetzung: Nur dokumentieren
status: Vor Subframe / dokumentiert
route: in ADV-S01 Form-Builder Canvas, kein eigener Screen
route: Detailnotiz, kein eigener Screen
subframe: "-"
---
@@ -20,7 +20,7 @@ Interne Nutzer legen fest, was nach dem Absenden eines Public Forms passieren so
## Pattern / Archetyp
Action-Liste plus Detailpanel innerhalb von S01.
Action-Liste plus Detailbereich innerhalb des einfachen Builders.
## Daten
@@ -46,9 +46,9 @@ Action-Liste plus Detailpanel innerhalb von S01.
## Verhalten
- Klick auf `Actions` wechselt in den Actions-Modus im selben S01-Screen.
- Klick auf `Nach Absenden` zeigt die Action-/Lead-Optionen im selben S02-Kontext.
- `Add Action` oeffnet eine kleine Typ-Auswahl als Popover oder Auswahlpanel.
- Nach Auswahl eines Action-Typs oeffnet sich das Action-Detail, siehe [[92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]].
- Nach Auswahl eines Action-Typs oeffnet sich die Detailkonfiguration im selben Bereich.
- Die Liste zeigt Warnungen direkt an der betroffenen Action.
- ActionLog, Re-Run und Submission-Historie gehoeren nicht hierher, sondern zu Submissions.
- Auswahl- und Mapping-Folgefaelle stehen in [[D10 Builder Interaktionsfaelle]].
@@ -61,7 +61,7 @@ Action-Liste plus Detailpanel innerhalb von S01.
| Kurzbeschreibung | Pro Typ ein Satz, was nach Submit passiert. |
| Disabled-Zustaende | Typ disabled, wenn Rechte, Integration oder Voraussetzung fehlen. |
| Suche optional | Nur wenn Liste zu lang wirkt. |
| Kein Modal | Das Popover waehlt nur den Typ; Detailarbeit passiert in [[92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]]. |
| Kein Modal | Das Popover waehlt nur den Typ; Detailarbeit passiert im selben Builder-Kontext. |
## Zustaende
@@ -79,12 +79,12 @@ Action-Liste plus Detailpanel innerhalb von S01.
|---|---|
| Nutzer waehlt Typ, bricht Detail ab | Action wird nicht angelegt oder bleibt als unvollstaendiger Draft, je nach Save-Logik. |
| Nutzer erstellt Action, laesst sie inaktiv | Keine Publish-Blockade, aber Warnung in Action-Liste. |
| Nutzer erstellt aktive Action ohne Pflichtmapping | Publish blockiert und springt zu [[92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]]. |
| Nutzer erstellt aktive Action ohne Pflichtmapping | Publish blockiert und springt zur betroffenen Zuweisung. |
| Nutzer loescht Action | Confirm nur bei aktiver/published-relevanter Action. |
## Subframe
Kein eigener Hauptscreen. Actions bleiben Arbeitsbereich in S01. Ein extra Frame ist nur noetig, wenn David die geoeffnete Action-Liste separat sehen will.
Kein eigener Hauptscreen. Actions bleiben Arbeitsbereich im einfachen Builder. Ein extra Frame ist nur noetig, wenn David die geoeffnete Action-Liste separat sehen will.
## Notizen
@@ -5,10 +5,10 @@ ticket: D-FORM
package: WF-D-FORM Form Builder
id: D03
screen: Conditional Logic Editor
typ: Panel-Zustand in S01
typ: Detailnotiz im S02-Kontext
umsetzung: Nur dokumentieren
status: Vor Subframe / dokumentiert
route: in ADV-S01 Form-Builder Canvas, kein eigener Screen
route: Detailnotiz, kein eigener Screen
subframe: "-"
---
@@ -20,7 +20,7 @@ Interne Nutzer koennen einfache Anzeige-/Ausblende-Regeln fuer Formularfelder er
## Pattern / Archetyp
Regel-Liste plus Detailpanel innerhalb von S01.
Einfache Bedingung direkt an der Frage; komplexere Regel-Liste bleibt nur dokumentiert.
## Daten
@@ -44,8 +44,8 @@ Regel-Liste plus Detailpanel innerhalb von S01.
## Verhalten
- Klick auf `Logic` wechselt in den Logic-Modus im selben S01-Screen.
- `Neue Regel` oeffnet kein Modal, sondern ein Detailpanel, siehe [[91 D07 Logic Regel Detail|D07 Logic Regel Detail]].
- Klick auf `Bedingung` oeffnet die einfache Logik direkt an der Frage.
- `Neue Regel` oeffnet kein Modal, sondern bleibt inline im Builder-Kontext.
- Kaputte Referenzen werden in der Regel-Liste sichtbar markiert.
- Kaputte aktive Regeln blockieren Publish.
- Required-Felder, die durch Logic versteckt werden, sind im Public Form nur required, wenn sie sichtbar sind.
@@ -8,7 +8,7 @@ screen: Feldkarten Menue
typ: Inline-Zustand in S01
umsetzung: Nur dokumentieren
status: Vor Subframe / dokumentiert
route: in ADV-S01 Form-Builder Canvas, kein eigener Screen
route: Detailnotiz, kein eigener Screen
subframe: "-"
---
@@ -5,10 +5,10 @@ ticket: D-FORM
package: WF-D-FORM Form Builder
id: D10
screen: Builder Interaktionsfaelle
typ: Case-Matrix in S01
typ: Case-Matrix im S02-Kontext
umsetzung: Nur dokumentieren
status: Vor Subframe / dokumentiert
route: in ADV-S01 Form-Builder Canvas, kein eigener Screen
route: Detailnotiz, kein eigener Screen
subframe: "-"
---
@@ -130,8 +130,5 @@ Nicht jedes Detail muss ein eigener Frame werden. Dber vor Subframe muss klar se
Kein eigener Subframe-Screen. D10 ist eine Vor-Subframe-Case-Matrix. Wenn David einzelne Faelle visuell sehen will, sollten zuerst diese Kandidaten gebaut werden:
- [[93 D09 Publish Blocker Summary|D09 Publish Blocker Summary]]
- [[92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]]
- [[91 D07 Logic Regel Detail|D07 Logic Regel Detail]]
- [[M01 Feld loeschen Confirm]]
- [[M02 Unpublish Confirm]]
@@ -45,7 +45,7 @@ Neue Richtung: einfacher Formular-Editor nach Google-Forms-Gefuehl, aber mit Hiv
| E03 | [[Screens/12 E03 S05 Keine Antworten|E03 S05 Keine Antworten]] | Empty State, wenn ein Formular noch keine Einsendungen hat. |
| E04 | [[Screens/13 E04 S05 Export Fehler|E04 S05 Export Fehler]] | Error State, wenn Excel/CSV-Export scheitert. |
S01B/S01C/S01D/S01E sind gebaut, aber nicht mehr Hauptfluss. Sie liegen als spaetere Varianten bzw. Referenz bei 80-83.
S01C/S01D/S01E sind gebaut, aber nicht Hauptfluss. Sie bleiben als spaetere Varianten bzw. Referenz bei 81-83. S01B wurde aus dem Obsidian-Handoff entfernt.
## Einfacher Ablauf
@@ -100,11 +100,9 @@ Bewusst nicht im aktuellen S02-Hauptdropdown: Lineare Skala, Bewertung, Multiple
S02 wurde in Subframe gebaut, weil es am naechsten an Google Forms liegt und schnell vergleichbar ist.
S01B wurde als zweite Alternative gebaut, ist aktuell aber nicht Hauptfluss.
S01C/S01D/S01E wurden als Beispiel-Editoren gebaut, sind aktuell aber nur Referenz. Im Hauptfluss oeffnen alle Formulararten S02 mit anderer Vorlage/Startfragen.
Der alte ADV-S01 und die Detailseiten D07/D08/D09 bleiben als fachliche Vollstaendigkeits-Referenz erhalten, sollten aber nicht mehr die erste Empfehlung fuer Handwerker sein.
Die alten Advanced-Screens wurden aus dem Obsidian-Handoff entfernt, damit S02 als klare Empfehlung stehen bleibt.
## Ergaenzung: Lead Felder zuweisen
@@ -35,22 +35,12 @@ Flow-Link: https://app.subframe.com/f023064a5ca0/flow/afb1c257-46f0-4b23-aaed-d7
| 11 | S05 | Antworten Tabelle | Hauptfluss / Auswertung | https://app.subframe.com/f023064a5ca0/design/9e8eeab7-44ea-4b77-85e6-0818d97e1ac3/edit |
| 12 | E03 | S05 Keine Antworten | Hauptfluss / Empty | https://app.subframe.com/f023064a5ca0/design/6f56c14f-d66e-4734-8a29-a900ac74a8a7/edit |
| 13 | E04 | S05 Export Fehler | Hauptfluss / Error | https://app.subframe.com/f023064a5ca0/design/00553ea4-9839-4d22-b540-9b9ef0bf014f/edit |
| 80 | S01B | Gefuehrter Fragen Editor | Spaeter / Referenz | https://app.subframe.com/f023064a5ca0/design/d0fb9c3d-4b03-4d59-bd98-9f668ab018eb/edit |
| 81 | S01C | Website Formular Editor | Spaeter / Referenz | https://app.subframe.com/f023064a5ca0/design/d7d33e94-5c12-48e8-8ec6-1e94590ee89c/edit |
| 82 | S01D | Umfrage Editor | Spaeter / Referenz | https://app.subframe.com/f023064a5ca0/design/5abd7799-7058-40b3-9772-884cbda97b9c/edit |
| 83 | S01E | Internes Formular Editor | Spaeter / Referenz | https://app.subframe.com/f023064a5ca0/design/ea08fd1c-1a76-4e2c-b27c-1091baa0586a/edit |
| 90 | ADV-S01 | Form-Builder Canvas | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/e5502f88-9858-460e-abae-671f28464270/edit |
| 90b | ADV-S01-2 | Form-Builder Canvas 2 | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/9529ac6f-eb71-4e5c-8774-7cebe9c8162c/edit |
| 91 | D07 | Logic Regel Detail | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/07b60457-8151-46b9-ba34-34eceffc08bb/edit |
| 92 | D08 | Action Detail mit Mapping | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/0759d779-91f5-4e06-b1d6-7cd0095461ea/edit |
| 93 | D09 | Publish Blocker Summary | Advanced / Referenz | https://app.subframe.com/f023064a5ca0/design/211e8ca7-fc0b-4c52-a4a4-a1e660209e58/edit |
## Qualitaetscheck Builder
- ADV-S01 ist interne Advanced-Mitarbeitersicht, kein Public Formular.
- ADV-S01 nutzt das vorhandene Subframe `Default Page Layout`. Keine eigene Sidebar nachbauen.
- Die extra generierte Seite `ADV-S01 Form-Builder Canvas Default Layout` wurde geloescht, weil sie die Sidebar selbst nachgebaut hatte.
- ADV-S01-2 Form-Builder Canvas 2 liegt als neue Builder-Basis im gleichen Flow.
- S01 ist als vereinfachter Einstieg gebaut: Nutzer waehlt Formularart vor dem Builder.
- S01 nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
- S01 enthaelt Website-/Externes Formular, Lead-Formular, Fragebogen/Umfrage und Internes Formular.
@@ -59,16 +49,13 @@ Flow-Link: https://app.subframe.com/f023064a5ca0/flow/afb1c257-46f0-4b23-aaed-d7
- S02 nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
- S02 ist die Google-Forms-nahe Alternative: Titelkarte, Fragekarten, Google-Forms-nahe Fragetyp-Auswahl, mehrere editierbare Optionen, Pflichtfrage-Toggle und erweiterte Werkzeugleiste.
- S02 zeigt Lead-Verknuepfung als ruhige blaue Card. Die Card nutzt denselben Layout-Aufbau wie die gruene `Lead anlegen`-Card: Icon links, Titel/Badge/Beschreibung in der Mitte, Aktionen rechts.
- Arbeitsentscheidung: S02 ist aktuell der Haupt-Editor fuer alle Formulararten. S01B/S01C/S01D/S01E bleiben spaetere Varianten bzw. Referenz.
- Arbeitsentscheidung: S02 ist aktuell der Haupt-Editor fuer alle Formulararten. S01C/S01D/S01E bleiben spaetere Varianten bzw. Referenz; S01B ist aus dem Obsidian-Handoff entfernt.
- S02-Fragetyp-Dropdown zeigt den aktuell gewaehlten Typ, z. B. `Multiple-Choice-Frage`; `Fragetyp` ist kein sichtbarer Wert.
- Im aktuellen S02-Hauptdropdown bleiben nur: Kurzantwort, Absatz, Multiple-Choice-Frage, Mehrfachauswahl, Drop-down, Datei oder Bild hochladen, Datum und Zeit. Lineare Skala, Bewertung und Raster sind gestrichen.
- In S02 bleiben Logic, Actions und Publish-Blocker einfach: `Bedingung` an der Frage, `Nach Absenden`/Lead anlegen als Card mit `Felder zuweisen`, Publish-Blocker als Banner/Popover im selben Screen.
- S02L ist gebaut: Lead-Felder werden per Dropdown-Vorlage Formularfragen zugewiesen. Die blaue Lead-Card nutzt dort denselben Aufbau wie in S02.
- E05 ist gebaut: unmoegliche oder fehlende Lead-Zuweisungen werden sichtbar markiert.
- Layout-Hinweis fuer S02L/E05: Inhaltlich sind beide Zustaende gebaut. In Subframe bei der finalen Sichtpruefung einmal kontrollieren, ob das vorhandene `Default Page Layout` aktiv ist.
- S01B nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
- S01B ist die gefuehrte Alternative: Schrittleiste, linke Fragenliste, eine aktive Fragekarte und rechte Hilfe-/Preview-Zusammenfassung.
- S01B zeigt Lead-Verknuepfung als einfache aktive Einstellung mit Ziel-Pipeline/Team, ohne Mapping-Panel.
- S01C nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
- S01C ist das Beispiel fuer Website-/Externes Formular: oeffentliche Anfrage, Public-Link-Hinweis, mCaptcha/Datenschutz, kein Lead-Mapping.
- S01D nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
@@ -87,17 +74,7 @@ Flow-Link: https://app.subframe.com/f023064a5ca0/flow/afb1c257-46f0-4b23-aaed-d7
- E01/E02 decken die wichtigen leeren Zustaende der Formular-Zentrale ab: noch keine Formulare und Suche/Filter ohne Treffer.
- E03/E04 decken die wichtigen Zustaende im Antworten-Tab ab: noch keine Antworten und Export-Fehler.
- Layout-Check fuer E01-E04: In Subframe die Page Layout Auswahl pruefen und bei Bedarf `Default Page Layout` setzen. Per MCP kann ich Inhalte bauen/editieren, aber den Page-Layout-Typ nicht verlaesslich setzen.
- ADV-S01 zeigt Topbar mit Save, Preview, Share und Publish.
- ADV-S01 zeigt links die Feld-Palette, mittig den Canvas und rechts den Feld-Inspector.
- ADV-S01 macht die Arbeitsmodi Builder, Logik, Aktionen, Freigabe, Vorschau und Einstellungen sichtbar.
- ADV-S01 zeigt einen konkreten Publish-Blocker fuer ein Select-Feld ohne Optionen.
- D07 nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
- D07 zeigt den Logik-Modus mit Regel-Liste, gewaehltem Regel-Detail, Test/Preview, Inline-Validation und Publish-Blocker-Hinweis.
- D08 nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
- D08 zeigt den Aktionen-Modus mit Action-Liste, Add-Action-Popover, Mapping-Tabelle, Ziel-/Pipeline-Fehlern, Test/Preview und Publish-Blocker-Hinweis.
- D09 nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
- D09 zeigt Publish als blockierten internen Zustand: deaktivierter Publish-Button, 5 harte Blocker, nicht-blockierende Warnungen, Sprungziele und erneute Pruefung.
- D09 bleibt Inline Summary/Banner im Builder und ist kein Modal/Dialog.
- Die alten Advanced-Screens und D07-D09 wurden aus dem Obsidian-Handoff entfernt, weil S02 der aktuelle Review-Hauptfluss ist.
## Qualitaetscheck Public
@@ -128,7 +105,7 @@ Fuer den alten D-FORM-Scope sind keine empfohlenen Frames mehr offen.
Durch Davids neues Lead-Feedback wurden zwei Zustaende ergaenzt und in Subframe gebaut: S02L `Lead Felder zuweisen` und E05 `S02 Lead Zuweisung pruefen`. S00, S01, S02, S02L/E05, S03, S04/Public States, S05 und E01-E04 bilden weiter den aktuellen Hauptfluss.
S01B/S01C/S01D/S01E, ADV-S01 Canvas 1/2 und D07/D08/D09 sind gebaut, aber aktuell nicht relevant fuer den Hauptfluss. Sie bleiben als spaetere Varianten bzw. Referenzseiten erhalten.
S01C/S01D/S01E sind gebaut, aber aktuell nicht relevant fuer den Hauptfluss. Sie bleiben als spaetere Varianten bzw. Referenzseiten erhalten. S01B und die alten Advanced-Screens wurden aus dem Obsidian-Handoff entfernt.
Subframe-Seitenliste: Per MCP kann ich bestehende Pages aktuell nicht umbenennen oder per Drag-and-drop sortieren. Fachlich gilt die Review-Reihenfolge unten. Falls die sichtbare Subframe-Liste sauber sortiert werden soll, die Pages in Subframe manuell umbenennen/ziehen.
@@ -149,15 +126,9 @@ Empfohlene sichtbare Sortierung:
13. `11 S05 Antworten Tabelle`
14. `12 E03 S05 Keine Antworten`
15. `13 E04 S05 Export Fehler`
16. `80 S01B Gefuehrter Fragen Editor`
17. `81 S01C Website Formular Editor`
18. `82 S01D Umfrage Editor`
19. `83 S01E Internes Formular Editor`
20. `90 ADV Form-Builder Canvas`
21. `90b ADV Form-Builder Canvas 2`
22. `91 D07 Logic Regel Detail`
23. `92 D08 Action Detail mit Mapping`
24. `93 D09 Publish Blocker Summary`
16. `81 S01C Website Formular Editor`
17. `82 S01D Umfrage Editor`
18. `83 S01E Internes Formular Editor`
M01-M04 bleiben dokumentierte Confirm-Zustaende und werden nur gebaut, wenn David sie explizit anfordert.
@@ -177,7 +148,7 @@ Falls spaeter D-FORM-M-Zustaende gebaut werden, muessen sie als `Dialog`-Kompone
- M03 Archive Confirm
- M04 Unsaved Changes Confirm
D07 und D08 bleiben Panel/Drawer-Zustaende im Builder. D09 bleibt Inline Summary/Banner. Diese drei sind keine Dialoge.
Die alten Advanced-Detailframes D07/D08/D09 sind nicht mehr Teil dieses Obsidian-Handoffs.
## Naechster Subframe-Schritt
@@ -199,4 +170,4 @@ Review in Subframe in dieser Reihenfolge:
14. `E03 S05 Keine Antworten`
15. `E04 S05 Export Fehler`
Danach nur bei Bedarf die spaeteren Referenzseiten pruefen: S01B/S01C/S01D/S01E, ADV-S01 Canvas 1/2 und D07/D08/D09.
Danach nur bei Bedarf die spaeteren Referenzseiten pruefen: S01C/S01D/S01E.
@@ -53,19 +53,13 @@ Empfehlung fuer Review und Weiterarbeit: zuerst den aktuellen Hauptfluss pruefen
| 13 | S05 Antworten Tabelle | Antworten-Tab als Excel-/Tabellenansicht. |
| 14 | E03 S05 Keine Antworten | Wichtiger Empty State im Antworten-Tab. |
| 15 | E04 S05 Export Fehler | Wichtiger Fehlerzustand beim Export. |
| 80 | S01B Gefuehrter Fragen Editor | Spaetere Alternative fuer Nutzer, die noch mehr Fuehrung brauchen. |
| 81 | S01C Website Formular Editor | Spaetere Beispiel-/Referenzseite fuer Website-/externes Formular. |
| 82 | S01D Umfrage Editor | Spaetere Beispiel-/Referenzseite fuer Fragebogen/Umfrage. |
| 83 | S01E Internes Formular Editor | Spaetere Beispiel-/Referenzseite fuer internes Mitarbeiterformular. |
| 90 | ADV-S01 Form-Builder Canvas | Aelterer Profi-Canvas als Referenz. |
| 90b | ADV-S01-2 Form-Builder Canvas 2 | Advanced-/Referenz-Builder; nicht mehr erste Nutzerrichtung. |
| 91 | D07 Logic Regel Detail | Advanced-Zustand fuer Sichtbarkeitsregeln. |
| 92 | D08 Action Detail mit Mapping | Advanced-Zustand fuer Nach-Submit-Aktionen. |
| 93 | D09 Publish Blocker Summary | Advanced-Zustand fuer Publish-Blocker. |
M01/M02/M03/M04 und D10 bleiben dokumentiert und muessen nicht als erste Subframe-Frames gebaut werden.
Stand 2026-07-09: Die einfachen Builder-Screens sind gebaut und werden fuer Review vor den alten Canvas-Entwuerfen einsortiert. S02L und E05 wurden nach Davids Lead-Feedback ergaenzt. Die Links stehen im [[Subframe Bau Log]]. Fuer die weitergebbare Version siehe [[00 Start hier - David]] und [[D-FORM David Uebergabe 2026-07-09]].
Stand 2026-07-09: Die einfachen Builder-Screens sind gebaut. S02L und E05 wurden nach Davids Lead-Feedback ergaenzt. S01B und die alten Advanced-Screens wurden aus dem Obsidian-Handoff entfernt. Die Links stehen im [[Subframe Bau Log]]. Fuer die weitergebbare Version siehe [[00 Start hier - David]] und [[D-FORM David Uebergabe 2026-07-09]].
### Nutzerfluss fuer die Simple-Builder-Richtung
@@ -128,15 +122,9 @@ Frames / Designs:
| E02 | `E02 S00 Keine Treffer` | Hauptfluss / Empty State |
| E03 | `E03 S05 Keine Antworten` | Hauptfluss / Empty State |
| E04 | `E04 S05 Export Fehler` | Hauptfluss / Error State |
| S01B | `S01B Gefuehrter Fragen Editor` | Spaeter / Referenz |
| S01C | `S01C Website Formular Editor` | Spaeter / Referenz |
| S01D | `S01D Umfrage Editor` | Spaeter / Referenz |
| S01E | `S01E Internes Formular Editor` | Spaeter / Referenz |
| ADV-S01-2 | `ADV-S01-2 Form-Builder Canvas 2` | Advanced Builder / Referenz |
| ADV-S01 | `ADV-S01 Form-Builder Canvas` | Aelterer Bespoke Builder / Referenz |
| D07 | `D07 Logic Regel Detail` | Advanced / Referenz |
| D08 | `D08 Action Detail mit Mapping` | Advanced / Referenz |
| D09 | `D09 Publish Blocker Summary` | Advanced / Referenz |
Hinweis: In der Subframe-Seitenliste tragen S01C, S01D, S01E, S03, S04 und S05 aktuell noch das Suffix `Layout`. Zielnamen fuer Review/Handoff sind die oben stehenden Namen ohne `Layout`.
@@ -158,10 +146,10 @@ Diese vorhandenen Komponenten/Patterns sollen genutzt werden.
| Bereich | Komponente | Einsatz in D-FORM |
|---|---|---|
| Layout | Default Page Layout | S00/S01/S02/S03/S05/E01-E04 als interne Hauptseiten im vorhandenen Subframe Page Layout. S01B-E, ADV-S01 Canvas und D07-D09 bleiben spaetere interne Referenzseiten. S04/V01/V02/V03 bleiben public ohne App-Shell. |
| Layout | Default Page Layout | S00/S01/S02/S03/S05/E01-E04 als interne Hauptseiten im vorhandenen Subframe Page Layout. S01C-E bleiben spaetere interne Referenzseiten. S04/V01/V02/V03 bleiben public ohne App-Shell. |
| Navigation | Breadcrumb | S02 oben: `Formulare / SHK Anfrageformular`. |
| Navigation | Page Header with Back | S02 Header mit Zurueck, Formname, Status, Save, Preview, Share, Publish. |
| Navigation | Tabs | S02 Tabs: Fragen, Design, Antworten. ADV-S01 behaelt Builder, Logic, Actions, Sharing, Preview, Settings als Referenz. |
| Navigation | Tabs | S02 Tabs: Fragen, Design, Antworten. |
| Actions | Button | Save, Publish, Add Field, Add Action, Submit. |
| Actions | Icon Button | Feldkarten-Menue, More-Menue, Close/Archive-Trigger. |
| Form Inputs | Text Input | Name, Slug, Field Key, Email, Telefon. |
@@ -211,10 +199,8 @@ Wenn einer dieser M-Zustaende spaeter in Subframe gebaut wird, muss die vorhande
Abgrenzung:
- `D07 Logic Regel Detail` = Panel/Drawer im Builder, kein Modal.
- `D08 Action Detail mit Mapping` = Panel/Drawer im Builder, kein Modal.
- `D09 Publish Blocker Summary` = Inline Banner/Summary im Builder, kein Modal.
- Public V01/V02 duerfen zwar card-artig zentriert aussehen, sind aber trotzdem volle Public-Zustaende und keine Dialoge.
- D-/M-Detailnotizen sind Markdown-Anforderungen und nicht Teil der aktuellen Subframe-Review-Reihenfolge.
## 6. S04: fertiges Kundenformular
@@ -310,115 +296,19 @@ Default Page Layout
### Layout-Regel fuer interne Builder-Screens
S00, S01, S02, S03, S05 und E01-E04 muessen in Subframe das vorhandene `Default Page Layout` verwenden. S01B-E, ADV-S01 Canvas und D07-D09 sind spaetere interne Referenzseiten und verwenden ebenfalls keine eigene Sidebar. Wichtig: Das Layout selbst bringt App-Shell/Navigation mit. In den Screens keine eigene Sidebar oder Header-Navigation nachbauen.
S00, S01, S02, S03, S05 und E01-E04 muessen in Subframe das vorhandene `Default Page Layout` verwenden. S01C-E sind spaetere interne Referenzseiten und verwenden ebenfalls keine eigene Sidebar. Wichtig: Das Layout selbst bringt App-Shell/Navigation mit. In den Screens keine eigene Sidebar oder Header-Navigation nachbauen.
Nicht verwenden fuer den Builder: `Blank`, public/zentrierte Form-Seiten oder `Default Page Layout with inner Sidebar`. Die innere Sidebar ist eher fuer Settings geeignet; der Builder hat bereits eigene Innenbereiche wie Feld-Palette, Canvas, Logic-Liste, Action-Liste und Inspector.
Public-Screens S04, V01, V02 und V03 bleiben bewusst ohne App-Shell und ohne Sidebar.
### Modus-Tabs
### Tabs
| Modus | Was zeigen? |
|---|---|
| Builder | Palette + Canvas + Inspector. |
| Logic | Regel-Liste und D07 Detail. |
| Actions | Action-Liste und D08 Mapping. |
| Sharing | URL, QR, iFrame; Draft-Hinweis. |
| Preview | Vorschau von S04, kein PDF. |
| Settings | Slug, Success, Redirect, Branding, Limits. |
S02 nutzt nur die Review-relevanten Tabs: Fragen, Design und Antworten. Logic, Actions und Publish bleiben in S02 bewusst einfach und inline.
## 8. D07 Logic Regel Detail
## 8. Entfernte Advanced-Detailframes
Ziel: Eine einzelne Logic-Regel bauen.
Subframe-Zustand:
```text
Logic Mode
Left/Top: Regel-Liste
Detailpanel: D07 Logic Regel Detail
```
Inhalt:
- Regelname
- Wenn-Feld
- Operator
- Wert
- Dann-Aktion: anzeigen / verstecken
- Zielfeld
- Aktiv Switch
- Test / Save
- Inline `message` bei Fehler
Wichtig:
- `Neue Regel` oeffnet kein Modal.
- Operator steuert, ob Wert gebraucht wird.
- Wenn Operator `ist leer`, verschwindet das Wertfeld.
- Unvollstaendige aktive Regel blockiert Publish.
## 9. D08 Action Detail mit Mapping
Ziel: Nach Submit festlegen, was passieren soll.
Subframe-Zustand:
```text
Actions Mode
Action-Liste
Add Action Popover
Detailpanel: D08 Action Detail mit Mapping
```
Inhalt:
- Action-Typ
- Action-Name
- Status aktiv/inaktiv
- Ziel: Empfaenger, Pipeline, Webhook URL usw.
- Field-Mapping Tabelle: Ziel-Feld -> Form-Feld
- Pflichtmapping
- Teststatus
- Save / Test / Delete
Wichtig:
- Add Action oeffnet Popover/Auswahlpanel, kein grosses Modal.
- Mapping ist der Kern.
- Aktive Action ohne Pflichtmapping blockiert Publish.
- Inaktive unvollstaendige Action darf als Draft bleiben.
## 10. D09 Publish Blocker Summary
Ziel: Mitarbeiter versteht, warum Publish nicht geht.
Subframe-Zustand:
```text
ADV-S01 Header
Publish Button
ADV-S01 Body
D09 Summary Banner
Blocker-Liste mit Sprungzielen
```
Blocker:
- Formularname fehlt
- Slug fehlt oder Konflikt
- Kein sichtbares Feld
- Feld ohne Label
- Select ohne Optionen
- Kaputte Logic
- Pflichtmapping fehlt
- Webhook URL ungueltig
Wichtig:
- Publish bleibt im Builder, kein Wizard.
- Jeder Blocker hat ein Sprungziel.
- Warnungen duerfen getrennt von Blockern angezeigt werden.
S01B, ADV-S01, ADV-S01-2 und die Detailframes D07/D08/D09 wurden aus dem Obsidian-Handoff entfernt. Die fachlichen Detailnotizen zu Sharing, Actions, Logic, Feldmenue, Interaktionsfaellen und Confirm-Dialogen bleiben als Markdown-Anforderungen liegen, sind aber keine Review-Screens.
## 11. Was NICHT passieren soll
@@ -427,7 +317,7 @@ Wichtig:
- Preview nicht als PDF verstehen.
- Logic nicht als PDF-/Dokumentgenerator verstehen.
- Actions nicht als kompletter Automation-Editor bauen.
- Confirm-Dialoge nicht vor D07/D08/D09 priorisieren.
- Confirm-Dialoge nicht vor dem S02-Hauptfluss priorisieren.
- Keine neuen globalen Subframe Standards aus D-FORM ableiten.
## 12. Umsetzungsstand in Subframe
@@ -453,15 +343,9 @@ Gebaut und verlinkt:
13. S05 Antworten Tabelle
14. E03 S05 Keine Antworten
15. E04 S05 Export Fehler
80. S01B Gefuehrter Fragen Editor
81. S01C Website Formular Editor
82. S01D Umfrage Editor
83. S01E Internes Formular Editor
90. ADV-S01 Form-Builder Canvas
90b. ADV-S01-2 Form-Builder Canvas 2
91. D07 Logic Regel Detail
92. D08 Action Detail mit Mapping
93. D09 Publish Blocker Summary
Gebaut nach Davids Lead-Feedback:
@@ -1,106 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: V01
screen: Public Erfolg oder Redirect
typ: Public Feedback
umsetzung: Bauen
status: Subframe Draft / Review offen
route: /f/{tenant}/{slug}
subframe: "https://app.subframe.com/f023064a5ca0/design/c06ecfc3-1f86-4dfe-9cfd-cec8b8629253/edit"
---
# V01 - Public Erfolg oder Redirect
## Ziel
Der Submitter versteht sicher, dass die Einreichung angekommen ist, oder wird sauber an ein konfiguriertes Redirect-Ziel weitergeleitet.
## Pattern / Archetyp
BESPOKE-Public Feedback.
## Daten
- Tenant-Logo/Fallback.
- Erfolgstitel.
- Erfolgstext aus Form-Konfiguration.
- Optionales Redirect-Ziel.
- Optionaler Link zur Website/zurueck.
## Detail-Brainstorming
Der wichtigste Punkt: Nach erfolgreichem Submit darf nichts so wirken, als sei die Anfrage unsicher oder verloren. Duch wenn Actions im Hintergrund fehlschlagen, bleibt die Public-Bestaetigung auf die gespeicherte Einreichung bezogen.
### Varianten
| Variante | Wann | UI |
|---|---|---|
| Success ohne Redirect | Kein Redirect konfiguriert. | Danke-Ansicht mit Erfolgstitel, Text und optionalem Zurueck-Link. |
| Success mit Auto-Redirect | Redirect URL konfiguriert. | Kurze Bestaetigung + Countdown/Weiterleitungshinweis. |
| Success mit manuellem Redirect | Auto-Redirect wird nicht sofort ausgefuehrt oder soll bestaetigt werden. | Button "Weiter" zur Zielseite. |
| Redirect fehlerhaft | Weiterleitung klappt nicht, Submission ist aber gespeichert. | Erfolg bleibt sichtbar; Link erneut oeffnen oder Anbieter kontaktieren. |
### Copy-Vorschlag
| Zustand | Copy-Richtung |
|---|---|
| Erfolg | "Danke, Ihre Dngaben wurden uebermittelt." |
| Naechster Schritt | "Wir melden uns, falls weitere Informationen benoetigt werden." |
| Redirect | "Sie werden gleich weitergeleitet." |
| Redirect-Fehler | "Ihre Dngaben sind angekommen. Die Weiterleitung konnte nicht geoeffnet werden." |
### Nicht zeigen
- Keine Action-Ausfuehrung.
- Kein Lead-/Projekt-/Task-Hinweis.
- Kein Webhook-/Automation-Status.
- Keine interne Submission-ID, ausser spaeter bewusst als Referenznummer geplant.
## Aktionen
- Bei Success ohne Redirect: Seite schliessen oder zur Website zurueck.
- Bei Redirect: automatisch oder per Button weiter.
## Banner / Hinweise
- Kein technischer ActionLog im Public UI.
- Keine internen Begriffe wie Lead, Projekt, Webhook oder Automation.
## Toasts / Action-Feedback
- Keine Toasts; Success-State ist die Rueckmeldung.
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Submit erfolgreich | Success-State | nein | Bauen | Anfrage ist angekommen. |
| Redirect konfiguriert | Success + Weiterleitung | nein | Bauen | Falls Redirect dauert, klare Zwischenmeldung. |
## Zustaende
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Erfolgstext | Danke-/Bestaetigungsansicht. | Bauen |
| Redirect | Nutzer wird weitergeleitet. | Bauen |
## Blockierende Error States
| Zustand | Was sieht der Nutzer? | Primaeraktion | Sekundare Aktion |
|---|---|---|---|
| Redirect-Ziel nicht erreichbar | Kurzer Fehler nach Submit, Einreichung bleibt erfolgreich. | Link erneut oeffnen | Anbieter kontaktieren |
## Permissions / Gates
- Keine Rolle.
## Subframe
https://app.subframe.com/f023064a5ca0/design/c06ecfc3-1f86-4dfe-9cfd-cec8b8629253/edit
## Notizen
Wichtig: Wenn Submit gespeichert wurde, darf ein kaputter Redirect nicht so wirken, als sei die Einreichung verloren.
@@ -1,115 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: V02
screen: Public Formular nicht verfuegbar
typ: Public Blocker
umsetzung: Bauen
status: Subframe Draft / Review offen
route: /f/{tenant}/{slug}
subframe: "https://app.subframe.com/f023064a5ca0/design/f96ec12a-5e6a-471d-9a9c-6babcb57c74c/edit"
---
# V02 - Public Formular nicht verfuegbar
## Ziel
Externe Nutzer landen nicht auf einem rohen 404/500, sondern bekommen eine ruhige, verstaendliche Meldung mit naechster Handlung.
## Pattern / Archetyp
BESPOKE-Public Blocker / A7 Public Error.
## Daten
- Tenant-Logo/Fallback, falls Tenant noch aufloesbar ist.
- Kurzer Titel.
- Klartext-Grund, soweit sicher:
- Formular nicht veroeffentlicht
- Formular archiviert
- Formular geschlossen
- Link ungueltig
- Optionaler Kontakt-/Website-Link.
## Detail-Brainstorming
Dieser Zustand ersetzt rohe Fehlerseiten. Der Nutzer ist blockiert, deshalb braucht er eine ruhige Erklaerung und eine naechste Handlung.
### Blocker-Typen
| Zustand | Interner Grund | Public-Copy-Richtung | Primaeraktion |
|---|---|---|---|
| Nicht veroeffentlicht | `status=draft` oder `is_public=false` | "Dieses Formular ist aktuell nicht verfuegbar." | Anbieter kontaktieren oder zurueck |
| Drchiviert | `status=archived` | "Dieses Formular ist nicht mehr aktiv." | Anbieter kontaktieren |
| Geschlossen | `submission_close_at` vorbei | "Der Dnnahmezeitraum ist beendet." | Anbieter kontaktieren |
| Limit erreicht | `submission_limit` erreicht | "Dieses Formular nimmt aktuell keine weiteren Einreichungen an." | Anbieter kontaktieren |
| Link ungueltig | Tenant/Slug nicht gefunden | "Der Link ist ungueltig oder nicht mehr aktuell." | Link pruefen / Anbieter kontaktieren |
| Tenant nicht aufloesbar | Tenant fehlt/gesperrt | Neutraler Fehler ohne interne Details. | Zurueck |
### Was David zeigen sollte
| Element | Notiz |
|---|---|
| Logo/Fallback | Nur wenn sicher, dass Tenant aufloesbar ist. |
| Titel | Kurz, nicht alarmistisch. |
| Klartext | Kein 404, kein Stacktrace, keine internen IDs. |
| Kontakt/Zurueck | Nur wenn bekannt/konfiguriert. |
| Erneut laden | Nur bei potentiell temporaeren Fehlern. |
### Nicht zeigen
- Kein interner Form-Name, wenn Link/Tenant unsicher ist.
- Keine technischen Statuscodes.
- Keine Aussage, ob ein bestimmter Kunde/Tenant existiert, falls das Datenschutz-/Security-riskant ist.
## Aktionen
- Zur Anbieter-Website zurueck.
- Anbieter kontaktieren.
- Erneut laden.
## Banner / Hinweise
- Keine technischen Details.
- Keine Aussage, die interne Form-Namen oder IDs leakt.
## Toasts / Action-Feedback
- Keine Toasts.
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Formular nicht veroeffentlicht | Screen | ja | Bauen | Dieses Formular ist aktuell nicht verfuegbar. |
| Formular geschlossen | Screen | ja | Bauen | Dnnahmezeitraum ist beendet. |
| Formular nicht gefunden | Screen | ja | Bauen | Link pruefen oder Anbieter kontaktieren. |
| Tenant nicht aufloesbar | Screen | ja | Bauen | Neutral, ohne interne Details. |
## Zustaende
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Nicht veroeffentlicht | Entwurf/Unpublished. | Bauen |
| Drchiviert/geschlossen | Keine Einreichung mehr moeglich. | Bauen |
| Nicht gefunden | Slug/Tenant passt nicht. | Bauen |
## Blockierende Error States
| Zustand | Was sieht der Nutzer? | Primaeraktion | Sekundare Aktion |
|---|---|---|---|
| Nicht verfuegbar | Ruhiger Public-Blocker. | Anbieter kontaktieren | Zurueck |
## Permissions / Gates
- Public Gate: `status=published` und `is_public=true`.
## Subframe
https://app.subframe.com/f023064a5ca0/design/f96ec12a-5e6a-471d-9a9c-6babcb57c74c/edit
## Notizen
Dieser Zustand ist wichtig fuer Vertrauen. Ein externes Formular darf nicht wie eine kaputte App wirken.
@@ -1,117 +0,0 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-FORM
package: WF-D-FORM Form Builder
id: V03
screen: Public Captcha oder Submit Fehler
typ: Public Error
umsetzung: Bauen
status: Subframe Draft / Review offen
route: /f/{tenant}/{slug}
subframe: "https://app.subframe.com/f023064a5ca0/design/95c96bc9-35d4-47ce-b510-7d8ea1f41936/edit"
---
# V03 - Public Captcha oder Submit Fehler
## Ziel
Der Submitter kann einen Captcha- oder Submit-Fehler verstehen und korrigieren, ohne Vertrauen in das Formular zu verlieren.
## Pattern / Archetyp
BESPOKE-Public Error / A7 Error-State.
## Daten
- Aktuelle Feldwerte sollen erhalten bleiben, soweit technisch moeglich.
- Captcha-Status.
- Dllgemeiner Submit-Status.
## Detail-Brainstorming
V03 ist kein eigener neuer Flow, sondern ein Public-Fehlerzustand von S02. Er wird gebaut, weil die Copy und das Vertrauen wichtig sind.
### Fehlerarten
| Fehler | Ort | UI | Werte behalten? |
|---|---|---|---|
| Captcha fehlt | Captcha-Bereich | Inline-Hinweis | ja |
| Captcha fehlgeschlagen | Captcha-Bereich oder Banner nah am Submit | Erneut pruefen | ja |
| Netzwerkfehler | Submit-Bereich | Banner + Retry | ja |
| Serverfehler vor Speicherung | Submit-Bereich | Banner + Retry | ja |
| Serverfehler nach Speicherung | Success bevorzugen, falls Speicherung sicher war | Nicht als Verlust darstellen | ja |
| Datei-Upload fehlgeschlagen | Datei-Feld | Inline + Datei erneut waehlen | andere Werte ja |
### Copy-Richtung
| Zustand | Copy |
|---|---|
| Captcha fehlt | "Bitte bestaetigen Sie die Sicherheitspruefung." |
| Captcha fehlgeschlagen | "Die Sicherheitspruefung konnte nicht bestaetigt werden. Bitte versuchen Sie es erneut." |
| Submit Fehler | "Das Formular konnte gerade nicht gesendet werden. Bitte versuchen Sie es erneut." |
| Wiederholter Fehler | "Wenn der Fehler bestehen bleibt, kontaktieren Sie bitte den Anbieter." |
| Datei-Fehler | "Diese Datei konnte nicht hochgeladen werden. Bitte pruefen Sie Typ und Groesse." |
### Retry-Regeln
| Regel | Grund |
|---|---|
| Eingaben erhalten | Lange Public-Formulare duerfen nicht neu ausgefuellt werden muessen. |
| Submit waehrend Retry sperren | Doppel-Submit verhindern. |
| Ersten Fehler sichtbar machen | Nutzer soll nicht suchen muessen. |
| Technische Details verstecken | Vertrauen bewahren. |
| Kontakt nur als Fallback | Nicht sofort vom Formular wegschicken. |
## Aktionen
- Captcha erneut bestaetigen.
- Formular erneut senden.
- Seite neu laden.
- Anbieter kontaktieren, falls Fehler bleibt.
## Banner / Hinweise
- Captcha-Fehler in der Naehe des Captcha-Bereichs.
- Submit-Fehler als Banner oberhalb des Submit-Bereichs.
- Keine internen Begriffe wie ActionLog, Webhook, DB oder Queue.
## Toasts / Action-Feedback
- Keine Toasts im Public UI.
## Meldungsentscheidung
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|---|---|---|---|---|
| Captcha fehlt | Inline beim Captcha | ja | Bauen | Bitte bestaetigen, dass Sie kein automatisierter Zugriff sind. |
| Captcha fehlgeschlagen | Inline/Banner | ja | Bauen | Bitte erneut versuchen. |
| Netzwerkfehler beim Submit | Banner | ja | Bauen | Einreichung konnte nicht gesendet werden. |
| Serverfehler nach Submit | Banner | ja | Bauen | Keine technischen Details, erneut versuchen. |
## Zustaende
| Zustand | Beschreibung | Umsetzung |
|---|---|---|
| Captcha Error | Bot-Schutz blockiert. | Bauen |
| Submit Error | Speicherung/Einreichung klappt nicht. | Bauen |
| Retry Loading | Nutzer sendet erneut. | Wiederverwenden |
## Blockierende Error States
| Zustand | Was sieht der Nutzer? | Primaeraktion | Sekundare Aktion |
|---|---|---|---|
| Captcha fehlgeschlagen | Fehler am Captcha. | Captcha erneut pruefen | - |
| Submit mehrfach fehlgeschlagen | Banner mit Hilfehinweis. | Erneut versuchen | Anbieter kontaktieren |
## Permissions / Gates
- Public. Kein Login.
## Subframe
https://app.subframe.com/f023064a5ca0/design/95c96bc9-35d4-47ce-b510-7d8ea1f41936/edit
## Notizen
Wenn moeglich, sollen eingegebene Antworten erhalten bleiben. Das ist besonders wichtig bei langen SHK-Dufnahmeformularen mit Fotos oder Text.
@@ -1,87 +1,54 @@
{
"nodes":[
{"id":"group-states","type":"group","x":-120,"y":220,"width":4340,"height":680,"label":"Dokumentierte ADV-S01-Zustaende / Was-passiert-wenn-Cases"},
{"id":"group-internal","type":"group","x":-120,"y":-520,"width":3100,"height":600,"label":"S01 Interner Builder Hauptflow"},
{"id":"group-public","type":"group","x":-120,"y":1060,"width":2460,"height":620,"label":"Public Form Flow"},
{"id":"group-simple","type":"group","x":-120,"y":1840,"width":4380,"height":1120,"label":"Neue Simple Builder Alternative"},
{"id":"group-notes","type":"group","x":3220,"y":-520,"width":1000,"height":600,"label":"Scope / Subframe-Fokus"},
{"id":"package","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.md","x":0,"y":-350,"width":420,"height":210},
{"id":"s01","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/90 ADV Form-Builder Canvas.md","x":620,"y":-350,"width":420,"height":210},
{"id":"d10","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/D10 Builder Interaktionsfaelle.md","x":1860,"y":-350,"width":460,"height":210},
{"id":"note-subframe-focus","type":"text","text":"# Subframe-Fokus\n\nAktueller Hauptfluss:\n- 01 S00 Verwaltung\n- 02/03 Empty States\n- 04 S01 Formularart\n- 05 S02 Haupt-Editor\n- 06 S03 Design\n- 07-10 Public Form/States\n- 11-13 Antworten/States\n\n80-93 bleiben spaeter/Referenz.\n\nM01/M02/M03/M04 und D10 bleiben dokumentiert.","x":3360,"y":-360,"width":720,"height":330},
{"id":"note-out-of-scope","type":"text","text":"# Nicht in D-FORM\n\n- Vollstaendige Submissions-Verwaltung\n- Submission-Detail\n- Booking\n- Kalender\n- Signatur\n- HR-Screens\n- Personalisierte Links\n- JS-Snippet\n\nS03 ist nur die schlanke Formular-Zentrale, nicht das ganze Forms-/Submissions-Modul.","x":3360,"y":-20,"width":720,"height":300},
{"id":"d01","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/D01 Sharing Panel URL QR iFrame.md","x":0,"y":360,"width":420,"height":190},
{"id":"note-states","type":"text","text":"# ADV-S01-Zustaende\n\nD07, D08 und D09 sind als zusaetzliche Subframe-Zustaende gebaut.\n\nDie restlichen D-/M-Zustaende bleiben dokumentiert.\n\nSie klaeren:\n- welche UI-Ebene oeffnet\n- was im Dropdown/Popover/Modal steht\n- welche Folgefehler entstehen\n- was Publish/Test blockiert","x":3120,"y":330,"width":540,"height":260},
{"id":"note-builder-core","type":"text","text":"# Builder-Kern\n\nDauerhaft sichtbar:\n- Header / Status\n- Feld-Palette\n- Canvas\n- Feld-Inspector\n\nArbeitsmodi:\n- Logic\n- Actions\n- Sharing\n- Preview\n- Settings","x":1240,"y":-365,"width":420,"height":260},
{"id":"d02","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/D02 Post-Submit Actions.md","x":520,"y":360,"width":420,"height":190},
{"id":"d03","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/D03 Conditional Logic Editor.md","x":1040,"y":360,"width":420,"height":190},
{"id":"d06","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/D06 Feldkarten Menue.md","x":1560,"y":360,"width":420,"height":190},
{"id":"m01","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/M01 Feld loeschen Confirm.md","x":2080,"y":360,"width":420,"height":190},
{"id":"d07","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/91 D07 Logic Regel Detail.md","x":1040,"y":620,"width":420,"height":190},
{"id":"d08","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/92 D08 Action Detail mit Mapping.md","x":520,"y":620,"width":420,"height":190},
{"id":"d09","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/93 D09 Publish Blocker Summary.md","x":2600,"y":360,"width":420,"height":190},
{"id":"m02","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/M02 Unpublish Confirm.md","x":2600,"y":620,"width":420,"height":190},
{"id":"m03","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/M03 Archive Confirm.md","x":3120,"y":620,"width":420,"height":190},
{"id":"m04","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/M04 Unsaved Changes Confirm.md","x":3640,"y":620,"width":420,"height":190},
{"id":"s02","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/07 S04 Oeffentliches Formular.md","x":0,"y":1250,"width":420,"height":210},
{"id":"v01","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/08 V01 Public Erfolg oder Redirect.md","x":620,"y":1120,"width":420,"height":210},
{"id":"v02","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/09 V02 Public Formular nicht verfuegbar.md","x":620,"y":1410,"width":420,"height":210},
{"id":"v03","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/10 V03 Public Captcha oder Submit Fehler.md","x":1240,"y":1410,"width":420,"height":210},
{"id":"note-public","type":"text","text":"# Public-Regel\n\nKeine App-Shell.\n\nRuhiges Kundenformular:\n- Branding-Kopf\n- Intro\n- Felder\n- mCaptcha\n- Submit\n- Success/Error\n\nMobile zuerst mitdenken.","x":1240,"y":1120,"width":420,"height":250},
{"id":"note-public-reuse","type":"text","text":"# Public Renderer\n\nD-FORM baut das Public Form.\n\nDndere Bereiche wie HR oder Booking koennen den Renderer spaeter wiederverwenden, sind aber keine D-FORM-Screens.","x":1800,"y":1230,"width":420,"height":240},
{"id":"simple-direction","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Simple Builder Neuausrichtung.md","x":0,"y":1990,"width":420,"height":190},
{"id":"s00","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/04 S01 Formularart auswaehlen.md","x":560,"y":1990,"width":420,"height":190},
{"id":"s01a","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/05 S02 Einfacher Fragen Editor.md","x":1120,"y":1900,"width":420,"height":190},
{"id":"s01b","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/80 S01B Gefuehrter Fragen Editor.md","x":1120,"y":2120,"width":420,"height":190},
{"id":"s01c","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/81 S01C Website Formular Editor.md","x":1680,"y":1840,"width":420,"height":190},
{"id":"s01d","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/82 S01D Umfrage Editor.md","x":1680,"y":2060,"width":420,"height":190},
{"id":"s01e","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/83 S01E Internes Formular Editor.md","x":1680,"y":2280,"width":420,"height":190},
{"id":"note-simple-builder","type":"text","text":"# Neue Richtung gebaut\n\nNicht mehr sofort Profi-Canvas.\n\nS00 ist die Formular-Zentrale.\nS01 fuehrt immer in S02.\n\nDie Formularart setzt nur Vorlage/Startfragen:\n- Website/Extern\n- Lead\n- Umfrage\n- Intern\n\nTabs im Formular:\n- Fragen\n- Design: S03\n- Antworten: S05\n\nS01B/C/D/E sind Referenz.\n\nLogic bleibt als einfache Bedingung an der Frage.\nActions bleiben als Lead-Hinweis/Automatik.","x":2320,"y":1990,"width":620,"height":420},
{"id":"s03","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/01 S00 Formulare verwalten.md","x":560,"y":2470,"width":420,"height":190},
{"id":"s04","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/06 S03 Formular Design.md","x":2320,"y":2440,"width":420,"height":190},
{"id":"s05","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/11 S05 Antworten Tabelle.md","x":2840,"y":2440,"width":420,"height":190}
{"id":"group-simple","type":"group","x":-80,"y":160,"width":3900,"height":1060,"label":"D-FORM Hauptflow - Interner Builder"},
{"id":"group-public","type":"group","x":1160,"y":1340,"width":2320,"height":640,"label":"Public Formular und States"},
{"id":"group-notes","type":"group","x":-80,"y":-280,"width":3040,"height":360,"label":"Review-Fokus / Scope"},
{"id":"package","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.md","x":0,"y":-150,"width":360,"height":160},
{"id":"s03","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/01 S00 Formulare verwalten.md","x":0,"y":380,"width":420,"height":190},
{"id":"note-subframe-focus","type":"text","text":"# Review-Fokus\n\nAktueller Hauptfluss:\n- 01 S00 Verwaltung\n- 02/03 Empty States\n- 04 S01 Formularart\n- 05 S02 Haupteditor\n- 05b/05c Lead-Zuweisung\n- 06 S03 Design\n- 07-10 Public Form/States\n- 11-13 Antworten/States\n\n81-83 sind nur spaetere Referenz-Beispiele.","x":520,"y":-190,"width":760,"height":240},
{"id":"note-out-of-scope","type":"text","text":"# Nicht in D-FORM\n\n- Vollstaendige Submissions-Verwaltung\n- Submission-Detail\n- Booking\n- Kalender\n- Signatur\n- HR-Screens\n- Personalisierte Links\n- JS-Snippet\n\nS00 ist nur die schlanke Formular-Zentrale. S05 ist nur die Antwortenansicht im Formular.","x":1480,"y":-190,"width":760,"height":240},
{"id":"s00","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/04 S01 Formularart auswaehlen.md","x":670,"y":385,"width":420,"height":190},
{"id":"s01a","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/05 S02 Einfacher Fragen Editor.md","x":1240,"y":860,"width":420,"height":190},
{"id":"s01c","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/81 S01C Website Formular Editor.md","x":2600,"y":200,"width":420,"height":170},
{"id":"s01d","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/82 S01D Umfrage Editor.md","x":2600,"y":400,"width":420,"height":170},
{"id":"s01e","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/83 S01E Internes Formular Editor.md","x":2600,"y":600,"width":420,"height":170},
{"id":"s04","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/06 S03 Formular Design.md","x":2120,"y":765,"width":420,"height":190},
{"id":"s05","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/11 S05 Antworten Tabelle.md","x":2120,"y":1005,"width":420,"height":190},
{"id":"note-simple-builder","type":"text","text":"# Aktueller Builder-Flow\n\nS00 ist die Formular-Zentrale.\nS01 waehlt die Formularart.\nS02 ist der Haupteditor.\n\nDie Formularart setzt nur Vorlage/Startfragen:\n- Website/Extern\n- Lead\n- Umfrage\n- Intern\n\nTabs im Formular:\n- Fragen\n- Design: S03\n- Antworten: S05\n\nS01C/D/E bleiben Referenz-Beispiele, nicht Review-Pfad.","x":3260,"y":285,"width":500,"height":360},
{"id":"simple-direction","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Simple Builder Neuausrichtung.md","x":3300,"y":765,"width":420,"height":160},
{"id":"v01","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/08 V01 Public Erfolg oder Redirect.md","x":1870,"y":1420,"width":420,"height":190},
{"id":"note-public","type":"text","text":"# Public-Regel\n\nKeine App-Shell.\n\nRuhiges Kundenformular:\n- Branding-Kopf\n- Intro\n- Felder\n- mCaptcha\n- Submit\n- Success/Error\n\nMobile zuerst mitdenken.","x":2350,"y":1420,"width":420,"height":250},
{"id":"s02","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/07 S04 Oeffentliches Formular.md","x":1240,"y":1540,"width":420,"height":190},
{"id":"v02","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/09 V02 Public Formular nicht verfuegbar.md","x":1870,"y":1660,"width":420,"height":190},
{"id":"v03","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/Screens/10 V03 Public Captcha oder Submit Fehler.md","x":2350,"y":1700,"width":420,"height":190},
{"id":"note-public-reuse","type":"text","text":"# Public Renderer\n\nD-FORM baut das Public Form.\n\nAndere Bereiche wie HR oder Booking koennen den Renderer spaeter wiederverwenden, sind aber keine D-FORM-Screens.","x":3000,"y":1550,"width":420,"height":220}
],
"edges":[
{"id":"edge-package-s01","fromNode":"package","fromSide":"right","toNode":"s01","toSide":"left","label":"S01"},
{"id":"edge-s01-core","fromNode":"s01","fromSide":"right","toNode":"note-builder-core","toSide":"left","label":"Arbeitsbereiche"},
{"id":"edge-core-d10","fromNode":"note-builder-core","fromSide":"right","toNode":"d10","toSide":"left","label":"Was passiert wenn"},
{"id":"edge-s01-d01","fromNode":"s01","fromSide":"bottom","toNode":"d01","toSide":"top","label":"Share"},
{"id":"edge-s01-d02","fromNode":"s01","fromSide":"bottom","toNode":"d02","toSide":"top","label":"Actions"},
{"id":"edge-s01-d03","fromNode":"s01","fromSide":"bottom","toNode":"d03","toSide":"top","label":"Logic"},
{"id":"edge-s01-d06","fromNode":"s01","fromSide":"bottom","toNode":"d06","toSide":"top","label":"Feldmenue"},
{"id":"edge-d06-m01","fromNode":"d06","fromSide":"right","toNode":"m01","toSide":"left","label":"loeschen"},
{"id":"edge-d03-d07","fromNode":"d03","fromSide":"bottom","toNode":"d07","toSide":"top","label":"Regel Detail"},
{"id":"edge-d02-d08","fromNode":"d02","fromSide":"bottom","toNode":"d08","toSide":"top","label":"Action Detail"},
{"id":"edge-s01-d09","fromNode":"s01","fromSide":"bottom","toNode":"d09","toSide":"top","label":"Publish"},
{"id":"edge-d09-m02","fromNode":"d09","fromSide":"bottom","toNode":"m02","toSide":"top","label":"Unpublish"},
{"id":"edge-s01-m03","fromNode":"s01","fromSide":"bottom","toNode":"m03","toSide":"top","label":"Archive"},
{"id":"edge-s01-m04","fromNode":"s01","fromSide":"bottom","toNode":"m04","toSide":"top","label":"Dirty State"},
{"id":"edge-d10-d07","fromNode":"d10","fromSide":"bottom","toNode":"d07","toSide":"top","label":"Logic Cases"},
{"id":"edge-d10-d08","fromNode":"d10","fromSide":"bottom","toNode":"d08","toSide":"top","label":"Mapping Cases"},
{"id":"edge-d10-d09","fromNode":"d10","fromSide":"bottom","toNode":"d09","toSide":"top","label":"Blocker Cases"},
{"id":"edge-s01-s02","fromNode":"s01","fromSide":"bottom","toNode":"s02","toSide":"top","label":"publish + share"},
{"id":"edge-s02-v01","fromNode":"s02","fromSide":"right","toNode":"v01","toSide":"left","label":"Submit ok"},
{"id":"edge-s02-v01","fromNode":"s02","fromSide":"right","toNode":"v01","toSide":"left","label":"Submit erfolgreich"},
{"id":"edge-s02-v02","fromNode":"s02","fromSide":"right","toNode":"v02","toSide":"left","label":"nicht verfuegbar"},
{"id":"edge-s02-v03","fromNode":"s02","fromSide":"right","toNode":"v03","toSide":"left","label":"Fehler"},
{"id":"edge-s02-v03","fromNode":"s02","fromSide":"right","toNode":"v03","toSide":"left","label":"Fehler beim Submit"},
{"id":"edge-s02-public","fromNode":"s02","fromSide":"right","toNode":"note-public","toSide":"left","label":"Public-UX"},
{"id":"edge-public-reuse","fromNode":"note-public","fromSide":"right","toNode":"note-public-reuse","toSide":"left","label":"Reuse"},
{"id":"edge-focus-out","fromNode":"note-subframe-focus","fromSide":"bottom","toNode":"note-out-of-scope","toSide":"top","label":"Grenzen"},
{"id":"edge-package-simple","fromNode":"package","fromSide":"bottom","toNode":"simple-direction","toSide":"top","label":"neue Richtung"},
{"id":"edge-simple-s00","fromNode":"simple-direction","fromSide":"right","toNode":"s00","toSide":"left","label":"Einstieg"},
{"id":"edge-s00-s01a","fromNode":"s00","fromSide":"right","toNode":"s01a","toSide":"left","label":"Variante D"},
{"id":"edge-s00-s01b","fromNode":"s00","fromSide":"right","toNode":"s01b","toSide":"left","label":"Variante B"},
{"id":"edge-s00-s01c","fromNode":"s00","fromSide":"right","toNode":"s01c","toSide":"left","label":"Website"},
{"id":"edge-s00-s01d","fromNode":"s00","fromSide":"right","toNode":"s01d","toSide":"left","label":"Umfrage"},
{"id":"edge-s00-s01e","fromNode":"s00","fromSide":"right","toNode":"s01e","toSide":"left","label":"Intern"},
{"id":"edge-simple-s03","fromNode":"simple-direction","fromSide":"right","toNode":"s03","toSide":"left","label":"Verwaltung"},
{"id":"edge-s03-s00","fromNode":"s03","fromSide":"top","toNode":"s00","toSide":"bottom","label":"Neues Formular"},
{"id":"edge-s03-s01a","fromNode":"s03","fromSide":"right","toNode":"s01a","toSide":"bottom","label":"Bearbeiten"},
{"id":"edge-s01a-s04","fromNode":"s01a","fromSide":"right","toNode":"s04","toSide":"left","label":"Design"},
{"id":"edge-s01a-s05","fromNode":"s01a","fromSide":"right","toNode":"s05","toSide":"left","label":"Antworten"},
{"id":"edge-public-reuse","fromNode":"note-public","fromSide":"right","toNode":"note-public-reuse","toSide":"left","label":"Wiederverwendung"},
{"id":"edge-focus-out","fromFloating":false,"toFloating":false,"fromNode":"note-subframe-focus","fromSide":"right","toNode":"note-out-of-scope","toSide":"left","label":"Grenzen"},
{"id":"edge-package-focus","fromNode":"package","fromSide":"right","toNode":"note-subframe-focus","toSide":"left","label":"Review"},
{"id":"edge-package-simple","fromNode":"package","fromSide":"bottom","toNode":"s03","toSide":"top","label":"Hauptfluss"},
{"id":"edge-s00-s01a","fromNode":"s00","fromSide":"right","toNode":"s01a","toSide":"left","label":"Weiter zu S02"},
{"id":"edge-s00-s01c","fromNode":"s00","fromSide":"right","toNode":"s01c","toSide":"left","label":"Referenz: Website"},
{"id":"edge-s00-s01d","fromNode":"s00","fromSide":"right","toNode":"s01d","toSide":"left","label":"Referenz: Umfrage"},
{"id":"edge-s00-s01e","fromNode":"s00","fromSide":"right","toNode":"s01e","toSide":"left","label":"Referenz: Intern"},
{"id":"edge-s03-s00","fromNode":"s03","fromSide":"right","toNode":"s00","toSide":"left","label":"Neues Formular"},
{"id":"edge-s03-s01a","toFloating":false,"fromNode":"s03","fromSide":"right","toNode":"s01a","toSide":"left","label":"Bearbeiten"},
{"id":"edge-s01a-s04","fromNode":"s01a","fromSide":"right","toNode":"s04","toSide":"left","label":"Tab Design"},
{"id":"edge-s01a-s05","fromNode":"s01a","fromSide":"right","toNode":"s05","toSide":"left","label":"Tab Antworten"},
{"id":"edge-s01a-note","fromNode":"s01a","fromSide":"right","toNode":"note-simple-builder","toSide":"left","label":"Prinzip"},
{"id":"edge-s01b-note","fromNode":"s01b","fromSide":"right","toNode":"note-simple-builder","toSide":"left","label":"Prinzip"},
{"id":"edge-s01c-note","fromNode":"s01c","fromSide":"right","toNode":"note-simple-builder","toSide":"left","label":"Beispiel"},
{"id":"edge-s01d-note","fromNode":"s01d","fromSide":"right","toNode":"note-simple-builder","toSide":"left","label":"Beispiel"},
{"id":"edge-s01e-note","fromNode":"s01e","fromSide":"right","toNode":"note-simple-builder","toSide":"left","label":"Beispiel"}
]
}
{"id":"edge-s01e-note","fromNode":"s01e","fromSide":"right","toNode":"note-simple-builder","toSide":"left","label":"Beispiel"},
{"id":"edge-s01a-s02-public","fromNode":"s01a","fromSide":"bottom","toNode":"s02","toSide":"top","label":"Public Vorschau"},
{"id":"edge-note-simple-direction","fromNode":"note-simple-builder","fromSide":"bottom","toNode":"simple-direction","toSide":"top","label":"Entscheidung"}
],
"metadata":{
"version":"1.0-1.0",
"frontmatter":{}
}
}
@@ -26,22 +26,22 @@ Start fuer Review: [[00 Start hier - David]]
## 1. Kurzfassung
Dieses Paket bereitet `D-FORM` fuer David vor: den internen Form-Builder-Canvas und das oeffentliche Formular.
Dieses Paket bereitet `D-FORM` fuer David vor: den einfachen internen Formular-Editor und das oeffentliche Formular.
Der Fokus liegt bewusst auf den zwei Bespoke-Erlebnissen:
- Form-Builder-Canvas fuer interne Nutzer
- S02 Fragen-Editor fuer interne Nutzer
- Oeffentliches Formular fuer externe Submitter
Fuer den eigentlichen Subframe-Bau gilt [[Subframe Bauplan]] als konkrete Bau-Reihenfolge und Komponenten-Zuordnung. Interne Builder-Screens wie S01/D07/D08/D09 nutzen das vorhandene Default Page Layout; keine eigene Sidebar oder Header-Navigation nachbauen. Public-Screens bleiben ohne App-Shell.
Fuer den eigentlichen Subframe-Bau gilt [[Subframe Bauplan]] als konkrete Bau-Reihenfolge und Komponenten-Zuordnung. Interne Builder-Screens wie S00/S01/S02/S03/S05 nutzen das vorhandene Default Page Layout; keine eigene Sidebar oder Header-Navigation nachbauen. Public-Screens bleiben ohne App-Shell.
Die vollstaendige Forms-/Submissions-Verwaltung, Booking, Kalender und Signatur werden nicht in diesem Paket gebaut. Als schlanker Einstieg wurde aber S00 `Formulare verwalten` ergaenzt, damit Nutzer vorhandene Formulare finden und in den Builder springen koennen.
**Wichtig:** Dieses Paket ist jetzt ein tragfaehiger Detail-Brainstorming-Entwurf fuer David. Davids Review vom 2026-07-06 hat den fachlichen Scope bestaetigt, aber fuer den Builder mehr Interaktionslogik verlangt. Diese "was passiert nach Klick?"-Ebene ist im Advanced-Builder nachgezogen. D-FORM ist in Subframe als Draft gebaut: S00 bis S05, die Public-Screens S04/V01/V02/V03 sowie D07 Logic Regel Detail, D08 Action Detail mit Mapping und D09 Publish Blocker Summary sind gebaut.
**Wichtig:** Dieses Paket ist jetzt auf den einfachen S02-Hauptfluss ausgerichtet. D-FORM ist in Subframe als Draft gebaut: S00 bis S05, S02L/E05 fuer Lead-Zuweisung und die Public-Screens S04/V01/V02/V03.
Vor einer echten Fertig-Markierung muss David die Subframe-Frames final reviewen. Danach koennen nur noch gezielte Korrekturen oder explizit nachgeforderte Zustands-/Modalframes folgen.
**Nachtrag 2026-07-07:** Fuer Handwerksbetriebe wirkt der bisherige S01 fachlich stark, aber zu komplex. Deshalb wurden einfachere Alternativen gebaut: zuerst [[Screens/01 S00 Formulare verwalten|S00 Formulare verwalten]] als Startseite, danach [[Screens/04 S01 Formularart auswaehlen|S01 Formularart auswaehlen]] und Google-Forms-artige Beispiel-Editoren je Formularart. Gebaute Varianten: [[Screens/05 S02 Einfacher Fragen Editor|S02 Einfacher Fragen Editor]], [[Screens/80 S01B Gefuehrter Fragen Editor|S01B Gefuehrter Fragen Editor]], [[Screens/81 S01C Website Formular Editor|S01C Website Formular Editor]], [[Screens/82 S01D Umfrage Editor|S01D Umfrage Editor]] und [[Screens/83 S01E Internes Formular Editor|S01E Internes Formular Editor]]. Ergaenzt wurden ausserdem [[Screens/06 S03 Formular Design|S03 Formular Design]] und [[Screens/11 S05 Antworten Tabelle|S05 Antworten Tabelle]]. Die bisherige Logic bleibt im Hintergrund erhalten, aber der Einstieg soll nicht mehr wie ein Profi-Builder wirken.
**Nachtrag 2026-07-07:** Fuer Handwerksbetriebe wirkt der bisherige Builder fachlich stark, aber zu komplex. Deshalb wurden einfachere Alternativen gebaut: zuerst [[Screens/01 S00 Formulare verwalten|S00 Formulare verwalten]] als Startseite, danach [[Screens/04 S01 Formularart auswaehlen|S01 Formularart auswaehlen]] und Google-Forms-artige Beispiel-Editoren. Hauptvariante ist [[Screens/05 S02 Einfacher Fragen Editor|S02 Einfacher Fragen Editor]]. [[Screens/81 S01C Website Formular Editor|S01C Website Formular Editor]], [[Screens/82 S01D Umfrage Editor|S01D Umfrage Editor]] und [[Screens/83 S01E Internes Formular Editor|S01E Internes Formular Editor]] bleiben spaetere Beispiele. Ergaenzt wurden ausserdem [[Screens/06 S03 Formular Design|S03 Formular Design]] und [[Screens/11 S05 Antworten Tabelle|S05 Antworten Tabelle]].
**Nachtrag 2026-07-08:** Die Simple-Builder-Richtung wurde nachgeschaerft: S00 nutzt Mehrfachfilter nach Status und Art, S02 hat mehrere editierbare Optionen und eine erweiterte Google-Forms-nahe Werkzeugleiste, S04 enthaelt eine Datenschutz-Checkbox, S03/S05 haben keinen eigenen Teilen-Tab mehr und S05 dient nur Antworten/Export.
@@ -49,6 +49,8 @@ Vor einer echten Fertig-Markierung muss David die Subframe-Frames final reviewen
**Nachtrag 2026-07-09:** Fuer Davids Review wurde ein kompletter Obsidian-faehiger Paketordner vorbereitet. Die aktuelle Uebergabe liegt in [[D-FORM David Uebergabe 2026-07-09]]. Die S02/S02L-Lead-Hinweise sind optisch an die gruene `Lead anlegen`-Card angeglichen: Icon links, Titel/Badge/Beschreibung in der Mitte, Aktion rechts.
**Cleanup 2026-07-10:** S01B, die alten Advanced-Screens 90/90b/91/92/93 und die doppelten Dateien unter `Varianten/` wurden aus Obsidian entfernt. Der Handoff zeigt nur noch den aktuellen Hauptfluss plus S01C/S01D/S01E als optionale Beispiele.
---
## 2. Intent Check
@@ -133,19 +135,11 @@ Merksatz: D-FORM hat wenige eigene Routen, aber einen riesigen Detailumfang inne
| Bereich | Stand | Naechster Schritt |
|---|---|---|
| ADV-S01 Builder-Layout | Arbeitsentwurf in ADV-S01 ergaenzt und als Subframe-Frame gebaut. | David prueft Drei-Zonen-Builder in Subframe. |
| ADV-S01 Feld-Palette | Arbeitsentwurf in ADV-S01 ergaenzt. | Entscheiden, ob Content Blocks wie Section Header in v1 sichtbar werden. |
| ADV-S01 Canvas / Drag-and-Drop | Arbeitsentwurf in ADV-S01 ergaenzt. | Drag-Zustaende ggf. in Subframe besonders sichtbar machen. |
| ADV-S01 Feld-Inspector | Arbeitsentwurf in ADV-S01 ergaenzt. | Properties je Feldtyp reviewen. |
| ADV-S01 Interaktionslogik | Nach David-Feedback ergaenzt und als Zustandsdateien ausgearbeitet. D07/D08/D09 sind als zusaetzliche Subframe-Zustaende gebaut. | David prueft die Subframe-Frames und entscheidet nur noch ueber Feinschliff oder Zusatzframes. |
| ADV-S01 Validation / Publish | Arbeitsentwurf in ADV-S01 ergaenzt und als D09 gebaut. | David prueft Blocker-Copy, Warnungen und Sprungziele. |
| ADV-S01 Conditional Logic | Arbeitsentwurf in ADV-S01 ergaenzt. | V1-Grenzen final bestaetigen. |
| ADV-S01 Sharing | Arbeitsentwurf in ADV-S01 ergaenzt. | iFrame/QR/URL-Darstellung finalisieren. |
| ADV-S01 Post-Submit-Actions | Arbeitsentwurf in ADV-S01 ergaenzt. | Action-Typen und Mapping-Tiefe final reviewen. |
| ADV-S01 Permissions | Arbeitsentwurf in ADV-S01 ergaenzt. | Read-only/No-Permission-Zustand final entscheiden. |
| S02 Haupteditor | Simple Builder mit Fragekarten, Fragetypen, Bedingung und Lead-Hinweis gebaut. | David prueft die einfache Richtung. |
| S02L/E05 Lead-Zuweisung | Lead-Felder werden per Dropdown zugewiesen; Fehlerzustand ist gebaut. | David prueft, ob die Zuordnung reicht. |
| S04 Public Form | Arbeitsentwurf in S04 ergaenzt. | David validiert Public Layout, Mobile, Submit und Branding. |
| V01/V02/V03 Public-Varianten | Arbeitsentwurf in Varianten ergaenzt. | David validiert Copy und Public-Fehlerlogik. |
| Canvas/Tracker/Handoff | Nach P2-Auth-Referenz synchronisiert: Hauptflow plus ADV-S01-Zustaende/Case-Matrix im Canvas sichtbar. | Vor Subframe nur noch David-Freigabe bzw. Auswahl moeglicher Zusatzframes. |
| V01/V02/V03 Public-States | Public Success, Nicht-verfuegbar und Captcha/Submit-Fehler gebaut. | David validiert Copy und Public-Fehlerlogik. |
| Canvas/Tracker/Handoff | Auf aktuellen Hauptfluss bereinigt; alte Advanced-Frames aus Obsidian entfernt. | Vor Subframe nur noch David-Freigabe bzw. gezielte Korrekturen. |
---
## 3d. David-Feedback 2026-07-06
@@ -161,13 +155,13 @@ Nacharbeit: In S01 fehlte die Interaktionslogik fuer konkrete Aktionen. Die wich
| Feld loeschen | 3-Punkte-Menue/Gefahrenzone; Confirm bei Abhaengigkeiten oder public-wirksamen Folgen. |
| Logic-Regel anlegen | Logic-Panel/Detailbereich im selben S01, kein Modal. |
| Post-Submit-Action hinzufuegen | Typauswahl als Popover/kleines Auswahlpanel, Konfiguration im Action-Panel/Drawer. |
| Sharing oeffnen | Sharing-Panel/Modus im ADV-S01, kein Modal. |
| Sharing oeffnen | Public-Link-/Teilen-Kontext im einfachen Builder, kein eigener Review-Screen. |
| Publish | Inline-Check mit Summary/Popover; Blocker springen zu Feld, Logic, Action oder Settings. |
| Unpublish | Confirm-Dialog, weil Public-Link danach nicht mehr erreichbar ist. |
Bewertung: Die 5 Hauptframes bleiben bestehen. Nach Empfehlung wurden zusaetzlich D07 Logic Regel Detail, D08 Action Detail mit Mapping und D09 Publish Blocker Summary als Subframe-Zustaende gebaut. M01/M02 und die restlichen D-/M-Zustaende bleiben vorerst dokumentiert.
Bewertung: Der aktuelle Review konzentriert sich auf den S02-Hauptfluss. M01/M02 und die restlichen D-/M-Zustaende bleiben vorerst dokumentiert.
Nachgezogene Vor-Subframe-Dateien: [[Screens/D01 Sharing Panel URL QR iFrame]], [[Screens/D02 Post-Submit Actions]], [[Screens/D03 Conditional Logic Editor]], [[Screens/D06 Feldkarten Menue]], [[Screens/M01 Feld loeschen Confirm]], [[Screens/91 D07 Logic Regel Detail|D07 Logic Regel Detail]], [[Screens/92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]], [[Screens/93 D09 Publish Blocker Summary|D09 Publish Blocker Summary]], [[Screens/D10 Builder Interaktionsfaelle]], [[Screens/M02 Unpublish Confirm]], [[Screens/M03 Archive Confirm]], [[Screens/M04 Unsaved Changes Confirm]].
Dokumentierte Detaildateien: [[Screens/D01 Sharing Panel URL QR iFrame]], [[Screens/D02 Post-Submit Actions]], [[Screens/D03 Conditional Logic Editor]], [[Screens/D06 Feldkarten Menue]], [[Screens/M01 Feld loeschen Confirm]], [[Screens/D10 Builder Interaktionsfaelle]], [[Screens/M02 Unpublish Confirm]], [[Screens/M03 Archive Confirm]], [[Screens/M04 Unsaved Changes Confirm]].
Nach weiterer Rueckmeldung wurde D10 als Case-Matrix ergaenzt: Was passiert, wenn Nutzer etwas auswaehlen, eine Checkbox setzen, einen mittleren Pflichtschritt vergessen, Bild/Datei hinzufuegen, Optionen loeschen, Mapping halb setzen oder eine public-wirksame Aktion ausloesen.
@@ -181,10 +175,10 @@ Nachgezogen fuer D-FORM:
| P2-Muster | D-FORM-Umsetzung |
|---|---|
| Screen-Dateien mit Ziel, Daten, Aktionen, Verhalten, Zustaenden und Subframe-Hinweis | ADV-S01/S02/S04/V01-V03 sowie D01-D10 und M01-M04 entsprechend ausgearbeitet. |
| D-/M-Zustaende als eigene Dateien, auch wenn sie nicht gebaut werden | ADV-S01-Zustaende liegen als eigene Vor-Subframe-Dateien im `Screens`-Ordner; D07/D08/D09 sind als zusaetzliche Subframe-Zustaende gebaut. |
| Screen-Dateien mit Ziel, Daten, Aktionen, Verhalten, Zustaenden und Subframe-Hinweis | S02/S02L/E05/S04/V01-V03 sowie D-/M-Notizen entsprechend ausgearbeitet. |
| D-/M-Zustaende als eigene Dateien, auch wenn sie nicht gebaut werden | Detailnotizen liegen im `Screens`-Ordner, sind aber nicht Teil der aktuellen Subframe-Review-Reihenfolge. |
| Canvas zeigt Hauptflow plus dokumentierte Zustaende/Notizen | `WF-D-FORM Form Builder.canvas` wurde erweitert: Hauptflow, D-/M-Zustaende, D10 Case-Matrix, Public Flow und Scope-Notizen. |
| Tracker fuehrt dokumentierte Zustaende als eigene Zeilen | Tracker enthaelt D01-D10 und M01-M04; D07/D08/D09 stehen auf `Bauen`, M01/M02/M03/M04 bleiben dokumentiert. |
| Tracker fuehrt dokumentierte Zustaende als eigene Zeilen | Tracker enthaelt die D-/M-Notizen als Dokumentation ohne Canvas-Link. |
Bewertung: D-FORM ist auf dem gleichen Vor-Subframe-Dokumentationsniveau wie die besser ausgearbeiteten P2 Auth Pakete. Subframe ist als Draft gebaut und verlinkt; Review und Feinschliff folgen.
@@ -330,9 +324,9 @@ Empfehlung: David sollte **Palette + Canvas + Inspector** als Kernarbeit versteh
| Public Erfolg oder Redirect | Submit-Ende ist copy- und vertrauenskritisch. | Bauen |
| Public Formular nicht verfuegbar | Externer Blocker braucht klare Loesung. | Bauen |
| Public Captcha oder Submit Fehler | Hauefiger Public-Fehler, muss sauber wirken. | Bauen oder dokumentieren |
| Sharing-Panel | URL/QR/iFrame gehoeren in Builder. | In ADV-S01 integrieren |
| Post-Submit-Actions | Field-Mapping muss sichtbar sein. | In ADV-S01 integrieren |
| Conditional-Logic-Editor | v1-Pflicht, aber eng schneiden. | In ADV-S01 integrieren |
| Sharing-Panel | URL/QR/iFrame gehoeren in den Public-Link-Kontext. | Dokumentieren |
| Post-Submit-Actions | Lead-Feldzuweisung muss sichtbar sein. | In S02L/E05 abgebildet |
| Conditional-Logic-Editor | v1 eng schneiden. | Als einfache Bedingung an der Frage |
| Forms-Liste | Compose aus D2, nicht D-FORM. | Raus |
| Submissions | Compose aus A2/A3, nicht D-FORM. | Raus |
| Booking-Intake | Eigenes Ticket `D-BOOK`. | Raus |
@@ -344,7 +338,6 @@ Empfehlung: David sollte **Palette + Canvas + Inspector** als Kernarbeit versteh
| ID | Screen/Zustand | Ist eigener Arbeitsmoment? | Neue Struktur/Entscheidung/Risiko? | Entscheidung | Begruendung |
|---|---|---|---|---|---|
| ADV-S01 | [[Screens/90 ADV Form-Builder Canvas|ADV-S01 Form-Builder Canvas]] | ja | ja, schwerste P16-UI | Referenz behalten | Nicht mehr Hauptfluss; S02 ist die einfache Richtung. |
| S04 | [[Screens/07 S04 Oeffentliches Formular|S04 Oeffentliches Formular]] | ja | ja, Public Renderer und Branding | Bauen | Extern sichtbar, hoher Polish. |
| V01 | [[Screens/08 V01 Public Erfolg oder Redirect|V01 Public Erfolg oder Redirect]] | teilweise | ja, Submit-Ende und Copy | Bauen | Public Dbschluss soll nicht Dev-Default sein. |
| V02 | [[Screens/09 V02 Public Formular nicht verfuegbar|V02 Public Formular nicht verfuegbar]] | ja | ja, blockierender Public-State | Bauen | Nutzer kann nicht fortfahren. |
@@ -354,9 +347,6 @@ Empfehlung: David sollte **Palette + Canvas + Inspector** als Kernarbeit versteh
| D03 | [[Screens/D03 Conditional Logic Editor]] | nein | ja, Regel-Editor | Nur dokumentieren | In S01 als Panel/Tab dokumentieren. |
| D06 | [[Screens/D06 Feldkarten Menue]] | nein | ja, Klick-Logik nach David-Feedback | Nur dokumentieren | 3-Punkte-Menue fuer Duplizieren, Loeschen, ggf. Deaktivieren. |
| M01 | [[Screens/M01 Feld loeschen Confirm]] | nein | ja, Abhaengigkeiten in Logic/Actions | Nur dokumentieren | Confirm nur bei Risiko, kein normaler Bearbeitungsdialog. |
| D07 | [[Screens/91 D07 Logic Regel Detail|D07 Logic Regel Detail]] | teilweise | ja, Regelbearbeitung | Referenz behalten | Fuer S02 nicht Hauptfluss; bei Advanced-Bedarf pruefen. |
| D08 | [[Screens/92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]] | teilweise | ja, Field-Mapping | Referenz behalten | Fuer S02 nicht Hauptfluss; Mapping bleibt verborgen. |
| D09 | [[Screens/93 D09 Publish Blocker Summary|D09 Publish Blocker Summary]] | ja | ja, Publish-Entscheidung | Referenz behalten | In S02 reicht Banner/Popover im selben Screen. |
| D10 | [[Screens/D10 Builder Interaktionsfaelle]] | nein | ja, Auswahlfolgen und Edge Cases | Nur dokumentieren | Case-Matrix fuer Dropdowns, Checkboxen, vergessene Zwischenschritte, Datei/Bild und Modal-Inhalte. |
| M02 | [[Screens/M02 Unpublish Confirm]] | nein | ja, public-wirksam | Nur dokumentieren | Confirm-Dialog wegen Public-Link. |
| M03 | [[Screens/M03 Archive Confirm]] | nein | ja, destruktiv/Statuswechsel | Nur dokumentieren | Confirm aus More-Menue. |
@@ -370,21 +360,16 @@ Entscheidung: `Bauen`, `Wiederverwenden`, `Nur dokumentieren`, `Spaeter`, `Raus`
Der urspruengliche Advanced-Subframe-Fokus lag auf diesen **8 Frames/Zustaenden**:
- ADV-S01 Form-Builder Canvas
- S04 Oeffentliches Formular
- V01 Public Erfolg oder Redirect
- V02 Public Formular nicht verfuegbar
- V03 Public Captcha oder Submit Fehler
- D07 Logic Regel Detail
- D08 Action Detail mit Mapping
- D09 Publish Blocker Summary
Nach der Simple-Builder-Neuausrichtung sind zusaetzlich gebaut und fuer Review nach vorne gezogen:
- S00 Formulare verwalten
- S01 Formularart auswaehlen
- S02 Einfacher Fragen Editor
- S01B Gefuehrter Fragen Editor
- S01C Website Formular Editor
- S01D Umfrage Editor
- S01E Internes Formular Editor
@@ -395,15 +380,11 @@ Nicht als eigene Frames bauen:
- Kein Sharing/Teilen als eigener Hauptreiter im Simple Builder; Public-Link/QR/Einbettung gehoeren in Veroeffentlichen/Public-Link-Kontext.
- Actions, Logic, Preview und Settings als Arbeitsbereiche von S01 bzw. einfache Zusatzoptionen im Simple Builder.
- Feldkarten-Menue, allgemeine Panels, D10 Case-Matrix und Confirm-Dialoge als dokumentierte ADV-S01-Zustaende.
- Feldkarten-Menue, allgemeine Panels, D10 Case-Matrix und Confirm-Dialoge als dokumentierte Detailnotizen.
- Vollstaendige Forms-Liste und Submissions, weil diese Compose aus A2/A3 sind. S00/S05 sind nur schlanke D-FORM-Einstiegs-/Antwortansichten.
- Booking/Kalender/Signatur, weil diese eigene Tickets haben.
Als zusaetzliche S01-Zustandsframes bauen:
- D07 Logic Regel Detail
- D08 Action Detail mit Mapping
- D09 Publish Blocker Summary
Keine zusaetzlichen Advanced-Zustandsframes im aktuellen Handoff bauen.
### Copy-kritische Zustaende
@@ -444,16 +425,12 @@ Als zusaetzliche S01-Zustandsframes bauen:
| S05 | [[Screens/11 S05 Antworten Tabelle|S05 Antworten Tabelle]] | Builder Tab | Bauen | `/forms/:id/edit` | Subframe Draft / Review offen |
| E03 | [[Screens/12 E03 S05 Keine Antworten|E03 S05 Keine Antworten]] | Empty State | Bauen | `/forms/:id/edit` | Subframe Draft / Review offen |
| E04 | [[Screens/13 E04 S05 Export Fehler|E04 S05 Export Fehler]] | Error State | Bauen | `/forms/:id/edit` | Subframe Draft / Review offen |
| S01B | [[Screens/80 S01B Gefuehrter Fragen Editor|S01B Gefuehrter Fragen Editor]] | Spaeter / Referenz | Bauen | `/forms/:id/edit` | Subframe Draft / Referenz |
| S01C | [[Screens/81 S01C Website Formular Editor|S01C Website Formular Editor]] | Spaeter / Referenz | Bauen | `/forms/:id/edit` | Subframe Draft / Referenz |
| S01D | [[Screens/82 S01D Umfrage Editor|S01D Umfrage Editor]] | Spaeter / Referenz | Bauen | `/forms/:id/edit` | Subframe Draft / Referenz |
| S01E | [[Screens/83 S01E Internes Formular Editor|S01E Internes Formular Editor]] | Spaeter / Referenz | Bauen | `/forms/:id/edit` | Subframe Draft / Referenz |
| ADV-S01 | [[Screens/90 ADV Form-Builder Canvas|ADV-S01 Form-Builder Canvas]] | Advanced Builder / Referenz | Bauen | `/forms/:id/edit` | Subframe Draft / Referenz |
| S01 | [[Screens/90b ADV Form-Builder Canvas 2|ADV-S01-2 Form-Builder Canvas 2]] | Advanced Builder / Referenz | Bauen | `/forms/:id/edit` | Subframe Draft / Referenz |
### Detailnotizen ohne eigene Review-Screens
### ADV-S01-Zustaende und Zusatzframes vor Subframe
Diese Eintraege sind ausgearbeitet. D07/D08/D09 wurden nach Empfehlung als zusaetzliche Subframe-Zustaende gebaut; die restlichen bleiben dokumentiert.
Diese Eintraege sind ausgearbeitet, bleiben aber Dokumentation und sind nicht Teil der aktuellen Subframe-Review-Reihenfolge.
| ID | Zustand | Typ | Umsetzung |
|---|---|---|---|
@@ -462,9 +439,6 @@ Diese Eintraege sind ausgearbeitet. D07/D08/D09 wurden nach Empfehlung als zusae
| D03 | [[Screens/D03 Conditional Logic Editor]] | Panel-Zustand | Nur dokumentieren |
| D06 | [[Screens/D06 Feldkarten Menue]] | Inline-Zustand | Nur dokumentieren |
| M01 | [[Screens/M01 Feld loeschen Confirm]] | Confirm Modal | Nur dokumentieren |
| D07 | [[Screens/91 D07 Logic Regel Detail|D07 Logic Regel Detail]] | Panel-Zustand | Bauen |
| D08 | [[Screens/92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]] | Panel-Zustand | Bauen |
| D09 | [[Screens/93 D09 Publish Blocker Summary|D09 Publish Blocker Summary]] | Inline-Zustand | Bauen |
| D10 | [[Screens/D10 Builder Interaktionsfaelle]] | Case-Matrix | Nur dokumentieren |
| M02 | [[Screens/M02 Unpublish Confirm]] | Confirm Modal | Nur dokumentieren |
| M03 | [[Screens/M03 Archive Confirm]] | Confirm Modal | Nur dokumentieren |
@@ -477,25 +451,25 @@ Diese Eintraege sind ausgearbeitet. D07/D08/D09 wurden nach Empfehlung als zusae
Interner Hauptarbeitsort:
```text
ADV-S01 Form-Builder Canvas
- Header / Status / Save / Publish
- Feld-Palette
- Canvas
- Feld-Inspector
- Arbeitsmodi: Logic, Actions, Sharing, Preview, Settings
S02 Einfacher Fragen Editor
- Fragen
- Lead-Hinweis / Felder zuweisen
- Bedingung direkt an der Frage
- Design-Tab S03
- Antworten-Tab S05
```
Dokumentierte ADV-S01-Zustaende:
Dokumentierte Detailnotizen:
```text
S01 -> D01 Sharing Panel
S01 -> D02 Post-Submit Actions -> D08 Action Detail mit Mapping
S01 -> D03 Conditional Logic Editor -> D07 Logic Regel Detail
S01 -> D06 Feldkarten Menue -> M01 Feld loeschen Confirm
S01 -> D09 Publish Blocker Summary -> M02 Unpublish Confirm
S01 -> M03 Archive Confirm
S01 -> M04 Unsaved Changes Confirm
S01 -> D10 Builder Interaktionsfaelle
S02 -> D01 Sharing Panel
S02 -> D02 Post-Submit Actions
S02 -> D03 Conditional Logic Editor
S02 -> D06 Feldkarten Menue -> M01 Feld loeschen Confirm
S02 Publish-Kontext -> M02 Unpublish Confirm
S02 -> M03 Archive Confirm
S02 -> M04 Unsaved Changes Confirm
S02 -> D10 Builder Interaktionsfaelle
```
Public Flow:
@@ -528,20 +502,14 @@ S04 Oeffentliches Formular
- [[Screens/11 S05 Antworten Tabelle|S05 Antworten Tabelle]]
- [[Screens/12 E03 S05 Keine Antworten|E03 S05 Keine Antworten]]
- [[Screens/13 E04 S05 Export Fehler|E04 S05 Export Fehler]]
- [[Screens/80 S01B Gefuehrter Fragen Editor|S01B Gefuehrter Fragen Editor]]
- [[Screens/81 S01C Website Formular Editor|S01C Website Formular Editor]]
- [[Screens/82 S01D Umfrage Editor|S01D Umfrage Editor]]
- [[Screens/83 S01E Internes Formular Editor|S01E Internes Formular Editor]]
- [[Screens/90 ADV Form-Builder Canvas|ADV-S01 Form-Builder Canvas]]
- [[Screens/90b ADV Form-Builder Canvas 2|ADV-S01-2 Form-Builder Canvas 2]]
- [[Screens/D01 Sharing Panel URL QR iFrame]]
- [[Screens/D02 Post-Submit Actions]]
- [[Screens/D03 Conditional Logic Editor]]
- [[Screens/D06 Feldkarten Menue]]
- [[Screens/M01 Feld loeschen Confirm]]
- [[Screens/91 D07 Logic Regel Detail|D07 Logic Regel Detail]]
- [[Screens/92 D08 Action Detail mit Mapping|D08 Action Detail mit Mapping]]
- [[Screens/93 D09 Publish Blocker Summary|D09 Publish Blocker Summary]]
- [[Screens/D10 Builder Interaktionsfaelle]]
- [[Screens/M02 Unpublish Confirm]]
- [[Screens/M03 Archive Confirm]]
@@ -554,9 +522,9 @@ S04 Oeffentliches Formular
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Jedes sichtbare Feld hat eine Datenquelle. Als Detail-Brainstorming dokumentiert.
- [x] Jeder Button hat eine Aktion. Nach David-Feedback um Interaktionslogik ergaenzt.
- [x] Die wichtigsten ADV-S01-Klickzustaende sind als eigene Vor-Subframe-Dateien dokumentiert.
- [x] Die wichtigsten Klickzustaende sind als Markdown-Detailnotizen dokumentiert.
- [x] Die wichtigsten Was-passiert-wenn-Faelle sind in D10 als Case-Matrix dokumentiert.
- [x] Canvas ist nach P2-Auth-Referenz erweitert: Hauptflow, ADV-S01-Zustaende, D10, Public Flow und Scope-Notizen.
- [x] Canvas ist auf Hauptflow, Public Flow und Scope-Notizen bereinigt.
- [x] Banner/Inline-Meldungen sind dokumentiert.
- [x] Toasts/Action-Feedback sind dokumentiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefuellt.
@@ -564,8 +532,8 @@ S04 Oeffentliches Formular
- [x] Relevante Zustaende sind beschrieben.
- [x] Offene Fragen sind sichtbar.
- [x] Ticket-Handoff-Entwurf ist in `Tickets/Fertige Tickets/` angelegt.
- [x] Detail-Brainstorming fuer ADV-S01/S02/S04/V01/V02/V03 ist abgeschlossen.
- [x] Detail-Brainstorming fuer S02/S04/V01/V02/V03 ist abgeschlossen.
- [x] David-Review-Rueckmeldung ist erfolgt.
- [x] S01-Interaktionslogik nach David-Feedback ist eingearbeitet.
- [ ] David-Freigabe nach S01-Nacharbeit ist erfolgt.
- [x] Subframe-Link fuer Flow, Hauptfluss 01-13 und Referenzseiten 80-93 ist eingetragen.
- [x] Subframe-Link fuer Flow und Hauptfluss 01-13 ist eingetragen.
@@ -9,7 +9,7 @@ typ: Modal
umsetzung: Bauen
status: Validiert
route: "aus S01 (Probelauf-Knopf / vor Aktivierung)"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/ea231a78-eddb-4c04-97a8-7574d45d8576/edit"
---
# M01 — Probelauf (Dry-Run)
@@ -38,4 +38,9 @@ A5 Modal + Simulations-Liste.
## Subframe
- (erst nach explizitem OK)
- [M01 Probelauf Dialog](https://app.subframe.com/f023064a5ca0/design/ea231a78-eddb-4c04-97a8-7574d45d8576/edit)
### Abgleich Subframe vs. Spec (2026-07-10)
- Spec abgedeckt: »Trifft 143 Datensätze«, erste 5 Beispiele, Klartext-Simulation, Schwellen-Bestätigung, aktivieren/zurück
- Abweichung: Bestätigung als **Checkbox statt Bestätigungs-Phrase**; »Aktivieren«-Button ist nicht disabled, solange die Checkbox leer ist
@@ -9,7 +9,7 @@ typ: Modal
umsetzung: Bauen
status: Validiert
route: "aus S01 bei Schleifen-Verdacht"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/8e8943a5-36ea-4792-a3e0-590cb88fd9df/edit"
---
# M02 — Schleifen-/Raten-Warnung
@@ -31,4 +31,11 @@ A5 Modal + Mini-Graph.
## Subframe
- (erst nach explizitem OK)
- [M02 Schleifen-Warnung Dialog](https://app.subframe.com/f023064a5ca0/design/8e8943a5-36ea-4792-a3e0-590cb88fd9df/edit)
### Abgleich Subframe vs. Spec (2026-07-10)
- Spec abgedeckt: Mini-Graph mit markiertem Kreis, Klartext-Erklärung, »Beheben«-Knopf, Anomalie-Copy (2.000-mal/5 Min, typisch 5–10/Tag)
- Abweichung: Schleife und Raten-Anomalie **in einem Dialog kombiniert** (Spec: Anomalie als eigene Variante)
- Abweichung: **»Trotzdem aktivieren«-Button** widerspricht der Fehlermatrix (Schleife blockiert) — klären
- Kreis als Text-Pill markiert statt als sichtbare Rück-Kante im Graph
@@ -9,7 +9,7 @@ typ: Modal
umsetzung: Bauen
status: Validiert
route: "»+ Neue Automation« (aus der Automation-Liste)"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/8b398273-682e-4cf2-851b-3b1a89da4d90/edit"
---
# M03 — Start-Auswahl
@@ -29,4 +29,10 @@ A5 Dialog (echtes Modal).
## Subframe
- (erst nach explizitem OK)
- [M03 Start-Auswahl Dialog](https://app.subframe.com/f023064a5ca0/design/8b398273-682e-4cf2-851b-3b1a89da4d90/edit)
### Abgleich Subframe vs. Spec (2026-07-10)
- Spec vollständig abgedeckt: leer ODER Vorlage, SHK + eigene, Kategorien, Use-Case-Beschreibungen, eingebetteter Vorlagen-Katalog
- Zusätzlich: Suchfeld, Flow-Vorschau-Chips, Nutzungszahlen (»38-mal verwendet«)
- Abweichung: **doppelter CTA** (»Verwenden« pro Karte UND »Mit Auswahl weiter« im Footer) — Interaktionsmodell klären
@@ -9,7 +9,7 @@ typ: BESPOKE (schwerste UI)
umsetzung: Bauen
status: Validiert
route: "/automations/:id/edit"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/a42ecf81-5d6e-4fa1-9076-b22010cd5ecf/edit"
---
# S01 — Flow-Editor ⭐
@@ -41,4 +41,15 @@ Automationen zusammenklicken wie ein Diagramm — verständlich für Büro-Mensc
## Subframe
- (erst nach explizitem OK)
Zwei Varianten gebaut (Flow »(MCP) HiveGrid Workflow Engine / Automationen P12«) — **Richtungs-Entscheidung offen**:
- [Variante A — Dreispalten kompakt](https://app.subframe.com/f023064a5ca0/design/a42ecf81-5d6e-4fa1-9076-b22010cd5ecf/edit): klassisches Konfig-Formular rechts (näher an der validierten Spec »Klick auf Baustein → Panel«)
- [Variante B — Geführter Inspector](https://app.subframe.com/f023064a5ca0/design/ce6a73d8-ae0c-4d1c-b8f8-f426dfe19d32/edit): rechts durchgängiger Schritt-Wizard mit Fortschritt, Prüfliste und »So liest es sich«-Klartext — weicht vom validierten Klick-Muster ab, passt aber zu Klartext-First
### Abgleich Subframe vs. Spec (2026-07-10)
- Beide Varianten halten die Grundanordnung Katalog · Canvas · Konfig ein (Katalog einklappbar, Undo/Redo, Auto-Anordnen, Zoom, Mini-Map vorhanden)
- Inline-Validierung zeigt nur »Pflichtfeld fehlt« und »Nicht verbunden« — Fall **»Schleifen-Verdacht« fehlt** am Baustein
- Kein **»Deaktivieren«** im Kopf (Spec: Aktivieren/Deaktivieren) — nur disabled »Aktivieren«
- D01 (Aktivieren-Blocker-Liste) und D02 (Anomalie-Banner) sind voll ausgebaut, obwohl laut Screen-Liste »Nur dokumentieren« — inhaltlich Spec-konform
- Kanten nur gerade vertikale Linien (linearer Flow, keine Verzweigung dargestellt)
@@ -11,9 +11,30 @@
{"id":"note-embed","type":"text","text":"# Einbettung\n\nBaustein-Konfig-Panels (rechtes Panel) kommen aus WF-P12 Verwaltung (S05).\n\nAnordnung validiert: Katalog links · Canvas Mitte · Konfig rechts.","x":0,"y":560,"width":460,"height":240}
],
"edges":[
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"m03","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted"}},
{
"id":"e-entry",
"fromNode":"note-entry",
"fromSide":"right",
"toNode":"m03",
"toSide":"left",
"toEnd":"arrow",
"styleAttributes":{"path":"dotted"}
},
{"id":"e-start","fromNode":"m03","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","label":"leer oder Vorlage"},
{"id":"e-dryrun","fromNode":"s01","fromSide":"bottom","toNode":"m01","toSide":"top","toEnd":"arrow","label":"Probelauf / vor Aktivierung"},
{"id":"e-loop","fromNode":"s01","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"bei Schleifen-Verdacht","styleAttributes":{"path":"long-dashed"}}
]
}
{
"id":"e-loop",
"fromNode":"s01",
"fromSide":"bottom",
"toNode":"m02",
"toSide":"top",
"toEnd":"arrow",
"label":"bei Schleifen-Verdacht",
"styleAttributes":{"path":"long-dashed"}
}
],
"metadata":{
"version":"1.0-1.0",
"frontmatter":{}
}
}
@@ -5,16 +5,16 @@ ticket: D-FLOW
package: WF-P12 Flow-Editor
typ: Flow
status: Validiert
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/a42ecf81-5d6e-4fa1-9076-b22010cd5ecf/edit"
canvas: "WF-P12 Flow-Editor.canvas"
---
# WF-P12 Flow-Editor
Status: Validiert (Screen-Liste)
Subframe-Link: -
Status: Validiert (Screen-Liste), Subframe-Erstentwürfe vorhanden
Subframe-Link: Flow »(MCP) HiveGrid Workflow Engine / Automationen P12« — [S01 Variante A](https://app.subframe.com/f023064a5ca0/design/a42ecf81-5d6e-4fa1-9076-b22010cd5ecf/edit) · [S01 Variante B](https://app.subframe.com/f023064a5ca0/design/ce6a73d8-ae0c-4d1c-b8f8-f426dfe19d32/edit) · [M01](https://app.subframe.com/f023064a5ca0/design/ea231a78-eddb-4c04-97a8-7574d45d8576/edit) · [M02](https://app.subframe.com/f023064a5ca0/design/8e8943a5-36ea-4792-a3e0-590cb88fd9df/edit) · [M03](https://app.subframe.com/f023064a5ca0/design/8b398273-682e-4cf2-851b-3b1a89da4d90/edit)
Canvas: [Canvas](<WF-P12 Flow-Editor.canvas>)
Stand: 2026-07-09
Stand: 2026-07-10 (Subframe-Abgleich, Links eingetragen)
---
@@ -113,9 +113,12 @@ S01 bettet ein: Baustein-Konfig-Panels (WF-P12 Verwaltung S05)
- Kanten-Interaktion (Klick-Verbinden vs. nur Ziehen) + Auto-Layout-Verhalten → Subframe-Iterationen
- Dry-Run-Schwelle: Default-Wert → Dev
- **S01-Variante entscheiden** (Abgleich 2026-07-10): A »Dreispalten kompakt« (klassisches Konfig-Panel, näher an validierter Spec) vs. B »Geführter Inspector« (Schritt-Wizard rechts) — David
- M02: »Trotzdem aktivieren«-Button widerspricht Blockier-Regel der Fehlermatrix — David
- M03: doppelter CTA (»Verwenden« je Karte + »Mit Auswahl weiter« im Footer) — Interaktionsmodell klären
## Handoff-Check
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
- [x] Subframe-Link ist eingetragen. *(Erstentwürfe, Abgleich s. Screen-Dateien; Varianten-Entscheidung offen)*
@@ -9,7 +9,7 @@ typ: Liste
umsetzung: Bauen
status: Validiert
route: "/automations"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/336ccdfb-80f9-45bf-a158-e74cabb70a20/edit"
---
# S01 — Automation-Liste
@@ -38,4 +38,11 @@ A2 Liste.
## Subframe
- (erst nach explizitem OK)
- [S01 Automation-Liste](https://app.subframe.com/f023064a5ca0/design/336ccdfb-80f9-45bf-a158-e74cabb70a20/edit)
### Abgleich Subframe vs. Spec (2026-07-10)
- Spec abgedeckt: Zeilen-Anatomie, »nur meine«-Filter, Anomalie-Banner, »+ Neue Automation«, Läufe-Zugang, »Als Vorlage speichern«
- Zusätzlich: KPI-Kacheln, Suchfeld, Status-/Auslöser-Filter, Spalten »Verantwortlich« + »Aktionen«, »Vorlagen«-Button
- **Copy-Bug**: Spalte »Läufe (30 Tage)« zeigt »143 Datensätze« statt Lauf-Anzahl
- Status-Pill hat zusätzlich Wert »Fehler« (Spec: nur aktiv/pausiert/Entwurf)
@@ -9,7 +9,7 @@ typ: Liste
umsetzung: Bauen
status: Validiert
route: "/automations/:id/executions"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/0fab5d8c-1e6a-4220-863d-7e46aba0f06c/edit"
---
# S02 — Lauf-Liste
@@ -37,4 +37,10 @@ A2 Liste.
## Subframe
- (erst nach explizitem OK)
- [S02 Lauf-Liste](https://app.subframe.com/f023064a5ca0/design/0fab5d8c-1e6a-4220-863d-7e46aba0f06c/edit)
### Abgleich Subframe vs. Spec (2026-07-10)
- Spec abgedeckt: Zeit/Status/Klartext-Summary/Probelauf-Marker/Dauer, alle drei Filter, Zeile → Detail
- Zusätzlich: StatsCard-Reihe, Suchfeld, »Nur Probeläufe«-Switch, Spalte »Betroffene Datensätze«, Status »Läuft«, Pagination
- **Ohne DefaultPageLayout** (App-Sidebar fehlt — anders als S01)
@@ -9,7 +9,7 @@ typ: Detail + Timeline
umsetzung: Bauen
status: Validiert
route: "/automations/:id/executions/:exec_id"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/9997a3c4-d18b-449f-bbbd-4fe6dd24f3df/edit"
---
# S03 — Lauf-Detail
@@ -39,4 +39,12 @@ A3 + Timeline.
## Subframe
- (erst nach explizitem OK)
- [S03 Lauf-Detail](https://app.subframe.com/f023064a5ca0/design/9997a3c4-d18b-449f-bbbd-4fe6dd24f3df/edit)
### Abgleich Subframe vs. Spec (2026-07-10)
- Spec vollständig abgedeckt: lesbare Auslöser-Daten, Probelauf-Marker, Klartext-Timeline mit Input/Output, 24-h-Countdown, Retry + »ab Schritt X fortsetzen«
- Zusätzlich: rechte Sidebar (Laufdaten/Ergebnis/»Aktion erforderlich«), Quick-Fix »Person zuweisen«
- Redundanz: Countdown doppelt (Banner + Sidebar) plus dritter »Rückgängig«-Header-Button — straffen
- **Demo-Widerspruch**: Lauf als »Probelauf« markiert, bietet aber Rückgängig an (Probeläufe schreiben laut S02-Copy nichts)
- Ohne DefaultPageLayout
@@ -9,7 +9,7 @@ typ: Liste/Karten
umsetzung: Bauen
status: Validiert
route: "/automations/templates"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/46e04956-4903-4733-9345-81b18f34e858/edit"
---
# S04 — Vorlagen-Katalog
@@ -36,4 +36,11 @@ A2 Karten-Liste.
## Subframe
- (erst nach explizitem OK)
- [S04 Vorlagen-Katalog](https://app.subframe.com/f023064a5ca0/design/46e04956-4903-4733-9345-81b18f34e858/edit)
### Abgleich Subframe vs. Spec (2026-07-10)
- Spec abgedeckt: Karten nach Kategorie mit Name/Beschreibung/Nutzungs-Anzahl/»Verwenden«, SHK + eigene unterscheidbar
- Copy-Abweichung: Button heißt »Eigene Vorlage erstellen« statt »aus Automation erstellen«
- Zusätzlich: Suchfeld, Modul-/Kategorie-Filter, »Beliebt«-Tab, Flow-Schritt-Chips, Hinweise »Variable/Verbindung erforderlich«
- Einbettung in Start-Auswahl (M03) nur dort dargestellt, hier eigenständige Seite · Ohne DefaultPageLayout
@@ -9,7 +9,7 @@ typ: Compose-Panel (eingebettet)
umsetzung: Bauen
status: Validiert
route: "eingebettet im Flow-Editor (rechtes Panel)"
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/83599a34-97b4-4881-beb4-8b7e35d11aa0/edit"
---
# S05 — Baustein-Konfig-Panels
@@ -37,8 +37,16 @@ Compose — Formular-Bausteine (A4) im Editor-Panel.
## Subframe
- (erst nach explizitem OK)
- [S05 Baustein-Konfig-Panels](https://app.subframe.com/f023064a5ca0/design/83599a34-97b4-4881-beb4-8b7e35d11aa0/edit)
### Abgleich Subframe vs. Spec (2026-07-10)
- Spec abgedeckt: genau die beiden Muster-Panels (Auslöser »Neue Anfrage« + Aktion »Aufgabe anlegen«), Klartext-Labels, Inline-Validierung mit Badge am Baustein
- Strukturabweichung: beide Panels untereinander auf einer Seite statt je Baustein; ToggleGroup Auslöser/Aktion ohne aktiven Wert (Code-Fehler)
- Zusätzlich: Beispielkontakt-Vorschau, »So liest es sich«-Zusammenfassung, »Kontakt verknüpfen«-Switch
- Tippfehler in Copy: »Bauhow-Analyse«
## Notizen
- KWP-Push: nur Registry-Eintrag, kein Konfig-UI (v1-Grenze).
- Vorplanung aller 31 Panels (Archetypen + Feld-Katalog): [[S05a Baustein-Konfig Vorplanung]] (2026-07-11).
@@ -0,0 +1,140 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P12
package: WF-P12 Verwaltung
id: S05a
screen: Baustein-Konfig Vorplanung (Katalog aller Panels)
typ: Vorplanung / Katalog
umsetzung: Planen
status: Subframe Draft / Review offen
route: "Modal über dem Flow-Editor (Dialog-Komponente, Klick auf Baustein)"
---
# S05a — Baustein-Konfig Vorplanung
Vorplanung für **alle 31 Bausteine** aus der Baustein-Bibliothek (Stand Planung 2026-07-11, Screenshot-Abgleich).
Ziel: je Baustein ein eigenes Konfig-Panel in Subframe ablegen, das später einzeln angepasst wird.
Statt 31 Panels von null zu bauen: **9 Muster-Archetypen** definieren, je Archetyp ein Muster-Panel bauen, die restlichen Panels als Kopien mit angepassten Feldern ableiten.
Verwandt: [[S05 Baustein-Konfig-Panels]] (die zwei existierenden Muster), [[S01 Flow-Editor]].
---
## Farbschema der Kategorien (aus der Planung)
| Kategorie | Farbe | Anzahl |
|---|---|---|
| Auslöser | Grün | 16 |
| Aktionen: Daten & CRM | Rot | 2 |
| Aktionen: Kommunikation | Blau | 1 |
| Aktionen: Aufgaben | Gelb | 2 |
| Logik | Violett | 8 |
| Integration | Grau | 2 |
> ⚠️ Abweichung: Die Subframe-Entwürfe von Baustein-Picker/Konfig (2026-07-11) nutzen Orange für Auslöser und Blau für alle Aktionen. Vor dem Weiterbauen auf dieses Schema (Grün/Rot/Blau/Gelb/Violett/Grau) vereinheitlichen.
---
## Archetypen (Muster-Panels)
| # | Archetyp | Grundaufbau des Panels |
|---|---|---|
| T1 | Datensatz-Auslöser | Filter-Abschnitt: welche Datensätze zählen (Quelle, Pipeline, Feld). Kein Pflichtfeld nötig — läuft auch ungefiltert. |
| T2 | Zeit-/Termin-Auslöser | Zeitbezug: Vorlauf (»3 Tage vorher«), Terminart, bzw. Wiederholungsregel beim Zeitplan. |
| T3 | Eingangs-Auslöser (E-Mail/Formular/Webhook) | Quelle wählen (Postfach, Formular, Webhook-URL anzeigen) + Vorschau der ankommenden Daten (Payload-Felder als Chips für spätere Schritte). |
| A1 | Datensatz-Aktion | Ziel-Datensatz wählen + Feld-Zuordnung (welches Feld bekommt welchen Wert, mit Platzhalter-Chips). |
| A2 | Kommunikations-Aktion | Kanal (E-Mail/Push/intern), Empfänger, Betreff/Text mit Platzhalter-Chips. |
| A3 | Aufgaben-Aktion | Muster existiert (S05): Titel, Verantwortlich (Pflicht), Fälligkeit, Priorität, Notiz. |
| L1 | Bedingungs-Logik | Bedingungszeilen: Feld · Operator · Wert (+ Zeile hinzufügen). Klartext-Zusammenfassung. |
| L2 | Ablauf-Logik | Ein Hauptwert: Dauer (Warten), Liste (Schleife), Variable + Wert (Wert setzen). |
| I1 | Integration | Technischer: URL, Methode, Kopfzeilen/Payload — bewusst als »Profi-Baustein« gekennzeichnet. |
Jedes Panel hat einheitlich: Kopf (Kategorie-farbiges Icon, Name, Klartext-Untertitel, Schließen), Suchfeld entfällt, Pflichtfeld-Validierung inline + Badge am Baustein, »So liest es sich«-Satz unten, Fuß mit Übernehmen/Abbrechen.
---
## Katalog: alle 31 Panels
### Auslöser (Grün)
| Baustein | Kurzbeschreibung (Karte) | Ausgänge | Archetyp | Konfig-Felder (Panel) |
|---|---|---|---|---|
| Neuer Kontakt | Wenn ein Kontakt angelegt wird | 1 | T1 | Quelle (alle/manuell/Import/Formular), optional Tag-Filter |
| Kontakt geändert | Wenn sich Kontaktdaten ändern | 1 | T1 | Welche Felder beobachten (alle oder Auswahl) |
| Neue Anfrage | Wenn eine Anfrage eingeht | 1 | T1 | Quelle (Website-Formular/E-Mail/manuell), optional Bereich |
| Lead qualifiziert | Wenn ein Lead qualifiziert wird | 1 | T1 | Pipeline, Qualifizierungs-Stufe |
| Projekt gewonnen | Wenn ein Projekt gewonnen wird | 1 | T1 | Pipeline/Board, optional Mindestwert |
| Status gewechselt | Wenn eine Karte die Spalte wechselt | 1 | T1 | Board, von Spalte (optional), nach Spalte |
| Projekt angelegt | Wenn ein Projekt erstellt wird | 1 | T1 | Projektart/Board, optional Quelle |
| Deadline naht | Wenn eine Frist bald abläuft | 1 | T2 | Fristtyp (Aufgabe/Projekt/Zahlungsziel), Vorlauf (z. B. 3 Tage vorher) |
| E-Mail eingegangen | Wenn eine E-Mail ankommt | 1 | T3 | Postfach, optional Betreff-/Absender-Filter |
| E-Mail unzustellbar | Wenn eine Kampagnen-Mail bounct | 1 | T3 | Kampagne (alle oder Auswahl), Bounce-Art (hart/weich) |
| Formular abgeschickt | Wenn ein Formular eingeht | 1 | T3 | Formular wählen (aus D-FORM), Felder-Vorschau als Chips |
| Termin gebucht | Wenn ein Termin gebucht wird | 1 | T2 | Terminart/Kalender, optional Mitarbeiter |
| Termin storniert | Wenn ein Termin abgesagt wird | 1 | T2 | Terminart/Kalender, Storno durch (Kunde/intern/beide) |
| Ereignis erstellt | Wenn ein Kalender-Eintrag entsteht | 1 | T2 | Kalender, Ereignisart |
| Zeitplan | Zu festen Zeiten, z. B. montags 8 Uhr | 1 | T2 | Wiederholung (täglich/wöchentlich/monatlich), Wochentag(e), Uhrzeit |
| Webhook empfangen | Wenn ein externes System ruft | 1 | T3 | Webhook-URL (generiert, kopierbar), Secret, Beispiel-Payload-Vorschau |
### Aktionen: Daten & CRM (Rot)
| Baustein | Kurzbeschreibung | Ausgänge | Archetyp | Konfig-Felder |
|---|---|---|---|---|
| Kontakt ändern | Datensatz aktualisieren | 1 | A1 | Welcher Kontakt (aus Auslöser/suchen), Feld-Zuordnungen (Feld → neuer Wert, Platzhalter) |
| Notiz anlegen | Notiz am Datensatz speichern | 1 | A1 | Ziel-Datensatz, Notiztext (Platzhalter), optional sichtbar für |
### Aktionen: Kommunikation (Blau)
| Baustein | Kurzbeschreibung | Ausgänge | Archetyp | Konfig-Felder |
|---|---|---|---|---|
| Benachrichtigung senden | E-Mail, Push oder intern | 1 | A2 | Kanal (Pflicht), Empfänger (Person/Team/Kontakt aus Auslöser), Betreff, Text mit Platzhalter-Chips |
### Aktionen: Aufgaben (Gelb)
| Baustein | Kurzbeschreibung | Ausgänge | Archetyp | Konfig-Felder |
|---|---|---|---|---|
| Aufgabe anlegen | Neue Aufgabe erstellen | 1 | A3 | Titel (Platzhalter), Verantwortlich (Pflicht), Fälligkeit, Priorität, Notiz — Muster existiert |
| Aufgabe zuweisen | Person oder Team zuordnen | 1 | A3 | Welche Aufgabe (aus vorherigem Schritt), neue Person/Team (Pflicht), optional Benachrichtigung an |
### Logik (Violett)
| Baustein | Kurzbeschreibung | Ausgänge | Archetyp | Konfig-Felder |
|---|---|---|---|---|
| Wenn-Dann | Verzweigt nach Bedingung | Ja / Nein | L1 | Bedingungszeilen (Feld · Operator · Wert) |
| Oder | Wenn mind. eine Bedingung zutrifft | Ja / Nein | L1 | Bedingungszeilen, Hinweis »eine reicht« |
| Und | Wenn alle Bedingungen zutreffen | Ja / Nein | L1 | Bedingungszeilen, Hinweis »alle nötig« |
| Switch | Mehrere Pfade verzweigen | 1 / 2 / 3 … | L1 | Feld wählen + je Pfad ein Wert (+ Pfad hinzufügen, Sonst-Pfad) |
| Filter | Datensätze filtern | 1 | L1 | Bedingungszeilen; Klartext »nur weiter, wenn …« |
| Warten | Pausiert, z. B. 3 Tage | 1 | L2 | Dauer (Zahl + Einheit) oder bis Datum/Uhrzeit aus Feld |
| Schleife | Für jedes Element wiederholen | Weiter / Fertig | L2 | Liste wählen (z. B. alle Aufgaben des Projekts), max. Durchläufe |
| Wert setzen | Variable setzen oder lesen | 1 | L2 | Variablenname, Wert (Platzhalter erlaubt) |
### Integration (Grau)
| Baustein | Kurzbeschreibung | Ausgänge | Archetyp | Konfig-Felder |
|---|---|---|---|---|
| HTTP-Anfrage | Externen Dienst aufrufen | 1 | I1 | URL (Pflicht), Methode, Kopfzeilen, Payload (Platzhalter), Antwort-Vorschau |
| An KWP übergeben | Projekt an KWP senden | 1 | — | **ab v2** — nur Registry-Eintrag, kein Konfig-UI (v1-Grenze, s. S05-Notiz) |
---
## Vorgehen für Subframe
1. Farbschema im Picker/Konfig-Entwurf auf das Planungs-Schema angleichen (Grün/Rot/Blau/Gelb/Violett/Grau).
2. Je Archetyp **ein** Muster-Panel als eigene Subframe-Seite bauen (9 Seiten; A3 existiert als Basis aus der Konfig-Runde 2026-07-11).
3. Danach die restlichen 21 v1-Panels als Kopien der Muster-Seiten ablegen und Felder gemäß Katalog oben anpassen (30 Seiten gesamt, KWP entfällt in v1).
4. Benennung in Subframe: »K-T1 Neuer Kontakt«, »K-A2 Benachrichtigung senden« … (K = Konfig-Panel), eigener Flow oder Gruppe, damit der Editor-Flow übersichtlich bleibt.
## Umsetzungsstand Subframe (2026-07-12)
- **Entscheidung (David, 2026-07-12): Konfig als MODAL** (Dialog-Komponente), nicht rechtes Panel/Drawer — n8n-Muster: Klick auf Baustein öffnet Dialog.
- **Alle 30 v1-Panels gebaut** (Nacht-Build 02:37–03:00 Uhr, KWP entfällt v1-gemäß): Benennung »K-<Archetyp> <Name>« im Flow [(MCP) HiveGrid Workflow Engine / Automationen P12](https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit).
- Muster/Blaupause: **K-T1 Neuer Kontakt** (Dialog.Content ohne Overrides = 560 px/16 px/24 px laut Layout-Regeln, Labels + Helptexte über Komponenten-Props, jede Feld-Erklärung als helpText, Erklärungs-Box mit Fragezeichen in Kategoriefarbe, Fuß rechts: Abbrechen/Übernehmen). Größere Panels (Kontakt ändern, Benachrichtigung, Aufgabe anlegen, Wenn-Dann, Switch, HTTP) mit `size="medium"` = 720 px.
- Readback-Check aller 30 Seiten bestanden (Dialog.Content, keine p-0/gap-0-Overrides, helpTexts, Erklärungs-Box). **Händisches Review durch David steht aus.**
## Offene Fragen
- Ausgänge-Darstellung im Panel (zeigt das Panel die Ausgänge Ja/Nein bzw. 1/2/3 als Info an?) — David
- Switch: wie viele Pfade maximal in v1?
- Webhook/HTTP: wie viel Technik zeigen wir Handwerkern (Profi-Kennzeichnung reicht?)
@@ -1,8 +1,8 @@
{
"nodes":[
{"id":"md-paket","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.md","x":-80,"y":-440,"width":460,"height":280},
{"id":"group-verw","type":"group","x":-80,"y":-100,"width":2500,"height":380,"label":"Übersicht und Verläufe"},
{"id":"group-extra","type":"group","x":-80,"y":460,"width":1820,"height":380,"label":"Vorlagen + Konfig-Panels"},
{"id":"md-paket","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.md","x":-80,"y":-440,"width":460,"height":280},
{"id":"note-entry","type":"text","text":"# Einstieg\n\nSidebar → Automation.","x":0,"y":0,"width":300,"height":200},
{"id":"s01","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/Screens/S01 Automation-Liste.md","x":500,"y":0,"width":420,"height":200},
{"id":"s02","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/Screens/S02 Lauf-Liste.md","x":1140,"y":0,"width":420,"height":200},
@@ -14,24 +14,22 @@
"edges":[
{
"id":"e-entry",
"styleAttributes":{"path":"dotted"},
"fromNode":"note-entry",
"fromSide":"right",
"toNode":"s01",
"toSide":"left",
"toEnd":"arrow",
"styleAttributes":{"path":"dotted"}
"toSide":"left"
},
{"id":"e-runs","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"Läufe"},
{"id":"e-detail","fromNode":"s02","fromSide":"right","toNode":"s03","toSide":"left","toEnd":"arrow","label":"Lauf öffnen"},
{"id":"e-runs","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","label":"Läufe"},
{"id":"e-detail","fromNode":"s02","fromSide":"right","toNode":"s03","toSide":"left","label":"Lauf öffnen"},
{
"id":"e-template",
"styleAttributes":{"path":"long-dashed"},
"fromNode":"s01",
"fromSide":"bottom",
"toNode":"s04",
"toSide":"top",
"toEnd":"arrow",
"label":"als Vorlage speichern",
"styleAttributes":{"path":"long-dashed"}
"label":"als Vorlage speichern"
}
],
"metadata":{
@@ -5,16 +5,16 @@ ticket: D-P12
package: WF-P12 Verwaltung
typ: Flow
status: Validiert
subframe: ""
subframe: "https://app.subframe.com/f023064a5ca0/design/336ccdfb-80f9-45bf-a158-e74cabb70a20/edit"
canvas: "WF-P12 Verwaltung.canvas"
---
# WF-P12 Verwaltung
Status: Validiert (Screen-Liste)
Subframe-Link: -
Status: Validiert (Screen-Liste), Subframe-Erstentwürfe vorhanden
Subframe-Link: Flow »(MCP) HiveGrid Workflow Engine / Automationen P12« — [S01](https://app.subframe.com/f023064a5ca0/design/336ccdfb-80f9-45bf-a158-e74cabb70a20/edit) · [S02](https://app.subframe.com/f023064a5ca0/design/0fab5d8c-1e6a-4220-863d-7e46aba0f06c/edit) · [S03](https://app.subframe.com/f023064a5ca0/design/9997a3c4-d18b-449f-bbbd-4fe6dd24f3df/edit) · [S04](https://app.subframe.com/f023064a5ca0/design/46e04956-4903-4733-9345-81b18f34e858/edit) · [S05](https://app.subframe.com/f023064a5ca0/design/83599a34-97b4-4881-beb4-8b7e35d11aa0/edit)
Canvas: [Canvas](<WF-P12 Verwaltung.canvas>)
Stand: 2026-07-09
Stand: 2026-07-10 (Subframe-Abgleich, Links eingetragen)
---
@@ -101,10 +101,13 @@ S05 (Konfig-Panels) -> eingebettet in Flow-Editor S01
## 10. Offene Fragen
- Welche zwei Muster-Panels für S05 (Vorschlag: Auslöser »Neue Anfrage« + Aktion »Aufgabe anlegen«) → beim Subframe-Bau
- ~~Welche zwei Muster-Panels für S05~~ → umgesetzt wie vorgeschlagen: Auslöser »Neue Anfrage« + Aktion »Aufgabe anlegen« (Abgleich 2026-07-10)
- S02–S05 stehen in Subframe ohne DefaultPageLayout (App-Shell) — vereinheitlichen?
- S01: Copy-Bug Spalte »Läufe (30 Tage)« zeigt »143 Datensätze« → fixen
- S03: Demo-Widerspruch Probelauf-Marker + Rückgängig-Angebot → Demo-Daten korrigieren
## Handoff-Check
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
- [x] Subframe-Link ist eingetragen. *(Erstentwürfe, Abgleich s. Screen-Dateien)*
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: M01
screen: Neuer Channel / DM
typ: Modal
umsetzung: Bauen
status: Entwurf
route: "aus S01/S02"
subframe: ""
---
# M01 — Neuer Channel / DM
## Ziel
Ein neuer Gruppen-Channel oder eine Direktnachricht ist schnell erstellt, mit klarer Privatsphäre.
## Was das Tool können muss
- Umschalter: Gruppe / Direktnachricht
- Gruppe: Name, Beschreibung, öffentlich/privat, Mitglieder wählen
- DM: eine oder mehrere Personen suchen; bestehende DM erkennen und öffnen statt Duplikat
- Optional: Projekt verknüpfen nur, wenn aus Projekt-Kontext geöffnet
- Vorschau, wer Zugriff bekommt
- Validierung: Name fehlt, private Gruppe ohne Mitglieder, DM mit sich selbst, fehlende Berechtigung
- Nach Anlegen direkt zu S02
## Pattern / Archetyp
A5 Modal.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: M02
screen: DM-Audit-Begründung
typ: Modal
umsetzung: Bauen
status: Entwurf
route: "aus S08"
subframe: ""
---
# M02 — DM-Audit-Begründung
## Ziel
Admin-Einsicht in Direktnachrichten ist eine Ausnahmehandlung, nicht normales Browsing.
## Was das Tool können muss
- Zeigt betroffene DM, Mitglieder und Zweck der Einsicht
- Pflichtfeld: Begründung
- Hinweis: Einsicht wird audit-geloggt und im DM sichtbar markiert
- Optional: Session-Dauer anzeigen
- Bestätigen öffnet S02 mit Admin-Audit-Banner
- Abbrechen zurück zu S08
- Validierung: Begründung fehlt/zu kurz, keine `read_all_channels`-Berechtigung
## Pattern / Archetyp
A5 Confirm-/Reason-Modal.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,40 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: S01
screen: Chat-Index
typ: BESPOKE
umsetzung: Bauen
status: Entwurf
route: "/chat"
subframe: ""
---
# S01 — Chat-Index
## Ziel
Der Nutzer sieht sofort, wo etwas Neues passiert ist: ungelesene Channels, @Mentions, Projekt-Chats und DMs.
## Was das Tool können muss
- Channel-Liste mit Name, Avatar/Typ, Snippet, Zeitstempel, Unread-Badge, Mention-Marker, Pin-/Mute-Indikator
- Typen: Projekt-Channel, öffentliche Gruppe, private Gruppe, DM
- Projekt-Channels zeigen Projekt-Status/Stage und Link zum Projekt
- Filter: Alle, Ungelesen, Mentions, Projekt, Gruppen, DMs, Archiviert
- Suche innerhalb der Channel-Liste + Link zur globalen Suche S06
- Channel-Browser/Discover für öffentliche Gruppen
- Schnell-Aktionen je Zeile: anpinnen, stummschalten, als gelesen markieren, archivieren/verlassen je Berechtigung
- CTA: Neuer Channel / DM → M01
- Link: Meine Mentions → S05
- Zustände: keine Channels, nur archivierte Channels, laden, offline/reconnect, keine Berechtigung
## Pattern / Archetyp
BESPOKE-Chat-Index; kompakter, scannbarer Arbeitsbereich statt Marketing-Layout.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,41 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: S02
screen: Channel-Detail
typ: BESPOKE
umsetzung: Bauen
status: Entwurf
route: "/chat/:id"
subframe: ""
---
# S02 — Channel-Detail
## Ziel
Hier wird wirklich gearbeitet: Nachrichten lesen, antworten, Dateien teilen, Threads öffnen, Aufgaben erzeugen.
## Was das Tool können muss
- Header: Channel-Name, Typ, Member-Anzahl, Projekt-Link falls Projekt-Channel, Suche, Settings-Link S07
- Pinned-Preview: max. 3 angepinnte Nachrichten inline + »alle anzeigen« → S04
- Verlauf mit Datums-Trennern und System-Messages
- Nachricht: Avatar, Name, Zeit, Markdown-Body, Mentions, Anhänge, Link-Preview, Edited-/Lösch-Marker
- Reactions: Emoji + Anzahl + wer reagiert hat
- Thread-Indikator: Anzahl Antworten, letzter Reply, Klick → S03
- Read-Receipt: »X von Y gelesen«; DM zeigt gelesen/zugestellt kompakt
- Composer: Markdown, Emoji, @Mention-Autocomplete, Datei-Dropzone, Foto/Anhang, Draft-Autosave
- Typing-Indikator und Reconnect-Banner
- Per-Message-Menü: reagieren, Thread, pinnen, als Aufgabe markieren (WF-P4 M01), Link kopieren, bearbeiten, löschen
- Rechte/States: read-only archiviert, muted, reconnect, Upload-Fehler, pending message, keine Berechtigung
## Pattern / Archetyp
BESPOKE Real-Time-Chat. Stable Composer und Verlauf ohne Layoutsprünge sind wichtiger als dekorative Flächen.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: S03
screen: Thread-Detail
typ: BESPOKE Panel/Route
umsetzung: Bauen
status: Entwurf
route: "/chat/:id/thread/:thread_id"
subframe: ""
---
# S03 — Thread-Detail
## Ziel
Eine Nebendiskussion bleibt bei der Ausgangsnachricht, ohne den Hauptverlauf zu überfrachten.
## Was das Tool können muss
- Eltern-Nachricht oben vollständig anzeigen (inkl. Anhänge/Reactions)
- Replies chronologisch, mit denselben Message-Elementen wie S02
- Eigener Composer für Replies mit @Mentions, Emoji, Anhängen, Draft
- Link zurück zum Kontext im Channel
- Aktionen: reagieren, pinnen, als Aufgabe markieren, Link kopieren, bearbeiten/löschen je Recht
- Read-Receipt/Seen-Info für Thread-Replies
- Zustände: Thread gelöscht, Ausgangsnachricht gelöscht, keine Berechtigung, reconnect, leerer Thread
## Pattern / Archetyp
BESPOKE-Teilfläche. Kann als Side-Panel oder eigene Route gebaut werden; für die Planung eigener Nachweis-Frame.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,36 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: S04
screen: Angepinnte Nachrichten
typ: A2 Liste
umsetzung: Bauen
status: Entwurf
route: "/chat/:id/pinned"
subframe: ""
---
# S04 — Angepinnte Nachrichten
## Ziel
Wichtige Entscheidungen, Dateien und Hinweise im Channel sind schnell wieder auffindbar.
## Was das Tool können muss
- Liste aller Pins im Channel, max. 50
- Zeile: Nachrichtenausschnitt, Autor, Datum, Pin-Ersteller, Anhänge, Link zum Kontext
- Filter/Suche innerhalb der Pins
- Aktionen: entpinnen, Link kopieren, als Aufgabe markieren
- Hinweis, wenn Pin-Limit erreicht ist
- Zustände: keine Pins, Nachricht gelöscht, keine Berechtigung
## Pattern / Archetyp
A2 Liste als Nebenfläche aus dem Channel.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,36 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: S05
screen: Meine Mentions
typ: A2 Liste
umsetzung: Bauen
status: Entwurf
route: "/chat/mentions"
subframe: ""
---
# S05 — Meine Mentions
## Ziel
Alle @Erwähnungen über Channels hinweg an einem Ort, damit nichts untergeht.
## Was das Tool können muss
- Liste kanalübergreifender Mentions an mich
- Spalten/Zeile: Channel, Projekt falls vorhanden, Nachrichtenausschnitt, Autor, Zeitpunkt, gelesen/ungelesen
- Filter: ungelesen, Projekt, Gruppe, DM, Zeitraum
- Aktionen: öffnen im Kontext, als gelesen markieren, als Aufgabe markieren
- Gruppierung nach Heute / Gestern / Älter
- Zustände: keine Mentions, keine Berechtigung für Channel inzwischen verloren, laden, Fehler
## Pattern / Archetyp
A2 Liste, ähnlich Benachrichtigungen/Aufgaben, aber mit Chat-Kontext.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,36 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: S06
screen: Chat-Suche
typ: A2 Suche
umsetzung: Bauen
status: Entwurf
route: "/chat/search"
subframe: ""
---
# S06 — Chat-Suche
## Ziel
Nachrichten, Dateien und Entscheidungen über alle erlaubten Channels hinweg finden.
## Was das Tool können muss
- Suchfeld mit Ergebnisliste und Treffer-Kontext
- Filter: Channel, Typ, Projekt, Autor, Zeitraum, mit Anhang, nur Pins
- Ergebnis zeigt Snippet mit hervorgehobener Fundstelle, Channel, Autor, Datum, Anhänge
- Klick öffnet S02 an der richtigen Nachricht oder S03 im Thread
- Permission-sicher: nur erlaubte Channels durchsuchen
- Zustände: keine Treffer, zu kurze Suche, Suche läuft, Fehler
## Pattern / Archetyp
A2 Suche mit Chat-spezifischem Kontext.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: S07
screen: Channel-Einstellungen
typ: A6 Settings
umsetzung: Bauen
status: Entwurf
route: "/chat/:id/settings"
subframe: ""
---
# S07 — Channel-Einstellungen
## Ziel
Channel-Mitglieder, Privatsphäre und Archivierung werden kontrolliert, ohne den Chatverlauf zu beschädigen.
## Was das Tool können muss
- Grunddaten: Name, Beschreibung, Typ (öffentlich/privat/Projekt/DM), Projekt-Verknüpfung falls vorhanden
- Mitgliederliste mit Rolle, Status, zuletzt aktiv; hinzufügen/entfernen je Recht
- Projekt-Channel: Hinweis, dass Mitglieder aus dem Projekt synchronisiert werden
- Privacy-Einstellung für Gruppen (public/private) wenn erlaubt
- Optionen: stummschalten, anpinnen, verlassen, archivieren, wiederherstellen
- Gefahrenbereich: Channel archivieren mit Grund; DM nicht manuell erweiterbar
- Zustände: keine Admin-Rechte, Projekt-Sync überschreibt manuelle Änderung, archivierter Channel read-only
## Pattern / Archetyp
A6 Settings. DM-Settings bewusst reduziert.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: S08
screen: Admin-Chat-Übersicht
typ: A2/A3 Admin
umsetzung: Bauen
status: Entwurf
route: "/admin/chat"
subframe: ""
---
# S08 — Admin-Chat-Übersicht
## Ziel
Admins können Channels verwalten und im Ausnahmefall auditierbar prüfen, ohne heimliche DM-Einsicht zu ermöglichen.
## Was das Tool können muss
- Tabelle aller Channels: Name, Typ, Mitglieder, Projekt, letzte Nachricht, Status, Archiviert
- Filter: Typ, Projekt, archiviert, private Gruppen, DMs
- Aktionen: öffnen, Mitglieder korrigieren, archivieren, Force-Delete nur mit Berechtigung
- DM öffnen immer nur über M02 (Begründungspflicht)
- Nach Audit-Freigabe: S02 mit sichtbarem **Admin-Einsicht aktiv**-Banner
- Audit-Info: wer, wann, welche Begründung, Session-Ablauf
- Zustände: keine Admin-Berechtigung, Audit-Session abgelaufen, Channel gelöscht
## Pattern / Archetyp
A2/A3 Admin-Fläche mit explizitem Audit-Guard.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,38 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
id: V01
screen: Monteur-Handy-Chat
typ: BESPOKE-Mobile
umsetzung: Bauen
status: Entwurf
route: "Variante von S02"
subframe: ""
---
# V01 — Monteur-Handy-Chat 📱
## Ziel
Monteurinnen und Monteure schreiben im Projekt-Chat schnell vom Handy: lesen, antworten, Foto senden.
## Was das Tool können muss
- Mobile Channel-Detail-Ansicht mit Fokus auf Projekt-Chat
- Vereinfachter Header: Projekt/Channel, Zurück, Info
- Verlauf touch-tauglich, Anhänge/Fotos groß genug
- Composer mit Text, Foto-Direktupload, @Mention, Senden
- Push-/Unread-Hinweis, Scroll-to-bottom, neue Nachrichten
- Offline/Reconnect: Entwurf bleibt erhalten, Foto wartet auf Upload
- Reduzierte Aktionen: reagieren, Thread öffnen, Foto senden, als Aufgabe markieren
- Keine Admin-/Settings-Komplexität im Mobile-Hauptframe
## Pattern / Archetyp
BESPOKE-Mobile. Dicht und robust, optimiert für Baustelle statt Desktop-Vollumfang.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,35 @@
{
"nodes": [
{"id":"md-paket","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.md","x":-80,"y":-440,"width":460,"height":280},
{"id":"group-main","type":"group","x":-80,"y":-100,"width":1740,"height":660,"label":"Chat Hauptfläche"},
{"id":"group-side","type":"group","x":1840,"y":-100,"width":1700,"height":660,"label":"Nebenflächen"},
{"id":"group-admin","type":"group","x":3720,"y":-100,"width":1180,"height":660,"label":"Admin & Modals"},
{"id":"note-entry","type":"text","text":"# Einstieg\n\nSidebar → Chat oder Projekt-Detail → Projekt-Channel.\n\nTelefonie bleibt eigenes Paket; dieser Flow ist nur Team-Chat.","x":0,"y":0,"width":360,"height":200},
{"id":"s01","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/S01 Chat-Index.md","x":560,"y":0,"width":420,"height":200},
{"id":"s02","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/S02 Channel-Detail.md","x":1120,"y":0,"width":420,"height":200},
{"id":"s03","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/S03 Thread-Detail.md","x":1120,"y":300,"width":420,"height":200},
{"id":"v01","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/V01 Monteur-Handy-Chat.md","x":560,"y":300,"width":420,"height":200},
{"id":"s04","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/S04 Angepinnte Nachrichten.md","x":1920,"y":0,"width":420,"height":200},
{"id":"s05","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/S05 Meine Mentions.md","x":2480,"y":0,"width":420,"height":200},
{"id":"s06","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/S06 Chat-Suche.md","x":3040,"y":0,"width":420,"height":200},
{"id":"s07","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/S07 Channel-Einstellungen.md","x":2480,"y":300,"width":420,"height":200},
{"id":"note-task","type":"text","text":"# Wiederverwendet\n\n»Als Aufgabe markieren« öffnet WF-P4 Aufgaben M01 vorbefüllt mit Nachricht, Channel und Link zum Kontext.","x":3040,"y":300,"width":420,"height":200},
{"id":"m01","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/M01 Neuer Channel DM.md","x":3800,"y":0,"width":420,"height":200},
{"id":"s08","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/S08 Admin-Chat.md","x":4360,"y":0,"width":420,"height":200},
{"id":"m02","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/Screens/M02 DM-Audit-Begruendung.md","x":4360,"y":300,"width":420,"height":200}
],
"edges": [
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted"}},
{"id":"e-open","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"öffnen"},
{"id":"e-thread","fromNode":"s02","fromSide":"bottom","toNode":"s03","toSide":"top","toEnd":"arrow","label":"Thread"},
{"id":"e-mobile","fromNode":"s02","fromSide":"bottom","toNode":"v01","toSide":"top","toEnd":"arrow","label":"Handy"},
{"id":"e-pins","fromNode":"s02","fromSide":"right","toNode":"s04","toSide":"left","toEnd":"arrow","label":"Pins"},
{"id":"e-mentions","fromNode":"s01","fromSide":"right","toNode":"s05","toSide":"left","toEnd":"arrow","label":"Mentions"},
{"id":"e-search","fromNode":"s01","fromSide":"right","toNode":"s06","toSide":"left","toEnd":"arrow","label":"Suche"},
{"id":"e-settings","fromNode":"s02","fromSide":"right","toNode":"s07","toSide":"left","toEnd":"arrow","label":"Settings"},
{"id":"e-new","fromNode":"s01","fromSide":"right","toNode":"m01","toSide":"left","toEnd":"arrow","label":"neu"},
{"id":"e-admin-reason","fromNode":"s08","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"DM öffnen"},
{"id":"e-admin-open","fromNode":"m02","fromSide":"left","toNode":"s02","toSide":"right","toEnd":"arrow","label":"Audit-Banner"},
{"id":"e-task-note","fromNode":"note-task","fromSide":"left","toNode":"s02","toSide":"right","toEnd":"arrow","styleAttributes":{"path":"dotted"}}
]
}
@@ -0,0 +1,144 @@
---
kind: wireframe-package
project: HiveGrid Screen Project
ticket: D-CHAT + AK-P15b
package: WF-P15 Team-Chat
typ: Flow
status: Entwurf
subframe: ""
canvas: "WF-P15 Team-Chat.canvas"
---
# WF-P15 Team-Chat
Status: Entwurf (nicht mit David validiert)
Subframe-Link: -
Canvas: [Canvas](<WF-P15 Team-Chat.canvas>)
Stand: 2026-07-09
---
## 1. Kurzfassung
Der interne Team-Chat: Channel-Liste, Echtzeit-Verlauf, Threads, Reaktionen, Pins, Anhänge, @-Erwähnungen, kanalübergreifende Suche und eine vereinfachte Monteur-Handy-Ansicht. Projekt-Channels hängen am Projekt und synchronisieren die Projektmitglieder. Admins können DMs nur über einen begründeten Audit-Modus einsehen; der Zugriff wird sichtbar markiert und protokolliert.
---
## 2. Intent Check
| Frage | Antwort |
|---|---|
| Ticket/Modul | D-CHAT, Dev-Pendant AK-P15b |
| Nutzer-Ziel | Schnell im Team, Projekt oder 1:1 schreiben, Kontext finden und nichts durch Mentions/Ungelesenheit verpassen |
| Quellen geprüft | `ticket-docs/D-CHAT.md`, `ticket-docs/AK-P15b.md`, HiveGrid Map, Aufgaben-Muster für Mark-as-Task |
| Sicher im Scope | Chat-Index, Channel-Detail, Thread, Pins, Mentions, Suche, Channel anlegen/settings, Admin-Audit, Mobile-Monteur |
| Sicher nicht im Scope | Telefonie/AirCall (WF-P15 Telefonie), HalloPetra, WhatsApp/Unified Inbox, Whisper-Diktat |
| Unsichere Annahmen | Projekt-Chat ist im Projekt-Detail eingebettet, aber die eigentliche Channel-View bleibt dieser Flow |
---
## 3. Scope
| Punkt | Inhalt |
|---|---|
| Startpunkt | Sidebar »Chat« oder Projekt-Detail »Chat« |
| Ziel | Nachricht gesendet/gelesen, Thread beantwortet, Channel gefunden/angelegt, Admin-Audit sauber begründet |
| Haupt-Archetyp | **BESPOKE** Real-Time-Chat + A2/A6 Nebenflächen + A5 Modals |
| Out of scope | Telefonie, externe Kundenkommunikation, WhatsApp, KI-Hilfe-Chat |
---
## 4. Entscheidungsentwurf (nicht validiert)
| Entscheidung | Status | Notiz |
|---|---|---|
| Chat als eigener Bespoke-Flow | Entwurf | Real-Time-Layout ist kein Standard-A2/A3 |
| Channel-Detail ist die Hauptarbeitsfläche | Entwurf | Header, Pinned-Preview, Verlauf, Composer, Thread/Info-Seitenflächen |
| Thread als eigener nachweisbarer Screen | Entwurf | Kann später als Side-Panel oder Route umgesetzt werden; UX muss sichtbar sein |
| Pins, Mentions und Suche als eigene Nebenflächen | Entwurf | Diese sind schnelle Arbeitslisten, nicht nur Filter im Channel |
| Projekt-Channel ist entity-linked | Entwurf | Projektmitglieder werden synchronisiert; Einstieg im Projekt-Detail, View bleibt S02 |
| Admin-DM-Audit ist kein normaler Admin-Browse | Entwurf | Pflicht-Begründung je Session + Banner im geöffneten DM + Audit-Log |
| Monteur-Handy-Ansicht eigener Frame | Entwurf | Vereinfachte Navigation, Foto-Direktupload, Push/Offline-Hinweis |
| Telefonie bleibt eigenes Paket | Entwurf | D-CHAT enthält keinen AirCall-Setup/Calls-Flow |
### Happy Path
1. Nutzer öffnet `/chat`, sieht Channels nach Ungelesenheit, Mentions und Pins sortiert.
2. Er öffnet einen Projekt-Channel, liest neue Nachrichten, antwortet mit @Mention und hängt ein Foto an.
3. Eine Nachricht braucht Nacharbeit → Hover-Menü »als Aufgabe markieren« öffnet den P4-Aufgaben-Dialog vorbefüllt.
4. Auf dem Handy nutzt der Monteur die vereinfachte Ansicht: Projekt-Chat öffnen, Foto hochladen, kurze Antwort senden.
### Meldungs-/Error-States (Entwurf)
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|---|---|---|---|---|
| Reconnect / WebSocket weg | Banner in S02/V01 | nein | Nur dokumentieren | »Verbindung unterbrochen — wir verbinden neu.« |
| Nachricht noch nicht gesendet | Optimistic-Zustand in S02/V01 | nein | Nur dokumentieren | Uhr/Retry, kein Layoutsprung |
| Upload fehlgeschlagen | Inline am Anhang | nein | Nur dokumentieren | erneut versuchen / entfernen |
| Keine Channel-Berechtigung | 404/Permission-State | ja | Wiederverwenden | keine Channel-Details leaken |
| Projekt-Channel ohne Projektzugriff | Permission-State | ja | Nur dokumentieren | Projektrechte gewinnen |
| Zu viele Pins | Inline-Hinweis in S02/S04 | nein | Nur dokumentieren | max. 50 Pins je Channel |
| DM-Audit ohne Begründung | M02 blockiert | ja | Bauen (M02) | Pflichtbegründung |
| Admin liest DM | sichtbarer Banner in S02/S08 | nein | Bauen in S08/S02 | »Admin-Einsicht aktiv« |
| Mobile offline | Banner in V01 | nein | Nur dokumentieren | Entwurf bleibt lokal |
---
## 7. Screen-Liste (Entwurf)
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|---|---|---|---|---|---|
| S01 | Chat-Index | BESPOKE | Bauen | `/chat` | Entwurf |
| S02 | Channel-Detail | BESPOKE | Bauen | `/chat/:id` | Entwurf |
| S03 | Thread-Detail | BESPOKE Panel/Route | Bauen | `/chat/:id/thread/:thread_id` | Entwurf |
| S04 | Angepinnte Nachrichten | A2 Liste | Bauen | `/chat/:id/pinned` | Entwurf |
| S05 | Meine Mentions | A2 Liste | Bauen | `/chat/mentions` | Entwurf |
| S06 | Chat-Suche | A2 Suche | Bauen | `/chat/search` | Entwurf |
| S07 | Channel-Einstellungen | A6 Settings | Bauen | `/chat/:id/settings` | Entwurf |
| S08 | Admin-Chat-Übersicht | A2/A3 Admin | Bauen | `/admin/chat` | Entwurf |
| V01 | Monteur-Handy-Chat | BESPOKE-Mobile | Bauen | Variante von S02 | Entwurf |
| M01 | Neuer Channel / DM | Modal | Bauen | aus S01/S02 | Entwurf |
| M02 | DM-Audit-Begründung | Modal | Bauen | aus S08 | Entwurf |
| D01–D09 | Reconnect / Pending / Upload / Permission / Pins / Offline (s. Tabelle) | Inline/Zustand | Nur dokumentieren | — | Entwurf |
---
## 8. Grid
```text
Sidebar -> S01 (Chat-Index)
S01 -> S02 (Channel öffnen)
S02 -> S03 (Thread öffnen)
S02 -> S04 (Pins)
S01/S02 -> S05 (Meine Mentions)
S01/S02 -> S06 (Suche)
S02 -> S07 (Channel-Einstellungen)
S01/S02 -> M01 (neuer Channel / DM)
S02 -> V01 (Handy-Variante)
S08 Admin -> M02 (Begründung) -> S02 mit Audit-Banner
S02 Hover-Menü -> WF-P4 Aufgaben M01 (Mark-as-Task, vorbefüllt)
Projekt-Detail -> S02 (entity-linked Projekt-Channel)
```
---
## 9. Screen-Pakete
- [[S01 Chat-Index]] · [[S02 Channel-Detail]] · [[S03 Thread-Detail]] · [[S04 Angepinnte Nachrichten]]
- [[S05 Meine Mentions]] · [[S06 Chat-Suche]] · [[S07 Channel-Einstellungen]] · [[S08 Admin-Chat]]
- [[V01 Monteur-Handy-Chat]] · [[M01 Neuer Channel DM]] · [[M02 DM-Audit-Begruendung]]
---
## 10. Offene Fragen
- Thread-Detail als Side-Panel oder eigene Route: Paket lässt beides zu; Subframe entscheidet nach Layout-Test.
- Channel-Browser/Discover: v1 im Chat-Index als Bereich/Overlay, kein eigener Screen.
- Read-Receipt-Kopie: »X von Y gelesen« reicht im Verlauf; Detail-Liste erst bei Bedarf.
- Push-Verhalten für Monteure: mit Benachrichtigungen P3 abstimmen.
## Handoff-Check
- [ ] Screen-Liste mit David validieren.
- [ ] Meldungs-/Error-State-Matrix mit David validieren.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
@@ -0,0 +1,36 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P16 (Teil) + AK-P16d
package: WF-P16 E-Signatur
id: M01
screen: Signatur zurückziehen
typ: Confirm-Modal
umsetzung: Bauen
status: Validiert
route: "aus S03"
subframe: ""
---
# M01 — Signatur zurückziehen
## Ziel
Das Büro kann einen laufenden Signaturvorgang bewusst stoppen, ohne den Verlauf zu verlieren.
## Was das Tool können muss
- Zeigt Dokumenttitel, betroffene Unterzeichner und aktuellen Status
- Pflichtfeld: Grund für das Zurückziehen
- Hinweis: Signatur-Link wird ungültig; bereits erzeugte Nachweise/Verläufe bleiben sichtbar
- Option: Unterzeichner per E-Mail informieren
- Bestätigen/Abbrechen; danach Status »zurückgezogen« in S03 und Link-Zustand in S04
- Bulk nicht nötig in v1
## Pattern / Archetyp
A5 Confirm-Modal.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,38 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P16 (Teil) + AK-P16d
package: WF-P16 E-Signatur
id: S01
screen: Signaturen im Projekt
typ: A3/A2 eingebettet
umsetzung: Bauen
status: Validiert
route: "Projekt-Detail, Reiter/Aktion"
subframe: ""
---
# S01 — Signaturen im Projekt
## Ziel
Im Projekt ist sofort sichtbar, welche Dokumente zur Unterschrift raus sind, was offen ist und was abgeschlossen wurde.
## Was das Tool können muss
- Reiter/Sektion im Projekt-Detail: **Signaturen**
- Liste der Signatur-Dokumente: Titel, Status, Unterzeichner-Fortschritt, zuletzt geändert, Ablaufdatum
- Primäraktion: **Zur Signatur senden** → S02
- Zeilen-Klick → S03 (Detail & Status)
- Schnell-Aktionen: erinnern, zurückziehen (M01), Downloads wenn abgeschlossen
- Status-Badges: Entwurf, gesendet, angesehen, teilweise signiert, signiert, abgelehnt, zurückgezogen, abgelaufen, Fehler
- Hinweis: Artefakte liegen in den Projekt-Dateien (Original, signiertes PDF, Abschluss-Nachweis)
- Zustände: leer (CTA »Erstes Dokument senden«), laden, Fehler, keine Berechtigung
## Pattern / Archetyp
A3 Projekt-Detail-Sektion mit A2-Listenmuster; passt in das Karteikarten-Muster aus WF-P9 Projekt-Akte.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,39 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P16 (Teil) + AK-P16d
package: WF-P16 E-Signatur
id: S02
screen: Signatur-Wizard
typ: A5 Wizard
umsetzung: Bauen
status: Validiert
route: "aus Projekt-Detail / S01"
subframe: ""
---
# S02 — Signatur-Wizard
## Ziel
Das Büro verschickt ein PDF zur Unterschrift, ohne sich mit Technik, Provider-Details oder manueller Ablage zu beschäftigen.
## Was das Tool können muss
- Schritt 1: **PDF wählen** aus Projekt-Dateien ODER neues PDF hochladen (Dropzone), Dateiname/Titel prüfen
- Schritt 2: **Unterzeichner**: Name, E-Mail, Rolle, Kontakt-Verknüpfung, Reihenfolge; Kunde aus Projekt/Kontakt vorausgefüllt
- Reihenfolge: parallel oder sequenziell; bei sequenziell klar zeigen, wer zuerst dran ist
- Schritt 3: **Signaturmodus**: Fern-Link + Code (OTP) ODER Vor Ort auf diesem Gerät (V01)
- Optional: PandaDoc BYOK nur anzeigen, wenn verbunden; sonst Default **SES-Eigenbau**
- Nachricht an Unterzeichner: Betreff, kurzer Text, Ablaufdatum
- Zusammenfassung vor dem Senden: Dokument, Unterzeichner, Modus, Reihenfolge, Ablauf
- Senden → S03; Vor-Ort-Modus → V01
- Validierung: PDF fehlt, Fern-Link ohne E-Mail, doppelte E-Mail, ungültige Reihenfolge, Datei nicht PDF
## Pattern / Archetyp
A5 Wizard, bewusst kompakt; technische Provider-Details bleiben im Hintergrund.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,38 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P16 (Teil) + AK-P16d
package: WF-P16 E-Signatur
id: S03
screen: Signatur-Detail & Status
typ: A3 Detail
umsetzung: Bauen
status: Validiert
route: "Signatur öffnen"
subframe: ""
---
# S03 — Signatur-Detail & Status
## Ziel
Alles zu einem Signaturvorgang an einem Ort: wer hat schon unterschrieben, was ist offen, welche Nachweise gibt es.
## Was das Tool können muss
- Kopf: Dokument-Titel, Projekt, Gesamtstatus, Ablaufdatum, Provider (SES Default / PandaDoc BYOK)
- Linke Spalte: Dokumentdaten, Versandtext, Routing-Modus, Datei-Verknüpfungen
- Rechte Spalte: **Unterzeichner-Status** je Person (gesendet, angesehen, signiert, abgelehnt, zurückgezogen), Zeitpunkte, letzte Erinnerung
- Aktionen: Erinnerung senden, Link erneut senden, zurückziehen (M01), Download Original-PDF, signiertes PDF, Abschluss-Nachweis
- Verlauf: erstellt, gesendet, Link geöffnet, OTP bestätigt, signiert, abgelehnt, zurückgezogen, Versiegelung abgeschlossen/fehlgeschlagen
- Wenn abgeschlossen: klare Download-Leiste + Hinweis, dass das signierte PDF in den Projekt-Dateien liegt
- Wenn abgelehnt: Grund anzeigen, erneutes Senden als neuer Vorgang
- Zustände: wartend auf Unterzeichner, abgelaufen, zurückgezogen, Versiegelung fehlgeschlagen, keine Berechtigung
## Pattern / Archetyp
A3 Detail nach Karteikarten-Muster: Daten links, Status/Verlauf rechts, Aktionen im Kopf.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,38 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P16 (Teil) + AK-P16d
package: WF-P16 E-Signatur
id: S04
screen: Signieren per Link
typ: BESPOKE-Public
umsetzung: Bauen
status: Validiert (Delta)
route: "/sign/:token"
subframe: ""
---
# S04 — 🌐 Signieren per Link
## Ziel
Der Kunde kann das Dokument sicher und verständlich unterschreiben, ohne Login und ohne App-Installation.
## Was das Tool können muss
- Firmen-Branding oben, Dokumenttitel, Projekt-/Angebotsbezug in Klartext ohne interne Details
- Schritt 1: Code-Bestätigung (OTP aus Mail) mit »Code erneut senden«
- Schritt 2: PDF ansehen/prüfen, Seiten-Navigation, Download des Original-PDF optional
- Schritt 3: Zustimmung/Intent-Text bestätigen + Unterschrift zeichnen oder tippen
- Abschluss: klare Bestätigung, Hinweis auf E-Mail/Download, keine internen Projektlinks
- Ablehnen: optionaler Grund, Status geht zurück nach S03, Büro bekommt Benachrichtigung
- Zustände: Link ungültig, Link abgelaufen, bereits signiert, zurückgezogen, falscher/abgelaufener Code, PDF lädt nicht, Signatur-Abschluss fehlgeschlagen
- Mobile-first: Unterschrift muss auf Handy sauber funktionieren
## Pattern / Archetyp
BESPOKE-Public. Das ist der öffentliche Trust-Touchpoint; höherer Polish als interne Verwaltungsflächen.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,38 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-P16 (Teil) + AK-P16d
package: WF-P16 E-Signatur
id: V01
screen: Vor Ort unterschreiben
typ: BESPOKE-Mobile
umsetzung: Bauen
status: Validiert
route: "aus S02, Touch-Modus"
subframe: ""
---
# V01 — Vor Ort unterschreiben 📱
## Ziel
Der Mitarbeiter kann dem Kunden vor Ort das Gerät geben und die Unterschrift direkt aufnehmen.
## Was das Tool können muss
- Vollbild-/Tablet-tauglicher Modus ohne interne Navigation
- Dokumenttitel + kurze Bestätigung, dass der Kunde gerade unterschreibt
- PDF-Vorschau oder Pflicht-Hinweis »Dokument wurde geprüft« je nach Platz
- Name des Unterzeichners editierbar, Rolle sichtbar
- Touch-Signaturfeld groß genug für Finger/Stift, mit Löschen/Neu zeichnen
- Abschlussknopf mit bewusstem Intent-Text
- Nach Abschluss: Bestätigung und Rückgabe-Hinweis an Mitarbeiter; zurück zu S03
- Zustände: offline/Sync steht aus, Signaturfeld leer, Versiegelung noch ausstehend
## Pattern / Archetyp
BESPOKE-Mobile, verwandt mit WF-P9 Abnahme-Unterschriften, aber für Dokument-Signatur am Projekt.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,29 @@
{
"nodes": [
{"id":"md-paket","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.md","x":-80,"y":-440,"width":460,"height":280},
{"id":"group-intern","type":"group","x":-80,"y":-100,"width":1740,"height":660,"label":"Projekt-Team (intern)"},
{"id":"group-public","type":"group","x":1840,"y":-100,"width":1180,"height":660,"label":"Kunde unterschreibt"},
{"id":"group-actions","type":"group","x":3200,"y":-100,"width":620,"height":380,"label":"Aktionen"},
{"id":"note-entry","type":"text","text":"# Einstieg\n\nProjekt-Detail → Reiter »Signaturen« oder Aktion »Zur Signatur senden«.\n\nSignatur hängt am Projekt-Kern, nicht an Deal.","x":0,"y":0,"width":360,"height":200},
{"id":"s01","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 E-Signatur/Screens/S01 Signaturen im Projekt.md","x":560,"y":0,"width":420,"height":200},
{"id":"s02","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 E-Signatur/Screens/S02 Signatur-Wizard.md","x":1120,"y":0,"width":420,"height":200},
{"id":"s03","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 E-Signatur/Screens/S03 Signatur-Detail.md","x":560,"y":300,"width":420,"height":200},
{"id":"note-assets","type":"text","text":"# Artefakte\n\nOriginal-PDF, signiertes PDF und Abschluss-Nachweis landen in den Projekt-Dateien.\n\nDefault: SES-Eigenbau. PandaDoc nur BYOK-Opt-in.","x":1120,"y":300,"width":420,"height":200},
{"id":"s04","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 E-Signatur/Screens/S04 Signieren per Link.md","x":1920,"y":0,"width":420,"height":200},
{"id":"v01","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 E-Signatur/Screens/V01 Vor Ort unterschreiben.md","x":2480,"y":0,"width":420,"height":200},
{"id":"note-public","type":"text","text":"# Public-Delta\n\nD-P16 nennt den Wizard, aber nicht den Kunden-Signierframe. S04 ist trotzdem Pflicht, weil hier Vertrauen + OTP + Signatur passieren.","x":1920,"y":300,"width":460,"height":200},
{"id":"m01","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 E-Signatur/Screens/M01 Zurueckziehen.md","x":3280,"y":0,"width":420,"height":200}
],
"edges": [
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted"}},
{"id":"e-new","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"Zur Signatur senden"},
{"id":"e-open","fromNode":"s01","fromSide":"bottom","toNode":"s03","toSide":"left","toEnd":"arrow","label":"öffnen"},
{"id":"e-send","fromNode":"s02","fromSide":"right","toNode":"s04","toSide":"left","toEnd":"arrow","label":"Fern-Link + OTP"},
{"id":"e-local","fromNode":"s02","fromSide":"right","toNode":"v01","toSide":"left","toEnd":"arrow","label":"Vor Ort"},
{"id":"e-status","fromNode":"s04","fromSide":"bottom","toNode":"s03","toSide":"right","toEnd":"arrow","label":"Status"},
{"id":"e-local-status","fromNode":"v01","fromSide":"bottom","toNode":"s03","toSide":"right","toEnd":"arrow","label":"Status"},
{"id":"e-assets","fromNode":"note-assets","fromSide":"left","toNode":"s03","toSide":"right","toEnd":"arrow","styleAttributes":{"path":"dotted"}},
{"id":"e-public-note","fromNode":"note-public","fromSide":"top","toNode":"s04","toSide":"bottom","toEnd":"arrow","styleAttributes":{"path":"dotted"}},
{"id":"e-revoke","fromNode":"s03","fromSide":"right","toNode":"m01","toSide":"left","toEnd":"arrow","label":"zurückziehen"}
]
}
@@ -0,0 +1,132 @@
---
kind: wireframe-package
project: HiveGrid Screen Project
ticket: D-P16 (Teil) + AK-P16d
package: WF-P16 E-Signatur
typ: Flow
status: Validiert
subframe: ""
canvas: "WF-P16 E-Signatur.canvas"
---
# WF-P16 E-Signatur
Status: Validiert (Screen-Liste)
Subframe-Link: -
Canvas: [Canvas](<WF-P16 E-Signatur.canvas>)
Stand: 2026-07-09
---
## 1. Kurzfassung
Digital unterschreiben am Projekt: Das Büro wählt ein PDF aus den Projekt-Dateien oder lädt eines hoch, legt Unterzeichner, Reihenfolge und Versandtext fest und sendet den Signatur-Link. Kunden unterschreiben per 🌐 öffentlichem Link mit Code-Bestätigung oder direkt vor Ort auf dem Gerät. Intern sieht das Team pro Unterzeichner den Status, kann erinnern oder zurückziehen und lädt am Ende Original-PDF, signiertes PDF und Abschluss-Nachweis herunter. Default ist der gehärtete **SES-Eigenbau**; PandaDoc bleibt nur optionaler BYOK-Adapter.
---
## 2. Intent Check
| Frage | Antwort |
|---|---|
| Ticket/Modul | D-P16 (Signatur-Wizard), Dev-Pendant AK-P16d |
| Nutzer-Ziel | Angebot/Projekt-Dokument ohne Medienbruch zur Unterschrift bringen und den Nachweis sauber am Projekt ablegen |
| Quellen geprüft | `ticket-docs/D-P16.md`, `ticket-docs/AK-P16d.md`, Signature-Modelle, HiveGrid Map |
| Sicher im Scope | Projekt-Einstieg, Signatur-Wizard, Status/Detail, 🌐 Kunden-Signierseite, Vor-Ort-Signatur, Erinnerung, Widerruf, Downloads |
| Sicher nicht im Scope | PDF-Editor/Vorlagenbau, qualifizierte elektronische Signatur (QES), PandaDoc als Pflichtprovider, Deal-Objekt |
| Unsichere Annahmen | Öffentliche Signierseite ist als eigener Screen nötig: Dev hat den Flow, D-P16 nennt ihn nicht als separates Screen-Delta |
---
## 3. Scope
| Punkt | Inhalt |
|---|---|
| Startpunkt | Projekt-Detail, Aktion »Zur Signatur senden« oder Reiter »Signaturen« |
| Ziel | Dokument ist versendet oder abgeschlossen; Artefakte liegen am Projekt in Dateien |
| Haupt-Archetyp | A5 Wizard + A3 Detail + BESPOKE-Public |
| Out of scope | Dokument inhaltlich bearbeiten, Unterschriftenfelder frei im PDF platzieren, QES/D-Trust |
---
## 4. Entscheidungen (validiert 2026-07-09)
| Entscheidung | Status | Notiz |
|---|---|---|
| Signatur hängt am Projekt-Kern | genommen | `ProjektSignatureDocument`/`Signer`; kein Deal-Objekt |
| Eigener SES-Flow ist Default | genommen | Fern-Link mit OTP + Touch vor Ort + PAdES/Certificate; PandaDoc nur BYOK-Opt-in |
| Eigene 🌐 Kunden-Signierseite | genommen (Delta) | Als eigener Frame S04, weil sonst der wichtigste externe Touchpoint fehlt |
| Projekt-Reiter/Liste vor Wizard | genommen | Nutzer braucht Überblick über laufende und abgeschlossene Signaturen am Projekt |
| Status-Detail als eigene Karteikarte | genommen | Download, Signer-Status, Reminder, Widerruf und Verlauf gehören an einen Ort |
| Vor-Ort-Signatur als eigener Mobile-/Tablet-Nachweis | genommen | Gleiche Signatur-Engine, aber ohne Mail-Link als Übergabe auf dem Gerät |
| PandaDoc nur optional sichtbar | genommen | Nur zeigen, wenn BYOK verbunden; sonst kein UI-Zwang |
### Happy Path
1. Mitarbeiter öffnet ein Projekt und klickt »Zur Signatur senden«.
2. Im Wizard: PDF auswählen/hochladen, Unterzeichner prüfen, Reihenfolge wählen, Modus »Fern-Link + Code« oder »Vor Ort« einstellen, Nachricht senden.
3. Kunde öffnet den Link, bestätigt den Code, prüft das PDF, setzt die Signatur und schließt ab.
4. Im Projekt springt der Status auf signiert; Original, signiertes PDF und Abschluss-Nachweis sind herunterladbar und in Dateien abgelegt.
### Meldungs-/Error-States (validiert)
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|---|---|---|---|---|
| Kein PDF gewählt | Wizard-Validierung in S02 | ja | Nur dokumentieren | »Wähle ein PDF aus oder lade eins hoch.« |
| Unterzeichner ohne E-Mail bei Fern-Link | Inline-Fehler in S02 | ja | Nur dokumentieren | Vor-Ort-Modus darf ohne Mail gehen, Fern-Link nicht |
| Link abgelaufen/ungültig | 🌐 Klartext-Zustand in S04 | ja | Nur dokumentieren | Keine Projekt-Interna verraten |
| OTP falsch/abgelaufen | Inline-Fehler in S04 | ja | Nur dokumentieren | Neuer Code anfordern |
| Unterzeichner lehnt ab | Status in S03 + Benachrichtigung | nein | Nur dokumentieren | Grund optional, Dokument läuft nicht weiter |
| Dokument zurückgezogen | M01 + Status in S03/S04 | ja | Bauen (M01) | Link wird ungültig, Verlauf bleibt |
| PandaDoc nicht verbunden | Hinweis in S02/S03 | nein | Nur dokumentieren | Default SES bleibt nutzbar |
| PAdES/Versiegelung schlägt fehl | Fehlerzustand in S03 | ja (Abschluss) | Nur dokumentieren | Klartext + Support/erneut versuchen |
---
## 7. Validierte Screen-Liste
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|---|---|---|---|---|---|
| S01 | Signaturen im Projekt | A3/A2 eingebettet | Bauen | Projekt-Detail, Reiter/Aktion | Validiert |
| S02 | Signatur-Wizard | A5 Wizard | Bauen | aus S01 / Projekt-Aktion | Validiert |
| S03 | Signatur-Detail & Status | A3 Detail | Bauen | Signatur öffnen | Validiert |
| S04 | 🌐 Signieren per Link | BESPOKE-Public | Bauen | `/sign/:token` | Validiert (Delta) |
| V01 | Vor Ort unterschreiben 📱 | BESPOKE-Mobile | Bauen | aus S02, Touch-Modus | Validiert |
| M01 | Signatur zurückziehen | Confirm-Modal | Bauen | aus S03 | Validiert |
| D01–D07 | PDF fehlt / Mail fehlt / Link ungültig / OTP / Ablehnung / Provider / Versiegelung | Inline/Zustand | Nur dokumentieren | — | Validiert |
---
## 8. Grid
```text
Projekt-Detail -> S01 (Signaturen im Projekt) -> S02 (Wizard: PDF, Unterzeichner, Reihenfolge, Modus, Nachricht)
S02 -> S04 (Fern-Link + OTP: PDF prüfen, Signatur, Abschluss)
S02 -> V01 (Vor Ort: Gerät übergeben, Touch-Signatur, Abschluss)
S01 -> S03 (Detail: Signer-Status, Verlauf, Downloads)
S03 -> M01 (zurückziehen)
S03: erinnern / signed PDF / Completion Certificate herunterladen
Artefakte: Original-PDF + signiertes PDF + Abschluss-Nachweis -> Projekt-Dateien
Optional: PandaDoc BYOK nur anzeigen, wenn verbunden; Default bleibt SES-Eigenbau
```
---
## 9. Screen-Pakete
- [[S01 Signaturen im Projekt]] · [[S02 Signatur-Wizard]] · [[S03 Signatur-Detail]] · [[S04 Signieren per Link]]
- [[V01 Vor Ort unterschreiben]] · [[M01 Zurueckziehen]]
---
## 10. Offene Fragen
- **Design-Delta:** D-P16 nennt nur den internen Signatur-Wizard; die 🌐 Kunden-Signierseite S04 ist als eigener Screen ergänzt, weil sie für den Flow zwingend sichtbar sein muss.
- PDF-Feldplatzierung: v1 platziert Signatur/Certificate standardisiert; ein frei editierbarer PDF-Tagger bleibt v2.
- Erinnerungsregeln: manuell in v1, automatische Reminder später mit Benachrichtigungen/Automationen klären.
- PandaDoc BYOK: nur zeigen, wenn eine Verbindung existiert; genauer Einstiegsort über WF-P5 Integrationen prüfen.
## Handoff-Check
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
@@ -0,0 +1,39 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Kalender
id: M01
screen: Termin anlegen/bearbeiten
typ: Modal
umsetzung: Bauen
status: Validiert
route: "aus S01 (Slot-Klick / + Termin)"
subframe: ""
---
# M01 — Termin anlegen/bearbeiten
## Ziel
Einen Termin planen wie in Google Calendar — mit Teilnehmern, und ohne jemanden doppelt zu verplanen.
## Was das Tool können muss
- **Grunddaten:** Titel, Datum + Uhrzeit (von–bis), optional ganztägig, Ort, Beschreibung/Notiz
- **Teilnehmer-Feld** (ein Feld, drei Arten):
- **Team-Mitglieder** (@-Vorschläge) — sehen den Termin sofort in ihrem HiveGrid-Kalender
- **Kontakte** (aus dem CRM) — bekommen E-Mail mit Kalender-Datei (.ics)
- **freie E-Mail-Adressen** — ebenfalls Mail + .ics, ohne Kontakt-Anlage
- **Verfügbarkeits-Check:** beim Hinzufügen interner Teilnehmer zeigt der Dialog belegt/frei im gewählten Zeitraum (»Max ist 9–12 Uhr belegt«) — Warnung, kein Block; Link »Kalender einblenden« aktiviert das Overlay in S01
- Optionale **Projekt-Verknüpfung** (Termin erscheint dann auch in der Projekt-Akte)
- Bearbeiten nutzt denselben Dialog (nur bei eigenen Terminen); Änderung informiert Teilnehmer
- Speichern → zurück in S01, Termin sichtbar; bei Google-Sync geht der Termin auch extern raus
## Pattern / Archetyp
A5 Dialog + A4 Formular-Felder. Teilnehmer-Feld = @-Erwähnungs-Muster aus dem UI-Baukasten.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,35 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Kalender
id: M02
screen: Termin-Detail
typ: Popover
umsetzung: Bauen
status: Validiert
route: "Termin-Klick in S01"
subframe: ""
---
# M02 — Termin-Detail (Popover)
## Ziel
Schnell sehen, was das für ein Termin ist, wer kommt — und mit einem Klick zur Quelle springen.
## Was das Tool können muss
- Titel, Zeit, Ort, Beschreibung, **Quelle-Badge** (Google / Buchung / Plantafel / Projekt / eigener Termin)
- **Teilnehmer-Liste mit Zu-/Absage-Status** (zugesagt / abgesagt / offen); Bounce-Marker wenn Einladungs-Mail unzustellbar (+ erneut senden)
- **Absprung zur Quelle:** Buchung → Buchungs-Detail · Einsatz → Plantafel · Projekt-Termin → Projekt-Akte · Google-Termin → nur lesen (Hinweis »kommt aus Google«)
- **Aktionen je nach Quelle:** eigene Termine → Bearbeiten (M01) + Löschen (mit Teilnehmer-Info); fremde Quellen → nur Absprung
- Für eingeladene interne Nutzer: **Zusagen/Absagen** direkt im Popover
## Pattern / Archetyp
Popover (leichtgewichtig, kein volles Modal) — Muster: Termin-Klick wie in Google Calendar.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,40 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Kalender
id: S01
screen: Kalender
typ: BESPOKE Kalender-Grid
umsetzung: Bauen
status: Validiert
route: "/calendar"
subframe: ""
---
# S01 — Kalender (Monat/Woche) ⭐
## Ziel
Alle Termine an einem Ort — egal ob aus Google, einer Online-Buchung, der Plantafel, einem Projekt oder von Hand angelegt. Und: neue Termine direkt hier planen.
## Was das Tool können muss
- **Monats- und Wochen-Ansicht** mit Umschalter, Heute-Knopf, Zeitraum-Navigation (Pfeile)
- **Quell-Marker je Termin** (Farbe/Icon): Google · Buchung · Plantafel-Einsatz · Projekt-Termin · eigener Termin
- **Kollegen einblenden (Overlay):** Mitarbeiter-Auswahl (Avatare/Checkboxen) — deren HiveGrid-Termine erscheinen normal, private Google-Termine nur als **»belegt«** ohne Titel/Details
- **Termin anlegen:** Klick auf freien Slot oder »+ Termin«-Knopf → M01
- **Termin öffnen:** Klick auf Termin → M02 (Detail-Popover)
- **Verbinden-Hinweis** solange kein Google-Konto verbunden ist (dismissbar, mit »Verbinden«-Knopf → S02); Kalender ist auch ohne Verbindung voll nutzbar
- **Re-Connect-Banner** bei kaputter Verbindung (Klartext + Lösungs-Knopf)
- Dezenter Hinweis bei frischen Sync-Konflikten mit Link zum Konflikt-Verlauf (S02)
- Zahnrad → Kalender-Einstellungen (S02)
- Zustände: leer (CTA Termin anlegen / Google verbinden), laden, Fehler
## Pattern / Archetyp
BESPOKE (Kalender-Grid, mittlerer Aufwand laut Ticket). Zustands-Set A7.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,38 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Kalender
id: S02
screen: Kalender-Einstellungen & Sync
typ: Settings (A6)
umsetzung: Bauen
status: Validiert
route: "/calendar/settings"
subframe: ""
---
# S02 — Kalender-Einstellungen & Sync
## Ziel
Sein eigenes Google-Konto verbinden und den Abgleich steuern — pro Mitarbeiter, ohne Admin-Umweg. Erreichbar direkt aus dem Kalender (Zahnrad / Verbinden-Hinweis).
## Was das Tool können muss
- **Provider-Auswahl:** Google (aktiv) · Outlook (**ausgegraut, »bald verfügbar«** — v2); UI bleibt provider-neutral
- **Verbinden:** startet den OAuth-Assistenten im WF-P5-Muster (M01) → danach Connect-Card mit Status-Ampel, verbundenem Konto (E-Mail), letzter Sync-Zeit
- **Kalender-Auswahl:** welche Google-Kalender abgeglichen werden (Checkbox-Liste)
- **Sync-Richtung:** beide Richtungen · nur HiveGrid → Google · nur Google → HiveGrid
- **Trennen** mit »auch extern entfernen?«-Wahl (Trennen-Modal aus WF-P5 M03, erweitert um die Extern-Wahl) — kein Hard-Delete
- **Re-Connect-Banner** bei kaputter Verbindung (Token abgelaufen o. ä.)
- **Konflikt-Verlauf-Sektion:** letzte 50 automatische Auflösungen in Klartext — »Termin ›Wartung Müller‹ wurde in Google auf 14:00 verschoben — HiveGrid hat übernommen« (Last-Write-Wins); jede Auflösung erzeugt zusätzlich eine Benachrichtigung
- Hinweis: Verbindung ist **pro Mitarbeiter** — jeder verwaltet hier nur sein eigenes Konto; fremde Termin-Inhalte bleiben privat (nur »belegt«)
## Pattern / Archetyp
A6 Settings/Connection — Connection-Card-Muster aus WF-P5 Integrationen; Konflikt-Verlauf analog Abgleich-Verlauf (WF-P5 S03), hier nur als Sektion.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,42 @@
{
"nodes":[
{"id":"md-paket","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Kalender/WF-P16 Kalender.md","x":-80,"y":-440,"width":460,"height":280},
{"id":"group-kalender","type":"group","x":-80,"y":-100,"width":1140,"height":380,"label":"Kalender (Desktop, Bespoke)"},
{"id":"group-dialoge","type":"group","x":-80,"y":460,"width":1140,"height":380,"label":"Termin-Dialoge"},
{"id":"group-sync","type":"group","x":1300,"y":-100,"width":1120,"height":380,"label":"Einstellungen & Sync (pro Nutzer)"},
{"id":"note-entry","type":"text","text":"# Einstieg\n\nSidebar → Kalender.\n\nQuellen: Google · Buchung · Plantafel · Projekt · eigene Termine. Kollegen als Overlay einblendbar (fremde private Google-Termine nur »belegt«).","x":0,"y":0,"width":360,"height":200},
{"id":"s01","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Kalender/Screens/S01 Kalender.md","x":560,"y":0,"width":420,"height":200},
{"id":"m01","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Kalender/Screens/M01 Termin-Dialog.md","x":0,"y":560,"width":420,"height":200},
{"id":"m02","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Kalender/Screens/M02 Termin-Detail.md","x":580,"y":560,"width":420,"height":200},
{"id":"s02","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Kalender/Screens/S02 Kalender-Einstellungen.md","x":1340,"y":0,"width":420,"height":200},
{"id":"note-sync","type":"text","text":"# Wiederverwendet aus WF-P5\n\nOAuth-Assistent (M01) + Trennen-Modal (M03, + »auch extern entfernen?«).\n\nOutlook als Teaser »bald verfügbar« (v2). Konflikt-Verlauf als Sektion hier.","x":1900,"y":0,"width":460,"height":200}
],
"edges":[
{
"id":"e-entry",
"fromNode":"note-entry",
"fromSide":"right",
"toNode":"s01",
"toSide":"left",
"toEnd":"arrow",
"styleAttributes":{"path":"dotted"}
},
{"id":"e-new","fromNode":"s01","fromSide":"bottom","toNode":"m01","toSide":"top","toEnd":"arrow","label":"Slot-Klick / + Termin"},
{"id":"e-open","fromNode":"s01","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"Termin-Klick"},
{"id":"e-edit","fromNode":"m02","fromSide":"left","toNode":"m01","toSide":"right","toEnd":"arrow","label":"Bearbeiten"},
{"id":"e-settings","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"Zahnrad / Verbinden"},
{
"id":"e-sync-note",
"fromNode":"note-sync",
"fromSide":"left",
"toNode":"s02",
"toSide":"right",
"toEnd":"arrow",
"styleAttributes":{"path":"dotted"}
}
],
"metadata":{
"version":"1.0-1.0",
"frontmatter":{}
}
}
@@ -0,0 +1,130 @@
---
kind: wireframe-package
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Kalender
typ: Flow
status: Validiert
subframe: ""
canvas: "WF-P16 Kalender.canvas"
---
# WF-P16 Kalender
Status: Validiert (Screen-Liste)
Subframe-Link: -
Canvas: [Canvas](<WF-P16 Kalender.canvas>)
Stand: 2026-07-09
---
## 1. Kurzfassung
Der HiveGrid-Kalender: Monats-/Wochen-Ansicht mit allen Terminen (Google-Sync, Buchungen, Plantafel, Projekt-Termine — je mit Herkunfts-Marker). **Davids Delta: ein vollwertiger Kalender**, nicht nur eine Lese-Sicht — Termine anlegen, Personen einladen (Team, Kontakte, freie E-Mails), Kollegen-Kalender als Verfügbarkeits-Overlay einblenden. Funktioniert eigenständig ohne Google; Google-Sync ist optional (Outlook → v2, in der UI als »bald verfügbar« sichtbar).
---
## 2. Intent Check
| Frage | Antwort |
|---|---|
| Ticket/Modul | D-BOOK (Kalender-View) + D-P16 (Kalender-Verbindungen), Dev-Pendant AK-P16a |
| Nutzer-Ziel | Alle Termine an einem Ort sehen, neue Termine planen ohne Doppelbelegung, Google bleibt synchron |
| Quellen geprüft | `ticket-docs/D-BOOK.md`, `ticket-docs/D-P16.md`, `designer-briefs/P16-…md`, HiveGrid Map |
| Sicher im Scope | Kalender-Grid (Monat/Woche), Termin anlegen/bearbeiten + Einladen, Termin-Detail, Sync-Einstellungen inkl. Konflikt-Verlauf |
| Sicher nicht im Scope | Buchungsseiten + Verfügbarkeits-Editor (WF-P16 Terminbuchung); Plantafel (WF-P9); Outlook-Sync (v2) |
| Unsichere Annahmen | Termin-Objekt + Einladungen sind NICHT im Dev-Ticket — Change-Request nötig (s. Offene Fragen) |
---
## 3. Scope
| Punkt | Inhalt |
|---|---|
| Startpunkt | Sidebar »Kalender« |
| Ziel | Termin geplant (mit Teilnehmern, ohne Kollision) · Google verbunden und synchron |
| Haupt-Archetyp | **BESPOKE** (Kalender-Grid) + A6 (Einstellungen) |
| Out of scope | Booking-Pages, Plantafel-Einsätze (nur als Quelle sichtbar), Outlook |
---
## 4. Entscheidungen (validiert 2026-07-09)
| Entscheidung | Status | Notiz |
|---|---|---|
| Vollwertiger Kalender statt reiner Lese-Sicht | genommen (Delta) | Termine anlegen/bearbeiten/löschen, »alles was man für einen Kalender braucht« — **Change-Request an Dev** (Ticket sah nur Grid + Marker vor) |
| Einladen: Team + Kontakte + freie E-Mails | genommen (Delta) | Interne sehen den Termin in ihrem HiveGrid-Kalender; Externe bekommen E-Mail mit Kalender-Datei (.ics); Zu-/Absagen sichtbar |
| Kollegen-Kalender einblendbar (Overlay) | genommen (Delta) | Vor dem Einladen prüfen, ob jemand Zeit hat; fremde private Google-Termine nur als »belegt« ohne Details |
| Eigener + fremde Kalender in einer Ansicht | genommen | Plantafel bleibt die Baustellen-/Einsatz-Sicht — der Kalender ist die Termin-Sicht |
| Verbinden-Einstieg direkt im Kalender | genommen | Hinweis-Karte solange nichts verbunden ist; danach über Zahnrad → Einstellungen. Kalender ist auch ohne Google voll nutzbar |
| Provider-Auswahl mit Outlook-Teaser | genommen | Google aktiv (v1), Outlook ausgegraut »bald verfügbar« — UI bleibt provider-neutral |
| Sync-Konflikt-Verlauf in den Einstellungen | genommen | Kleine Sektion (letzte 50, Klartext: was kollidierte, wie gelöst) — Muster wie Abgleich-Verlauf WF-P5; im Kalender nur dezenter Hinweis bei frischen Konflikten |
| OAuth-Assistent + Trennen-Modal aus WF-P5 wiederverwenden | genommen | Trennen mit »auch extern entfernen?«-Wahl |
### Happy Path
1. Mitarbeiter öffnet Kalender (Woche), sieht eigene Termine quell-farbig (Google / Buchung / Plantafel / Projekt / eigene).
2. Klick auf freien Slot → Termin-Dialog: Titel, Zeit, Teilnehmer (Kollege @Max, Kontakt Müller, freie E-Mail) — beim Hinzufügen zeigt der Dialog, wer belegt ist; optional Kollegen-Kalender als Overlay einblenden.
3. Speichern → Interne sehen den Termin sofort, Externe bekommen Mail mit .ics; Zu-/Absagen laufen am Termin auf.
4. Einmalig: »Google verbinden« → OAuth (P5-Muster) → Kalender auswählen, Sync-Richtung — ab da läuft alles synchron.
### Meldungs-/Error-States (validiert)
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|---|---|---|---|---|
| Kein Google verbunden | Hinweis-Karte in S01 (dismissbar) + Bereich in S02 | nein | Nur dokumentieren | »Verbinde deinen Google-Kalender …« — Kalender funktioniert trotzdem |
| Verbindung kaputt (Token abgelaufen) | Re-Connect-Banner in S01 + S02 | nein | Nur dokumentieren | Klartext + »Neu verbinden«-Knopf |
| Sync-Konflikt (beidseitige Änderung) | Benachrichtigung (Glocke) + Eintrag im Konflikt-Verlauf (S02) | nein | Nur dokumentieren | »Termin X wurde in Google auf 14:00 verschoben — HiveGrid hat übernommen« (Last-Write-Wins) |
| Teilnehmer belegt | Inline-Warnung im Termin-Dialog | nein (bewusst buchbar) | in M01 enthalten | »Max ist 9–12 Uhr belegt« — analog Plantafel-Konflikt, aber ohne Block |
| Fremder privater Google-Termin | nur »belegt«-Block ohne Titel/Details | nein | Nur dokumentieren | Datenschutz-Vorgabe aus dem Ticket |
| Einladungs-Mail unzustellbar | Hinweis am Teilnehmer in M02 | nein | Nur dokumentieren | Bounce-Marker + erneut senden |
| Leerer Kalender | Leer-Zustand + CTA (Termin anlegen / Google verbinden) | nein | Nur dokumentieren | — |
---
## 7. Validierte Screen-Liste
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|---|---|---|---|---|---|
| S01 | Kalender (Monat/Woche, Quell-Marker, Kollegen-Overlay) ⭐ | BESPOKE | Bauen | `/calendar` | Validiert |
| M01 | Termin anlegen/bearbeiten (Teilnehmer + Verfügbarkeits-Check) | Modal | Bauen | aus S01 (Slot-Klick / + Termin) | Validiert |
| M02 | Termin-Detail (Quelle + Absprung, Zu-/Absagen) | Popover | Bauen | Termin-Klick in S01 | Validiert |
| S02 | Kalender-Einstellungen & Sync (Provider, Kalender-Auswahl, Richtung, Konflikt-Verlauf) | Settings (A6) | Bauen | `/calendar/settings` | Validiert |
| D01 | OAuth-Assistent | Wiederverwenden | Wiederverwenden | WF-P5 M01 | Validiert |
| D02 | Trennen-Bestätigung (»auch extern entfernen?«) | Wiederverwenden | Wiederverwenden | WF-P5 M03 (+ Extern-Wahl) | Validiert |
| D03–D07 | Verbinden-Hinweis / Re-Connect / Konflikt / »belegt« / Leer (s. Tabelle) | Inline | Nur dokumentieren | — | Validiert |
---
## 8. Grid
```text
Sidebar -> S01 (Monat/Woche, Quellen: Google + Buchung + Plantafel + Projekt + eigene)
S01 -> M01 (Slot-Klick / »+ Termin«: anlegen mit Teilnehmern + Verfügbarkeits-Check)
S01 -> M02 (Termin-Klick: Detail-Popover, Quelle-Absprung, Zu-/Absagen)
M02 -> M01 (Bearbeiten, nur bei eigenen Terminen)
S01 -> S02 (Zahnrad / Verbinden-Hinweis: Provider, Kalender-Auswahl, Sync-Richtung, Konflikt-Verlauf)
S02 nutzt WF-P5: OAuth-Assistent (M01) + Trennen-Modal (M03)
Quell-Absprünge: Buchung -> WF-P16 Terminbuchung · Einsatz -> WF-P9 Plantafel · Projekt-Termin -> WF-P9 Projekt-Akte
```
---
## 9. Screen-Pakete
- [[S01 Kalender]] · [[M01 Termin-Dialog]] · [[M02 Termin-Detail]] · [[S02 Kalender-Einstellungen]]
---
## 10. Offene Fragen
- **Change-Request an Dev (groß):** Eigenes Termin-Objekt + Einladungen (Team/Kontakt/freie E-Mail, .ics-Versand, Zu-/Absage-Tracking) + Free/Busy-Overlay — Ticket AK-P16a sah nur Lese-Grid + Sync vor; ENTITY-MODEL Domäne 9 braucht Ergänzung
- Zu-/Absage-Tracking bei internen Teilnehmern: eigener Status oder reicht angenommen/abgelehnt wie extern? → Dev
- Erinnerungen vor Terminen (Push/Mail)? → v2-Kandidat, mit Benachrichtigungen (P3) klären
- Tages-Ansicht zusätzlich zu Monat/Woche? → beim Subframe-Bau entscheiden
## Handoff-Check
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
@@ -0,0 +1,34 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: M01
screen: Verschieben (interner Slot-Picker)
typ: Modal
umsetzung: Bauen
status: Validiert
route: "aus S06"
subframe: ""
---
# M01 — Verschieben (interner Slot-Picker)
## Ziel
Das Büro verschiebt eine Buchung auf einen neuen freien Slot — der Kunde wird automatisch informiert.
## Was das Tool können muss
- Kompakter Slot-Picker (gleiche Logik wie die öffentliche Slot-Wahl: nur echte freie Zeiten)
- Alter Termin sichtbar durchgestrichen, neuer Termin zur Bestätigung
- Hinweis: »Der Kunde bekommt automatisch eine E-Mail mit dem neuen Termin«
- Optional: anderer Mitarbeiter zusammen mit neuem Slot (wenn der bisherige nicht kann)
## Pattern / Archetyp
A5 Modal; Reschedule-Slot-Picker aus dem Ticket.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,34 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: M02
screen: Stornieren
typ: Modal
umsetzung: Bauen
status: Validiert
route: "aus S05/S06 (auch Bulk)"
subframe: ""
---
# M02 — Stornieren (Grund + Auto-Mail)
## Ziel
Bewusst absagen: mit Grund, und der Kunde erfährt es automatisch.
## Was das Tool können muss
- **Grund** (Pflicht, Freitext oder Auswahl) — landet im Verlauf der Buchung
- Hinweis: »Der Kunde bekommt automatisch eine Absage-Mail« (mit Grund-Vorschau)
- **Bulk-Variante** aus S05: zeigt Anzahl der Buchungen, ein Grund für alle, eine Mail je Kunde
- Bestätigen/Abbrechen; danach Status »storniert« + Termin verschwindet aus dem Kalender
## Pattern / Archetyp
A5 Confirm-Modal.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S01
screen: Termin waehlen (Slot-Picker)
typ: BESPOKE-Public
umsetzung: Bauen
status: Validiert
route: "/b/{firma}/{slug}"
subframe: ""
---
# S01 — 🌐 Termin wählen (Slot-Picker) ⭐
## Ziel
Der Kunde findet in Sekunden einen freien Termin — Calendly-Erlebnis, höchster Polish, mit dem Branding des Betriebs.
## Was das Tool können muss
- **Monats-Kalender** mit freien/belegten Tagen + **Zeitslot-Liste** zum gewählten Tag
- Nur echte freie Slots: berechnet aus Verfügbarkeit (S09), bestehenden Buchungen, Google-Kalender der Mitarbeiter, Puffer und Vorlauf — Vergabe v1: »erster freier Mitarbeiter«
- **Zeitzonen-fest** + Zeitzonen-Wechsler (Anzeige »Zeiten in deiner Zeitzone«)
- Kopf: Firmen-Logo/Branding, Name der Buchungsseite, Dauer, Beschreibung
- **iFrame-Embed-Variante** (gleiche Strecke ohne Seiten-Rahmen)
- Slot wählen → weiter zu S02 (Fragen)
- Zustände: keine freien Termine (Klartext), laden, Fehler, Seite nicht veröffentlicht (404 mit Branding)
## Pattern / Archetyp
BESPOKE-Public (höchster Polish laut Ticket). Bekommt in W4 die finale Politur (D-POLISH).
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,35 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S02
screen: Fragen (Kunden-Formular)
typ: BESPOKE-Public
umsetzung: Bauen
status: Validiert
route: "Schritt 2 nach Slot-Wahl"
subframe: ""
---
# S02 — 🌐 Fragen (Kunden-Formular)
## Ziel
Der Kunde gibt seine Daten ein — genau die Felder, die der Betrieb im Editor (S08) festgelegt hat.
## Was das Tool können muss
- Zusammenfassung des gewählten Slots oben (Datum, Zeit, Dauer) + »Termin ändern«-Link zurück zu S01
- **Felder aus dem Editor** (Name, E-Mail Pflicht; weitere je Konfiguration — Text, Telefon, Auswahl, …), Pflichtfeld-Markierung, Klartext-Validierung
- **Spam-Schutz** (mCaptcha) vor dem Absenden
- Absenden = verbindlich buchen → S03; **Race-Schutz:** ist der Slot inzwischen weg → Klartext-Hinweis + zurück zur Slot-Wahl (kein Datenverlust der Eingaben)
- Datenschutz-Hinweis (kurz, Klartext)
## Pattern / Archetyp
BESPOKE-Public. Feld-Rendering v1 als einfache Feld-Liste (D-FORM liegt als Review-Draft vor und wird später nur eingesteckt).
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,35 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S03
screen: Bestaetigung
typ: BESPOKE-Public
umsetzung: Bauen
status: Validiert
route: "Schritt 3 nach Buchung"
subframe: ""
---
# S03 — 🌐 Bestätigung
## Ziel
Der Kunde weiß: Termin steht. Und er kriegt ihn in seinen eigenen Kalender.
## Was das Tool können muss
- Große Bestätigung mit allen Termin-Daten (Datum, Zeit, Dauer, ggf. Ort/Hinweise aus der Buchungsseite)
- **Add-to-Calendar-Knopf (.ics)** — funktioniert auf Handy und Desktop
- Hinweis auf die **Bestätigungs-Mail** (mit Absage-/Verschiebe-Link → S04)
- Firmen-Branding wie in S01/S02
- Was im Hintergrund passiert (nicht sichtbar, aber geplant): Anfrage im Lead-Eingang **oder** Aktivität am bekannten Kontakt (E-Mail-Match), Termin im Mitarbeiter-Kalender, Bestätigungs-Mail raus
## Pattern / Archetyp
BESPOKE-Public.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,35 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S04
screen: Absagen/Verschieben per Link
typ: BESPOKE-Public
umsetzung: Bauen
status: Validiert (Davids Delta)
route: "Link aus der Bestaetigungs-Mail"
subframe: ""
---
# S04 — 🌐 Absagen/Verschieben per Link (Davids Delta)
## Ziel
»Wie bei Calendly«: Der Kunde verwaltet seinen Termin selbst — ohne anzurufen. **Change-Request an Dev** (steht nicht in AK-P16b).
## Was das Tool können muss
- Zeigt die Buchung (Datum, Zeit, Buchungsseite, Firmen-Branding)
- **Verschieben:** öffnet den Slot-Picker (wie S01) → neuer Slot → Bestätigung; alte Zeit wird frei, Büro + Kalender automatisch aktuell
- **Absagen:** mit optionalem Grund → Bestätigung; Büro bekommt Benachrichtigung, Termin verschwindet aus dem Kalender
- Zustände: Link abgelaufen/ungültig, Termin liegt in der Vergangenheit, Termin wurde bereits storniert — je Klartext ohne Interna
- Sicherheit: signierter Link aus der Mail (kein Login nötig)
## Pattern / Archetyp
BESPOKE-Public, nutzt den Slot-Picker aus S01 wieder.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S05
screen: Buchungen-Liste
typ: A2 Liste
umsetzung: Bauen
status: Validiert
route: "/bookings"
subframe: ""
---
# S05 — Buchungen-Liste
## Ziel
Der Überblick: Was ist gebucht, was war, was wurde abgesagt.
## Was das Tool können muss
- **Reiter:** Anstehend · Vergangen · Storniert · Alle
- Spalten: Termin (Datum/Zeit), Endkunde (Name/E-Mail), Buchungsseite, zuständiger Mitarbeiter, Status
- **Filter:** Status, Mitarbeiter, Buchungsseite, Zeitraum
- **Mehrfach-Aktion:** Bulk-Storno (öffnet M02, eine Auto-Mail je Kunde)
- **CSV-Export**
- Zeilen-Klick → S06 (Detail); Schnell-Aktionen in der Zeile (stornieren, verschieben)
- Zustände: leer (Klartext + Link zu den Buchungsseiten), laden, Fehler
## Pattern / Archetyp
A2 Liste (sortierbar, paginiert) + Filter-Bar + Bulk-Toolbar — wie Lead-Inbox/Aufgaben-Liste.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,34 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S06
screen: Buchungs-Detail
typ: A3 Detail (Karteikarten-Muster)
umsetzung: Bauen
status: Validiert
route: "/bookings/:id"
subframe: ""
---
# S06 — Buchungs-Detail (Karteikarte)
## Ziel
Alles zu einer Buchung an einem Ort — nach dem validierten P6-Karteikarten-Muster.
## Was das Tool können muss
- **Links:** Termin-Daten (Datum, Zeit, Dauer, Buchungsseite), zuständiger Mitarbeiter, **verknüpfter Kontakt/Anfrage** (klickbar), Kalender-Sync-Badge (synchronisiert / steht aus / Fehler)
- **Rechts:** die **Antworten des Kunden** (Frage → Antwort, in Reihenfolge), **interne Notizen**, Verlauf (gebucht/verschoben/storniert mit wann + von wem)
- **Aktionen im Kopf:** als »stattgefunden« / »nicht erschienen« (No-Show) markieren · **Stornieren** (M02) · **Verschieben** (M01) · **anderem Mitarbeiter zuweisen** (Auswahl mit Verfügbarkeits-Hinweis)
- Status-Anzeige: gebucht / verschoben / storniert (mit Grund) / stattgefunden / No-Show
## Pattern / Archetyp
A3 Detail — Karteikarten-Grundgerüst aus WF-P6 (Zweispalter + Aktionen im Kopf).
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,34 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S07
screen: Buchungsseiten-Liste
typ: A2 Liste
umsetzung: Bauen
status: Validiert
route: "/bookings/pages"
subframe: ""
---
# S07 — Buchungsseiten-Liste
## Ziel
Alle Buchungslinks des Betriebs auf einen Blick — mit dem Link zum Kopieren direkt in der Zeile.
## Was das Tool können muss
- Spalten: Titel, Link (Slug) mit **Kopier-Knopf**, zugewiesene Mitarbeiter, Buchungen (gesamt / letzte 30 Tage), Status (veröffentlicht / Entwurf)
- »+ Neue Buchungsseite« → S08 (Editor)
- Zeilen-Aktionen: bearbeiten (S08), Link kopieren, veröffentlichen/zurückziehen, duplizieren
- Zustände: leer (Klartext + CTA »Erste Buchungsseite anlegen«), laden, Fehler
## Pattern / Archetyp
A2 Liste.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,38 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S08
screen: Buchungsseiten-Editor
typ: A6 + A4
umsetzung: Bauen
status: Validiert
route: "/bookings/pages/:id + /new"
subframe: ""
---
# S08 — Buchungsseiten-Editor
## Ziel
Hier entsteht der Buchungslink: alles einstellen, »was da auch bei Calendly stehen würde« (Davids Vorgabe).
## Was das Tool können muss
- **Grunddaten:** Name, Link (Slug), Beschreibung (sieht der Kunde)
- **Termin-Logik:** Dauer · **Puffer** (Mindestabstand zwischen Terminen) · **Vorlauf** (frühestens buchbar ab) · wie weit im Voraus buchbar
- **Mitarbeiter-Auswahl:** wer kommt in Frage (v1-Vergabe: erster freier — Hinweis im UI)
- **Kunden-Fragen:** Felder festlegen (Name + E-Mail Pflicht, weitere frei: Text, Telefon, Auswahl, …) und je Feld die **Zuordnung zum Lead-Eingang** (welches Kunden-Feld → welches Lead-Feld) — Davids Punkt: nichts abtippen
- **Bestätigungs-Mail:** Text bearbeiten (Markdown + Platzhalter wie {Vorname}, {Termin}); enthält automatisch den Absage-/Verschiebe-Link (S04)
- **Veröffentlichen:** Publish-Schalter · öffentliche URL mit Kopier-Knopf · **Embed-Code (iFrame)** · **QR-Code**
- Hinweis, welche Verfügbarkeits-Zeiten (S09) greifen
- Zustände: unveröffentlichte Änderungen, Validierungs-Fehler in Klartext
## Pattern / Archetyp
A6 Settings + A4 Formular; Embed/QR/Copy-Muster wie im Ticket. Fragen-Felder v1 als einfache Feld-Liste (D-FORM liegt als Review-Draft vor und wird später eingesteckt).
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,37 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: S09
screen: Verfuegbarkeit
typ: A6 + A4
umsetzung: Bauen
status: Validiert
route: "/availability"
subframe: ""
---
# S09 — Verfügbarkeit (»Wann bin ich buchbar?«)
## Ziel
Jeder Mitarbeiter pflegt seine eigenen buchbaren Zeiten; Admins können alle einsehen und ändern.
## Was das Tool können muss
- **Wochen-Regeln:** je Wochentag mehrere Zeitfenster (z. B. Mo 8–12 + 13–17), an/aus je Tag
- **Ausnahme-Tage:** Datum wählen → ganz frei ODER Sonder-Zeitfenster (z. B. 24.12. nur 8–12)
- **Zeitzone** der Zeiten
- **Admin-Sicht:** Mitarbeiter-Wechsler oben — Admin sieht und bearbeitet alle, jeder andere nur sich selbst
- Hinweis: **welche Buchungsseiten** diese Zeiten nutzen (mit Links)
- Klartext-Zusammenspiel: »Buchbar = diese Zeiten MINUS bestehende Termine (inkl. Google-Kalender) MINUS Puffer«
- Zustände: noch nichts gepflegt (Leer-Zustand mit Standard-Vorschlag Mo–Fr 8–17), Validierungs-Fehler
## Pattern / Archetyp
A6 Settings + A4; Wochen-Verfügbarkeits-Editor + Ausnahmen-Editor (UI-Elemente aus dem Ticket).
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,33 @@
---
kind: screen
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
id: V01
screen: Termin waehlen — Handy
typ: BESPOKE-Public 📱
umsetzung: Bauen
status: Validiert
route: "Variante von S01"
subframe: ""
---
# V01 — 🌐 Termin wählen — Handy 📱
## Ziel
Kunden buchen oft am Handy — die wichtigste öffentliche Seite muss dort genauso gut funktionieren.
## Was das Tool können muss
- Gleiche Logik wie S01, gestapelt: erst Tag wählen (kompakter Monats-Kalender), dann Zeitslot-Liste
- Zeitzonen-Wechsler erreichbar, Branding oben
- Fragen (S02) und Bestätigung (S03) sind auf dem Handy dieselben Screens (einspaltig) — nur der Slot-Picker braucht den eigenen Nachweis-Frame
## Pattern / Archetyp
BESPOKE-Public, Mobile-Variante von S01.
## Subframe
- (erst nach explizitem OK)
@@ -0,0 +1,34 @@
{
"nodes":[
{"id":"md-paket","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.md","x":-80,"y":-440,"width":460,"height":280},
{"id":"group-public","type":"group","x":-80,"y":-100,"width":2260,"height":660,"label":"Kunde 🌐 (Calendly-Stil, höchster Polish)"},
{"id":"group-intern","type":"group","x":2360,"y":-100,"width":1700,"height":940,"label":"Büro (intern)"},
{"id":"group-modals","type":"group","x":4160,"y":-100,"width":1180,"height":380,"label":"Aktionen (Modals)"},
{"id":"note-entry","type":"text","text":"# Einstieg Kunde\n\nBuchungslink / QR / iFrame-Embed.\n\nJede Buchung → Anfrage im Lead-Eingang ODER Aktivität am bekannten Kontakt (E-Mail-Match) + Termin im Mitarbeiter-Kalender.","x":0,"y":0,"width":360,"height":200},
{"id":"s01","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S01 Termin waehlen.md","x":560,"y":0,"width":420,"height":200},
{"id":"s02","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S02 Fragen.md","x":1120,"y":0,"width":420,"height":200},
{"id":"s03","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S03 Bestaetigung.md","x":1680,"y":0,"width":420,"height":200},
{"id":"v01","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/V01 Termin waehlen Handy.md","x":560,"y":280,"width":420,"height":200},
{"id":"s04","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S04 Absagen Verschieben.md","x":1680,"y":280,"width":420,"height":200},
{"id":"s05","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S05 Buchungen-Liste.md","x":2440,"y":0,"width":420,"height":200},
{"id":"s06","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S06 Buchungs-Detail.md","x":3000,"y":0,"width":420,"height":200},
{"id":"s07","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S07 Buchungsseiten-Liste.md","x":2440,"y":280,"width":420,"height":200},
{"id":"s08","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S08 Buchungsseiten-Editor.md","x":3000,"y":280,"width":420,"height":200},
{"id":"s09","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/S09 Verfuegbarkeit.md","x":2440,"y":560,"width":420,"height":200},
{"id":"note-intern","type":"text","text":"# Slot-Berechnung\n\nBuchbar = Verfügbarkeit (S09) − bestehende Termine (inkl. Google-Kalender aus WF-P16 Kalender) − Puffer/Vorlauf.\n\nVergabe v1: erster freier Mitarbeiter.","x":3000,"y":560,"width":460,"height":200},
{"id":"m01","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/M01 Verschieben.md","x":4240,"y":0,"width":420,"height":200},
{"id":"m02","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/Screens/M02 Stornieren.md","x":4820,"y":0,"width":420,"height":200}
],
"edges":[
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted"}},
{"id":"e-s1s2","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"weiter"},
{"id":"e-s2s3","fromNode":"s02","fromSide":"right","toNode":"s03","toSide":"left","toEnd":"arrow","label":"buchen"},
{"id":"e-handy","fromNode":"s01","fromSide":"bottom","toNode":"v01","toSide":"top","toEnd":"arrow","label":"Handy"},
{"id":"e-mail","fromNode":"s03","fromSide":"bottom","toNode":"s04","toSide":"top","toEnd":"arrow","label":"Link in der Mail"},
{"id":"e-open","fromNode":"s05","fromSide":"right","toNode":"s06","toSide":"left","toEnd":"arrow","label":"öffnen"},
{"id":"e-editor","fromNode":"s07","fromSide":"right","toNode":"s08","toSide":"left","toEnd":"arrow","label":"öffnen"},
{"id":"e-m01","fromNode":"s06","fromSide":"right","toNode":"m01","toSide":"left","toEnd":"arrow","label":"verschieben"},
{"id":"e-m02","fromNode":"s06","fromSide":"right","toNode":"m02","toSide":"left","toEnd":"arrow","label":"stornieren"},
{"id":"e-avail","fromNode":"note-intern","fromSide":"left","toNode":"s09","toSide":"right","toEnd":"arrow","styleAttributes":{"path":"dotted"}}
]
}
@@ -0,0 +1,136 @@
---
kind: wireframe-package
project: HiveGrid Screen Project
ticket: D-BOOK + D-P16 (Teil)
package: WF-P16 Terminbuchung
typ: Flow
status: Validiert
subframe: ""
canvas: "WF-P16 Terminbuchung.canvas"
---
# WF-P16 Terminbuchung
Status: Validiert (Screen-Liste)
Subframe-Link: -
Canvas: [Canvas](<WF-P16 Terminbuchung.canvas>)
Stand: 2026-07-09
---
## 1. Kurzfassung
Online-Terminbuchung »wie bei Calendly« (Davids Vorgabe): Der Betrieb erstellt Buchungslinks (Dauer, Puffer, Vorlauf, Mitarbeiter, Kunden-Fragen inkl. **Feld-Zuordnung zum Lead-Eingang**), der Kunde bucht sich über eine 🌐 öffentliche Seite selbst einen freien Slot (Zeitzonen-fest, einbettbar, höchster Polish) und kann per Link in der Bestätigungs-Mail **selbst absagen/verschieben** (Davids Delta). Intern: Buchungen-Liste + Detail mit Notizen, Stornieren mit Grund + Auto-Mail, Verschieben, Neu-Zuweisen. Jede Buchung landet als Anfrage im Lead-Eingang oder hängt sich an den bestehenden Kontakt.
---
## 2. Intent Check
| Frage | Antwort |
|---|---|
| Ticket/Modul | D-BOOK (öffentliche Booking-Page) + D-P16 (Buchungen-Verwaltung, Editor, Verfügbarkeit), Dev-Pendant AK-P16b |
| Nutzer-Ziel | Kunde: Termin buchen ohne Anruf · Büro: Buchungslinks pflegen, Buchungen verwalten, nichts abtippen |
| Quellen geprüft | `ticket-docs/D-BOOK.md`, `ticket-docs/D-P16.md`, `designer-briefs/P16-…md`, HiveGrid Map |
| Sicher im Scope | 🌐 Buchungsstrecke (3 Schritte + Handy), 🌐 Absagen/Verschieben (Delta), Buchungen-Liste/-Detail, Buchungsseiten-Liste/-Editor, Verfügbarkeit |
| Sicher nicht im Scope | Formular-Baukasten selbst (D-FORM liegt als Review-Draft vor; Fragen hier bleiben als einfache Feld-Liste); Kalender-Grid (WF-P16 Kalender); Round-Robin/Wunsch-Mitarbeiter (v2) |
| Unsichere Annahmen | Self-Service-Absage/Verschieben ist NICHT im Dev-Ticket — Change-Request nötig (s. Offene Fragen) |
---
## 3. Scope
| Punkt | Inhalt |
|---|---|
| Startpunkt | 🌐 Buchungslink (`/b/{firma}/{slug}`) · Sidebar »Buchungen« (intern) |
| Ziel | Kunde hat gebucht (ohne Doppel-Buchung) · Buchung ist im Lead-Eingang/am Kontakt · Büro hat den Überblick |
| Haupt-Archetyp | **BESPOKE-Public** (höchster Polish) + A2/A3 Listen/Detail + A6/A4 Editor/Settings |
| Out of scope | v2: Wunsch-Mitarbeiter/Round-Robin, personalisierte Links |
---
## 4. Entscheidungen (validiert 2026-07-09)
| Entscheidung | Status | Notiz |
|---|---|---|
| Buchungsstrecke = 3 eigene Screens + 1 Handy-Frame | genommen | Termin wählen → Fragen → Bestätigung; Handy-Frame vom Slot-Picker (Kunden buchen oft mobil) |
| Kunde kann per Mail-Link selbst absagen/verschieben | genommen (Delta) | »Wie Calendly« — eigene 🌐 Seite S04; **Change-Request an Dev** (AK-P16b kennt nur internes Cancel/Reschedule) |
| Buchungs-Detail als eigene Detailseite | genommen | Karteikarten-Muster (P6): links Termin + Verknüpfungen, rechts Antworten/Notizen, Aktionen im Kopf |
| Verfügbarkeit pflegt jeder selbst, Admin alle | genommen | Passt zur Pro-Nutzer-Kalender-Verbindung; Admin hat Mitarbeiter-Auswahl in S09 |
| Fragen-Felder mit Feld-Zuordnung zum Lead-Eingang | genommen | Davids Punkt: im Editor festlegen, welches Kunden-Feld in welches Lead-Feld wandert — nichts abtippen |
| Slot-Vergabe v1: »erster freier Mitarbeiter« | genommen | Ticket-Schnitt; Kunde wählt keinen Mitarbeiter |
| Slot-Berechnung nutzt Kalender + Verfügbarkeit | genommen | Arbeitszeiten (S09) + bestehende Buchungen + Google-Sync (WF-P16 Kalender) + Puffer + Vorlauf |
### Happy Path
1. Büro legt Buchungsseite »Wartungstermin (30 Min)« an: Dauer, Puffer, Vorlauf, Mitarbeiter, 3 Kunden-Fragen (+ Zuordnung zum Lead), Bestätigungs-Mail — veröffentlichen, Link/QR teilen.
2. Kunde öffnet den Link (oft am Handy): freie Slots, wählt einen, beantwortet die Fragen, bucht — Bestätigung + Kalender-Datei.
3. Die Buchung erscheint intern (Liste + Lead-Eingang bzw. am bekannten Kontakt); der Termin steht im Kalender des Mitarbeiters.
4. Kunde kann's doch nicht einrichten → klickt »verschieben« in seiner Mail, wählt neuen Slot — Büro und Kalender bleiben automatisch aktuell.
### Meldungs-/Error-States (validiert)
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|---|---|---|---|---|
| Slot gerade vergeben (Race-Schutz) | Klartext-Hinweis in S02/S03-Übergang + zurück zur Slot-Wahl | ja | Nur dokumentieren | »Dieser Termin wurde gerade vergeben — bitte wähle einen anderen.« |
| Keine freien Termine | Leer-Zustand in S01 mit Klartext | nein | Nur dokumentieren | »Aktuell sind keine Termine frei …« + ggf. Kontakt-Hinweis |
| Seite nicht veröffentlicht / Link falsch | 🌐 404-Seite mit Branding | ja | Nur dokumentieren | keine Interna verraten |
| Spam-Schutz | mCaptcha in S02 | ja (Submit) | Nur dokumentieren | wie öffentliche Formulare |
| Absage-/Verschiebe-Link abgelaufen oder Termin vorbei | Klartext-Zustand in S04 | ja | Nur dokumentieren | »Dieser Termin liegt in der Vergangenheit …« |
| Storno intern | M02 mit Pflicht-Grund + Hinweis auf Auto-Mail | ja (Aktion) | Bauen (M02) | auch als Bulk aus S05 |
| Kalender-Sync-Status je Buchung | Badge in S06 | nein | Nur dokumentieren | synchronisiert / steht aus / Fehler |
---
## 7. Validierte Screen-Liste
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|---|---|---|---|---|---|
| S01 | 🌐 Termin wählen (Slot-Picker) ⭐ | BESPOKE-Public | Bauen | `/b/{firma}/{slug}` | Validiert |
| S02 | 🌐 Fragen (Kunden-Formular) | BESPOKE-Public | Bauen | Schritt 2 | Validiert |
| S03 | 🌐 Bestätigung (+ Kalender-Datei) | BESPOKE-Public | Bauen | Schritt 3 | Validiert |
| V01 | 🌐 Termin wählen — Handy | BESPOKE-Public 📱 | Bauen | Variante von S01 | Validiert |
| S04 | 🌐 Absagen/Verschieben per Link | BESPOKE-Public | Bauen | Link aus Bestätigungs-Mail | Validiert (Delta) |
| S05 | Buchungen-Liste | A2 Liste | Bauen | `/bookings` | Validiert |
| S06 | Buchungs-Detail (Karteikarte) | A3 Detail | Bauen | `/bookings/:id` | Validiert |
| S07 | Buchungsseiten-Liste | A2 Liste | Bauen | `/bookings/pages` | Validiert |
| S08 | Buchungsseiten-Editor | A6 + A4 | Bauen | `/bookings/pages/:id`, `/new` | Validiert |
| S09 | Verfügbarkeit (Wochen-Zeiten + Ausnahmen) | A6 + A4 | Bauen | `/availability` | Validiert |
| M01 | Verschieben (interner Slot-Picker) | Modal | Bauen | aus S06 | Validiert |
| M02 | Stornieren (Grund + Auto-Mail) | Modal | Bauen | aus S05/S06 | Validiert |
| D01–D05 | Race/leer/404/Spam/Link-abgelaufen (s. Tabelle) | Inline/Zustand | Nur dokumentieren | — | Validiert |
---
## 8. Grid
```text
🌐 Kunde: Link/QR/Embed -> S01 (Slots, Zeitzone) -> S02 (Fragen + Spam-Schutz) -> S03 (Bestätigung + .ics)
S01 -> V01 (Handy-Variante) · Bestätigungs-Mail -> S04 (absagen/verschieben -> zurück zu S01-Slots)
Buchung erzeugt: Anfrage im Lead-Eingang ODER Activity am bekannten Kontakt (E-Mail-Match) + Termin im Kalender (WF-P16 Kalender)
Intern: Sidebar -> S05 (Liste, Tabs) -> S06 (Detail: Antworten, Notizen, stattgefunden/No-Show)
S06 -> M01 (verschieben) / M02 (stornieren, Grund + Auto-Mail) / neu zuweisen
S07 (Buchungsseiten) -> S08 (Editor: Dauer/Puffer/Vorlauf/Fragen+Lead-Zuordnung/Mail/Publish/QR+Embed)
S09 Verfügbarkeit (jeder selbst, Admin alle) — speist die Slot-Berechnung
```
---
## 9. Screen-Pakete
- [[S01 Termin waehlen]] · [[S02 Fragen]] · [[S03 Bestaetigung]] · [[V01 Termin waehlen Handy]] · [[S04 Absagen Verschieben]]
- [[S05 Buchungen-Liste]] · [[S06 Buchungs-Detail]] · [[S07 Buchungsseiten-Liste]] · [[S08 Buchungsseiten-Editor]] · [[S09 Verfuegbarkeit]] · [[M01 Verschieben]] · [[M02 Stornieren]]
---
## 10. Offene Fragen
- **Change-Request an Dev:** 🌐 Self-Service-Absage/Verschieben per Mail-Link (S04) — AK-P16b kennt nur internes Cancel/Reschedule
- Fragen-Formular: v1 als einfache Feld-Liste im Editor (12 Feld-Typen) — der volle Formular-Baukasten (D-FORM) liegt als Review-Draft vor und wird hier später nur eingesteckt → mit Dev klären, dass die Schnittstelle passt
- Bulk-Storno: eine Mail je Kunde (automatisch) — Grenzen/Limits? → Dev
- Vorlauf-Feinheiten (max. wie weit im Voraus buchbar) → Standardwerte beim Subframe-Bau festlegen
## Handoff-Check
- [x] Jeder Screen ist mit Umsetzung markiert.
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
- [ ] Subframe-Link ist eingetragen. *(Subframe erst nach explizitem OK)*
@@ -18,4 +18,4 @@
{"id":"edge-m02-inline","fromNode":"m02","fromSide":"bottom","toNode":"note-inline","toSide":"top","label":"Codefehler"},
{"id":"edge-m03-inline","fromNode":"m03","fromSide":"bottom","toNode":"note-inline","toSide":"top","label":"Codefehler"}
]
}
}
@@ -4,18 +4,18 @@
{"id":"group-notes","type":"group","x":-120,"y":900,"width":4280,"height":430,"label":"Dokumentierte Zustaende und Backlog"},
{"id":"s02","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/S02 Rollen und Berechtigungen.md","x":1560,"y":440,"width":440,"height":230},
{"id":"s01","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/S01 Mitarbeiterliste.md","x":0,"y":45,"width":440,"height":230},
{"id":"note-seed","type":"text","text":"# Rollenmodell\n\nAdmin ist die einzige Start-/Systemrolle.\n\nWeitere Rollen werden vom Admin selbst angelegt.\n\nRollen-Vorlagen sind Work in Progress und werden nicht als feste Rollen in der Liste gezeigt.","x":1520,"y":1020,"width":520,"height":240},
{"id":"m04a","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/M04A Rolle anlegen.md","x":2120,"y":-110,"width":440,"height":230},
{"id":"m04b","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/M04B Rolle duplizieren.md","x":2980,"y":-110,"width":440,"height":230},
{"id":"d03","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/D03 Rolle in Nutzung blockiert.md","x":3600,"y":440,"width":440,"height":230},
{"id":"note-navigation","type":"text","text":"# Navigation\n\nS01 ist der Einstieg unter `Settings -> Mitarbeiter`.\n\nDer Rollen-Tab S02 ist direkt ueber die Settings-Tabs erreichbar und zusaetzlich ueber den Dropdown-Eintrag `Rollen und Berechtigungen bearbeiten`.","x":-40,"y":1020,"width":520,"height":240},
{"id":"m02","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/M02 Rolle bearbeiten.md","x":2680,"y":440,"width":440,"height":230},
{"id":"note-d01","type":"text","text":"# D01 Rollen-Dropdown\n\nKein eigener Screen.\n\nDas Dropdown ist direkt in S01 enthalten:\n- Rolle wechseln\n- `Rollen und Berechtigungen bearbeiten` fuehrt zu S02\n- letzter Admin wird ueber V01 blockiert","x":720,"y":1015,"width":500,"height":250},
{"id":"note-backlog","type":"text","text":"# Backlog / V2\n\nReassign beim Deaktivieren, Rollen-Loeschen mit Ersatzrolle, Gruppen, Rechtekatalog, Rollen-Audit, Review-Zyklus, Rechte-Matrix, Bulk-Aktionen, erweiterter Admin-Schutz.","x":3520,"y":1020,"width":600,"height":240},
{"id":"note-permission","type":"text","text":"# Permission-Muster\n\nIm Rollen-Modal wird eine konkrete Permission-Zeile vorgebaut:\n\n`Mitarbeiter ansehen`\nBeschreibung darunter\nControl: Toggle `An/Aus`\n\nRead-only/Bearbeiten bleibt spaeteres Advanced Control, falls ein Recht nicht binaer ist.\n\nFinaler Rechtekatalog liegt bei Development.","x":2620,"y":1000,"width":560,"height":280},
{"id":"v01","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/V01 Letzter Admin blockiert.md","x":2120,"y":-440,"width":440,"height":230},
{"id":"m01","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/M01 Mitarbeiter einladen.md","x":1000,"y":-360,"width":440,"height":230},
{"id":"m03","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/M03 Mitarbeiter deaktivieren.md","x":1000,"y":5,"width":440,"height":230}
{"id":"m03","type":"file","file":"02 Wireframes/P2 Auth/WF-P2 Admin RBAC/Screens/M03 Mitarbeiter deaktivieren.md","x":1000,"y":5,"width":440,"height":230},
{"id":"note-seed","type":"text","text":"# Rollenmodell\n\nAdmin ist die einzige Start-/Systemrolle.\n\nWeitere Rollen werden vom Admin selbst angelegt.\n\nRollen-Vorlagen sind Work in Progress und werden nicht als feste Rollen in der Liste gezeigt.","x":1520,"y":1020,"width":520,"height":240},
{"id":"note-navigation","type":"text","text":"# Navigation\n\nS01 ist der Einstieg unter `Settings -> Mitarbeiter`.\n\nDer Rollen-Tab S02 ist direkt ueber die Settings-Tabs erreichbar und zusaetzlich ueber den Dropdown-Eintrag `Rollen und Berechtigungen bearbeiten`.","x":-40,"y":1020,"width":520,"height":240},
{"id":"note-d01","type":"text","text":"# D01 Rollen-Dropdown\n\nKein eigener Screen.\n\nDas Dropdown ist direkt in S01 enthalten:\n- Rolle wechseln\n- `Rollen und Berechtigungen bearbeiten` fuehrt zu S02\n- letzter Admin wird ueber V01 blockiert","x":720,"y":1015,"width":500,"height":250},
{"id":"note-backlog","type":"text","text":"# Backlog / V2\n\nReassign beim Deaktivieren, Rollen-Loeschen mit Ersatzrolle, Gruppen, Rechtekatalog, Rollen-Audit, Review-Zyklus, Rechte-Matrix, Bulk-Aktionen, erweiterter Admin-Schutz.","x":3520,"y":1020,"width":600,"height":240},
{"id":"note-permission","type":"text","text":"# Permission-Muster\n\nIm Rollen-Modal wird eine konkrete Permission-Zeile vorgebaut:\n\n`Mitarbeiter ansehen`\nBeschreibung darunter\nControl: Toggle `An/Aus`\n\nRead-only/Bearbeiten bleibt spaeteres Advanced Control, falls ein Recht nicht binaer ist.\n\nFinaler Rechtekatalog liegt bei Development.","x":2620,"y":1000,"width":560,"height":280}
],
"edges":[
{"id":"edge-s01-m01","fromNode":"s01","fromSide":"right","toNode":"m01","toSide":"left","label":"Mitarbeiter einladen"},
@@ -161,15 +161,15 @@ Wie viel Sicherheit braucht der Passwort-Reset, bevor der Nutzer ein neues Passw
## 7. Validierte Screen-Liste
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|---|---|---|---|---|---|
| S01 | [[Screens/S01 Passwort Reset anfordern]] | Auth Form | Bauen | `/forgot-password` | Validiert |
| S02 | [[Screens/S02 Reset-Link gesendet]] | Auth Feedback | Bauen | nach S01 | Validiert |
| S03 | [[Screens/S03 2FA bestaetigen]] | Auth Security | Bauen | nach Reset-Link, falls 2FA aktiv | Validiert |
| V01 | [[Varianten/V01 Reset-Link ungueltig]] | Auth Blocker | Bauen | Link-Fehler | Validiert |
| V02 | [[Varianten/V02 2FA nicht verfuegbar]] | Auth Blocker | Bauen | Variante von S03 | In Subframe |
| M01 | [[Screens/M01 Admin kontaktieren]] | Auth Modal | Bauen | von V02 | In Subframe |
| M02 | [[Screens/M02 Wiederherstellungscode eingeben]] | Auth Modal | Bauen | von V02 | In Subframe |
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
| --- | ----------------------------------------------- | ------------- | --------- | -------------------------------- | ----------- |
| S01 | [[Screens/S01 Passwort Reset anfordern]] | Auth Form | Bauen | `/forgot-password` | Validiert |
| S02 | [[Screens/S02 Reset-Link gesendet]] | Auth Feedback | Bauen | nach S01 | Validiert |
| S03 | [[Screens/S03 2FA bestaetigen]] | Auth Security | Bauen | nach Reset-Link, falls 2FA aktiv | Validiert |
| V01 | [[Varianten/V01 Reset-Link ungueltig]] | Auth Blocker | Bauen | Link-Fehler | Validiert |
| V02 | [[Varianten/V02 2FA nicht verfuegbar]] | Auth Blocker | Bauen | Variante von S03 | In Subframe |
| M01 | [[Screens/M01 Admin kontaktieren]] | Auth Modal | Bauen | von V02 | In Subframe |
| M02 | [[Screens/M02 Wiederherstellungscode eingeben]] | Auth Modal | Bauen | von V02 | In Subframe |
---
@@ -1,161 +1,36 @@
{
"nodes": [
{
"id": "group-main",
"type": "group",
"x": -80,
"y": -100,
"width": 1875,
"height": 420,
"label": "Hauptflow (ein Screen, zwei Reiter)"
},
{
"id": "group-drawer",
"type": "group",
"x": -80,
"y": 460,
"width": 1875,
"height": 420,
"label": "Drawer und Modals"
},
{
"id": "group-notes",
"type": "group",
"x": 1935,
"y": -100,
"width": 460,
"height": 980,
"label": "Regeln"
},
{
"id": "note-entry",
"type": "text",
"text": "# Einstieg\n\nVerwaltung → Aktivitäts-Protokoll (`/admin/audit`).\n\nNur mit Recht `audit.read` sichtbar.",
"x": 0,
"y": 0,
"width": 360,
"height": 200
},
{
"id": "s01",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S01 Protokoll-Ansicht.md",
"x": 595,
"y": 0,
"width": 420,
"height": 200
},
{
"id": "s02",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S02 Exporte.md",
"x": 1275,
"y": 0,
"width": 420,
"height": 200
},
{
"id": "m01",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M01 Detail-Drawer.md",
"x": 0,
"y": 560,
"width": 420,
"height": 200
},
{
"id": "m03",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M03 Objekt-Verlauf-Drawer.md",
"x": 655,
"y": 560,
"width": 420,
"height": 200
},
{
"id": "m02",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M02 Export anlegen.md",
"x": 1275,
"y": 560,
"width": 420,
"height": 200
},
{
"id": "note-mask",
"type": "text",
"text": "# Regeln (nur Doku)\n\n- Sensible Werte im Diff: nur „Wert geändert\"\n- Zeitraum max. 24 Monate — ältere nur per Export\n- Sortierung/Filter: Mitarbeiter, Zeitraum, Bereich, Änderungs-Art (validiert)\n- Actor-Marker: Mensch / Automation / MCP-Agent / Admin\n- M03 ist das wiederverwendbare „Verlauf\"-Muster für alle Detailseiten (Einstieg je Feature-Paket)",
"x": 1975,
"y": 0,
"width": 380,
"height": 560
},
{
"id": "md-paket",
"type": "file",
"file": "02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.md",
"x": -80,
"y": -440,
"width": 460,
"height": 280
}
],
"edges": [
{
"id": "e-entry",
"fromNode": "note-entry",
"fromSide": "right",
"toNode": "s01",
"toSide": "left",
"toEnd": "arrow"
},
{
"id": "e-tab",
"fromNode": "s01",
"fromSide": "right",
"toNode": "s02",
"toSide": "left",
"toEnd": "arrow",
"label": "Reiter Exporte"
},
{
"id": "e-row",
"fromNode": "s01",
"fromSide": "bottom",
"toNode": "m01",
"toSide": "top",
"toEnd": "arrow",
"label": "Zeile öffnen"
},
{
"id": "e-verlauf",
"fromNode": "m01",
"fromSide": "right",
"toNode": "m03",
"toSide": "left",
"toEnd": "arrow",
"label": "Verlauf dieses Objekts"
},
{
"id": "e-export",
"fromNode": "s02",
"fromSide": "bottom",
"toNode": "m02",
"toSide": "top",
"toEnd": "arrow",
"label": "Export anlegen"
},
{
"id": "e-job",
"fromNode": "m02",
"fromSide": "right",
"toNode": "s02",
"toSide": "right",
"toEnd": "arrow",
"label": "Job angelegt",
"styleAttributes": {
"path": "long-dashed"
}
}
]
"nodes":[
{"id":"group-main","type":"group","x":-80,"y":-100,"width":1875,"height":420,"label":"Hauptflow (ein Screen, zwei Reiter)"},
{"id":"group-drawer","type":"group","x":-80,"y":460,"width":1875,"height":420,"label":"Drawer und Modals"},
{"id":"group-notes","type":"group","x":1935,"y":-100,"width":460,"height":980,"label":"Regeln"},
{"id":"note-entry","type":"text","text":"# Einstieg\n\nVerwaltung → Aktivitäts-Protokoll (`/admin/audit`).\n\nNur mit Recht `audit.read` sichtbar.","x":0,"y":0,"width":360,"height":200},
{"id":"s01","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S01 Protokoll-Ansicht.md","x":595,"y":0,"width":420,"height":200},
{"id":"s02","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/S02 Exporte.md","x":1275,"y":0,"width":420,"height":200},
{"id":"m01","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M01 Detail-Drawer.md","x":0,"y":560,"width":420,"height":200},
{"id":"m03","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M03 Objekt-Verlauf-Drawer.md","x":655,"y":560,"width":420,"height":200},
{"id":"m02","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/Screens/M02 Export anlegen.md","x":1275,"y":560,"width":420,"height":200},
{"id":"note-mask","type":"text","text":"# Regeln (nur Doku)\n\n- Sensible Werte im Diff: nur „Wert geändert\"\n- Zeitraum max. 24 Monate — ältere nur per Export\n- Sortierung/Filter: Mitarbeiter, Zeitraum, Bereich, Änderungs-Art (validiert)\n- Actor-Marker: Mensch / Automation / MCP-Agent / Admin\n- M03 ist das wiederverwendbare „Verlauf\"-Muster für alle Detailseiten (Einstieg je Feature-Paket)","x":1975,"y":0,"width":380,"height":560},
{"id":"md-paket","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.md","x":-80,"y":-440,"width":460,"height":280}
],
"edges":[
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow"},
{"id":"e-tab","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"Reiter Exporte"},
{"id":"e-row","fromNode":"s01","fromSide":"bottom","toNode":"m01","toSide":"top","toEnd":"arrow","label":"Zeile öffnen"},
{"id":"e-verlauf","fromNode":"m01","fromSide":"right","toNode":"m03","toSide":"left","toEnd":"arrow","label":"Verlauf dieses Objekts"},
{"id":"e-export","fromNode":"s02","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"Export anlegen"},
{
"id":"e-job",
"fromNode":"m02",
"fromSide":"right",
"toNode":"s02",
"toSide":"right",
"toEnd":"arrow",
"label":"Job angelegt",
"styleAttributes":{"path":"long-dashed"}
}
],
"metadata":{
"version":"1.0-1.0",
"frontmatter":{}
}
}
@@ -16,11 +16,23 @@
{"id":"s05","type":"file","file":"02 Wireframes/P7 Leads/WF-P7 Leads/Screens/S05 Spam-Schutz.md","x":2500,"y":560,"width":420,"height":200}
],
"edges":[
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted"}},
{
"id":"e-entry",
"fromNode":"note-entry",
"fromSide":"right",
"toNode":"s01",
"toSide":"left",
"toEnd":"arrow",
"styleAttributes":{"path":"dotted"}
},
{"id":"e-open","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"Anfrage öffnen"},
{"id":"e-stats","fromNode":"s01","fromSide":"top","toNode":"s03","toSide":"top","toEnd":"arrow","label":"Statistiken · Drill-Down zurück in gefilterte Inbox"},
{"id":"e-convert","fromNode":"s02","fromSide":"bottom","toNode":"m01","toSide":"top","toEnd":"arrow","label":"Zu Projekt (Freigabe = ja; aus S01 auch als Bulk)"},
{"id":"e-new","fromNode":"s01","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"+ Anfrage"},
{"id":"e-import","fromNode":"s01","fromSide":"bottom","toNode":"m03","toSide":"top","toEnd":"arrow","label":"Importieren (CSV)"}
]
}
],
"metadata":{
"version":"1.0-1.0",
"frontmatter":{}
}
}
@@ -19,14 +19,43 @@
{"id":"s06","type":"file","file":"02 Wireframes/P8 Pipelines/WF-P8 Pipelines/Screens/S06 Verlust-Gruende.md","x":1240,"y":1220,"width":420,"height":200}
],
"edges":[
{"id":"e-entry","fromNode":"note-entry","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted"}},
{
"id":"e-entry",
"fromNode":"note-entry",
"fromSide":"right",
"toNode":"s01",
"toSide":"left",
"toEnd":"arrow",
"styleAttributes":{"path":"dotted"}
},
{"id":"e-open","fromNode":"s01","fromSide":"right","toNode":"s02","toSide":"left","toEnd":"arrow","label":"Karte öffnen"},
{"id":"e-liste","fromNode":"s01","fromSide":"top","toNode":"s03","toSide":"top","toEnd":"arrow","label":"Umschalter Board ↔ Liste"},
{"id":"e-lost","fromNode":"s01","fromSide":"bottom","toNode":"m01","toSide":"top","toEnd":"arrow","label":"Verloren-Spalte (Grund Pflicht)"},
{"id":"e-won","fromNode":"s01","fromSide":"bottom","toNode":"m02","toSide":"top","toEnd":"arrow","label":"Gewonnen ohne Spalten-Regel"},
{"id":"e-verw","fromNode":"s02","fromSide":"bottom","toNode":"s04","toSide":"top","toEnd":"arrow","label":"Board verwalten (aus S01/S02)"},
{"id":"e-edit","fromNode":"s04","fromSide":"right","toNode":"s05","toSide":"left","toEnd":"arrow","label":"Edit-Mode öffnen"},
{"id":"e-link","fromNode":"s07","fromSide":"top","toNode":"s04","toSide":"bottom","toEnd":"arrow","label":"öffnet dieselbe Seite","styleAttributes":{"path":"long-dashed"}},
{"id":"e-set","fromNode":"note-settings","fromSide":"right","toNode":"s07","toSide":"left","toEnd":"arrow","styleAttributes":{"path":"dotted"}}
]
}
{
"id":"e-link",
"fromNode":"s07",
"fromSide":"top",
"toNode":"s04",
"toSide":"bottom",
"toEnd":"arrow",
"label":"öffnet dieselbe Seite",
"styleAttributes":{"path":"long-dashed"}
},
{
"id":"e-set",
"fromNode":"note-settings",
"fromSide":"right",
"toNode":"s07",
"toSide":"left",
"toEnd":"arrow",
"styleAttributes":{"path":"dotted"}
}
],
"metadata":{
"version":"1.0-1.0",
"frontmatter":{}
}
}
+92 -27
View File
@@ -46,9 +46,13 @@ Diese Datei ist der erste Ort, um zu sehen:
| WF-P9 Projekt-Akte | D-P9 | Auftrag | Validiert | [MD](<P9 Auftrag/WF-P9 Projekt-Akte/WF-P9 Projekt-Akte.md>) | [Canvas](<P9 Auftrag/WF-P9 Projekt-Akte/WF-P9 Projekt-Akte.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; Rechnung v1 neu; Board-Auftragsoptionen erweitern WF-P8 S04 |
| WF-P9 Plantafel | D-PLAN | Auftrag | Validiert | [MD](<P9 Auftrag/WF-P9 Plantafel/WF-P9 Plantafel.md>) | [Canvas](<P9 Auftrag/WF-P9 Plantafel/WF-P9 Plantafel.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; Monteur-Modus = 1 Frame Heute<->Woche; Konflikt-Dialog wird gebaut |
| WF-P9 Abnahme | D-ABN | Auftrag | Validiert | [MD](<P9 Auftrag/WF-P9 Abnahme/WF-P9 Abnahme.md>) | [Canvas](<P9 Auftrag/WF-P9 Abnahme/WF-P9 Abnahme.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; mehrstufiger Mobile-Workflow; immutable nach Abschluss |
| WF-P12 Flow-Editor | D-FLOW | Automationen | Validiert | [MD](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.md>) | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; Katalog links/Canvas Mitte/Konfig rechts; Start-Auswahl mit Vorlagen; Langlaeufer |
| WF-P12 Verwaltung | D-P12 | Automationen | Validiert | [MD](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.md>) | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; Klartext-Timeline + 24h-Undo; Konfig-Panels hier, Editor bettet ein |
| WF-P12 Flow-Editor | D-FLOW | Automationen | Subframe Draft | [MD](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.md>) | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit>) | David Review / Varianten-Entscheidung | Screens validiert 2026-07-09; Subframe-Abgleich 2026-07-10: 2 S01-Varianten (Dreispalten kompakt vs. Gefuehrter Inspector), Entscheidung offen; Langlaeufer |
| WF-P12 Verwaltung | D-P12 | Automationen | Subframe Draft | [MD](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.md>) | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit>) | David Review | Screens validiert 2026-07-09; Subframe-Abgleich 2026-07-10: alle 5 Screens gebaut, Details in Screen-MDs; Klartext-Timeline + 24h-Undo |
| WF-D-FORM Form Builder | D-FORM | Termine & Formulare | Review | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.md>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) | [Subframe](<https://app.subframe.com/f023064a5ca0/flow/afb1c257-46f0-4b23-aaed-d75f4773f1a9/edit?tab=ai&conversationId=02d948da-f9aa-4ab5-8352-2745789bb9ad>) | David Review / Handoff | Mitarbeiterinnen-Paket eingebaut 2026-07-09; S02 Simple Builder ist empfohlener Hauptfluss; Advanced-Canvas bleibt Referenz |
| WF-P16 Kalender | D-BOOK + D-P16 | Termine | Validiert | [MD](<P16 Termine/WF-P16 Kalender/WF-P16 Kalender.md>) | [Canvas](<P16 Termine/WF-P16 Kalender/WF-P16 Kalender.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; Davids Delta: vollwertiger Kalender (anlegen + einladen inkl. freie E-Mails, Kollegen-Overlay) = CR an Dev; Sync im P5-Muster |
| WF-P16 Terminbuchung | D-BOOK + D-P16 | Termine | Validiert | [MD](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.md>) | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; Calendly-Stil; Davids Delta: Kunde kann per Mail-Link absagen/verschieben (S04) = CR an Dev; Feld-Zuordnung zum Lead im Editor |
| WF-P16 E-Signatur | D-P16 + AK-P16d | Termine | Validiert | [MD](<P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.md>) | [Canvas](<P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.canvas>) | - | Subframe nach explizitem OK | Screens validiert 2026-07-09; Projekt-Kern statt Deal; SES-Eigenbau Default; Davids Delta: eigene Kunden-Signierseite S04 |
| WF-P15 Team-Chat | D-CHAT + AK-P15b | Kommunikation | Entwurf | [MD](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.md>) | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) | - | Mit David validieren | Entwurf angelegt 2026-07-09; noch nicht gemeinsam geplant/validiert |
---
@@ -180,15 +184,15 @@ Diese Datei ist der erste Ort, um zu sehen:
| S02 | Abnahme Schritt 1: Pruefungen | WF-P9 Abnahme | BESPOKE-Mobile | Bauen | Validiert | `/projects/:id/acceptance/new` | [MD](<P9 Auftrag/WF-P9 Abnahme/Screens/S02 Schritt Pruefungen.md>) | - | [Canvas](<P9 Auftrag/WF-P9 Abnahme/WF-P9 Abnahme.canvas>) |
| S03 | Abnahme Schritt 2: Maengel | WF-P9 Abnahme | BESPOKE-Mobile | Bauen | Validiert | Workflow | [MD](<P9 Auftrag/WF-P9 Abnahme/Screens/S03 Schritt Maengel.md>) | - | [Canvas](<P9 Auftrag/WF-P9 Abnahme/WF-P9 Abnahme.canvas>) |
| S04 | Abnahme Schritt 3: Unterschriften | WF-P9 Abnahme | BESPOKE-Mobile | Bauen | Validiert | Workflow | [MD](<P9 Auftrag/WF-P9 Abnahme/Screens/S04 Schritt Unterschriften.md>) | - | [Canvas](<P9 Auftrag/WF-P9 Abnahme/WF-P9 Abnahme.canvas>) |
| S01 | Flow-Editor (Katalog/Canvas/Konfig) | WF-P12 Flow-Editor | BESPOKE | Bauen | Validiert | `/automations/:id/edit` | [MD](<P12 Automationen/WF-P12 Flow-Editor/Screens/S01 Flow-Editor.md>) | - | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) |
| M01 | Probelauf (Dry-Run) | WF-P12 Flow-Editor | Modal | Bauen | Validiert | aus S01 | [MD](<P12 Automationen/WF-P12 Flow-Editor/Screens/M01 Probelauf.md>) | - | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) |
| M02 | Schleifen-Warnung | WF-P12 Flow-Editor | Modal | Bauen | Validiert | aus S01 | [MD](<P12 Automationen/WF-P12 Flow-Editor/Screens/M02 Schleifen-Warnung.md>) | - | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) |
| M03 | Start-Auswahl (leer/Vorlage) | WF-P12 Flow-Editor | Modal | Bauen | Validiert | + Neue Automation | [MD](<P12 Automationen/WF-P12 Flow-Editor/Screens/M03 Start-Auswahl.md>) | - | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) |
| S01 | Automation-Liste | WF-P12 Verwaltung | Liste | Bauen | Validiert | `/automations` | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S01 Automation-Liste.md>) | - | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S02 | Lauf-Liste | WF-P12 Verwaltung | Liste | Bauen | Validiert | `.../executions` | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S02 Lauf-Liste.md>) | - | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S03 | Lauf-Detail (Timeline, 24h-Undo) | WF-P12 Verwaltung | Detail | Bauen | Validiert | `.../executions/:id` | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S03 Lauf-Detail.md>) | - | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S04 | Vorlagen-Katalog | WF-P12 Verwaltung | Karten-Liste | Bauen | Validiert | `/automations/templates` | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S04 Vorlagen-Katalog.md>) | - | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S05 | Baustein-Konfig-Panels (Muster) | WF-P12 Verwaltung | Compose-Panel | Bauen | Validiert | im Flow-Editor | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S05 Baustein-Konfig-Panels.md>) | - | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S01 | Flow-Editor (Katalog/Canvas/Konfig) | WF-P12 Flow-Editor | BESPOKE | Bauen | Subframe Draft / Varianten-Entscheidung offen | `/automations/:id/edit` | [MD](<P12 Automationen/WF-P12 Flow-Editor/Screens/S01 Flow-Editor.md>) | [Subframe A](<https://app.subframe.com/f023064a5ca0/design/a42ecf81-5d6e-4fa1-9076-b22010cd5ecf/edit>) · [B](<https://app.subframe.com/f023064a5ca0/design/ce6a73d8-ae0c-4d1c-b8f8-f426dfe19d32/edit>) | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) |
| M01 | Probelauf (Dry-Run) | WF-P12 Flow-Editor | Modal | Bauen | Subframe Draft / Review offen | aus S01 | [MD](<P12 Automationen/WF-P12 Flow-Editor/Screens/M01 Probelauf.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/ea231a78-eddb-4c04-97a8-7574d45d8576/edit>) | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) |
| M02 | Schleifen-Warnung | WF-P12 Flow-Editor | Modal | Bauen | Subframe Draft / Review offen | aus S01 | [MD](<P12 Automationen/WF-P12 Flow-Editor/Screens/M02 Schleifen-Warnung.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/8e8943a5-36ea-4792-a3e0-590cb88fd9df/edit>) | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) |
| M03 | Start-Auswahl (leer/Vorlage) | WF-P12 Flow-Editor | Modal | Bauen | Subframe Draft / Review offen | + Neue Automation | [MD](<P12 Automationen/WF-P12 Flow-Editor/Screens/M03 Start-Auswahl.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/8b398273-682e-4cf2-851b-3b1a89da4d90/edit>) | [Canvas](<P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas>) |
| S01 | Automation-Liste | WF-P12 Verwaltung | Liste | Bauen | Subframe Draft / Review offen | `/automations` | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S01 Automation-Liste.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/336ccdfb-80f9-45bf-a158-e74cabb70a20/edit>) | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S02 | Lauf-Liste | WF-P12 Verwaltung | Liste | Bauen | Subframe Draft / Review offen | `.../executions` | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S02 Lauf-Liste.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/0fab5d8c-1e6a-4220-863d-7e46aba0f06c/edit>) | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S03 | Lauf-Detail (Timeline, 24h-Undo) | WF-P12 Verwaltung | Detail | Bauen | Subframe Draft / Review offen | `.../executions/:id` | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S03 Lauf-Detail.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/9997a3c4-d18b-449f-bbbd-4fe6dd24f3df/edit>) | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S04 | Vorlagen-Katalog | WF-P12 Verwaltung | Karten-Liste | Bauen | Subframe Draft / Review offen | `/automations/templates` | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S04 Vorlagen-Katalog.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/46e04956-4903-4733-9345-81b18f34e858/edit>) | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S05 | Baustein-Konfig-Panels (Muster) | WF-P12 Verwaltung | Compose-Panel | Bauen | Subframe Draft / Review offen | im Flow-Editor | [MD](<P12 Automationen/WF-P12 Verwaltung/Screens/S05 Baustein-Konfig-Panels.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/83599a34-97b4-4881-beb4-8b7e35d11aa0/edit>) | [Canvas](<P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas>) |
| S00 | Formulare verwalten | WF-D-FORM Form Builder | Formular-Zentrale | Bauen | Subframe Draft / Review offen | `/forms` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/01 S00 Formulare verwalten.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/2325aa7a-d968-4028-8282-0823b15bf964/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| E01 | S00 Keine Formulare | WF-D-FORM Form Builder | Empty State | Bauen | Subframe Draft / Review offen | `/forms` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/02 E01 S00 Keine Formulare.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/136c11b3-8310-4165-b4ba-9cf099ee0873/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| E02 | S00 Keine Treffer | WF-D-FORM Form Builder | Empty State | Bauen | Subframe Draft / Review offen | `/forms` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/03 E02 S00 Keine Treffer.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/ccf8d2f7-e7b4-4ffd-87f6-1785edc1b2f7/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
@@ -204,24 +208,53 @@ Diese Datei ist der erste Ort, um zu sehen:
| S05 | Antworten Tabelle | WF-D-FORM Form Builder | Builder Tab | Bauen | Subframe Draft / Review offen | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/11 S05 Antworten Tabelle.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/9e8eeab7-44ea-4b77-85e6-0818d97e1ac3/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| E03 | S05 Keine Antworten | WF-D-FORM Form Builder | Empty State | Bauen | Subframe Draft / Review offen | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/12 E03 S05 Keine Antworten.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/6f56c14f-d66e-4734-8a29-a900ac74a8a7/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| E04 | S05 Export Fehler | WF-D-FORM Form Builder | Error State | Bauen | Subframe Draft / Review offen | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/13 E04 S05 Export Fehler.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/00553ea4-9839-4d22-b540-9b9ef0bf014f/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| S01B | Gefuehrter Fragen Editor | WF-D-FORM Form Builder | Simple Builder Alternative | Alternative bauen | Subframe Draft / Review offen | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/80 S01B Gefuehrter Fragen Editor.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/d0fb9c3d-4b03-4d59-bd98-9f668ab018eb/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| S01C | Website Formular Editor | WF-D-FORM Form Builder | Simple Builder Beispiel | Alternative bauen | Subframe Draft / Review offen | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/81 S01C Website Formular Editor.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/d7d33e94-5c12-48e8-8ec6-1e94590ee89c/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| S01D | Umfrage Editor | WF-D-FORM Form Builder | Simple Builder Beispiel | Alternative bauen | Subframe Draft / Review offen | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/82 S01D Umfrage Editor.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/5abd7799-7058-40b3-9772-884cbda97b9c/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| S01E | Internes Formular Editor | WF-D-FORM Form Builder | Simple Builder Beispiel | Alternative bauen | Subframe Draft / Review offen | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/83 S01E Internes Formular Editor.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/ea08fd1c-1a76-4e2c-b27c-1091baa0586a/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| ADV-S01 | Form-Builder Canvas | WF-D-FORM Form Builder | Bespoke Builder | Bauen | Subframe Draft / Review offen | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/90 ADV Form-Builder Canvas.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/e5502f88-9858-460e-abae-671f28464270/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| ADV-S01-2 | Form-Builder Canvas 2 | WF-D-FORM Form Builder | Advanced / Referenz | Referenz behalten | Subframe Draft / aktuell nicht Hauptfluss | `/forms/:id/edit` | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/90b ADV Form-Builder Canvas 2.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/9529ac6f-eb71-4e5c-8774-7cebe9c8162c/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D07 | Logic Regel Detail | WF-D-FORM Form Builder | Panel-Zustand in S01 | Bauen | Subframe Draft / Review offen | in S01 Logic-Modus, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/91 D07 Logic Regel Detail.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/07b60457-8151-46b9-ba34-34eceffc08bb/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D08 | Action Detail mit Mapping | WF-D-FORM Form Builder | Panel-Zustand in S01 | Bauen | Subframe Draft / Review offen | in S01 Actions-Modus, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/92 D08 Action Detail mit Mapping.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/0759d779-91f5-4e06-b1d6-7cd0095461ea/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D09 | Publish Blocker Summary | WF-D-FORM Form Builder | Inline-Zustand in S01 | Bauen | Subframe Draft / Review offen | in S01 nach Klick auf Publish | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/93 D09 Publish Blocker Summary.md>) | [Subframe](<https://app.subframe.com/f023064a5ca0/design/211e8ca7-fc0b-4c52-a4a4-a1e660209e58/edit>) | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D01 | Sharing Panel URL QR iFrame | WF-D-FORM Form Builder | Panel-Zustand in S01 | Nur dokumentieren | Vor Subframe / dokumentiert | in ADV-S01 Form-Builder Canvas, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D01 Sharing Panel URL QR iFrame.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D02 | Post-Submit Actions | WF-D-FORM Form Builder | Panel-Zustand in S01 | Nur dokumentieren | Vor Subframe / dokumentiert | in ADV-S01 Form-Builder Canvas, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D02 Post-Submit Actions.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D03 | Conditional Logic Editor | WF-D-FORM Form Builder | Panel-Zustand in S01 | Nur dokumentieren | Vor Subframe / dokumentiert | in ADV-S01 Form-Builder Canvas, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D03 Conditional Logic Editor.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D06 | Feldkarten Menue | WF-D-FORM Form Builder | Inline-Zustand in S01 | Nur dokumentieren | Vor Subframe / dokumentiert | in ADV-S01 Form-Builder Canvas, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D06 Feldkarten Menue.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D10 | Builder Interaktionsfaelle | WF-D-FORM Form Builder | Case-Matrix in S01 | Nur dokumentieren | Vor Subframe / dokumentiert | in ADV-S01 Form-Builder Canvas, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D10 Builder Interaktionsfaelle.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| M01 | Feld loeschen Confirm | WF-D-FORM Form Builder | Confirm Modal | Nur dokumentieren | Vor Subframe / dokumentiert | von S01 Feldkarte oder Inspector | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/M01 Feld loeschen Confirm.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| M02 | Unpublish Confirm | WF-D-FORM Form Builder | Confirm Modal | Nur dokumentieren | Vor Subframe / dokumentiert | von S01 Header oder More-Menue | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/M02 Unpublish Confirm.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| M03 | Archive Confirm | WF-D-FORM Form Builder | Confirm Modal | Nur dokumentieren | Vor Subframe / dokumentiert | von S01 More-Menue | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/M03 Archive Confirm.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| M04 | Unsaved Changes Confirm | WF-D-FORM Form Builder | Confirm Modal / Browser Guard | Nur dokumentieren | Vor Subframe / dokumentiert | beim Verlassen von S01 mit Dirty State | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/M04 Unsaved Changes Confirm.md>) | - | [Canvas](<D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas>) |
| D01 | Sharing Panel URL QR iFrame | WF-D-FORM Form Builder | Detailnotiz | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | Public-Link/Teilen-Kontext, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D01 Sharing Panel URL QR iFrame.md>) | - | - |
| D02 | Post-Submit Actions | WF-D-FORM Form Builder | Detailnotiz | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | Nach-Absenden-Kontext, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D02 Post-Submit Actions.md>) | - | - |
| D03 | Conditional Logic Editor | WF-D-FORM Form Builder | Detailnotiz | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | einfache Bedingungen, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D03 Conditional Logic Editor.md>) | - | - |
| D06 | Feldkarten Menue | WF-D-FORM Form Builder | Detailnotiz | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | Fragekarten-Menue, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D06 Feldkarten Menue.md>) | - | - |
| D10 | Builder Interaktionsfaelle | WF-D-FORM Form Builder | Case-Matrix | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | Klick-/Edge-Cases, kein eigener Screen | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/D10 Builder Interaktionsfaelle.md>) | - | - |
| M01 | Feld loeschen Confirm | WF-D-FORM Form Builder | Confirm Modal | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | von Fragekarte oder Inspector | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/M01 Feld loeschen Confirm.md>) | - | - |
| M02 | Unpublish Confirm | WF-D-FORM Form Builder | Confirm Modal | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | von Publish/Public-Link-Kontext | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/M02 Unpublish Confirm.md>) | - | - |
| M03 | Archive Confirm | WF-D-FORM Form Builder | Confirm Modal | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | von More-Menue | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/M03 Archive Confirm.md>) | - | - |
| M04 | Unsaved Changes Confirm | WF-D-FORM Form Builder | Confirm Modal / Browser Guard | Nur dokumentieren | Dokumentiert / nicht im Review-Canvas | beim Verlassen mit Dirty State | [MD](<D-FORM Formulare/WF-D-FORM Form Builder/Screens/M04 Unsaved Changes Confirm.md>) | - | - |
| S01 | Kalender (Monat/Woche, Kollegen-Overlay) | WF-P16 Kalender | BESPOKE Grid | Bauen | Validiert | `/calendar` | [MD](<P16 Termine/WF-P16 Kalender/Screens/S01 Kalender.md>) | - | [Canvas](<P16 Termine/WF-P16 Kalender/WF-P16 Kalender.canvas>) |
| M01 | Termin anlegen/bearbeiten | WF-P16 Kalender | Modal | Bauen | Validiert | Slot-Klick / + Termin in S01 | [MD](<P16 Termine/WF-P16 Kalender/Screens/M01 Termin-Dialog.md>) | - | [Canvas](<P16 Termine/WF-P16 Kalender/WF-P16 Kalender.canvas>) |
| M02 | Termin-Detail (Popover) | WF-P16 Kalender | Popover | Bauen | Validiert | Termin-Klick in S01 | [MD](<P16 Termine/WF-P16 Kalender/Screens/M02 Termin-Detail.md>) | - | [Canvas](<P16 Termine/WF-P16 Kalender/WF-P16 Kalender.canvas>) |
| S02 | Kalender-Einstellungen & Sync | WF-P16 Kalender | Settings (A6) | Bauen | Validiert | `/calendar/settings` | [MD](<P16 Termine/WF-P16 Kalender/Screens/S02 Kalender-Einstellungen.md>) | - | [Canvas](<P16 Termine/WF-P16 Kalender/WF-P16 Kalender.canvas>) |
| D01 | OAuth-Assistent (aus WF-P5 M01) | WF-P16 Kalender | Wizard | Wiederverwenden | Validiert | aus S02 | [MD](<P16 Termine/WF-P16 Kalender/Screens/S02 Kalender-Einstellungen.md>) | - | - |
| D02 | Trennen-Bestaetigung + Extern-Wahl (aus WF-P5 M03) | WF-P16 Kalender | Modal | Wiederverwenden | Validiert | aus S02 | [MD](<P16 Termine/WF-P16 Kalender/Screens/S02 Kalender-Einstellungen.md>) | - | - |
| S01 | Termin waehlen (Slot-Picker) 🌐 | WF-P16 Terminbuchung | BESPOKE-Public | Bauen | Validiert | `/b/{firma}/{slug}` | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S01 Termin waehlen.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S02 | Fragen (Kunden-Formular) 🌐 | WF-P16 Terminbuchung | BESPOKE-Public | Bauen | Validiert | Schritt 2 | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S02 Fragen.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S03 | Bestaetigung (+ .ics) 🌐 | WF-P16 Terminbuchung | BESPOKE-Public | Bauen | Validiert | Schritt 3 | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S03 Bestaetigung.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| V01 | Termin waehlen — Handy 🌐📱 | WF-P16 Terminbuchung | BESPOKE-Public Mobile | Bauen | Validiert | Variante von S01 | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/V01 Termin waehlen Handy.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S04 | Absagen/Verschieben per Link 🌐 | WF-P16 Terminbuchung | BESPOKE-Public | Bauen | Validiert (Delta) | Link aus Bestaetigungs-Mail | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S04 Absagen Verschieben.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S05 | Buchungen-Liste | WF-P16 Terminbuchung | Liste | Bauen | Validiert | `/bookings` | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S05 Buchungen-Liste.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S06 | Buchungs-Detail (Karteikarte) | WF-P16 Terminbuchung | Detail | Bauen | Validiert | `/bookings/:id` | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S06 Buchungs-Detail.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S07 | Buchungsseiten-Liste | WF-P16 Terminbuchung | Liste | Bauen | Validiert | `/bookings/pages` | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S07 Buchungsseiten-Liste.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S08 | Buchungsseiten-Editor | WF-P16 Terminbuchung | Settings/Form | Bauen | Validiert | `/bookings/pages/:id` + `/new` | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S08 Buchungsseiten-Editor.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S09 | Verfuegbarkeit (Wochen-Zeiten + Ausnahmen) | WF-P16 Terminbuchung | Settings/Form | Bauen | Validiert | `/availability` | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/S09 Verfuegbarkeit.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| M01 | Verschieben (interner Slot-Picker) | WF-P16 Terminbuchung | Modal | Bauen | Validiert | aus S06 | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/M01 Verschieben.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| M02 | Stornieren (Grund + Auto-Mail) | WF-P16 Terminbuchung | Modal | Bauen | Validiert | aus S05/S06 (auch Bulk) | [MD](<P16 Termine/WF-P16 Terminbuchung/Screens/M02 Stornieren.md>) | - | [Canvas](<P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas>) |
| S01 | Signaturen im Projekt | WF-P16 E-Signatur | Projekt-Sektion | Bauen | Validiert | Projekt-Detail | [MD](<P16 Termine/WF-P16 E-Signatur/Screens/S01 Signaturen im Projekt.md>) | - | [Canvas](<P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.canvas>) |
| S02 | Signatur-Wizard | WF-P16 E-Signatur | Wizard | Bauen | Validiert | aus Projekt-Detail/S01 | [MD](<P16 Termine/WF-P16 E-Signatur/Screens/S02 Signatur-Wizard.md>) | - | [Canvas](<P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.canvas>) |
| S03 | Signatur-Detail & Status | WF-P16 E-Signatur | Detail | Bauen | Validiert | Signatur öffnen | [MD](<P16 Termine/WF-P16 E-Signatur/Screens/S03 Signatur-Detail.md>) | - | [Canvas](<P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.canvas>) |
| S04 | Signieren per Link 🌐 | WF-P16 E-Signatur | BESPOKE-Public | Bauen | Validiert (Delta) | `/sign/:token` | [MD](<P16 Termine/WF-P16 E-Signatur/Screens/S04 Signieren per Link.md>) | - | [Canvas](<P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.canvas>) |
| V01 | Vor Ort unterschreiben 📱 | WF-P16 E-Signatur | BESPOKE-Mobile | Bauen | Validiert | Touch-Modus aus S02 | [MD](<P16 Termine/WF-P16 E-Signatur/Screens/V01 Vor Ort unterschreiben.md>) | - | [Canvas](<P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.canvas>) |
| M01 | Signatur zurueckziehen | WF-P16 E-Signatur | Confirm-Modal | Bauen | Validiert | aus S03 | [MD](<P16 Termine/WF-P16 E-Signatur/Screens/M01 Zurueckziehen.md>) | - | [Canvas](<P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.canvas>) |
| S01 | Chat-Index | WF-P15 Team-Chat | BESPOKE | Bauen | Entwurf | `/chat` | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/S01 Chat-Index.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| S02 | Channel-Detail | WF-P15 Team-Chat | BESPOKE | Bauen | Entwurf | `/chat/:id` | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/S02 Channel-Detail.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| S03 | Thread-Detail | WF-P15 Team-Chat | BESPOKE Panel/Route | Bauen | Entwurf | `/chat/:id/thread/:thread_id` | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/S03 Thread-Detail.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| S04 | Angepinnte Nachrichten | WF-P15 Team-Chat | Liste | Bauen | Entwurf | `/chat/:id/pinned` | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/S04 Angepinnte Nachrichten.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| S05 | Meine Mentions | WF-P15 Team-Chat | Liste | Bauen | Entwurf | `/chat/mentions` | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/S05 Meine Mentions.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| S06 | Chat-Suche | WF-P15 Team-Chat | Suche/Liste | Bauen | Entwurf | `/chat/search` | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/S06 Chat-Suche.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| S07 | Channel-Einstellungen | WF-P15 Team-Chat | Settings | Bauen | Entwurf | `/chat/:id/settings` | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/S07 Channel-Einstellungen.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| S08 | Admin-Chat-Uebersicht | WF-P15 Team-Chat | Admin Liste/Detail | Bauen | Entwurf | `/admin/chat` | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/S08 Admin-Chat.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| V01 | Monteur-Handy-Chat 📱 | WF-P15 Team-Chat | BESPOKE-Mobile | Bauen | Entwurf | Variante von S02 | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/V01 Monteur-Handy-Chat.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| M01 | Neuer Channel / DM | WF-P15 Team-Chat | Modal | Bauen | Entwurf | aus S01/S02 | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/M01 Neuer Channel DM.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
| M02 | DM-Audit-Begruendung | WF-P15 Team-Chat | Modal | Bauen | Entwurf | aus S08 | [MD](<P15 Kommunikation/WF-P15 Team-Chat/Screens/M02 DM-Audit-Begruendung.md>) | - | [Canvas](<P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas>) |
---
@@ -308,9 +341,30 @@ Diese Datei ist der erste Ort, um zu sehen:
| WF-P12 Flow-Editor | Editor-Anordnung | Genommen | Katalog links, Canvas Mitte, Konfig-Panel rechts (n8n-Muster); Katalog einklappbar. | Validiert 2026-07-09 |
| WF-P12 Flow-Editor | Anlegen-Flow | Genommen | Start-Auswahl-Modal: leer ODER Vorlage (Katalog eingebettet). | Validiert 2026-07-09 |
| WF-D-FORM Form Builder | Paket eingebaut | Genommen | Mitarbeiterinnen-Paket wurde als `WF-D-FORM Form Builder` in den Vault uebernommen. | Ursprungsname war `WF-P16 Form Builder`; wegen bestehendem `P16 Termine` bewusst auf D-FORM normalisiert |
| WF-D-FORM Form Builder | Simple Builder als Hauptfluss | Review | S02 ist der empfohlene Google-Forms-nahe Haupteditor fuer Handwerksbetriebe; ADV-S01/ADV-S01-2 bleiben Referenz. | David prueft Richtung und Subframe-Feinschliff |
| WF-D-FORM Form Builder | Simple Builder als Hauptfluss | Review | S02 ist der empfohlene Google-Forms-nahe Haupteditor fuer Handwerksbetriebe; S01B und die alten Advanced-Screens wurden aus dem Obsidian-Handoff entfernt. | David prueft Richtung und Subframe-Feinschliff |
| WF-D-FORM Form Builder | Lead-Feldzuweisung | Review | S02L ordnet Formularfragen per Dropdown Lead-Feldern zu; E05 deckt fehlende oder unmoegliche Zuweisungen ab. | Davids Feedback aus dem Mitarbeiterinnen-Paket uebernommen |
| WF-D-FORM Form Builder | Scope-Abgrenzung | Genommen | D-FORM umfasst Builder, Public Form, Public States, Design und Antworten-Tabelle; Booking, Kalender, Signatur und HR bleiben eigene Pakete. | Handoff-Datei angelegt |
| WF-P16 Kalender | Vollwertiger Kalender | Genommen (Delta) | Termine anlegen/bearbeiten/loeschen statt reiner Lese-Sicht; eigenes Termin-Objekt noetig. | Change-Request an Dev (AK-P16a); validiert 2026-07-09 |
| WF-P16 Kalender | Einladen: Team + Kontakte + freie E-Mails | Genommen (Delta) | Interne sehen Termin im HiveGrid-Kalender, Externe bekommen Mail + .ics; Zu-/Absagen sichtbar. | Teil des CR an Dev |
| WF-P16 Kalender | Kollegen-Overlay (Verfuegbarkeit) | Genommen (Delta) | Andere Kalender einblendbar; fremde private Google-Termine nur als »belegt«. | Teil des CR an Dev |
| WF-P16 Kalender | Verbinden-Einstieg im Kalender | Genommen | Hinweis-Karte solange nichts verbunden, danach Zahnrad -> `/calendar/settings`; kein Admin-Umweg (Verbindung pro Nutzer). | OAuth/Trennen aus WF-P5 wiederverwendet |
| WF-P16 Kalender | Konflikt-Verlauf-Ort | Genommen | Sektion in den Kalender-Einstellungen (letzte 50, Klartext); zusaetzlich Benachrichtigung je Aufloesung. | Muster wie Abgleich-Verlauf WF-P5 |
| WF-P16 Kalender | Outlook-Teaser | Genommen | Provider-Auswahl zeigt Outlook ausgegraut »bald verfuegbar« (v1 nur Google aktiv). | UI bleibt provider-neutral |
| WF-P16 Terminbuchung | Kunden-Strecke als 3 Screens + Handy-Frame | Genommen | Termin waehlen -> Fragen -> Bestaetigung als eigene Frames; Handy-Frame vom Slot-Picker. | Validiert 2026-07-09 |
| WF-P16 Terminbuchung | Self-Service absagen/verschieben per Mail-Link | Genommen (Delta) | »Wie Calendly«: eigene oeffentliche Seite S04, signierter Link, kein Login. | Change-Request an Dev (AK-P16b) |
| WF-P16 Terminbuchung | Buchungs-Detail als eigene Detailseite | Genommen | Karteikarten-Muster (P6): links Termin + Verknuepfungen, rechts Antworten + Notizen. | Validiert 2026-07-09 |
| WF-P16 Terminbuchung | Verfuegbarkeit: jeder selbst + Admin alle | Genommen | Passt zur Pro-Nutzer-Kalender-Verbindung; Admin-Mitarbeiter-Wechsler in S09. | Validiert 2026-07-09 |
| WF-P16 Terminbuchung | Kunden-Fragen mit Feld-Zuordnung zum Lead | Genommen | Im Editor je Feld festlegen, wohin es im Lead-Eingang wandert (nichts abtippen). | Davids Punkt 2026-07-09 |
| WF-P16 Terminbuchung | Fragen-Felder v1 ohne Formular-Baukasten | Genommen | Einfache Feld-Liste im Editor; D-FORM liegt jetzt als Review-Draft vor und wird spaeter ueber eine klare Schnittstelle eingesteckt. | Schnittstelle mit Dev klaeren |
| WF-P16 E-Signatur | Signatur haengt am Projekt-Kern | Genommen | `ProjektSignatureDocument`/`Signer`; kein Deal-Objekt. | Pivot aus AK-P16d |
| WF-P16 E-Signatur | SES-Eigenbau als Default | Genommen | Fern-Link + OTP und Touch vor Ort; PandaDoc nur BYOK-Opt-in, wenn verbunden. | Validiert 2026-07-09 |
| WF-P16 E-Signatur | Kunden-Signierseite als eigener Screen | Genommen (Delta) | S04 `/sign/:token` mit Branding, OTP, PDF-Pruefung, Intent und Signatur. | D-P16 Screen-Luecke geschlossen |
| WF-P16 E-Signatur | Vor-Ort-Signatur als eigener Mobile-Frame | Genommen | Geraet wird dem Kunden uebergeben; keine interne Navigation sichtbar. | Verwandschaft zu WF-P9 Abnahme |
| WF-P15 Team-Chat | Chat als eigener Bespoke-Flow | Entwurf | Real-Time-Verlauf, Composer, Presence, Threads und Reconnect passen nicht in Standard-A2/A3. | Mit David validieren |
| WF-P15 Team-Chat | Thread als eigener Nachweis-Frame | Entwurf | Umsetzung spaeter als Side-Panel oder Route moeglich; Planung braucht einen Frame. | Mit David validieren |
| WF-P15 Team-Chat | Projekt-Channels entity-linked | Entwurf | Projektmitglieder werden synchronisiert; Einstieg im Projekt-Detail, View bleibt S02. | Schnittstelle zu P8/P9 klaeren |
| WF-P15 Team-Chat | Admin-DM-Audit mit Begruendung | Entwurf | DM-Einsicht nur ueber M02, Banner im geoeffneten DM, Audit-Log. | AK-P15b Vorgabe; mit David validieren |
| WF-P15 Team-Chat | Monteur-Handy-Frame | Entwurf | Vereinfachte mobile View mit Foto-Direktupload, Push/Offline-Hinweis. | Mit David validieren |
---
@@ -337,6 +391,17 @@ Diese Liste sammelt Punkte, die in einzelnen Paketen als `Backlog`, `Spaeter` od
| WF-P2 Konto/Workspace loeschen | Voller DSGVO-/Export-Wizard | Backlog | Datenexport-Step, Reauth, Confirm Phrase, Countdown und Legal/Billing-Details spaeter |
| WF-P2 Workspace Settings | Workspace-Settings ausbauen | Backlog | Voraussetzung fuer Konto-/Workspace-Loeschflows; Bereich ist noch nicht gebaut |
| WF-P2 Admin RBAC | V2-Backlog | Dokumentiert | Reassign, Rollen-Loeschen mit Ersatzrolle, Gruppen, Rechtekatalog, Rollen-Audit, Rollen-Review, Templates, Rechte-Matrix, Bulk-Aktionen, erweiterter Admin-Schutz |
| WF-P16 Kalender | Outlook-Sync | Backlog (v2) | Interface bleibt provider-agnostisch; in der UI als Teaser sichtbar |
| WF-P16 Kalender | Termin-Erinnerungen (Push/Mail) | Backlog/Klaeren | Mit Benachrichtigungen (P3) klaeren; v2-Kandidat |
| WF-P16 Kalender | Tages-Ansicht | Backlog/Klaeren | Zusaetzlich zu Monat/Woche? Beim Subframe-Bau entscheiden |
| WF-P16 Terminbuchung | Wunsch-Mitarbeiter / Round-Robin | Backlog (v2) | v1 nur »erster freier Mitarbeiter«; Kunde waehlt keinen Mitarbeiter |
| WF-P16 Terminbuchung | Personalisierte Buchungslinks | Backlog (v2) | v1 nur URL + QR + iFrame |
| WF-P16 E-Signatur | Freier PDF-Feldplatzierer | Backlog (v2) | v1 nutzt standardisierte Signatur-/Certificate-Platzierung; kein PDF-Tagger |
| WF-P16 E-Signatur | QES/D-Trust | Backlog (v2) | v1 SES reicht fuer SHK; QES nur spaeter fuer Sonderfaelle |
| WF-P16 E-Signatur | Automatische Reminder-Regeln | Backlog/Klaeren | v1 manuelle Erinnerung; spaeter mit Benachrichtigungen/Automationen klaeren |
| WF-P15 Team-Chat | WhatsApp / Unified Inbox | Backlog (v2) | Team-Chat ist intern; externe Kundenkommunikation bleibt ausserhalb v1 |
| WF-P15 Team-Chat | HalloPetra / KI-Chat | Backlog (v2) | Nicht Teil von D-CHAT; Hilfe-Chat/Telefonassistent sind eigene Themen |
| WF-P15 Team-Chat | Voller Read-Receipt-Detaildialog | Backlog/Klaeren | v1 zeigt »X von Y gelesen«; Detail-Liste nur bei Bedarf |
---
+41 -36
View File
@@ -2,57 +2,53 @@
"nodes":[
{"id":"904c5ece127e2e4c","type":"group","x":5497,"y":3020,"width":1540,"height":1400,"label":"VERWALTUNG (WORKSPACE-EINSTELLUNGEN)"},
{"id":"88792c50986c93db","type":"group","x":1950,"y":960,"width":2587,"height":740,"color":"2","label":"VERTRIEB — vom Anruf zum Auftrag"},
{"id":"77c19412215a977c","type":"group","x":5037,"y":960,"width":2260,"height":740,"color":"2","label":"AUFTRAG & BAUSTELLE"},
{"id":"41b8d85d3bb8d47d","type":"group","x":-160,"y":0,"width":1850,"height":740,"color":"6","label":"BASIS — gilt für alle Features"},
{"id":"ca7223940f6e1d29","type":"group","x":2520,"y":2080,"width":2317,"height":740,"label":"TERMINE & FORMULARE"},
{"id":"77c19412215a977c","type":"group","x":5037,"y":960,"width":2260,"height":740,"color":"2","label":"AUFTRAG & BAUSTELLE"},
{"id":"e97e13901e405fcd","type":"group","x":5037,"y":2080,"width":1540,"height":740,"label":"KOMMUNIKATION"},
{"id":"8acc5d7d61317076","type":"group","x":2110,"y":3020,"width":1450,"height":740,"label":"AUTOMATIONEN"},
{"id":"070f258760fab4e9","type":"group","x":760,"y":3020,"width":1190,"height":740,"label":"AUFGABEN & DATEIEN — stecken in jedem Feature"},
{"id":"db7d9db3cd7939b0","type":"group","x":3997,"y":0,"width":1040,"height":740,"label":"SUCHE & DASHBOARD"},
{"id":"c3172228336521df","type":"group","x":7197,"y":3020,"width":540,"height":1400,"label":"PLATTFORM-ADMIN — unsere interne Verwaltung"},
{"id":"00d6b92d3845c185","type":"group","x":1160,"y":2080,"width":1190,"height":520,"label":"E-MAIL-MARKETING"},
{"id":"41b8d85d3bb8d47d","type":"group","x":-160,"y":0,"width":1850,"height":740,"color":"6","label":"BASIS — gilt für alle Features"},
{"id":"db7d9db3cd7939b0","type":"group","x":3997,"y":0,"width":1040,"height":740,"label":"SUCHE & DASHBOARD"},
{"id":"c3172228336521df","type":"group","x":7297,"y":3020,"width":540,"height":1400,"label":"PLATTFORM-ADMIN — unsere interne Verwaltung"},
{"id":"7a26f88c260892eb","type":"group","x":1950,"y":0,"width":557,"height":740,"color":"3","label":"WEBSITE 🌐"},
{"id":"2025c7621bb63c98","type":"group","x":2737,"y":0,"width":540,"height":740,"color":"4","label":"LOGIN & ZUGÄNGE"},
{"id":"3c6e5b1ea4a27913","type":"group","x":7977,"y":3020,"width":540,"height":740,"label":"HR (MITARBEITER)"},
{"id":"d9868dadb782f253","type":"text","text":"## Kontakte & Organisationen\n**Ticket:** `D-CRM` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/contacts`\n\n**Was drin ist:** Kontakt-Liste, Organisations-Liste, Kontakt-Detailseite (die Vorlage für ALLE Detailseiten), eigene Felder, Tags, Duplikate zusammenführen\n\n**So funktioniert's:** Ein Kontakt ist Privatperson oder Organisation und hat einen Status (Kontakt → Kunde → Bestandskunde). Auf der Detailseite sieht man alles: Projekte, Mails, Anrufe, Aufgaben, Dateien, Notizen.","x":3077,"y":1040,"width":460,"height":360,"color":"5"},
{"id":"a-kontakte-pkg","type":"file","file":"02 Wireframes/P6 Kontakte/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas","x":3077,"y":1440,"width":460,"height":220},
{"id":"e10a35560a461111","type":"text","text":"## Kanban-Board & Pipelines (Projekte)\n**Ticket:** `D-P8` + `D-KANBAN` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/projects` + Admin\n\n**Was drin ist:** Kanban-Board mit Spalten je Status (Karten ziehen = Status wechseln), Projekt-Liste, Projekt-Detailseite, Pipeline-Einstellungen (Spalten, Rechte, Pflichtfelder), Verlust-Gründe\n\n**So funktioniert's:** Ein Projekt wandert durch Boards — »Vertrieb« und »Auftrag« sind nur zwei Boards für denselben Datensatz. Gewonnen = wechselt aufs Auftrags-Board. Wer welche Felder sieht (z. B. Umsatz), ist einstellbar.","x":4037,"y":1040,"width":460,"height":360,"color":"2"},
{"id":"a-pipelines-pkg","type":"file","file":"02 Wireframes/P8 Pipelines/WF-P8 Pipelines/WF-P8 Pipelines.canvas","x":4037,"y":1440,"width":460,"height":220},
{"id":"3c6e5b1ea4a27913","type":"group","x":7297,"y":2080,"width":540,"height":740,"label":"HR (MITARBEITER)"},
{"id":"8272764aa65537b0","type":"text","text":"## Lead-Eingang (Anfragen)\n**Ticket:** `D-P7` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/leads`\n\n**Was drin ist:** Eingangs-Liste aller Anfragen (mit Quelle, Spam-Verdacht, Duplikat-Hinweis), Anfrage-Detail, »Zu Projekt machen«, Statistiken, Quellen-Verwaltung, Spam-Schutz-Einstellungen\n\n**So funktioniert's:** Alle Anfragen (Website, Formulare, Anrufe, Buchungen) landen hier. Wer sie bearbeiten darf (Freigabe = ja), macht daraus ein Projekt und hängt den Kontakt dran.","x":2007,"y":1040,"width":460,"height":360,"color":"5"},
{"id":"a-leads-pkg","type":"file","file":"02 Wireframes/P7 Leads/WF-P7 Leads/WF-P7 Leads.canvas","x":2007,"y":1440,"width":460,"height":220},
{"id":"77ebfde5a3a05b8a","type":"text","text":"## Online-Terminbuchung 🌐\n**Ticket:** `D-BOOK` + `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** 🌐 Buchungslink + `/bookings`\n\n**Was drin ist:** 🌐 Buchungs-Seite für Kunden (freien Termin wählen → Formular → Bestätigung mit Kalender-Datei), intern: Buchungs-Liste (verschieben, stornieren, No-Show), Buchungsseiten-Editor, Verfügbarkeits-Zeiten\n\n**So funktioniert's:** Kunde bucht selbst, der erste freie Mitarbeiter bekommt den Termin, die Anfrage landet im Lead-Eingang. Muss am schönsten aussehen — ist öffentlich.","x":3067,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"28bd46ecb4eaa069","type":"text","text":"## Kalender\n**Ticket:** `D-BOOK` + `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** `/calendar` + Einstellungen\n\n**Was drin ist:** Monats-/Wochen-Ansicht mit allen Terminen (Google-Kalender + Buchungen + Plantafel, je mit Herkunfts-Marker), Google-Kalender verbinden, Konflikt-Übersicht\n\n**So funktioniert's:** Läuft in beide Richtungen mit Google (Outlook kommt in v2). Fremde private Termine erscheinen nur als »belegt«.","x":3837,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"d9868dadb782f253","type":"text","text":"## Kontakte & Organisationen\n**Ticket:** `D-CRM` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/contacts`\n\n**Was drin ist:** Kontakt-Liste, Organisations-Liste, Kontakt-Detailseite (die Vorlage für ALLE Detailseiten), eigene Felder, Tags, Duplikate zusammenführen\n\n**So funktioniert's:** Ein Kontakt ist Privatperson oder Organisation und hat einen Status (Kontakt → Kunde → Bestandskunde). Auf der Detailseite sieht man alles: Projekte, Mails, Anrufe, Aufgaben, Dateien, Notizen.","x":3077,"y":1040,"width":460,"height":360,"color":"5"},
{"id":"a-kontakte-pkg","type":"file","file":"02 Wireframes/P6 Kontakte/WF-P6 Kontakte und Organisationen/WF-P6 Kontakte und Organisationen.canvas","x":3077,"y":1440,"width":460,"height":220},
{"id":"77ebfde5a3a05b8a","type":"text","text":"## Online-Terminbuchung 🌐\n**Ticket:** `D-BOOK` + `D-P16` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** 🌐 Buchungslink + `/bookings`\n\n**Was drin ist:** 🌐 Buchungs-Seite für Kunden (freien Termin wählen → Formular → Bestätigung mit Kalender-Datei), intern: Buchungs-Liste (verschieben, stornieren, No-Show), Buchungsseiten-Editor (Fragen mit Feld-Zuordnung zum Lead), Verfügbarkeits-Zeiten — Davids Delta: Kunde kann per Mail-Link selbst absagen/verschieben\n\n**So funktioniert's:** Kunde bucht selbst, der erste freie Mitarbeiter bekommt den Termin, die Anfrage landet im Lead-Eingang. Muss am schönsten aussehen — ist öffentlich.","x":3067,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"6b8c7d3bc3ee7449","type":"text","text":"## Formulare (Baukasten) 🌐\n**Ticket:** `D-FORM` + `D-P16` (Teil) · **Status:** 🟡 Review-Draft (Mitarbeiterinnen-Paket eingebaut, David Review offen)\n**Wo:** `/forms` + öffentlicher Link\n\n**Was drin ist:** Formular-Zentrale, einfacher Google-Forms-naher Builder S02, Lead-Feldzuweisung S02L/E05, Design, Antworten-Tabelle, 🌐 öffentliches Formular mit Erfolg/Blocker/Submit-Fehler\n\n**So funktioniert's:** S02 ist der Hauptfluss für Handwerksbetriebe; Advanced-Canvas, Logic/Actions und Publish-Blocker bleiben als Referenz/Power-User-Richtung. D-FORM kann später in Terminbuchung, HR und Abnahme-Vorlagen eingesteckt werden.","x":2560,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"a-d-form-pkg","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas","x":2560,"y":2560,"width":460,"height":220},
{"id":"4cce52e2e3bd8823","type":"text","text":"## Versand-Technik & Statistiken 🌐\n**Ticket:** `D-P14` · **Status:** ⬜ offen\n**Wo:** `/email-marketing` + Einstellungen\n\n**Was drin ist:** Eigene Absender-Domain einrichten (mit Copy-Paste-Anleitung), Kampagnen-Übersicht + Statistiken (zugestellt/geöffnet/geklickt), gesperrte Empfänger, Vorlagen, 🌐 Abmelde-Seite\n\n**So funktioniert's:** Mails an Kunden tauchen automatisch am Kontakt auf (BCC-Trick, kein Postfach-Anschluss nötig — der kommt in v2).","x":1850,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"b789fc765f833f45","type":"text","text":"## Digital unterschreiben (E-Signatur)\n**Ticket:** `D-P16` (Teil) · **Status:** ⬜ offen\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Angebot als PDF hochladen → Unterzeichner festlegen → Kunde unterschreibt per Link (mit SMS/Mail-Code) oder direkt auf dem Gerät → Status je Unterzeichner, Erinnerung, Widerruf\n\n**So funktioniert's:** Hängt direkt am Projekt (»Angebot zur Signatur senden«). Eigene Lösung, kein Pflicht-Drittanbieter.","x":4337,"y":2160,"width":460,"height":360,"color":"5"},
{"id":"903e3384b0a5e623","type":"text","text":"**Detail-Flows:** 9 Wireframe-Pakete mit eigenen Canvases in `02 Wireframes/P2 Auth/` (Login, Signup, Reset, Set Password, 2FA, RBAC …) — siehe Tracker","x":2777,"y":480,"width":460,"height":220},
{"id":"ab16fe58ff28c0ac","type":"text","text":"## Kampagnen & Empfängerlisten\n**Ticket:** `D-KAMP` · **Status:** ⬜ offen\n**Wo:** `/email-marketing`\n\n**Was drin ist:** Kampagne erstellen in 6 Schritten (Absender → Inhalt → Empfänger → Test-Mail → Zeitpunkt → Check) · Empfängerlisten (Segmente) mit Filtern bauen\n\n**So funktioniert's:** Vor dem Versand prüft eine Checkliste alles Rechtliche (Domain bestätigt? Abmelde-Link? Impressum?) — bei Rot wird nicht gesendet.","x":1200,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"401d8270854bebac","type":"text","text":"## Team-Chat 📱\n**Ticket:** `D-CHAT` · **Status:** ⬜ offen\n**Wo:** `/chat`\n\n**Was drin ist:** Channel-Liste, Chat-Verlauf (Antwort-Threads, Emoji-Reaktionen, gelesen-von, Anhänge), Erwähnungen mit @, angepinnte Nachrichten, Suche, Direktnachrichten\n\n**So funktioniert's:** Jedes Projekt kann seinen eigenen Channel haben (Team wird automatisch synchron gehalten). Monteure: vereinfachte Handy-Ansicht mit Foto-Direktupload. Admin kann DMs nur mit Begründung einsehen.","x":5077,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"4bb807ef5e3c8dee","type":"text","text":"## Projekt-Akte (Auftrag) 📱\n**Ticket:** `D-P9` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Reiter am Projekt: Team-Mitglieder, Termine, **Rechnungen (neu in v1)**, Checklisten & Mängel, Aufgaben, Dateien, Abnahmen · dazu Projekt-Vorlagen und Abnahme-Formular-Vorlagen\n\n**So funktioniert's:** Alles zum Auftrag an einem Ort. Am Handy reduziert: Stammdaten, heutige Aufgaben, Abnahme-Knopf, Foto direkt hochladen.","x":5077,"y":1040,"width":460,"height":360,"color":"2"},
{"id":"28bd46ecb4eaa069","type":"text","text":"## Kalender\n**Ticket:** `D-BOOK` + `D-P16` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/calendar` + Einstellungen\n\n**Was drin ist:** Monats-/Wochen-Ansicht mit allen Terminen (Google-Kalender + Buchungen + Plantafel, je mit Herkunfts-Marker), Google-Kalender verbinden, Konflikt-Übersicht — Davids Delta: Termine anlegen + einladen (Team/Kontakte/freie E-Mails), Kollegen-Overlay\n\n**So funktioniert's:** Läuft in beide Richtungen mit Google (Outlook kommt in v2). Fremde private Termine erscheinen nur als »belegt«.","x":3837,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"903e3384b0a5e623","type":"text","text":"**Detail-Flows:** 9 Wireframe-Pakete mit eigenen Canvases in `02 Wireframes/P2 Auth/` (Login, Signup, Reset, Set Password, 2FA, RBAC …) — siehe Tracker","x":2777,"y":480,"width":460,"height":220},
{"id":"d48196ed3e229be5","type":"text","text":"**Standards:** `04 Standards/Subframe UI Standards/` — validierte Layout-Regeln","x":690,"y":480,"width":460,"height":220},
{"id":"e10a35560a461111","type":"text","text":"## Kanban-Board & Pipelines (Projekte)\n**Ticket:** `D-P8` + `D-KANBAN` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/projects` + Admin\n\n**Was drin ist:** Kanban-Board mit Spalten je Status (Karten ziehen = Status wechseln), Projekt-Liste, Projekt-Detailseite, Pipeline-Einstellungen (Spalten, Rechte, Pflichtfelder), Verlust-Gründe\n\n**So funktioniert's:** Ein Projekt wandert durch Boards — »Vertrieb« und »Auftrag« sind nur zwei Boards für denselben Datensatz. Gewonnen = wechselt aufs Auftrags-Board. Wer welche Felder sieht (z. B. Umsatz), ist einstellbar.","x":4037,"y":1040,"width":460,"height":360,"color":"2"},
{"id":"a-pipelines-pkg","type":"file","file":"02 Wireframes/P8 Pipelines/WF-P8 Pipelines/WF-P8 Pipelines.canvas","x":4037,"y":1440,"width":460,"height":220},
{"id":"a-d-form-pkg","type":"file","file":"02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas","x":2560,"y":2560,"width":460,"height":220},
{"id":"a-kalender-pkg","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Kalender/WF-P16 Kalender.canvas","x":3837,"y":2560,"width":460,"height":220},
{"id":"a-buchung-pkg","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 Terminbuchung/WF-P16 Terminbuchung.canvas","x":3067,"y":2560,"width":460,"height":220},
{"id":"b789fc765f833f45","type":"text","text":"## Digital unterschreiben (E-Signatur)\n**Ticket:** `D-P16` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** PDF aus Projekt-Dateien wählen/hochladen → Unterzeichner + Reihenfolge → Kunde unterschreibt per Link mit Code oder direkt vor Ort → Status je Unterzeichner, Erinnerung, Zurückziehen, Downloads\n\n**So funktioniert's:** Hängt direkt am Projekt (»Zur Signatur senden«). SES-Eigenbau ist Default; PandaDoc nur optional BYOK. Davids Delta: eigene Kunden-Signierseite als Frame.","x":4337,"y":2160,"width":460,"height":360,"color":"5"},
{"id":"3e27875daca5713d","type":"text","text":"## Login, Registrierung & Workspace\n**Ticket:** `D-P2` · **Status:** ✅ validiert / in Subframe\n**Wo:** Login-Seiten + Einstellungen\n\n**Was drin ist:** Registrierung, Login + 2FA, Passwort vergessen/ändern, Workspace-Auswahl + neuer Workspace, Profil & Sicherheit, Mitarbeiter & Rollen (Admin)\n\n**Stand:** 9 Wireframe-Pakete fertig gebaut. Konto/Workspace löschen bewusst geparkt. → `02 Wireframes/P2 Auth/`","x":2777,"y":80,"width":460,"height":360,"color":"4"},
{"id":"89c0813f7e139a88","type":"text","text":"## Dashboard (Startseite)\n**Ticket:** `D-DASH` (Teil) · **Status:** ⬜ offen\n**Wo:** `/dashboard`\n\n**Was drin ist:** 3 feste Ansichten je Rolle: Chef (Umsatz, Projekte, Auslastung) · Büro (Projekte, Aufgaben, Anrufe) · Monteur 📱 (meine Termine, Projekte, Aufgaben)\n\n**So funktioniert's:** Kacheln mit Zahlen, Listen und Trend-Charts, live aktualisiert. Kein freies Umbauen in v1 — nur Filter/Zeitraum einstellbar.","x":4037,"y":80,"width":460,"height":360,"color":"2"},
{"id":"4a4e5be847a54e5f","type":"text","text":"## Suche (Cmd+K)\n**Ticket:** `D-DASH` (Teil) · **Status:** ⬜ offen\n**Wo:** überall + `/search`\n\n**Was drin ist:** Such-Fenster per Tastenkürzel: tippen, Treffer nach Typ gruppiert, mit Pfeiltasten navigieren · dazu große Such-Seite mit Filtern\n\n**So funktioniert's:** Findet Kontakte, Projekte, Dateien usw. — zeigt nur, was man sehen darf.","x":4537,"y":80,"width":460,"height":360,"color":"1"},
{"id":"ce5632682989a6ca","type":"text","text":"## Website (Landing & Demo-Anfrage)\n**Ticket:** `D-WEB` · **Status:** ⬜ offen\n**Wo:** 🌐 hivegrid.de\n\n**Was drin ist:** Startseite, Features-Seite, Preise-Teaser, Demo-Anfrage-Formular\n\n**Warum wichtig:** Der erste Eindruck nach außen. Farben/Schriften sind dieselben wie in der App. Demo-Anfragen landen im Lead-Eingang.","x":2007,"y":80,"width":460,"height":360,"color":"2"},
{"id":"c02969250252a3ab","type":"text","text":"## Feinschliff vor Launch\n**Ticket:** `D-POLISH` · **Status:** ⬜ offen\n**Wo:** 🌐 alles öffentlich Sichtbare\n\n**Was drin ist:** Letzter Polier-Durchgang: Terminbuchungs-Seite, öffentliche Formulare, Marketing-Mails · danach Screenshots als »So muss es aussehen«-Referenz einfrieren\n\n**Warum wichtig:** Kommt ganz am Ende, direkt vor dem Launch. Braucht Terminbuchung + Dashboard fertig.","x":1190,"y":80,"width":460,"height":360,"color":"3"},
{"id":"d48196ed3e229be5","type":"text","text":"**Standards:** `04 Standards/Subframe UI Standards/` — validierte Layout-Regeln","x":690,"y":480,"width":460,"height":220},
{"id":"d53e7ea48a9b1e6c","type":"text","text":"## UI-Baukasten (Listen, Formulare, Modals …)\n**Ticket:** `D-D0b` · **Status:** ✅ validiert\n**Wo:** überall in der App\n\n**Was drin ist:** Fertige Bausteine: Listen mit Filter, Detail-Seiten, Formular-Felder (12 Typen), Dialoge/Wizards, Settings-Seiten, Leer-/Lade-/Fehler-Zustände + Kleinteile (Buttons, Tags, Charts, Unterschriften-Feld …)\n\n**Warum wichtig:** Einmal designen, überall wiederverwenden. Layout-Standards liegen in `04 Standards`. ✅ Bereits erledigt.","x":690,"y":80,"width":460,"height":360,"color":"4"},
{"id":"b3cad562971d30a5","type":"text","text":"## App-Gerüst (Sidebar, Topbar & Design)\n**Ticket:** `D-D0a` · **Status:** ✅ gebaut (David, in Subframe)\n**Wo:** überall in der App\n\n**Was drin ist:** Sidebar (Module ein-/ausblendbar je Abo, Handy-Variante 📱), Topbar (Workspace-Wechsler, Suche, Glocke, Profil-Menü), Breadcrumb, Warn-Banner (z. B. »Zahlung offen«), Erfolgs-/Fehlermeldungen\n\n**Stand:** Bereits gebaut und validiert. Der Rahmen, in dem jedes Feature steckt — inkl. Farben, Schriften, Hell/Dunkel.","x":-100,"y":80,"width":460,"height":360,"color":"4"},
{"id":"a-signatur-pkg","type":"file","file":"02 Wireframes/P16 Termine/WF-P16 E-Signatur/WF-P16 E-Signatur.canvas","x":4337,"y":2560,"width":460,"height":220},
{"id":"e21930b7073823f8","type":"text","text":"## Aufgaben\n**Ticket:** `D-P4` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/tasks` + überall als Reiter\n\n**Was drin ist:** Aufgaben-Liste (Meine / von mir erstellt / Alle), Aufgabe mit Frist, Priorität, Zuständigem (Person oder Gruppe), Beobachtern und Verknüpfung (Kontakt/Projekt/…)\n\n**So funktioniert's:** Einmal gebaut, überall eingebettet — jede Detailseite hat einen Aufgaben-Reiter. Aufgaben können auch aus Chat, Formularen oder Automationen entstehen (Herkunft sichtbar). Erinnerung vor/nach Frist.","x":800,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"036e2a807223753d","type":"text","text":"## Dateien\n**Ticket:** `D-P4` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/files` + überall als Reiter\n\n**Was drin ist:** Datei-Übersicht (Tabelle oder Kacheln, Filter, Mehrfach-Aktionen inkl. ZIP), Upload per Drag&Drop (mehrere gleichzeitig, mit Fortschritt), Datei-Detail mit Vorschau\n\n**So funktioniert's:** Dateien hängen an Kontakten/Projekten/… mit Rolle (z. B. »Angebot«). iPhone-Fotos (HEIC) werden automatisch zu JPG. Versionen kommen in v2.","x":1450,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"8f3127f03a5bab96","type":"text","text":"## Automations-Baukasten (Flow-Editor)\n**Ticket:** `D-FLOW` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/automations/:id/edit`\n\n**Was drin ist:** Zeichenfläche mit Bausteinen: Auslöser (neue Anfrage, Formular abgeschickt, Zeitplan …) und Aktionen (Aufgabe anlegen, Mail senden, Wenn-Dann, Warten …) per Ziehen verbinden\n\n**So funktioniert's:** Alles in verständlichem Deutsch beschriftet. Vor dem Aktivieren zeigt eine Probe-Vorschau »trifft X Datensätze« — erst bestätigen, dann läuft's. Warnt vor Endlos-Schleifen. **Aufwendigste UI der ganzen App.**","x":2150,"y":3100,"width":460,"height":360,"color":"1"},
{"id":"e6d8c36a0f89d954","type":"text","text":"## Automationen: Übersicht & Verläufe\n**Ticket:** `D-P12` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/automations`\n\n**Was drin ist:** Liste aller Automationen (aktiv/pausiert/Entwurf), Lauf-Protokolle Schritt für Schritt in Klartext, Vorlagen-Katalog (SHK-Vorlagen + eigene)\n\n**So funktioniert's:** Jeder Lauf ist nachvollziehbar; 24 h lang rückgängig machbar (Countdown-Knopf), fehlgeschlagene Schritte neu anstoßen.","x":3067,"y":3100,"width":460,"height":360,"color":"2"},
{"id":"401d8270854bebac","type":"text","text":"## Team-Chat 📱\n**Ticket:** `D-CHAT` · **Status:** ⬜ offen (Entwurf angelegt, nicht validiert)\n**Wo:** `/chat`\n\n**Entwurf enthält:** Channel-Liste, Chat-Verlauf mit Threads/Reactions/Anhängen/Read-Receipts, Composer mit @Mentions, Pins, Mentions-Aggregat, Suche, Channel-Settings, Admin-Audit, Monteur-Handy-Frame\n\n**Noch zu klären:** Paket-Schnitt gemeinsam mit David validieren. Projekt-Channel, Admin-DM-Audit und Mobile-Frame sind Vorschläge, nicht final entschieden.","x":5077,"y":2160,"width":460,"height":360,"color":"2"},
{"id":"4bb807ef5e3c8dee","type":"text","text":"## Projekt-Akte (Auftrag) 📱\n**Ticket:** `D-P9` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Reiter am Projekt: Team-Mitglieder, Termine, **Rechnungen (neu in v1)**, Checklisten & Mängel, Aufgaben, Dateien, Abnahmen · dazu Projekt-Vorlagen und Abnahme-Formular-Vorlagen\n\n**So funktioniert's:** Alles zum Auftrag an einem Ort. Am Handy reduziert: Stammdaten, heutige Aufgaben, Abnahme-Knopf, Foto direkt hochladen.","x":5077,"y":1040,"width":460,"height":360,"color":"2"},
{"id":"a-akte-pkg","type":"file","file":"02 Wireframes/P9 Auftrag/WF-P9 Projekt-Akte/WF-P9 Projekt-Akte.canvas","x":5077,"y":1440,"width":460,"height":220},
{"id":"a-chat-pkg","type":"file","file":"02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/WF-P15 Team-Chat.canvas","x":5077,"y":2560,"width":460,"height":220},
{"id":"5c72e7b04059503a","type":"text","text":"## Integrationen (Apps verbinden)\n**Ticket:** `D-P5` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/admin/integrations`\n\n**Was drin ist:** App-Katalog (nach Kategorie, mit Status-Ampel), Verbindung einrichten per Schritt-für-Schritt-Assistent, Verbindungs-Zustand + Sync-Verlauf in Klartext\n\n**So funktioniert's:** Das gemeinsame Gerüst für alle Anbindungen — E-Mail, Telefonie, Kalender, Signatur nutzen alle dieselben Verbindungs-Karten.","x":5537,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"29ca06733a9b243b","type":"text","text":"## Telefonie (Anrufe)\n**Ticket:** `D-P15` · **Status:** ⬜ offen\n**Wo:** `/calls` + Einstellungen\n\n**Was drin ist:** AirCall verbinden (Telefon-Nutzer zuordnen), Anruf-Liste + Detail (Notiz, Aufnahme), Anruf-Knopf direkt an Kontakt/Anfrage/Projekt\n\n**So funktioniert's:** Anrufe werden automatisch dem richtigen Kontakt zugeordnet. Unbekannte Nummer ruft an → wird automatisch eine Anfrage im Lead-Eingang.","x":5577,"y":2160,"width":460,"height":360,"color":"5"},
{"id":"3f83fa1a16ae69df","type":"text","text":"## Plantafel (Einsatzplanung) 📱\n**Ticket:** `D-PLAN` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/projects/plantafel`\n\n**Was drin ist:** Planungs-Raster: Zeilen = Mitarbeiter, Spalten = Zeit. Einsätze per Ziehen verschieben/verlängern, Klick auf freien Slot = neuer Einsatz\n\n**So funktioniert's:** Warnt bei Konflikten (doppelt verplant, Urlaub/krank, außerhalb Arbeitszeit) — zuweisen geht trotzdem. Monteure sehen am Handy »Meine Termine heute« mit Adresse + Navi, auch offline.","x":5897,"y":1040,"width":460,"height":360,"color":"1"},
{"id":"0f6acf7087283c0c","type":"text","text":"## Aktivitäts-Protokoll (Audit-Log)\n**Ticket:** `D-P3` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/admin/audit`\n\n**Was drin ist:** Wer hat wann was geändert — als deutscher Klartext-Satz, mit Filter und Vorher/Nachher-Vergleich, Export mit Zweck-Angabe\n\n**So funktioniert's:** Der gleiche Verlauf ist auch an jedem Datensatz einblendbar (»Verlauf dieses Objekts«). Unterscheidet Mensch / Automation / Agent / Admin.","x":6037,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"50945ed6e43505ce","type":"text","text":"## Benachrichtigungen\n**Ticket:** `D-P3` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** Glocke oben + Einstellungen\n\n**Was drin ist:** Glocke mit Ungelesen-Zähler + aufklappbare Liste (Klick springt zur Sache), eigene Seite mit allen Meldungen, Einstellungen: pro Ereignis-Typ wählen ob In-App und/oder E-Mail\n\n**So funktioniert's:** Wird von allen Features gespeist (neue Anfrage, Aufgabe fällig, Antrag genehmigt …). Master-Schalter »alle E-Mails aus«.","x":6077,"y":2160,"width":460,"height":360,"color":"5"},
{"id":"43a26561f03f72da","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas","x":6077,"y":2560,"width":460,"height":220},
{"id":"a1328943a7cef3b2","type":"file","file":"02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas","x":1450,"y":3500,"width":460,"height":220},
{"id":"98798c9044c1d4bc","type":"file","file":"02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas","x":800,"y":3500,"width":460,"height":220},
{"id":"a-integrationen-pkg","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas","x":5537,"y":3500,"width":460,"height":220},
{"id":"3864f1b74d665e1a","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas","x":6037,"y":3500,"width":460,"height":220},
{"id":"6b3c0929759a607b","type":"text","text":"## Abo & Rechnungen (für HiveGrid)\n**Ticket:** `D-P20` (Teil) · **Status:** ⚠️ Ticket braucht Recut\n**Wo:** `/admin/subscription`\n\n**Was drin ist:** Abo-Übersicht (Plan, Plätze, gebuchte Module, Test-Countdown), Verbrauchs-Balken (Automations-Läufe, Speicher), Rechnungen + Zahlungsstatus\n\n**Achtung:** Das Ticket wird gerade umgeschnitten (neuer Abrechnungs-Unterbau) — erst planen, wenn der Brief neu steht. Kein Selbst-Upgrade in v1.","x":6537,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"b3cad562971d30a5","type":"text","text":"## App-Gerüst (Sidebar, Topbar & Design)\n**Ticket:** `D-D0a` · **Status:** ✅ gebaut (David, in Subframe)\n**Wo:** überall in der App\n\n**Was drin ist:** Sidebar (Module ein-/ausblendbar je Abo, Handy-Variante 📱), Topbar (Workspace-Wechsler, Suche, Glocke, Profil-Menü), Breadcrumb, Warn-Banner (z. B. »Zahlung offen«), Erfolgs-/Fehlermeldungen\n\n**Stand:** Bereits gebaut und validiert. Der Rahmen, in dem jedes Feature steckt — inkl. Farben, Schriften, Hell/Dunkel.","x":-100,"y":80,"width":460,"height":360,"color":"4"},
{"id":"d5d3db1765287eef","type":"text","text":"# 🗺 HiveGrid Feature Map (v1)\nJede Karte = **ein Feature**. Das Ticket steht nur als Referenz dran. Übergreifende Sachen (App-Gerüst, UI-Baukasten, Feinschliff) liegen unter **Basis**.\n\n**Farben:**\n🟢 fertig/validiert · 🔴 Sonder-UI, wird von Hand designt (Tage) · 🔵 wird aus dem UI-Baukasten zusammengesteckt (Stunden) · 🟠 Mischung aus beidem · 🟣 Basis · 🟡 Feinschliff\n\n**Marker:** 🌐 öffentlich sichtbar (höchster Anspruch) · 📱 Monteur-Handy, teils offline\n\n**Unter jeder Karte:** Slot für die verknüpften Paket-Canvases (Detail-Flows aus `02 Wireframes`) — Karte anklicken öffnet den Flow.\n\n**Pfeile:** orange = Hauptkette (Anfrage → Auftrag → Geld) · grau = klare Querverbindung. Gilt etwas für **alle** Features (Automationen, Aufgaben/Dateien, Benachrichtigungen, Verbindungs-Gerüst), steht es als Text auf der Karte statt als Pfeil.\n\nAbhaklisten & Details: [[HiveGrid Map]]","x":-163,"y":-600,"width":1140,"height":380},
{
"id":"a4f86f7bfc24194b",
@@ -64,19 +60,27 @@
"width":820,
"height":420
},
{"id":"md-hivegrid-map","type":"file","file":"05 HiveGrid Map/HiveGrid Map.md","x":-683,"y":-600,"width":460,"height":300},
{"id":"3f83fa1a16ae69df","type":"text","text":"## Plantafel (Einsatzplanung) 📱\n**Ticket:** `D-PLAN` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/projects/plantafel`\n\n**Was drin ist:** Planungs-Raster: Zeilen = Mitarbeiter, Spalten = Zeit. Einsätze per Ziehen verschieben/verlängern, Klick auf freien Slot = neuer Einsatz\n\n**So funktioniert's:** Warnt bei Konflikten (doppelt verplant, Urlaub/krank, außerhalb Arbeitszeit) — zuweisen geht trotzdem. Monteure sehen am Handy »Meine Termine heute« mit Adresse + Navi, auch offline.","x":5897,"y":1040,"width":460,"height":360,"color":"1"},
{"id":"a1328943a7cef3b2","type":"file","file":"02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Dateien/WF-P4 Dateien.canvas","x":1450,"y":3500,"width":460,"height":220},
{"id":"98798c9044c1d4bc","type":"file","file":"02 Wireframes/P4 Aufgaben und Dateien/WF-P4 Aufgaben/WF-P4 Aufgaben.canvas","x":800,"y":3500,"width":460,"height":220},
{"id":"a-integrationen-pkg","type":"file","file":"02 Wireframes/P5 Integrationen/WF-P5 Integrationen/WF-P5 Integrationen.canvas","x":5537,"y":3500,"width":460,"height":220},
{"id":"a-plantafel-pkg","type":"file","file":"02 Wireframes/P9 Auftrag/WF-P9 Plantafel/WF-P9 Plantafel.canvas","x":5897,"y":1440,"width":460,"height":220},
{"id":"a-flow-pkg","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas","x":2150,"y":3500,"width":460,"height":220},
{"id":"a-autoverw-pkg","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas","x":3067,"y":3500,"width":460,"height":220},
{"id":"0f6acf7087283c0c","type":"text","text":"## Aktivitäts-Protokoll (Audit-Log)\n**Ticket:** `D-P3` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** `/admin/audit`\n\n**Was drin ist:** Wer hat wann was geändert — als deutscher Klartext-Satz, mit Filter und Vorher/Nachher-Vergleich, Export mit Zweck-Angabe\n\n**So funktioniert's:** Der gleiche Verlauf ist auch an jedem Datensatz einblendbar (»Verlauf dieses Objekts«). Unterscheidet Mensch / Automation / Agent / Admin.","x":6037,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"50945ed6e43505ce","type":"text","text":"## Benachrichtigungen\n**Ticket:** `D-P3` (Teil) · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** Glocke oben + Einstellungen\n\n**Was drin ist:** Glocke mit Ungelesen-Zähler + aufklappbare Liste (Klick springt zur Sache), eigene Seite mit allen Meldungen, Einstellungen: pro Ereignis-Typ wählen ob In-App und/oder E-Mail\n\n**So funktioniert's:** Wird von allen Features gespeist (neue Anfrage, Aufgabe fällig, Antrag genehmigt …). Master-Schalter »alle E-Mails aus«.","x":6077,"y":2160,"width":460,"height":360,"color":"5"},
{"id":"43a26561f03f72da","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Benachrichtigungen/WF-P3 Benachrichtigungen.canvas","x":6077,"y":2560,"width":460,"height":220},
{"id":"3864f1b74d665e1a","type":"file","file":"02 Wireframes/P3 Querschnitt/WF-P3 Audit Log/WF-P3 Audit Log.canvas","x":6037,"y":3500,"width":460,"height":220},
{"id":"b334f15bdd19d9ad","type":"text","text":"## Erste Schritte & Demo-Daten\n**Ticket:** `D-P20` (Teil) · **Status:** ⬜ offen\n**Wo:** `/onboarding` + Admin\n\n**Was drin ist:** Erste-Schritte-Checkliste (mit Direkt-Links, abhakbar, ausblendbar), Beispieldaten-Knopf (anlegen, zählen, wieder löschen, »Demo ausblenden«-Filter), Hell/Dunkel-Umschalter\n\n**So funktioniert's:** Kein Einrichtungs-Assistent — beim Registrieren wird alles SHK-typisch vorbefüllt, die Checkliste führt danach durch.","x":5537,"y":3760,"width":460,"height":360,"color":"5"},
{"id":"6533d410b309a48f","type":"text","text":"## Datenschutz (Export & Löschung)\n**Ticket:** `D-P21` (Teil) · **Status:** ⬜ offen\n**Wo:** `/admin/privacy` + Einstellungen\n\n**Was drin ist:** Daten-Export als ZIP (für einen Nutzer oder den ganzen Workspace), Workspace-Löschung (mehrstufig, 30 Tage Schonfrist, Passwort + 2FA), Konto-Löschung, Liste der Unterauftragsverarbeiter, AVV-Vertrag\n\n**So funktioniert's:** Letzter Baustein vor dem Launch. DSGVO-Auskunftsanfragen laufen in v1 als manuelle Anleitung, ohne eigenen Assistenten.","x":6037,"y":3760,"width":460,"height":360,"color":"5"},
{"id":"6b3c0929759a607b","type":"text","text":"## Abo & Rechnungen (für HiveGrid)\n**Ticket:** `D-P20` (Teil) · **Status:** ⚠️ Ticket braucht Recut\n**Wo:** `/admin/subscription`\n\n**Was drin ist:** Abo-Übersicht (Plan, Plätze, gebuchte Module, Test-Countdown), Verbrauchs-Balken (Automations-Läufe, Speicher), Rechnungen + Zahlungsstatus\n\n**Achtung:** Das Ticket wird gerade umgeschnitten (neuer Abrechnungs-Unterbau) — erst planen, wenn der Brief neu steht. Kein Selbst-Upgrade in v1.","x":6537,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"db76161d24fb0c1d","type":"text","text":"## Feedback & Hilfe\n**Ticket:** `D-P21` (Teil) · **Status:** ⬜ offen\n**Wo:** überall + `/help`\n\n**Was drin ist:** Schwebender Feedback-Knopf (Fehler melden / Idee / Frage, optional mit Screenshot), kleine FAQ-Seite\n\n**So funktioniert's:** Meldungen landen direkt in unserer Support-Inbox im Plattform-Admin.","x":6537,"y":3760,"width":460,"height":360,"color":"5"},
{"id":"d9ad572ae83b4d0a","type":"text","text":"## Abnahme (Baustellen-Protokoll) 📱\n**Ticket:** `D-ABN` · **Status:** 🟡 vorgeplant (Screens validiert, Subframe offen)\n**Wo:** im Projekt-Detail\n\n**Was drin ist:** Abnahme-Formular (Druckprobe, Funktionsprüfung, Zählerstände, übergebene Dokumente), Mängel mit Foto festhalten, Unterschrift Kunde + Monteur direkt am Handy, Liste aller Abnahmen je Projekt\n\n**So funktioniert's:** Nach dem Speichern unveränderbar (6 Jahre Aufbewahrung), PDF geht automatisch per Mail an den Kunden. Funktioniert offline, lädt später hoch. Mängel werden automatisch Aufgaben.","x":6767,"y":1040,"width":460,"height":360,"color":"1"},
{"id":"md-hivegrid-map","type":"file","file":"05 HiveGrid Map/HiveGrid Map.md","x":-683,"y":-600,"width":460,"height":300},
{"id":"c8d8914e45e1497e","type":"text","text":"## Plattform-Admin\n**Ticket:** `D-ADMIN` · **Status:** ⬜ offen\n**Wo:** admin.hivegrid.de\n\n**Was drin ist:** Eigener Login (2FA Pflicht), Übersichts-Dashboard (Kunden, Nutzer, Umsatz, System-Zustand), Kunden-Verwaltung (Module freischalten = Abo-Baukasten, Test verlängern, »als Kunde einloggen« mit Begründung), Nutzer-Hilfen (2FA-Reset), Feature-Schalter, Warteschlangen-Monitor, Support-Inbox, Protokoll\n\n**So funktioniert's:** Komplett eigene Welt für uns als Betreiber — Kunden sehen davon nichts. Muss funktionieren, nicht hübsch sein.","x":7237,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"abf5f779c1463715","type":"text","text":"## Hinweis\nDieses eine Ticket enthält viele kleine Features (Kunden, Schalter, Support …).\n\nBeim atomaren Durchgehen behandeln wir es als eigenen Bereich und teilen es bei Bedarf in Unter-Pakete auf. Priorität liegt aber hinter der Vertriebs-/Auftrags-Kette.","x":7237,"y":3760,"width":460,"height":360,"color":"5"},
{"id":"03e8e03ef11606a0","type":"text","text":"## HR-Bereich 📱\n**Ticket:** `D-HR` · **Status:** ⬜ offen\n**Wo:** `/hr` + HR-Admin\n\n**Was drin ist:** Startseite (Ankündigungen, offene Anträge, wer ist heute da), Urlaub & Krankmeldung (mit Genehmigung), Lohnabrechnungen, Anträge (Spesen, Hardware …), Passwort-Safe, Umfragen, Mitarbeiter-Verzeichnis, Standorte, eigene Dokumente\n\n**So funktioniert's:** Mitarbeiter-Sicht und HR-Verwaltung sind strikt getrennt; sensible Daten verschlüsselt, jedes Aufdecken protokolliert. Urlaub/krank fließt direkt in die Plantafel-Konflikte.","x":8017,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"a-akte-pkg","type":"file","file":"02 Wireframes/P9 Auftrag/WF-P9 Projekt-Akte/WF-P9 Projekt-Akte.canvas","x":5077,"y":1440,"width":460,"height":220},
{"id":"a-plantafel-pkg","type":"file","file":"02 Wireframes/P9 Auftrag/WF-P9 Plantafel/WF-P9 Plantafel.canvas","x":5897,"y":1440,"width":460,"height":220},
{"id":"a-abnahme-pkg","type":"file","file":"02 Wireframes/P9 Auftrag/WF-P9 Abnahme/WF-P9 Abnahme.canvas","x":6767,"y":1440,"width":460,"height":220},
{"id":"a-flow-pkg","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.canvas","x":2150,"y":3500,"width":460,"height":220},
{"id":"a-autoverw-pkg","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/WF-P12 Verwaltung.canvas","x":3067,"y":3500,"width":460,"height":220}
{"id":"03e8e03ef11606a0","type":"text","text":"## HR-Bereich 📱\n**Ticket:** `D-HR` · **Status:** ⬜ offen\n**Wo:** `/hr` + HR-Admin\n\n**Was drin ist:** Startseite (Ankündigungen, offene Anträge, wer ist heute da), Urlaub & Krankmeldung (mit Genehmigung), Lohnabrechnungen, Anträge (Spesen, Hardware …), Passwort-Safe, Umfragen, Mitarbeiter-Verzeichnis, Standorte, eigene Dokumente\n\n**So funktioniert's:** Mitarbeiter-Sicht und HR-Verwaltung sind strikt getrennt; sensible Daten verschlüsselt, jedes Aufdecken protokolliert. Urlaub/krank fließt direkt in die Plantafel-Konflikte.","x":7337,"y":2160,"width":460,"height":360,"color":"5"},
{"id":"c8d8914e45e1497e","type":"text","text":"## Plattform-Admin\n**Ticket:** `D-ADMIN` · **Status:** ⬜ offen\n**Wo:** admin.hivegrid.de\n\n**Was drin ist:** Eigener Login (2FA Pflicht), Übersichts-Dashboard (Kunden, Nutzer, Umsatz, System-Zustand), Kunden-Verwaltung (Module freischalten = Abo-Baukasten, Test verlängern, »als Kunde einloggen« mit Begründung), Nutzer-Hilfen (2FA-Reset), Feature-Schalter, Warteschlangen-Monitor, Support-Inbox, Protokoll\n\n**So funktioniert's:** Komplett eigene Welt für uns als Betreiber — Kunden sehen davon nichts. Muss funktionieren, nicht hübsch sein.","x":7337,"y":3100,"width":460,"height":360,"color":"5"},
{"id":"abf5f779c1463715","type":"text","text":"## Hinweis\nDieses eine Ticket enthält viele kleine Features (Kunden, Schalter, Support …).\n\nBeim atomaren Durchgehen behandeln wir es als eigenen Bereich und teilen es bei Bedarf in Unter-Pakete auf. Priorität liegt aber hinter der Vertriebs-/Auftrags-Kette.","x":7337,"y":3760,"width":460,"height":360,"color":"5"}
],
"edges":[
{
@@ -303,6 +307,7 @@
],
"metadata":{
"version":"1.0-1.0",
"frontmatter":{}
"frontmatter":{},
"startNode":"306e93d5a09ecb25"
}
}
+41 -32
View File
@@ -3,7 +3,7 @@ kind: map
project: HiveGrid Screen Project
area: HiveGrid Map
status: active
stand: 2026-07-08
stand: 2026-07-09
---
# HiveGrid Map
@@ -52,9 +52,9 @@ Gesamtkarte aller HiveGrid-v1-Features. Eine Karte = **ein Feature** (so benannt
| Kampagnen & Empfängerlisten | E-Mail-Marketing | D-KAMP | 🟠 | ⬜ offen |
| Versand-Technik & Statistiken 🌐 | E-Mail-Marketing | D-P14 | 🟠 | ⬜ offen |
| Formulare (Baukasten) 🌐 | Termine & Formulare | D-FORM + D-P16 (Teil) | 🔴 | 🟡 Review-Draft |
| Online-Terminbuchung 🌐 | Termine & Formulare | D-BOOK + D-P16 (Teil) | 🟠 | ⬜ offen |
| Kalender | Termine & Formulare | D-BOOK + D-P16 (Teil) | 🔴 mittel | ⬜ offen |
| Digital unterschreiben (E-Signatur) | Termine & Formulare | D-P16 (Teil) | 🔵 | ⬜ offen |
| Online-Terminbuchung 🌐 | Termine & Formulare | D-BOOK + D-P16 (Teil) | 🟠 | 🟡 vorgeplant |
| Kalender | Termine & Formulare | D-BOOK + D-P16 (Teil) | 🔴 mittel | 🟡 vorgeplant |
| Digital unterschreiben (E-Signatur) | Termine & Formulare | D-P16 (Teil) | 🔵 | 🟡 vorgeplant |
| Team-Chat 📱 | Kommunikation | D-CHAT | 🟠 | ⬜ offen |
| Telefonie (Anrufe) | Kommunikation | D-P15 | 🔵 | ⬜ offen |
| Benachrichtigungen | Kommunikation | D-P3 (Teil) | 🔵 | 🟡 vorgeplant |
@@ -293,39 +293,48 @@ Abhaken = in der groben Planung berücksichtigt (Screens/Flow verortet). Quelle:
- [ ] David Review und Feinschliff der Subframe-Frames abschließen.
- Paket: `02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/` (Mitarbeiterinnen-Paket eingebaut; Handoff erstellt)
#### Online-Terminbuchung 🌐 — `D-BOOK` + `D-P16` (Teil) — ⬜ offen
- [ ] 🌐 Buchungs-Seite: freien Termin wählen (Zeitzonen-fest) → Fragen-Formular → Bestätigung + Kalender-Datei (.ics); einbettbar
- [ ] Buchung erzeugt Anfrage oder hängt sich an bestehenden Kontakt + Bestätigungs-Mail; kein Doppel-Buchen möglich
- [ ] Intern: Buchungs-Liste (Reiter anstehend/vergangen/storniert, CSV) + Detail (stattgefunden/No-Show, stornieren mit Grund + Auto-Mail, verschieben, anderen Mitarbeiter zuweisen)
- [ ] Buchungsseiten-Editor (Dauer, Puffer, Vorlauf, Mitarbeiter, Fragen-Formular, Bestätigungs-Mail, Einbett-Code)
- [ ] Verfügbarkeits-Zeiten (Wochen-Regeln + Ausnahme-Tage)
- v1: Vergabe nur »erster freier Mitarbeiter«.
#### Online-Terminbuchung 🌐 — `D-BOOK` + `D-P16` (Teil) — 🟡 vorgeplant (2026-07-09)
- [x] 🌐 Buchungs-Seite »wie Calendly«: freien Termin wählen (Zeitzonen-fest) → Fragen-Formular → Bestätigung + Kalender-Datei (.ics); einbettbar (iFrame + QR); eigener Handy-Frame für den Slot-Picker
- [x] Buchung erzeugt Anfrage oder hängt sich an bestehenden Kontakt + Bestätigungs-Mail; kein Doppel-Buchen möglich (Race-Schutz)
- [x] Intern: Buchungs-Liste (Reiter anstehend/vergangen/storniert, Bulk-Storno, CSV) + Detail nach Karteikarten-Muster (stattgefunden/No-Show, stornieren mit Grund + Auto-Mail, verschieben, anderen Mitarbeiter zuweisen, Notizen)
- [x] Buchungsseiten-Editor (Dauer, Puffer, Vorlauf, Mitarbeiter, Fragen-Formular **mit Feld-Zuordnung zum Lead-Eingang**, Bestätigungs-Mail, Einbett-Code + QR) + Buchungsseiten-Liste
- [x] Verfügbarkeits-Zeiten (Wochen-Regeln + Ausnahme-Tage) — jeder Mitarbeiter pflegt seine eigenen, Admin alle
- Davids Delta (Change-Request an Dev): 🌐 **Kunde kann per Mail-Link selbst absagen/verschieben** (eigene öffentliche Seite)
- v1: Vergabe nur »erster freier Mitarbeiter«; Fragen-Felder als einfache Liste. D-FORM liegt jetzt als Review-Draft vor und kann später über die Lead-Feldzuweisungs-Schnittstelle eingesteckt werden.
- Paket: `02 Wireframes/P16 Termine/WF-P16 Terminbuchung/` (Screens validiert; Subframe steht aus)
#### Kalender — `D-BOOK` + `D-P16` (Teil) — ⬜ offen
- [ ] Monats-/Wochen-Ansicht mit allen Terminen (Google + Buchungen + Plantafel, je mit Herkunfts-Marker)
- [ ] Google-Kalender verbinden (Kalender auswählen, Richtung des Abgleichs, sauber trennen)
- [ ] Konflikt-Übersicht in Klartext (was kollidierte, wie gelöst)
- [ ] Fremde private Termine nur als »belegt« sichtbar
- v2: Outlook.
#### Kalender — `D-BOOK` + `D-P16` (Teil) — 🟡 vorgeplant (2026-07-09)
- [x] Monats-/Wochen-Ansicht mit allen Terminen (Google + Buchungen + Plantafel + Projekt-Termine, je mit Herkunfts-Marker)
- [x] Google-Kalender verbinden (Einstieg direkt im Kalender, pro Mitarbeiter; Kalender auswählen, Richtung des Abgleichs, sauber trennen) — OAuth + Trennen im P5-Muster
- [x] Konflikt-Übersicht in Klartext (was kollidierte, wie gelöst) — als Sektion in den Kalender-Einstellungen + Benachrichtigung
- [x] Fremde private Termine nur als »belegt« sichtbar (Kollegen-Overlay)
- Davids Delta (Change-Request an Dev): **vollwertiger Kalender** — Termine anlegen/bearbeiten, Einladungen an Team/Kontakte/freie E-Mails (.ics, Zu-/Absagen), Kollegen-Kalender als Verfügbarkeits-Overlay; funktioniert auch ohne Google
- v2: Outlook (in der Provider-Auswahl als »bald verfügbar« sichtbar).
- Paket: `02 Wireframes/P16 Termine/WF-P16 Kalender/` (Screens validiert; Subframe steht aus)
#### Digital unterschreiben (E-Signatur) — `D-P16` (Teil) — ⬜ offen
- [ ] Assistent am Projekt: PDF hochladen → Unterzeichner + Reihenfolge → senden
- [ ] Kunde unterschreibt per Link (mit Code-Bestätigung) oder direkt auf dem Gerät vor Ort
- [ ] Status je Unterzeichner (gesendet/angesehen/unterschrieben/abgelehnt), Erinnerung, Zurückziehen
- [ ] Original-PDF, unterschriebenes PDF + Abschluss-Nachweis herunterladbar
- Eigene Lösung; PandaDoc nur optional mit eigenem Schlüssel.
#### Digital unterschreiben (E-Signatur) — `D-P16` (Teil) — 🟡 vorgeplant (2026-07-09)
- [x] Projekt-Einstieg/Reiter »Signaturen« + Assistent: PDF aus Projekt-Dateien wählen oder hochladen → Unterzeichner + Reihenfolge → Signaturmodus → senden
- [x] 🌐 Kunde unterschreibt per Link mit Code-Bestätigung (OTP), PDF-Prüfung, Intent und Signatur; direkter Vor-Ort-Modus auf dem Gerät als eigener Mobile-Frame
- [x] Status je Unterzeichner (gesendet/angesehen/unterschrieben/abgelehnt/zurückgezogen), manuelle Erinnerung, Zurückziehen mit Grund
- [x] Original-PDF, unterschriebenes PDF + Abschluss-Nachweis herunterladbar und in Projekt-Dateien abgelegt
- [x] Eigene Lösung als Default: gehärteter SES-Eigenbau; PandaDoc nur optional mit eigenem Schlüssel (BYOK)
- Davids Delta: 🌐 **Kunden-Signierseite als eigener Screen** ergänzt, weil D-P16 nur den internen Wizard nennt.
- v2: freier PDF-Feldplatzierer, automatische Reminder-Regeln, QES/D-Trust.
- Paket: `02 Wireframes/P16 Termine/WF-P16 E-Signatur/` (Screens validiert; Subframe steht aus)
### Kommunikation
#### Team-Chat 📱 — `D-CHAT` — ⬜ offen
- [ ] Channel-Liste (Ungelesen-Zähler, @-Marker, anpinnen/stummschalten, Projekt-Status bei Projekt-Chats)
- [ ] Chat-Verlauf (Antwort-Threads, Emoji-Reaktionen, Anhänge, bearbeitet-Marker, »gelesen von X von Y«)
- [ ] Schreibfeld (Formatierung, Emoji, @-Erwähnung mit Vorschlägen, Anhänge, Entwurf bleibt erhalten), »tippt gerade …«
- [ ] Angepinnte Nachrichten, alle meine Erwähnungen, Suche über alle Channels
- [ ] Neuer Channel / Direktnachricht; Channel-Einstellungen (Mitglieder, archivieren)
- [ ] Projekt-Channels: Team wird automatisch synchron gehalten, Chat erscheint im Projekt
- [ ] Admin-Einsicht in DMs nur mit Pflicht-Begründung + sichtbarem Hinweis-Banner
- [ ] Monteur-Handy-Ansicht (vereinfacht, Foto-Direktupload, Push)
#### Team-Chat 📱 — `D-CHAT` — ⬜ offen (Entwurf angelegt, nicht validiert)
- [ ] Channel-Liste (Ungelesen-Zähler, @-Marker, anpinnen/stummschalten, Projekt-Status bei Projekt-Chats) + Channel-Browser
- [ ] Chat-Verlauf (Antwort-Threads, Emoji-Reaktionen, Anhänge, bearbeitet-Marker, »gelesen von X von Y«), Reconnect/Pending/Upload-Zustände
- [ ] Schreibfeld (Markdown, Emoji, @-Erwähnung mit Vorschlägen, Anhänge, Entwurf bleibt erhalten), »tippt gerade …«
- [ ] Angepinnte Nachrichten, alle meine Erwähnungen, Suche über alle Channels als eigene Nebenflächen
- [ ] Neuer Channel / Direktnachricht; Channel-Einstellungen (Mitglieder, Privacy, archivieren)
- [ ] Projekt-Channels: Team wird automatisch synchron gehalten, Chat erscheint im Projekt; View bleibt `/chat/:id`
- [ ] Admin-Einsicht in DMs nur mit Pflicht-Begründung + sichtbarem Hinweis-Banner + Audit-Log
- [ ] Monteur-Handy-Ansicht (vereinfacht, Foto-Direktupload, Push/Offline-Hinweis)
- Entwurf vorhanden: `02 Wireframes/P15 Kommunikation/WF-P15 Team-Chat/` — muss mit David gemeinsam geplant/validiert werden.
- Noch nicht zählen als vorgeplant; Subframe steht aus.
#### Telefonie (Anrufe) — `D-P15` — ⬜ offen
- [ ] AirCall verbinden (Status-Ampel, Telefon-Nutzer ↔ HiveGrid-Nutzer zuordnen mit Auto-Vorschlag, »Verbindung testen«)
@@ -28,7 +28,7 @@ Subframe Flow: [WF-D-FORM Form Builder](https://app.subframe.com/f023064a5ca0/fl
Das D-FORM-Mitarbeiterinnen-Paket wurde in den Haupt-Vault uebernommen und auf `WF-D-FORM Form Builder` normalisiert. Es enthaelt einen reviewfaehigen Subframe-Draft fuer Formular-Zentrale, einfachen Form-Builder, Lead-Feldzuweisung, Public Form, Public States, Design und Antworten-Tabelle.
Der empfohlene Hauptfluss ist der einfache Google-Forms-nahe Editor `S02`. Der alte Advanced-Canvas bleibt als Referenz/Power-User-Richtung erhalten.
Der empfohlene Hauptfluss ist der einfache Google-Forms-nahe Editor `S02`. S01B und die alten Advanced-Screens wurden im Obsidian-Handoff entfernt, damit der Review fokussiert bleibt.
## Gemacht
@@ -44,7 +44,7 @@ Der empfohlene Hauptfluss ist der einfache Google-Forms-nahe Editor `S02`. Der a
- Pruefen, ob `S02 Einfacher Fragen Editor` als Haupteditor fuer Handwerksbetriebe die richtige Richtung ist.
- Pruefen, ob `S02L Lead Felder zuweisen` und `E05 S02 Lead Zuweisung pruefen` fuer Davids Lead-Mapping-Anforderung reichen.
- Public-Strecke `S04`, `V01`, `V02`, `V03` auf Copy, mobile Nutzbarkeit und Trust pruefen.
- Entscheiden, ob `ADV-S01`, `ADV-S01-2`, `D07`, `D08`, `D09` nur Referenz bleiben oder spaeter als Power-User-Flow nachgezogen werden.
- Entscheiden, ob die spaeteren Beispielvarianten `S01C`, `S01D`, `S01E` im Subframe-Flow liegen bleiben sollen.
- Klaeren, ob die dokumentierten Modale `M01` bis `M04` als echte Dialog-Screens gebaut werden muessen.
## Flow-Paket