Compare commits
24
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ee75ae314 | ||
|
|
995d9042e0 | ||
|
|
18f9778d6b | ||
|
|
d8311c95de | ||
|
|
d1d7efff12 | ||
|
|
607264da13 | ||
|
|
3d25eda767 | ||
|
|
206ad711e9 | ||
|
|
867f94c85b | ||
|
|
512c8b5a92 | ||
|
|
d1c030d28c | ||
|
|
f14e57ae8b | ||
|
|
9d26dce586 | ||
|
|
257a812862 | ||
|
|
62c72b5304 | ||
|
|
8d1ba9cf78 | ||
|
|
f4cb863b58 | ||
|
|
6fdcb556c7 | ||
|
|
318e34fe9c | ||
|
|
04220c1431 | ||
|
|
ef07e3d005 | ||
|
|
2de481bf25 | ||
|
|
ca078436df | ||
|
|
e48a5a46e8 |
No files matched your search
Vendored
+3
-1
@@ -1,3 +1,5 @@
|
||||
[
|
||||
"editor-width-slider"
|
||||
"editor-width-slider",
|
||||
"better-embedded-canvas",
|
||||
"advanced-canvas"
|
||||
]
|
||||
+7770
File diff suppressed because it is too large.
Load diff
+11
@@ -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
@@ -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;
|
||||
}
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
}
|
||||
@@ -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}
|
||||
@@ -12,6 +12,7 @@ Ziel: Alle Wireframe-Regeln, Pakete, Screen-Notizen, Banner, Toasts, Zustaende u
|
||||
|---|---|
|
||||
| [[01 Regeln/Wireframing Playbook]] | Grundregeln: Was wird gebaut, was nur dokumentiert, wie laufen Brainstorming und Handoff? |
|
||||
| [[01 Regeln/Obsidian Struktur]] | Wie dieser Vault aufgebaut ist und wie Dateien benannt werden. |
|
||||
| [[Todo]] | Zentrale, projektweite und abhakbare Aufgabenliste. |
|
||||
| [[02 Wireframes/Screen Paket Tracker]] | Zentrale Kontrolltabelle fuer alle Flows, Screens, Canvas- und Subframe-Links. |
|
||||
| [[02 Wireframes/_Templates/Wireframe Paket Template]] | Vorlage fuer ein neues Wireframe-Paket. |
|
||||
| [[02 Wireframes/_Templates/Screen Template]] | Vorlage fuer eine einzelne Screen-Datei. |
|
||||
|
||||
@@ -35,6 +35,7 @@ Dieser Vault ist der Arbeitsbereich fuer Screens, Wireframes und Handoffs.
|
||||
| State-Datei | `ST01 Keine Suchergebnisse.md` | beschreibt einen Zustand, der nicht als eigener Frame gebaut wird |
|
||||
| Canvas-Datei | `WF-[Ticket] [Flow Name].canvas` | visueller Flow-Tree in Obsidian Canvas |
|
||||
| Tracker | `Screen Paket Tracker.md` | Uebersicht ueber Pakete und Status |
|
||||
| Todo | `Todo.md` im Vault-Root | zentrale, projektweite und abhakbare Aufgabenliste |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
---
|
||||
kind: start
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
recipient: David
|
||||
status: Review-ready
|
||||
stand: 2026-07-09
|
||||
---
|
||||
|
||||
# Start hier - D-FORM David Review
|
||||
|
||||
Das ist der Startpunkt fuer den weitergegebenen D-FORM-Ordner.
|
||||
|
||||
## Schnell lesen
|
||||
|
||||
1. [[D-FORM David Uebergabe 2026-07-09]]
|
||||
2. [[Simple Builder Neuausrichtung]]
|
||||
3. [[Subframe Bau Log]]
|
||||
4. [[WF-D-FORM Form Builder]]
|
||||
|
||||
## Kurzfassung
|
||||
|
||||
D-FORM ist auf Builder + oeffentliches Formular begrenzt. Der empfohlene Hauptfluss ist jetzt der einfache Google-Forms-nahe Editor S02, weil der alte Advanced-Canvas fuer normale Handwerksbetriebe zu schwer wirkt.
|
||||
|
||||
Nach Davids Feedback wurde die Lead-Zuweisung ergaenzt:
|
||||
|
||||
- S02 zeigt eine ruhige Lead-Card.
|
||||
- `Felder zuweisen` fuehrt nach S02L.
|
||||
- S02L ordnet Formularfragen per Dropdown Lead-Feldern zu.
|
||||
- E05 zeigt fehlende oder unmoegliche Zuweisungen.
|
||||
- Die alten Advanced-Screens und S01B sind aus dem Obsidian-Handoff entfernt; S01C/S01D/S01E bleiben nur als Referenz-Beispiele.
|
||||
|
||||
## Review-Reihenfolge
|
||||
|
||||
1. [[Screens/01 S00 Formulare verwalten]]
|
||||
2. [[Screens/02 E01 S00 Keine Formulare]]
|
||||
3. [[Screens/03 E02 S00 Keine Treffer]]
|
||||
4. [[Screens/04 S01 Formularart auswaehlen]]
|
||||
5. [[Screens/05 S02 Einfacher Fragen Editor]]
|
||||
6. [[Screens/05b S02L Lead Felder zuweisen]]
|
||||
7. [[Screens/05c E05 S02 Lead Zuweisung pruefen]]
|
||||
8. [[Screens/06 S03 Formular Design]]
|
||||
9. [[Screens/07 S04 Oeffentliches Formular]]
|
||||
10. [[Screens/08 V01 Public Erfolg oder Redirect]]
|
||||
11. [[Screens/09 V02 Public Formular nicht verfuegbar]]
|
||||
12. [[Screens/10 V03 Public Captcha oder Submit Fehler]]
|
||||
13. [[Screens/11 S05 Antworten Tabelle]]
|
||||
14. [[Screens/12 E03 S05 Keine Antworten]]
|
||||
15. [[Screens/13 E04 S05 Export Fehler]]
|
||||
|
||||
Danach nur bei Bedarf:
|
||||
|
||||
- [[Screens/81 S01C Website Formular Editor]]
|
||||
- [[Screens/82 S01D Umfrage Editor]]
|
||||
- [[Screens/83 S01E Internes Formular Editor]]
|
||||
|
||||
## Bitte pruefen
|
||||
|
||||
- Ist S02 als Haupteditor die richtige Richtung?
|
||||
- Reicht S02L fuer die einfache Lead-Feldzuweisung?
|
||||
- Passt E05 fuer fehlende oder unmoegliche Zuweisungen?
|
||||
- Reichen S03, S04/Public States und S05 fuer D-FORM?
|
||||
- Sollen M01-M04 spaeter als echte Dialog-Screens gebaut werden oder reicht die Dokumentation?
|
||||
+265
@@ -0,0 +1,265 @@
|
||||
---
|
||||
kind: handoff
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
recipient: David
|
||||
status: Review-ready / Subframe Draft gebaut
|
||||
stand: 2026-07-09
|
||||
---
|
||||
|
||||
# D-FORM - Uebergabe fuer David
|
||||
|
||||
Kurzfassung: D-FORM ist fachlich auf Builder + oeffentliches Formular begrenzt. Der alte grosse Form-Builder-Canvas bleibt als Advanced-/Referenzrichtung erhalten, aber die empfohlene Hauptvariante ist jetzt ein einfacher Google-Forms-naher Editor fuer Handwerksbetriebe. Der Subframe-Draft ist gebaut und die wichtigsten Lead-Zuweisungszustaende wurden nach Davids Feedback ergaenzt.
|
||||
|
||||
## 1. Was D-FORM umfasst
|
||||
|
||||
D-FORM umfasst:
|
||||
|
||||
- Formular-Zentrale zum Finden, Filtern und Oeffnen von Formularen.
|
||||
- Formularart auswaehlen.
|
||||
- Einfacher Fragen-Editor fuer alle Formulararten.
|
||||
- Lead-spezifische Feldzuweisung.
|
||||
- Design-Tab fuer Logo, Farbe und Public-Vorschau.
|
||||
- Oeffentliches Formular fuer Kunden/Interessenten.
|
||||
- Public States: Erfolg, nicht verfuegbar, Captcha-/Submit-Fehler.
|
||||
- Antworten-Tab als einfache Tabelle mit Export.
|
||||
- Empty/Error States fuer Verwaltung und Antworten.
|
||||
|
||||
D-FORM umfasst bewusst nicht:
|
||||
|
||||
- Booking.
|
||||
- Kalender.
|
||||
- Signatur.
|
||||
- HR.
|
||||
- Vollstaendige Submissions-Verwaltung.
|
||||
- Vollstaendige CRM-/Automation-Konfiguration.
|
||||
- Komplexe Multi-Step-Forms, Scoring, Repeater oder If/Else-Baeume.
|
||||
|
||||
## 2. Wichtigste Arbeitsentscheidung
|
||||
|
||||
Die erste Builder-Richtung war fachlich vollstaendig, aber fuer normale Handwerksbetriebe zu schwer. Deshalb wurde der Hauptfluss vereinfacht:
|
||||
|
||||
| Alt | Neu |
|
||||
|---|---|
|
||||
| Palette, Canvas und Inspector dauerhaft sichtbar | Ruhiger Fragen-Editor mit einzelnen Fragekarten |
|
||||
| Viele Modi gleichzeitig | Nur das zeigen, was fuer den naechsten Schritt wichtig ist |
|
||||
| Logic und Actions wirken wie Profi-Module | Logic als `Bedingung`, Actions als `Nach Absenden` |
|
||||
| Technische Feldtypen | Verstaendliche Fragetypen |
|
||||
| Lead-Mapping wirkt wie Admin-Konfiguration | Lead-Felder werden einfach per Dropdown zugewiesen |
|
||||
|
||||
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
|
||||
|
||||
```text
|
||||
S00 Formulare verwalten
|
||||
-> Neues Formular
|
||||
-> S01 Formularart auswaehlen
|
||||
-> S02 Einfacher Fragen Editor
|
||||
-> bei Lead-Formular: S02L Lead Felder zuweisen
|
||||
-> bei fehlender/unmoeglicher Lead-Zuweisung: E05
|
||||
-> S03 Formular Design
|
||||
-> S04 Oeffentliches Formular
|
||||
-> Public States V01/V02/V03
|
||||
-> S05 Antworten Tabelle
|
||||
```
|
||||
|
||||
## 4. Gebaute Hauptscreens
|
||||
|
||||
| Nr. | ID | Screen | Zweck | Subframe |
|
||||
|---|---|---|---|---|
|
||||
| 01 | S00 | Formulare verwalten | Erste Seite fuer Suche, Filter, Status und Bearbeiten | https://app.subframe.com/f023064a5ca0/design/2325aa7a-d968-4028-8282-0823b15bf964/edit |
|
||||
| 02 | E01 | S00 Keine Formulare | Empty State, wenn noch nichts existiert | https://app.subframe.com/f023064a5ca0/design/136c11b3-8310-4165-b4ba-9cf099ee0873/edit |
|
||||
| 03 | E02 | S00 Keine Treffer | Empty State fuer Suche/Filter | https://app.subframe.com/f023064a5ca0/design/ccf8d2f7-e7b4-4ffd-87f6-1785edc1b2f7/edit |
|
||||
| 04 | S01 | Formularart auswaehlen | Auswahl: Website/Extern, Lead, Fragebogen/Umfrage, Intern | https://app.subframe.com/f023064a5ca0/design/c423ebcd-914f-4038-ab9f-7c2a745a8bec/edit |
|
||||
| 05 | S02 | Einfacher Fragen Editor | Haupteditor fuer Fragen, Optionen, Pflichtfelder, Bedingung, Lead-Hinweis | https://app.subframe.com/f023064a5ca0/design/181aaa0f-5ae7-4f74-acf7-8273fbbe4dd5/edit |
|
||||
| 05b | S02L | Lead Felder zuweisen | Lead-Felder per Dropdown Formularfragen zuordnen | https://app.subframe.com/f023064a5ca0/design/c8aa80cb-0cc8-473f-9fac-a09d395e6571/edit |
|
||||
| 05c | E05 | S02 Lead Zuweisung pruefen | Fehlerzustand, wenn Lead-Zuweisung fehlt oder nicht passt | https://app.subframe.com/f023064a5ca0/design/26600ce4-7baf-4ffb-9955-7c7d1eef99d1/edit |
|
||||
| 06 | S03 | Formular Design | Logo, Farbe, Breite, Datenschutz-Hinweis, Vorschau | https://app.subframe.com/f023064a5ca0/design/090f06a9-3fa7-4442-b8bc-035e95de7329/edit |
|
||||
| 07 | S04 | Oeffentliches Formular | Kundensicht ohne App-Shell | https://app.subframe.com/f023064a5ca0/design/caef9ddd-03d6-4a26-8dc1-16aa198a7304/edit |
|
||||
| 08 | V01 | Public Erfolg oder Redirect | Danke-/Erfolgszustand nach Absenden | https://app.subframe.com/f023064a5ca0/design/c06ecfc3-1f86-4dfe-9cfd-cec8b8629253/edit |
|
||||
| 09 | V02 | Public Formular nicht verfuegbar | Public Blocker statt rohem Fehler | https://app.subframe.com/f023064a5ca0/design/f96ec12a-5e6a-471d-9a9c-6babcb57c74c/edit |
|
||||
| 10 | V03 | Public Captcha oder Submit Fehler | Werte bleiben erhalten, Fehler wird verstaendlich gezeigt | https://app.subframe.com/f023064a5ca0/design/95c96bc9-35d4-47ce-b510-7d8ea1f41936/edit |
|
||||
| 11 | S05 | Antworten Tabelle | Excel-nahe Antwortenansicht mit Zeitraum und Export | https://app.subframe.com/f023064a5ca0/design/9e8eeab7-44ea-4b77-85e6-0818d97e1ac3/edit |
|
||||
| 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
|
||||
|
||||
Diese Seiten liegen noch als optionale Beispiele im Subframe-Flow, sind aber nicht Teil des aktuellen Hauptflusses:
|
||||
|
||||
| Nr. | ID | Screen | Status | Subframe |
|
||||
|---|---|---|---|---|
|
||||
| 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 |
|
||||
|
||||
## 6. Formulararten
|
||||
|
||||
| Formularart | Fuer wen | Verhalten |
|
||||
|---|---|---|
|
||||
| Website-/Externes Formular | Kunden oder Interessenten per Link/Website | Public Link, mCaptcha, Datenschutz-Hinweis |
|
||||
| Lead-Formular | Neue Kundenanfragen fuer Vertrieb/Pipeline | Kontakt-/Anfragefelder werden vorgeschlagen, Lead-Erstellung ist aktiv, `Felder zuweisen` sichtbar |
|
||||
| Fragebogen / Umfrage | Feedback, Zufriedenheit, kurze Abfragen | Antworten werden gesammelt, keine Lead-Pipeline |
|
||||
| Internes Formular | Mitarbeiter, z. B. Material/Rueckruf/Schaden | Interne Ablage, kein Public-Marketing-Kontext |
|
||||
|
||||
## 7. Fragetypen im aktuellen S02
|
||||
|
||||
Im Hauptdropdown bleiben aktuell nur:
|
||||
|
||||
- Kurzantwort
|
||||
- Absatz
|
||||
- Multiple Choice
|
||||
- Mehrfachauswahl
|
||||
- Drop-down
|
||||
- Datei oder Bild hochladen
|
||||
- Datum
|
||||
- Uhrzeit
|
||||
|
||||
Nicht im aktuellen Hauptdropdown:
|
||||
|
||||
- Lineare Skala
|
||||
- Bewertung
|
||||
- Multiple-Choice-Raster
|
||||
- Kaestchenraster
|
||||
|
||||
Diese Typen koennen spaeter wieder diskutiert werden, werden aber jetzt bewusst nicht gebaut.
|
||||
|
||||
## 8. Lead-Zuweisung nach Davids Feedback
|
||||
|
||||
Davids Feedback: Ein reiner Hinweis `Lead-Verknuepfung aktiv` reicht nicht. Nutzer sollen sehen koennen, welche Formularfragen in welche Lead-Felder laufen.
|
||||
|
||||
Umsetzung:
|
||||
|
||||
- S02 bleibt Haupteditor.
|
||||
- Bei Lead-Formularen zeigt S02 eine ruhige blaue Lead-Card.
|
||||
- Die blaue Lead-Card nutzt jetzt denselben Layout-Aufbau wie die gruene `Lead anlegen`-Card: Icon links, Titel/Badge/Beschreibung in der Mitte, Aktion rechts.
|
||||
- `Felder zuweisen` fuehrt zu S02L.
|
||||
- S02L zeigt die Lead-Zuweisung im gleichen Look wie S02.
|
||||
- Jede Zuweisung nutzt eine Dropdown-Vorlage.
|
||||
- Nicht passende Felder werden disabled oder mit Begruendung markiert.
|
||||
- E05 deckt fehlende oder unmoegliche Zuweisungen ab.
|
||||
- Lead kann im bestehenden Formular deaktiviert werden; es muss nicht direkt ein neues Formular erstellt werden.
|
||||
|
||||
Wichtige Lead-Felder:
|
||||
|
||||
| Lead-Feld | Erwartung |
|
||||
|---|---|
|
||||
| Name | Pflicht, normalerweise Kurzantwort |
|
||||
| Kontakt | Pflicht: Telefon, E-Mail oder Kombifeld |
|
||||
| Beschreibung | Pflicht, Kurzantwort oder Absatz |
|
||||
| Bereich | Optional, als Tag/Kategorie nutzbar |
|
||||
| Datei / Bild | Optional, nur Datei-/Upload-Fragen |
|
||||
| Pipeline | Pflicht, Ziel fuer neue Leads |
|
||||
| Quelle | Automatisch `Formular` |
|
||||
|
||||
## 9. Logic, Actions und Publish
|
||||
|
||||
Fuer den einfachen Haupteditor:
|
||||
|
||||
- Logic wird als `Bedingung` direkt an der Frage gezeigt.
|
||||
- Actions werden im Bereich `Nach Absenden` gezeigt.
|
||||
- Bei Lead-Formularen ist `Lead anlegen` als einfache Card aktiv.
|
||||
- Publish bleibt im Editor.
|
||||
- Harte Blocker zeigen einen Banner/Popover mit Sprungzielen.
|
||||
- Unpublish braucht einen Confirm-Dialog, weil der Public-Link danach nicht mehr erreichbar ist.
|
||||
|
||||
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
|
||||
|
||||
S04 ist die Sicht fuer Kunden/Interessenten, nicht fuer interne Mitarbeiter.
|
||||
|
||||
Grundregeln:
|
||||
|
||||
- Keine App-Shell.
|
||||
- Keine Sidebar.
|
||||
- Keine internen Begriffe.
|
||||
- Tenant-Logo/Farbe sichtbar.
|
||||
- Felder klar, ruhig und mobil nutzbar.
|
||||
- mCaptcha fuer externe Formulare.
|
||||
- Datenschutz-Checkbox.
|
||||
- Datei/Bild-Upload nutzt volle Formularbreite.
|
||||
- Bei Fehlern bleiben Eingaben erhalten.
|
||||
|
||||
Public States:
|
||||
|
||||
| State | Zweck |
|
||||
|---|---|
|
||||
| V01 | Anfrage erfolgreich gesendet oder Redirect |
|
||||
| V02 | Formular nicht verfuegbar, geschlossen oder Limit erreicht |
|
||||
| V03 | Captcha-, Upload- oder Submit-Fehler mit erhaltenen Eingaben |
|
||||
|
||||
## 11. Antworten-Tab
|
||||
|
||||
S05 ist bewusst schlicht:
|
||||
|
||||
- Excel-/Tabellennahe Ansicht.
|
||||
- Suche.
|
||||
- Zeitraumfilter: letzte 7 Tage, letzter Monat, letzte 3 Monate, letztes Jahr, eigener Zeitraum.
|
||||
- Excel/CSV-Export.
|
||||
- Keine Kennzahl-Kacheln, weil die Ansicht sonst zu schwer wirkt.
|
||||
- Kein `Link teilen`-Button; Teilen gehoert in den Veroeffentlichen-/Public-Link-Kontext.
|
||||
|
||||
## 12. Noch offen / bitte pruefen
|
||||
|
||||
Aus meiner Sicht ist fuer den aktuellen D-FORM-Plan inhaltlich nichts Grosses mehr offen, ausser Review und Feinschliff in Subframe.
|
||||
|
||||
Bitte David pruefen lassen:
|
||||
|
||||
- Ist S02 als Haupteditor statt Advanced-Canvas die richtige Richtung fuer normale Handwerksbetriebe?
|
||||
- Reicht S02L als einfache Lead-Feldzuweisung, oder braucht David noch ein zweites Detail-/Fehlerbeispiel?
|
||||
- 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?
|
||||
- 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.
|
||||
|
||||
## 13. Empfohlene Review-Reihenfolge in Subframe
|
||||
|
||||
1. S00 Formulare verwalten
|
||||
2. E01 S00 Keine Formulare
|
||||
3. E02 S00 Keine Treffer
|
||||
4. S01 Formularart auswaehlen
|
||||
5. S02 Einfacher Fragen Editor
|
||||
6. S02L Lead Felder zuweisen
|
||||
7. E05 S02 Lead Zuweisung pruefen
|
||||
8. S03 Formular Design
|
||||
9. S04 Oeffentliches Formular
|
||||
10. V01 Public Erfolg oder Redirect
|
||||
11. V02 Public Formular nicht verfuegbar
|
||||
12. V03 Public Captcha oder Submit Fehler
|
||||
13. S05 Antworten Tabelle
|
||||
14. E03 S05 Keine Antworten
|
||||
15. E04 S05 Export Fehler
|
||||
|
||||
Danach nur bei Bedarf:
|
||||
|
||||
16. S01C Website Formular Editor
|
||||
17. S01D Umfrage Editor
|
||||
18. S01E Internes Formular Editor
|
||||
|
||||
## 14. Lokale Detaildateien
|
||||
|
||||
Wichtige Detailnotizen im Paket:
|
||||
|
||||
- `WF-D-FORM Form Builder.md`
|
||||
- `Simple Builder Neuausrichtung.md`
|
||||
- `David Review Checkliste.md`
|
||||
- `Subframe Bau Log.md`
|
||||
- `Subframe Bauplan.md`
|
||||
- `Screens/01 S00 Formulare verwalten.md`
|
||||
- `Screens/04 S01 Formularart auswaehlen.md`
|
||||
- `Screens/05 S02 Einfacher Fragen Editor.md`
|
||||
- `Screens/05b S02L Lead Felder zuweisen.md`
|
||||
- `Screens/05c E05 S02 Lead Zuweisung pruefen.md`
|
||||
- `Screens/06 S03 Formular Design.md`
|
||||
- `Screens/07 S04 Oeffentliches Formular.md`
|
||||
- `Screens/11 S05 Antworten Tabelle.md`
|
||||
- `Screens/D10 Builder Interaktionsfaelle.md`
|
||||
|
||||
## 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. 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?
|
||||
@@ -0,0 +1,179 @@
|
||||
---
|
||||
kind: review-checklist
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
status: Review-ready / Subframe Draft gebaut
|
||||
stand: 2026-07-09
|
||||
---
|
||||
|
||||
# David Review Checkliste - D-FORM
|
||||
|
||||
Ziel: David kann schnell pruefen, ob der D-FORM-Zuschnitt, die wichtigsten UX-Entscheidungen und der Subframe-Draft stimmen.
|
||||
|
||||
Startpunkt fuer die weitergebbare Version: [[00 Start hier - David]] und [[D-FORM David Uebergabe 2026-07-09]].
|
||||
|
||||
## 0. Review-Ergebnis 2026-07-06
|
||||
|
||||
David hat den groben fachlichen Scope als passend bewertet. Die Empfehlungen aus dieser Checkliste werden damit als Arbeitsentscheidung uebernommen.
|
||||
|
||||
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, 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. Als Kunden-/Handwerker-Wording wird `Bereich` statt `Gewerk` verwendet.
|
||||
|
||||
## 0b. David-Feedback Lead-Zuweisung
|
||||
|
||||
Neue Rueckmeldung: Fuer Lead-Formulare reicht ein reiner Hinweis `Lead-Verknuepfung aktiv` nicht aus. Nutzer sollen sehen, welche Formularfelder in welche Lead-Felder laufen.
|
||||
|
||||
Entscheidung:
|
||||
|
||||
- S02 bleibt der Haupteditor.
|
||||
- Logic kommt als einfache `Bedingung` direkt an die Frage.
|
||||
- Actions kommen als `Nach Absenden`-Bereich in den Screen.
|
||||
- Bei Lead-Formularen ist `Lead anlegen` aktiv.
|
||||
- `Felder zuweisen` wird als eigener S02-Zustand dokumentiert: [[Screens/05b S02L Lead Felder zuweisen]].
|
||||
- Wenn eine Zuweisung fehlt oder nicht moeglich ist, wird optional [[Screens/05c E05 S02 Lead Zuweisung pruefen]] gebaut.
|
||||
- Dropdown-Vorlage verwenden; keine eigene Mapping-Tabellenoptik.
|
||||
- Nicht passende Felder werden disabled oder mit Fehlerhinweis markiert.
|
||||
|
||||
## 1. Quellen-Abgrenzung
|
||||
|
||||
Ergebnis: Die Abgrenzung `D-FORM = Form-Builder-Canvas + oeffentliches Formular` stimmt.
|
||||
|
||||
| Quelle | Aussage | Konsequenz fuer D-FORM |
|
||||
|---|---|---|
|
||||
| `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. |
|
||||
| `D-HR.md` | HR ist Compose und bettet den M05-Form-Renderer aus P16 ein. | HR nutzt D-FORM-Ergebnis spaeter, ist aber kein D-FORM-Screen. |
|
||||
| `M05-form-builder.md` | M05 enthaelt auch Submissions, Templates, Actions, Permissions und Phase-2-Themen. | D-FORM darf diese Themen beruecksichtigen, aber nicht alle als eigene Screens bauen. |
|
||||
|
||||
## 2. Scope-Entscheidung
|
||||
|
||||
| Punkt | Empfehlung | David-Entscheidung |
|
||||
|---|---|---|
|
||||
| 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 |
|
||||
| V03 Public Captcha/Submit-Fehler wird als eigene Variante gebaut. | Ja, weil Public-Vertrauen wichtig ist. | angenommen |
|
||||
| Vollstaendige Forms-Liste bleibt raus. | Ja, D2-Compose / eigenes Paket. S03 ist nur eine schlanke Formular-Zentrale fuer D-FORM. | angenommen / ergaenzt |
|
||||
| Vollstaendige Submissions bleibt raus. | Ja, A2/A3-Compose / eigenes Paket. S05 ist nur der einfache Antworten-Tab fuer ein Formular. | angenommen / ergaenzt |
|
||||
| Booking/Kalender bleibt raus. | Ja, `D-BOOK`. | angenommen |
|
||||
| Signatur bleibt raus. | Ja, eigenes Signatur-/D-REST-Paket. | angenommen |
|
||||
| HR bleibt raus. | Ja, HR nutzt nur den Renderer wieder. | angenommen |
|
||||
|
||||
## 3. Builder / Advanced-S01 Referenz
|
||||
|
||||
| Entscheidung | Empfehlung | Warum wichtig | David-Entscheidung |
|
||||
|---|---|---|---|
|
||||
| Builder-Aufbau | Drei-Zonen-Builder: Palette links, Canvas Mitte, Inspector rechts. | Wirkt wie Builder, nicht wie Settings-Seite. | angenommen |
|
||||
| Modus-Leiste | Builder, Logic, Actions, Sharing, Preview, Settings als Modi im selben Screen. | Keine Routensplittung, aber Komplexitaet bleibt sortiert. | angenommen |
|
||||
| Preview | Im selben Builder als Modus oder Side-Preview. | Public-Renderer muss pruefbar sein. | angenommen |
|
||||
| Content Blocks | Section Header/Description als optionaler Content Block pruefen, nicht als A4-12-Feldtyp. | Lange Forms brauchen Struktur, aber Scope darf nicht wachsen. | angenommen |
|
||||
| Signature | Nicht als normales D-FORM-v1-Feld. | Signatur hat eigenen Kontext. | angenommen |
|
||||
| Foto | Als Datei-/Mobile-Kamera-Variante, kein eigener Feldtyp. | Haelt die 12 Feldtypen stabil. | angenommen |
|
||||
| URL/Address/Hidden | Raus oder v2/Spezialbaustein. | Nicht Teil der A4-12-Liste bzw. haengt an v2/Maps/Links. | angenommen |
|
||||
| Field Key | Sichtbar, automatisch aus Label, in Advanced editierbar. | Wichtig fuer Mapping/Actions, aber nicht zu laut im UI. | angenommen |
|
||||
|
||||
## 4. Validation / Publish
|
||||
|
||||
| Entscheidung | Empfehlung | David-Entscheidung |
|
||||
|---|---|---|
|
||||
| Publish blockiert bei fehlendem Namen, Slug, keinem sichtbaren Feld, Feld ohne Label, Select ohne Optionen, kaputter Logic, Pflichtmapping. | Ja. | angenommen |
|
||||
| Warnen, aber nicht blockieren bei langem Formular, Datei ohne Typbeschraenkung, published Form stark geaendert. | Ja. | angenommen |
|
||||
| Publish bleibt im Builder, kein eigener Screen. | Ja, Banner/Popover reicht. | angenommen |
|
||||
| Unpublish bekommt Confirm-Hinweis, weil Public-Link danach nicht mehr erreichbar ist. | Ja. | angenommen |
|
||||
|
||||
## 5. Conditional Logic
|
||||
|
||||
| Entscheidung | Empfehlung | David-Entscheidung |
|
||||
|---|---|---|
|
||||
| V1 nur einfache Sichtbarkeit: Wenn Feld Y Operator Wert Z, dann Feld X anzeigen/verstecken. | Ja. | angenommen |
|
||||
| Keine Multi-Step-Forms, Repeater, If/Else-Baeume, Scoring, Cross-Field-Rechnung. | Ja, v2. | angenommen |
|
||||
| Kaputte Referenzen blockieren Publish. | Ja. | angenommen |
|
||||
| Required-Feld, das versteckt ist, blockiert Public Submit nicht. | Ja. | angenommen |
|
||||
|
||||
## 6. Post-Submit-Actions
|
||||
|
||||
| Entscheidung | Empfehlung | David-Entscheidung |
|
||||
|---|---|---|
|
||||
| Actions bleiben in S01, kein eigener Automation-Editor. | Ja. | angenommen |
|
||||
| Action-Typen: Email Submitter, Email Team, Lead, Kontakt, Projekt, Task, Auto-Match, Webhook, Automation-Trigger. | Ja. | angenommen |
|
||||
| KWP Push nicht aktiv in D-FORM v1. | Ja, KWP ist v2/raus. | angenommen |
|
||||
| Field-Mapping sichtbar pro Action. | Ja, Kernentscheidung. | angenommen |
|
||||
| Test/Preview je Action zeigen. | Ja, aber kein ActionLog/Re-Run. | angenommen |
|
||||
| ActionLog/Re-Run gehoert zu Submissions. | Ja. | angenommen |
|
||||
|
||||
## 7. Sharing
|
||||
|
||||
| Entscheidung | Empfehlung | David-Entscheidung |
|
||||
|---|---|---|
|
||||
| V1 Sharing: Public URL, QR, iFrame. | Ja. | angenommen |
|
||||
| Personalisierte Links raus. | Ja, v2 laut Ticket. | angenommen |
|
||||
| JS-Snippet raus. | Ja, v2 laut Ticket. | angenommen |
|
||||
| Draft-Form zeigt Sharing ausgegraut mit Publish-Hinweis. | Ja. | angenommen |
|
||||
| Slug fehlt blockiert Sharing. | Ja. | angenommen |
|
||||
|
||||
## 8. S04 Oeffentliches Formular
|
||||
|
||||
| Entscheidung | Empfehlung | David-Entscheidung |
|
||||
|---|---|---|
|
||||
| Keine App-Shell, keine Sidebar, keine internen Begriffe. | Ja. | angenommen |
|
||||
| Public Layout: Branding-Kopf, Intro, Felder, Captcha, Submit, Footer. | Ja. | angenommen |
|
||||
| Mobile-first fuer lange Formulare und Datei/Foto-Upload. | Ja. | angenommen |
|
||||
| Conditional Logic live, aber ohne Fachbegriff im UI. | Ja. | angenommen |
|
||||
| Werte bleiben bei Submit-/Captcha-Fehler erhalten. | Ja, wichtig fuer lange Forms. | angenommen |
|
||||
| Branding nur Tenant-Logo/Farbe/Fallback, kein komplexes Theme-System. | Empfehlung: v1 schlicht halten. | angenommen |
|
||||
|
||||
## 9. Public-Varianten
|
||||
|
||||
| Variante | Empfehlung | David-Entscheidung |
|
||||
|---|---|---|
|
||||
| V01 Success ohne Redirect | Danke-Ansicht mit klarer Bestaetigung. | angenommen |
|
||||
| V01 Success mit Redirect | Kurze Bestaetigung + Weiterleitung/Weiter-Button. | angenommen |
|
||||
| V02 Nicht verfuegbar | Ruhiger Blocker, keine technischen Details. | angenommen |
|
||||
| V02 Geschlossen/Limit erreicht | Eigene Copy-Richtung, aber gleiche Variante. | angenommen |
|
||||
| V03 Captcha-Fehler | Fehler nahe Captcha, Retry. | angenommen |
|
||||
| V03 Submit-Fehler | Banner nahe Submit, Werte erhalten, Retry. | angenommen |
|
||||
|
||||
## 10. Subframe-Freigabe
|
||||
|
||||
| Punkt | Empfehlung | David-Entscheidung |
|
||||
|---|---|---|
|
||||
| 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 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
|
||||
|
||||
Davids Rueckmeldung: Der fachliche Scope ist gut, aber beim internen Form Builder fehlte die Interaktionslogik. Es muss erkennbar sein, ob Klicks inline bleiben, ein Menue/Popover oeffnen, den Inspector wechseln, ein Panel/Drawer zeigen oder einen Dialog brauchen.
|
||||
|
||||
Arbeitsentscheidung fuer S01:
|
||||
|
||||
| Aktion | Entscheidung |
|
||||
|---|---|
|
||||
| Feld bearbeiten | Inline im rechten Inspector, kein Modal. |
|
||||
| Feld duplizieren | Direkt ueber Feldkarte oder 3-Punkte-Menue; danach Kopie markieren, kein Confirm. |
|
||||
| Feld loeschen | Ueber 3-Punkte-Menue oder Gefahrenzone; Confirm, sobald Feld in Logic/Actions verwendet wird oder Loeschen destruktiv ist. |
|
||||
| Logic-Regel anlegen | Im Logic-Modus als Panel/Detailbereich im selben S01-Screen, kein Modal. |
|
||||
| Post-Submit-Action hinzufuegen | Actions-Modus: Typ-Auswahl als kleines Auswahlpanel/Popover, Detailkonfiguration im Panel/Drawer. |
|
||||
| Sharing oeffnen | Share-Button schaltet in Sharing-Panel/Modus, kein Modal. |
|
||||
| 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 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 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/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 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.`
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S00
|
||||
screen: Formulare verwalten
|
||||
typ: Formular-Zentrale
|
||||
umsetzung: Bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/2325aa7a-d968-4028-8282-0823b15bf964/edit"
|
||||
---
|
||||
|
||||
# S00 - Formulare verwalten
|
||||
|
||||
## Ziel
|
||||
|
||||
Grundseite fuer Mitarbeiter, um bestehende Formulare zu finden, zu filtern und zu oeffnen.
|
||||
|
||||
Der Screen ist nicht der Builder selbst, sondern die Formular-Zentrale vor dem Bearbeiten.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Seitentitel `Formulare`
|
||||
- Hilfetext: Formulare erstellen, veroeffentlichen und verwalten
|
||||
- Buttons:
|
||||
- `Vorlagen`
|
||||
- `Neues Formular`
|
||||
- Filter oben als Mehrfachauswahl:
|
||||
- Status: Erstellt, Veroeffentlicht, Unveroeffentlicht
|
||||
- Art: Website / Extern, Lead, Umfrage, Intern
|
||||
- Suche, Statusfilter und Sortierung
|
||||
- Tabelle mit Formularen:
|
||||
- Website-Anfrage
|
||||
- Heizungs-Anfrage
|
||||
- Kundenzufriedenheit
|
||||
- Materialbedarf melden
|
||||
|
||||
## Verhalten
|
||||
|
||||
- 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. 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.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/2325aa7a-d968-4028-8282-0823b15bf964/edit
|
||||
|
||||
Qualitaetsregel:
|
||||
|
||||
- Nutzt das vorhandene `Default Page Layout`.
|
||||
- Keine eigene Sidebar oder Header-Navigation.
|
||||
- Liegt im selben Flow neben den D-FORM Builder-Screens.
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: E01
|
||||
screen: S00 Keine Formulare
|
||||
typ: Empty State
|
||||
umsetzung: Bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/136c11b3-8310-4165-b4ba-9cf099ee0873/edit"
|
||||
---
|
||||
|
||||
# E01 - S00 Keine Formulare
|
||||
|
||||
## Ziel
|
||||
|
||||
Leerer Startzustand der Formular-Zentrale.
|
||||
|
||||
Der Mitarbeiter hat noch kein Formular erstellt und soll ohne Erklaerballast direkt den naechsten sinnvollen Schritt sehen.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Seitentitel wie S00: `Formulare`
|
||||
- Ruhiger Empty State im Inhaltsbereich
|
||||
- Hauptaktion: `Neues Formular erstellen`
|
||||
- Sekundaere Aktion: optional `Vorlagen ansehen`
|
||||
- Kurzer Hinweis, dass Formulare spaeter veroeffentlicht, bearbeitet und ausgewertet werden koennen
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Klick auf `Neues Formular erstellen` fuehrt zu [[04 S01 Formularart auswaehlen|S01 Formularart auswaehlen]].
|
||||
- Keine Kennzahl-Kacheln und keine Beispiel-Tabelle, weil noch nichts existiert.
|
||||
- Filter/Suche duerfen sichtbar bleiben oder reduziert wirken, aber nicht die Hauptaktion verdraengen.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/136c11b3-8310-4165-b4ba-9cf099ee0873/edit
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: E02
|
||||
screen: S00 Keine Treffer
|
||||
typ: Empty State
|
||||
umsetzung: Bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/ccf8d2f7-e7b4-4ffd-87f6-1785edc1b2f7/edit"
|
||||
---
|
||||
|
||||
# E02 - S00 Keine Treffer
|
||||
|
||||
## Ziel
|
||||
|
||||
Zustand, wenn Suche, Statusfilter oder Artfilter keine passenden Formulare finden.
|
||||
|
||||
Der Nutzer soll verstehen: Die Formulare sind nicht weg, nur der aktuelle Filter ist zu eng.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- S00-Grundlayout mit aktiver Suche/aktiven Filtern
|
||||
- Empty State im Tabellenbereich: `Keine passenden Formulare gefunden`
|
||||
- Aktion: `Filter zuruecksetzen`
|
||||
- Optionaler Hinweis auf die aktuelle Kombination, z. B. `Erstellt + Unveroeffentlicht + Lead`
|
||||
|
||||
## Verhalten
|
||||
|
||||
- `Filter zuruecksetzen` entfernt Suche und Filterchips.
|
||||
- `Neues Formular` bleibt erreichbar.
|
||||
- Der Zustand ist kein Fehler, sondern ein Such-/Filterergebnis.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/ccf8d2f7-e7b4-4ffd-87f6-1785edc1b2f7/edit
|
||||
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S01
|
||||
screen: Formularart auswaehlen
|
||||
typ: Einstieg / Auswahl
|
||||
umsetzung: Alternative bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/new
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/c423ebcd-914f-4038-ab9f-7c2a745a8bec/edit"
|
||||
---
|
||||
|
||||
# S01 - Formularart auswaehlen
|
||||
|
||||
## Ziel
|
||||
|
||||
Nutzer startet nicht direkt im komplexen Builder, sondern entscheidet zuerst, welche Art Formular er erstellen will.
|
||||
|
||||
## Warum wichtig
|
||||
|
||||
Handwerker brauchen eine einfache Einstiegsfrage:
|
||||
|
||||
`Was moechtest du erstellen?`
|
||||
|
||||
Nicht:
|
||||
|
||||
`Welche Feldtypen, Actions, Logic und Mappings brauchst du?`
|
||||
|
||||
## Aufbau
|
||||
|
||||
Interne Seite mit vorhandenem `Default Page Layout`. Keine eigene Sidebar nachbauen.
|
||||
|
||||
Inhalt:
|
||||
|
||||
- Titel: `Neues Formular erstellen`
|
||||
- Kurzer Untertitel: `Waehle aus, wofuer das Formular gedacht ist. Du kannst spaeter alles anpassen.`
|
||||
- Vier Auswahlkarten
|
||||
- Unten nur `Abbrechen` und `Weiter`
|
||||
|
||||
Entscheidung 2026-07-08: Weniger ist hier besser. Keine separate Vorlagenzeile und keine `Auswaehlen`-Buttons in jeder Karte, weil das die gleiche Entscheidung doppelt aufmacht.
|
||||
|
||||
## Auswahlkarten
|
||||
|
||||
| Karte | Kurzbeschreibung | Danach |
|
||||
|---|---|---|
|
||||
| Website / Extern | Kunden fuellen es per Website, Link oder QR-Code aus. | Oeffnet [[05 S02 Einfacher Fragen Editor|S02]] mit Website-/Extern-Vorlage. |
|
||||
| Lead-Formular | Neue Anfragen landen direkt als Lead in der Pipeline. | Oeffnet [[05 S02 Einfacher Fragen Editor|S02]] mit aktiver Lead-Verknuepfung. |
|
||||
| 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. S01C/S01D/S01E bleiben nur spaetere Varianten bzw. Referenzseiten.
|
||||
|
||||
## Lead-Formular Verhalten
|
||||
|
||||
Wenn `Lead-Formular` gewaehlt wird:
|
||||
|
||||
- Startfragen werden vorgeschlagen: Name, Telefon, Email, Bereich, Nachricht, Datei/Bild.
|
||||
- Nach Submit wird automatisch ein Lead angelegt.
|
||||
- Nutzer muss kein Mapping bauen.
|
||||
- Im Editor erscheint nur ein ruhiger Hinweis: `Antworten werden automatisch als Lead gespeichert.`
|
||||
- Pipeline/Ziel kann spaeter unter `Einstellungen` geaendert werden.
|
||||
|
||||
## Was nicht sichtbar sein soll
|
||||
|
||||
- Field Key
|
||||
- Webhook
|
||||
- Mapping
|
||||
- Automation-Trigger
|
||||
- komplexe Logic
|
||||
- Rechte-/Permission-Begriffe
|
||||
|
||||
## Subframe-Hinweis
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/c423ebcd-914f-4038-ab9f-7c2a745a8bec/edit
|
||||
|
||||
Qualitaetsregel:
|
||||
|
||||
- Nutzt das vorhandene `Default Page Layout`.
|
||||
- Keine eigene Sidebar oder Header-Navigation.
|
||||
- Liegt im D-FORM-Flow neben S02/S02L/E05, S03, S04 und S05.
|
||||
- Ersetzt nicht S04 Public Form, sondern liegt vor dem Builder.
|
||||
+185
@@ -0,0 +1,185 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S02
|
||||
screen: Einfacher 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/181aaa0f-5ae7-4f74-acf7-8273fbbe4dd5/edit"
|
||||
---
|
||||
|
||||
# S02 - Einfacher Fragen Editor
|
||||
|
||||
## Ziel
|
||||
|
||||
Google-Forms-artiger Editor fuer Handwerksbetriebe: Formularname oben, darunter einzelne Fragekarten. Nutzer fuegt Fragen hinzu, waehlt einen Fragetyp und veroeffentlicht.
|
||||
|
||||
## Leitidee
|
||||
|
||||
Der Nutzer soll denken:
|
||||
|
||||
`Ich schreibe Fragen auf.`
|
||||
|
||||
Nicht:
|
||||
|
||||
`Ich konfiguriere ein Datenmodell.`
|
||||
|
||||
## Aufbau
|
||||
|
||||
Interne Seite mit vorhandenem `Default Page Layout`. Keine eigene Sidebar nachbauen.
|
||||
|
||||
Screen-Zonen:
|
||||
|
||||
- Kopfzeile: Formularname, Status, Speichern, Vorschau, Veroeffentlichen.
|
||||
- Schmale Tabs: Fragen, Design, Antworten.
|
||||
- Mittelspalte: Formular-Titelkarte und Fragekarten.
|
||||
- Rechte Mini-Werkzeugleiste: Frage hinzufuegen, vorhandene Frage/Block, Text, Bild, Datei/Upload, Medien/Video, Abschnitt und Mehr.
|
||||
- Keine dauerhafte linke Palette.
|
||||
- Kein dauerhafter rechter Inspector.
|
||||
- Bei Lead-Formularen erscheint zusaetzlich eine ruhige Card `Felder zuweisen`, damit sichtbar ist, welche Formularfrage in welches Lead-Feld geschrieben wird.
|
||||
|
||||
## Fragekarte
|
||||
|
||||
Eine aktive Fragekarte zeigt:
|
||||
|
||||
- Fragetitel
|
||||
- Fragetyp-Dropdown nach Google-Forms-Logik; zeigt immer den aktuell gewaehlten Typ, z. B. `Multiple-Choice-Frage`, nicht den Placeholder `Fragetyp`.
|
||||
- optional Bild-Button
|
||||
- mehrere Antwortoptionen als eigene Zeilen/Eingaben
|
||||
- Button `Option hinzufuegen`
|
||||
- Button `Sonstiges hinzufuegen`, wenn passend
|
||||
- Duplizieren
|
||||
- Loeschen
|
||||
- Pflichtfrage Toggle
|
||||
- Drei-Punkte-Menue fuer Beschreibung, Bedingung, Validierung
|
||||
|
||||
## Fragetyp-Dropdown
|
||||
|
||||
| Gruppe | Typen |
|
||||
|---|---|
|
||||
| Text | Kurzantwort, Absatz |
|
||||
| Auswahl | Multiple-Choice-Frage, Mehrfachauswahl, Drop-down |
|
||||
| Medien | Datei oder Bild hochladen |
|
||||
| Datum/Zeit | Datum, Zeit |
|
||||
|
||||
Email, Telefon und Name werden im Lead-Formular als vorbereitete Startfragen angezeigt, nicht als laute Profi-Auswahl.
|
||||
|
||||
Nicht im aktuellen Hauptdropdown: Lineare Skala, Bewertung, Multiple-Choice-Raster und Kaestchenraster. Diese Typen werden nicht als eigene S02-Zustaende gebaut.
|
||||
|
||||
## Multiple Choice Verhalten
|
||||
|
||||
Wenn Nutzer `Multiple-Choice-Frage` waehlt:
|
||||
|
||||
- Antwortoptionen erscheinen direkt in der Fragekarte.
|
||||
- Erste Option heisst `Option 1`.
|
||||
- Nutzer kann weitere Optionen darunter hinzufuegen.
|
||||
- `Sonstiges hinzufuegen` bleibt als Link sichtbar.
|
||||
- Pflichtfrage ist ein Toggle unten rechts.
|
||||
- Publish blockiert, wenn keine Option vorhanden ist.
|
||||
|
||||
## Mehrfachauswahl
|
||||
|
||||
Wie Multiple Choice, aber mehrere Antworten sind erlaubt.
|
||||
|
||||
Copy im Dropdown: `Mehrfachauswahl`, weil das fuer Handwerker verstaendlicher ist.
|
||||
|
||||
## Einfache Logic
|
||||
|
||||
Logic wird nicht als eigener Profi-Modus gezeigt.
|
||||
|
||||
In der Fragekarte gibt es im Drei-Punkte-Menue:
|
||||
|
||||
- `Bedingung hinzufuegen`
|
||||
|
||||
Danach oeffnet sich ein kleiner Bereich unter der Frage:
|
||||
|
||||
`Wenn Antwort ist ... dann Frage anzeigen ...`
|
||||
|
||||
Mehr nicht in der Hauptansicht.
|
||||
|
||||
## Lead-Formular Hinweis und Felder zuweisen
|
||||
|
||||
Wenn Formularart `Lead-Formular` ist:
|
||||
|
||||
- Oben unter dem Titel erscheint ein dezenter Hinweis:
|
||||
`Lead-Verknuepfung`, Badge `Aktiv`, Beschreibung `Neue Antworten werden als Lead gespeichert - Pipeline: Vertrieb SHK`.
|
||||
- Die Hinweis-Card nutzt dasselbe Layout wie der gruene `Lead anlegen`-Kasten: runder Icon-Hintergrund links, Titel/Beschreibung in der Mitte, Aktionen rechts.
|
||||
- Rechts stehen `Felder zuweisen` als normale Aktion und `Deaktivieren` als kleine Tertiary-Aktion.
|
||||
- Klick auf `Felder zuweisen` fuehrt in den Zustand [[05b S02L Lead Felder zuweisen]].
|
||||
- Wenn Publish wegen fehlender Zuweisung blockiert, fuehrt der Sprung in [[05c E05 S02 Lead Zuweisung pruefen]].
|
||||
|
||||
Das ist kein Profi-Mapping-Panel, sondern eine verstaendliche Zuweisung im gleichen Look wie der Editor.
|
||||
|
||||
## Lead deaktivieren
|
||||
|
||||
Nutzer muessen kein neues Formular erstellen, nur weil die Lead-Erstellung nicht mehr gewuenscht ist.
|
||||
|
||||
Entscheidung:
|
||||
|
||||
- Die Aktion `Deaktivieren` kann die Lead-Erstellung im bestehenden Formular ausschalten.
|
||||
- Das Formular bleibt bestehen und sammelt weiter normale Antworten.
|
||||
- Bereits erzeugte Leads bleiben erhalten.
|
||||
- Neue Einsendungen erzeugen nach dem Ausschalten keinen neuen Lead mehr.
|
||||
- Die bisherigen Zuweisungen bleiben gespeichert, damit sie beim erneuten Aktivieren wieder vorgeschlagen werden koennen.
|
||||
- Wenn das Formular bereits veroeffentlicht ist, sollte beim Ausschalten ein kurzer Confirm-Hinweis erscheinen: `Neue Antworten werden dann nicht mehr als Lead gespeichert. Bereits erzeugte Leads bleiben erhalten.`
|
||||
- Im Draft ohne bisherige Antworten darf `Deaktivieren` direkt umschalten.
|
||||
|
||||
| Lead-Feld | Standard-Zuweisung | Verhalten |
|
||||
|---|---|---|
|
||||
| Name | `Ihr Name` | Pflicht, Kurzantwort. |
|
||||
| Kontakt | `Telefon` oder `Email` | Mindestens eins muss zugewiesen sein. |
|
||||
| Beschreibung | `Beschreibung Ihres Anliegens` | Pflicht, Absatz oder Kurzantwort. |
|
||||
| Bereich | `Um welchen Bereich geht es?` | Optional, Dropdown/Multiple Choice passt. |
|
||||
| Dateien / Bilder | `Fotos hochladen` | Optional, nur Datei/Bild-Felder passen. |
|
||||
| Quelle | automatisch `Formular` | Nicht als Formularfrage noetig. |
|
||||
| Pipeline | `Neue Anfragen` | Dropdown-Vorlage nutzen, kein Freitext. |
|
||||
|
||||
Jede Zeile nutzt die gleiche Dropdown-Vorlage: links das Lead-Feld, rechts ein Dropdown mit passenden Formularfragen. Nicht passende Formularfragen werden deaktiviert oder mit Hinweis gezeigt, z. B. `Fotos hochladen - passt nicht zu Email`.
|
||||
|
||||
Wenn ein Pflichtfeld nicht zuweisbar ist:
|
||||
|
||||
- Zeile zeigt Inline-Fehler.
|
||||
- Banner oben: `2 Zuweisungen pruefen, bevor du veroeffentlichst.`
|
||||
- Primaeraktion: `Passende Frage hinzufuegen`.
|
||||
- Publish bleibt blockiert, bis die Pflichtzuweisung passt.
|
||||
|
||||
Details dazu liegen in [[05b S02L Lead Felder zuweisen]] und [[05c E05 S02 Lead Zuweisung pruefen]].
|
||||
|
||||
## Logic, Actions und Publish-Blocker
|
||||
|
||||
S02 ist der Haupt-Editor fuer normale Nutzer. Deshalb werden Logic, Actions und Publish-Blocker nicht als eigene Profi-Seiten in den Hauptfluss gezogen.
|
||||
|
||||
| Thema | Entscheidung fuer S02 | Warum |
|
||||
|---|---|---|
|
||||
| Logic | Nur als einfache `Bedingung` direkt an der Frage. | Nutzer soll nicht in einen Regel-Editor springen muessen. |
|
||||
| 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. |
|
||||
|
||||
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
|
||||
|
||||
Bei Klick auf `Veroeffentlichen`:
|
||||
|
||||
- Wenn alles passt: Toast und Status `Veroeffentlicht`.
|
||||
- Wenn etwas fehlt: einfacher Banner oben:
|
||||
`Noch 2 Dinge fehlen, bevor du veroeffentlichen kannst.`
|
||||
- Sprungziele gehen direkt zur betroffenen Frage.
|
||||
|
||||
## Subframe-Hinweis
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/181aaa0f-5ae7-4f74-acf7-8273fbbe4dd5/edit
|
||||
|
||||
Qualitaetsregel:
|
||||
|
||||
- Nutzt das vorhandene `Default Page Layout`.
|
||||
- Keine eigene Sidebar oder Header-Navigation.
|
||||
- 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.
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
---
|
||||
kind: screen-state
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S02L
|
||||
screen: Lead Felder zuweisen
|
||||
typ: S02-Zustand / Lead Editor
|
||||
umsetzung: Subframe Draft
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/c8aa80cb-0cc8-473f-9fac-a09d395e6571/edit"
|
||||
---
|
||||
|
||||
# S02L - Lead Felder zuweisen
|
||||
|
||||
## Ziel
|
||||
|
||||
Lead-Formulare sollen nicht wie ein versteckter Automation-Editor wirken, aber Nutzer muessen sehen koennen, welche Formularfrage in welches Lead-Feld geschrieben wird.
|
||||
|
||||
Dieser Zustand liegt im gleichen Editor-Look wie S02: gleiche Kopfzeile, gleiche Tabs, gleiche Breite, gleiche Card-Sprache.
|
||||
|
||||
## Einstieg
|
||||
|
||||
S02 oeffnet diesen Zustand, wenn:
|
||||
|
||||
- Formularart `Lead-Formular` gewaehlt wurde.
|
||||
- Nutzer auf `Felder zuweisen` klickt.
|
||||
- Publish erkennt, dass eine Lead-Zuweisung fehlt.
|
||||
- Nutzer eine Frage loescht oder den Fragetyp aendert, die bereits zugewiesen war.
|
||||
|
||||
## Aufbau
|
||||
|
||||
- Header wie S02: Formularname, Status, Speichern, Vorschau, Veroeffentlichen.
|
||||
- Tabs wie S02: Fragen, Design, Antworten.
|
||||
- Hinweis-Card: `Lead-Verknuepfung`, Badge `Aktiv`, Beschreibung `Neue Antworten werden als Lead gespeichert - Pipeline: Neue Anfragen`.
|
||||
- Die Hinweis-Card nutzt dasselbe Layout wie der gruene `Lead anlegen`-Kasten: runder Icon-Hintergrund links, Titel/Beschreibung in der Mitte, kleine Aktion `Deaktivieren` rechts.
|
||||
- Card `Felder zuweisen`
|
||||
- Optional kleine Vorschau: `So wird daraus ein Lead`
|
||||
|
||||
## Felder-zuweisen-Card
|
||||
|
||||
Jede Zeile nutzt dieselbe Dropdown-Vorlage:
|
||||
|
||||
| Lead-Feld | Dropdown-Wert | Pflicht | Hinweis |
|
||||
|---|---|---|---|
|
||||
| Name | `Ihr Name` | ja | Kurzantwort. |
|
||||
| Telefon | `Telefonnummer` | ja, wenn keine Email | Kurzantwort mit Telefon-Bedeutung. |
|
||||
| Email | `Email-Adresse` | ja, wenn kein Telefon | Kurzantwort mit Email-Bedeutung. |
|
||||
| Beschreibung | `Beschreibung Ihres Anliegens` | ja | Absatz oder Kurzantwort. |
|
||||
| Bereich | `Um welchen Bereich geht es?` | nein | Auswahlfrage passt gut. |
|
||||
| Datei / Bild | `Fotos hochladen` | nein | Nur Datei/Bild-Feld. |
|
||||
| Pipeline | `Neue Anfragen` | ja | Dropdown aus Pipeline-Vorlage, kein Freitext. |
|
||||
| Lead-Quelle | `Formular` | automatisch | Nicht editierbar im normalen Flow. |
|
||||
|
||||
## Dropdown-Regel
|
||||
|
||||
Dropdowns zeigen nur sinnvolle Optionen prominent.
|
||||
|
||||
Nicht passende Optionen sind entweder:
|
||||
|
||||
- gar nicht sichtbar, wenn es dadurch einfacher wird;
|
||||
- oder disabled sichtbar mit kurzer Begruendung, wenn David den Fehlerfall sichtbar pruefen will.
|
||||
|
||||
Beispiele:
|
||||
|
||||
| Ziel | Nicht moegliche Option | Warum |
|
||||
|---|---|---|
|
||||
| Email | `Fotos hochladen` | Datei kann nicht als Email gespeichert werden. |
|
||||
| Telefon | `Beschreibung Ihres Anliegens` | Langer Text passt nicht als Telefonnummer. |
|
||||
| Datei / Bild | `Ihr Name` | Textfeld ist keine Datei. |
|
||||
| Pipeline | `Um welchen Bereich geht es?` | Pipeline kommt aus Systemvorlage, nicht aus Formularantwort. |
|
||||
|
||||
## Aktionen
|
||||
|
||||
- `Zuweisung aendern` ueber Dropdown.
|
||||
- `Passende Frage hinzufuegen` erstellt eine neue Frage und weist sie direkt zu.
|
||||
- `Automatisch zuweisen` versucht anhand von Name, Email, Telefon, Beschreibung und Datei passende Fragen zu erkennen.
|
||||
- `Ziel aendern` oeffnet Pipeline-/Team-Dropdown, kein grosses Mapping-Modal.
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Wenn Nutzer eine zugewiesene Frage loescht, bleibt die Lead-Zeile sichtbar und wechselt auf Fehler.
|
||||
- Wenn Nutzer den Fragetyp aendert und der Typ nicht mehr passt, wird die Zuweisung geloest oder als `passt nicht mehr` markiert.
|
||||
- Wenn Telefon und Email beide leer sind, blockiert Publish.
|
||||
- Wenn nur Telefon oder nur Email vorhanden ist, ist Publish erlaubt.
|
||||
- Wenn optionale Felder fehlen, Publish nicht blockieren.
|
||||
|
||||
## Subframe-Hinweis
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/c8aa80cb-0cc8-473f-9fac-a09d395e6571/edit
|
||||
|
||||
Subframe-Name aktuell: `05b S02L Lead Felder zuweisen`.
|
||||
|
||||
Wichtig fuer Subframe:
|
||||
|
||||
- Gleiches Page Layout wie S02.
|
||||
- Gleiche Card-Breite und gleiche Fragekarten-Sprache wie S02.
|
||||
- Dropdown-Vorlage verwenden, nicht eigene Select-Optik erfinden.
|
||||
- Keine Tabellenoptik wie Advanced-Mapping.
|
||||
- Bei der finalen Sichtpruefung in Subframe kontrollieren, ob das vorhandene `Default Page Layout` aktiv ist.
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
---
|
||||
kind: state
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: E05
|
||||
screen: S02 Lead Zuweisung pruefen
|
||||
typ: Lead Mapping Error State
|
||||
umsetzung: Subframe Draft
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/26600ce4-7baf-4ffb-9955-7c7d1eef99d1/edit"
|
||||
---
|
||||
|
||||
# E05 - S02 Lead Zuweisung pruefen
|
||||
|
||||
## Ziel
|
||||
|
||||
Wenn eine Lead-Zuweisung nicht moeglich ist, soll der Nutzer direkt verstehen, was nicht passt und wie er es behebt.
|
||||
|
||||
Dieser Zustand ist kein Modal und kein eigener Advanced-Editor. Er ist derselbe S02/S02L-Screen mit Fehlerbanner und markierten Zeilen.
|
||||
|
||||
## Wann tritt der Zustand auf?
|
||||
|
||||
- Pflichtfeld `Name` ist nicht zugewiesen.
|
||||
- Weder `Telefon` noch `Email` ist zugewiesen.
|
||||
- `Beschreibung` fehlt.
|
||||
- Eine zugewiesene Frage wurde geloescht.
|
||||
- Eine Frage wurde in einen unpassenden Fragetyp geaendert.
|
||||
- Ein Feld ist technisch nicht kompatibel, z. B. Datei zu Email.
|
||||
|
||||
## Aufbau
|
||||
|
||||
- Banner oben in S02/S02L:
|
||||
`3 Zuweisungen pruefen, bevor du veroeffentlichst.`
|
||||
- Darunter Sprunglinks:
|
||||
`Name zuweisen`, `Kontakt zuweisen`, `Beschreibung zuweisen`
|
||||
- In der Card `Felder zuweisen` sind betroffene Zeilen markiert.
|
||||
- Jede fehlerhafte Zeile hat eine kurze Message.
|
||||
|
||||
## Fehlermatrix
|
||||
|
||||
| Fall | Message | Aktion |
|
||||
|---|---|---|
|
||||
| Name fehlt | `Waehle eine Frage fuer den Lead-Namen aus.` | Dropdown oeffnen oder `Passende Frage hinzufuegen`. |
|
||||
| Kein Kontaktweg | `Weise Telefon oder Email zu, damit der Lead kontaktierbar ist.` | Telefon-/Email-Zeile fokussieren. |
|
||||
| Beschreibung fehlt | `Waehle die Frage, die als Lead-Beschreibung gespeichert wird.` | Dropdown oeffnen. |
|
||||
| Typ passt nicht | `Dieses Formularfeld passt nicht zu diesem Lead-Feld.` | Andere Frage waehlen. |
|
||||
| Frage geloescht | `Die bisherige Frage existiert nicht mehr.` | Neue Frage waehlen oder erstellen. |
|
||||
|
||||
## Nicht moegliche Optionen
|
||||
|
||||
Im Dropdown koennen nicht moegliche Optionen disabled erscheinen:
|
||||
|
||||
```text
|
||||
Fotos hochladen
|
||||
Nicht moeglich fuer Email
|
||||
```
|
||||
|
||||
Oder:
|
||||
|
||||
```text
|
||||
Beschreibung Ihres Anliegens
|
||||
Nicht moeglich fuer Telefon
|
||||
```
|
||||
|
||||
Wenn zu viele disabled Optionen verwirren, nur passende Optionen anzeigen und darunter den Link `Warum sehe ich nicht alle Fragen?`.
|
||||
|
||||
## Publish-Regel
|
||||
|
||||
Publish bleibt blockiert, solange:
|
||||
|
||||
- Name fehlt.
|
||||
- Kontaktweg fehlt.
|
||||
- Beschreibung fehlt.
|
||||
- eine aktive Pflichtzuweisung ungueltig ist.
|
||||
|
||||
Publish darf durchgehen, wenn:
|
||||
|
||||
- optionale Lead-Felder fehlen;
|
||||
- Datei/Bild nicht zugewiesen ist;
|
||||
- Bereich nicht zugewiesen ist;
|
||||
- nur ein Kontaktweg vorhanden ist.
|
||||
|
||||
## Subframe-Hinweis
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/26600ce4-7baf-4ffb-9955-7c7d1eef99d1/edit
|
||||
|
||||
Subframe-Name aktuell: `05c E05 S02 Lead Zuweisung pruefen`.
|
||||
|
||||
Bei der finalen Sichtpruefung in Subframe kontrollieren, ob das vorhandene `Default Page Layout` aktiv ist, damit der Zustand wie S02/S02L im vorhandenen App-Rahmen liegt.
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S03
|
||||
screen: Formular Design
|
||||
typ: Builder Tab
|
||||
umsetzung: Bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/090f06a9-3fa7-4442-b8bc-035e95de7329/edit"
|
||||
---
|
||||
|
||||
# S03 - Formular Design
|
||||
|
||||
## Ziel
|
||||
|
||||
Design-Tab fuer ein konkretes Formular.
|
||||
|
||||
Hier veraendert der Mitarbeiter nicht die Fragen, sondern die Darstellung des oeffentlichen Formulars.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Formularname `Website-Anfrage`
|
||||
- Tabs:
|
||||
- Fragen
|
||||
- Design
|
||||
- Antworten
|
||||
- Hilfetext: `Logo, Farben und Darstellung des oeffentlichen Formulars anpassen.`
|
||||
- Einstellungen:
|
||||
- Logo hochladen
|
||||
- Akzentfarbe
|
||||
- Theme / Schrift
|
||||
- Formularbreite
|
||||
- Hintergrund
|
||||
- Button-Text
|
||||
- Datenschutz-Hinweis
|
||||
- Live-Vorschau der Kundensicht als Formular-Card
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Aenderungen sollen sofort in der Live-Vorschau sichtbar werden.
|
||||
- `Vorschau` oeffnet die Public-Ansicht.
|
||||
- `Veroeffentlichen` bleibt in der Topbar erreichbar.
|
||||
- Kein eigener `Teilen`-Tab; Link/QR/Einbettung gehoeren in den Veroeffentlichen-/Public-Link-Kontext.
|
||||
- Keine Logic- oder Antwortbearbeitung in diesem Tab.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/090f06a9-3fa7-4442-b8bc-035e95de7329/edit
|
||||
|
||||
Qualitaetsregel:
|
||||
|
||||
- Nutzt das vorhandene `Default Page Layout`.
|
||||
- Keine eigene Sidebar oder Header-Navigation.
|
||||
- Design ist bewusst einfach gehalten, nicht wie ein Profi-Theme-Editor.
|
||||
+268
@@ -0,0 +1,268 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S04
|
||||
screen: Oeffentliches Formular
|
||||
typ: Public Form
|
||||
umsetzung: Bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /f/{tenant}/{slug}
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/caef9ddd-03d6-4a26-8dc1-16aa198a7304/edit"
|
||||
---
|
||||
|
||||
# S04 - Oeffentliches Formular
|
||||
|
||||
## Ziel
|
||||
|
||||
Externe Nutzer reichen ein Formular ohne App-Shell ein. Das Formular wirkt vertrauenswuerdig, klar, mobil nutzbar und tenant-gebrandet.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
BESPOKE-Public.
|
||||
|
||||
Nutzt A4-Feldtypen als Renderer und A7-Zustaende fuer Public Loading/Error.
|
||||
|
||||
## Public-Arbeitsbereiche
|
||||
|
||||
Dies ist keine App-Shell. Der Submitter sieht nur das Formular und die noetige Orientierung.
|
||||
|
||||
| Bereich | Zweck |
|
||||
|---|---|
|
||||
| Branding-Kopf | Tenant-Logo, optional kurzer Dbsendername. |
|
||||
| Formular-Intro | Titel, Beschreibung, ggf. Vertrauen/Datenschutz-Kurztext. |
|
||||
| Feldbereich | Gerenderte Felder mit Conditional Logic. |
|
||||
| Datenschutz / Captcha | Datenschutz-Zustimmung und mCaptcha nahe am Submit, nicht als Fremdkoerper. |
|
||||
| Submit-Bereich | Button, Pflichtfeldhinweis, allgemeiner Fehler. |
|
||||
| Footer | minimal: Datenschutz/Anbieter-Link falls vorgesehen. |
|
||||
|
||||
Empfehlung: Public Form soll eher wie ein ruhiges Kundenformular wirken, nicht wie eine Mini-Version der HiveGrid-App.
|
||||
|
||||
## Detail-Brainstorming S04
|
||||
|
||||
Status: Arbeitsentwurf fuer David. Noch nicht final abgehakt.
|
||||
|
||||
Das Public Form ist kein internes HiveGrid-UI. Es muss fuer Endkunden, Monteure, Bewerber oder Mitarbeiter funktionieren, die den Kontext nicht kennen. Deshalb zaehlen Vertrauen, Lesbarkeit, Mobile und Fehlerklarheit mehr als App-Dichte.
|
||||
|
||||
### Layout-Optionen
|
||||
|
||||
| Option | Aufbau | Vorteil | Risiko | Empfehlung |
|
||||
|---|---|---|---|---|
|
||||
| D | Zentrierte Formularseite mit Branding-Kopf, Intro, Feldbereich, Submit, Footer. | Ruhig, erwartbar, gut mobil. | Bei sehr langen Formularen braucht es gute Abstaende/Abschnitte. | Empfohlen. |
|
||||
| B | App-nahe Seite mit Sidebar/Topbar. | Wiederverwendet internes Muster. | Wirkt falsch fuer externe Nutzer, zu viel HiveGrid-Kontext. | Raus. |
|
||||
| C | Fullscreen-Karten pro Abschnitt/Step. | Sehr gefuehrt. | Multi-Step ist v2 bzw. nicht D-FORM v1. | Spaeter. |
|
||||
|
||||
Arbeitsentscheidung: S04 ist eine **Public Landing/Form-Seite ohne App-Shell**. Kein Sidebar, keine interne Navigation, keine Tabellen, keine internen Modulbegriffe.
|
||||
|
||||
### Empfohlener Seitenaufbau
|
||||
|
||||
| Bereich | Inhalt | Verhalten |
|
||||
|---|---|---|
|
||||
| Public Header | Tenant-Logo/Fallback, optional Anbietername. | Kleiner als App-Header, nicht dominant. |
|
||||
| Formular-Intro | Form-Titel, Beschreibung, ggf. kurzer Datenschutz-/Hinweistext. | Nur sichtbare Public Copy, keine internen Labels. |
|
||||
| Progress/Abschnittshinweis | Nur falls lange Form oder Content Blocks vorhanden. | Kein echter Multi-Step in v1. |
|
||||
| Felder | Gerenderte Feldtypen in Reihenfolge. | Conditional Logic blendet Felder live ein/aus. |
|
||||
| Datei-/Foto-Bereich | Upload mit Status, Fehler, Retry. | Mobile besonders pruefen. |
|
||||
| Datenschutz | Pflicht-Checkbox mit Link zur Datenschutzerklaerung. | Direkt vor Captcha/Submit, damit Zustimmung bewusst passiert. |
|
||||
| Captcha | mCaptcha nahe am Submit. | Sichtbar, aber nicht lauter als Formular. |
|
||||
| Submit-Bereich | Pflichtfeldhinweis, Submit-Button, allgemeiner Fehler. | Sticky Button nur optional fuer sehr lange mobile Forms. |
|
||||
| Footer | Datenschutz/Anbieter-Link, optional "powered by" falls gewuenscht. | Dezent. |
|
||||
|
||||
### Public-Copy-Regeln
|
||||
|
||||
| Regel | Beispiel / Bedeutung |
|
||||
|---|---|
|
||||
| Keine internen Begriffe | Nicht "Submission", "Action", "Lead", "Projekt", "Webhook". |
|
||||
| Fehler sagen, was zu tun ist | "Bitte pruefen Sie die markierten Felder." statt "Validation failed". |
|
||||
| Submit-Vertrauen sichern | Nach Klick klar zeigen: wird gesendet, angekommen, Fehler. |
|
||||
| Datenschutz kurz halten | Optionaler Link oder kurzer Satz, kein langer Rechtstext im Hauptfluss. |
|
||||
| Anbieter statt HiveGrid in den Vordergrund | Tenant-Branding zuerst, HiveGrid nur optional klein. |
|
||||
|
||||
## Detail: Public Field Rendering
|
||||
|
||||
| Feldtyp | Public-Darstellung | Mobile-Hinweis | Fehler |
|
||||
|---|---|---|---|
|
||||
| Text | Einzeiliges Eingabefeld. | Volle Breite, passende Tastatur. | Pflicht, min/max, Regex. |
|
||||
| Textarea | Mehrzeiliges Eingabefeld. | Hoehe nicht zu klein, lange Texte erhalten. | Pflicht, min/max. |
|
||||
| Zahl | Zahleneingabe. | Numerische Tastatur. | min/max, falsches Format. |
|
||||
| Waehrung | Betrag mit Waehrungsformat. | Kein winziger Prefix; klare Einheit. | min/max, ungueltiger Betrag. |
|
||||
| Datum | Date Picker oder natives Datum. | Native mobile Eingabe bevorzugt. | min/max Datum. |
|
||||
| Datum-Range | Start/Ende als Paar. | Untereinander auf mobile. | Ende vor Start. |
|
||||
| Select | Dropdown oder Radio je Optionenmenge. | Grosse Touch-Ziele. | Pflicht ohne Auswahl. |
|
||||
| Multi-Select | Checkboxen oder Chips. | Keine zu kleinen Chips. | min/max Auswahl. |
|
||||
| Boolean | Checkbox/Toggle, ggf. Zustimmung. | Label klickbar. | Muss bestaetigt werden, falls Pflicht. |
|
||||
| Email | Email-Eingabe. | Email-Tastatur. | Email-Format. |
|
||||
| Telefon | Telefon-Eingabe. | Telefon-Tastatur. | Telefonnummer pruefen. |
|
||||
| Datei | Upload/Dropzone, mobile Kamera-Option wenn moeglich. | Foto aufnehmen/Datei waehlen klar trennen. | Typ, Groesse, Uploadfehler. |
|
||||
|
||||
### Feldgruppen / lange Formulare
|
||||
|
||||
| Fall | Empfehlung |
|
||||
|---|---|
|
||||
| Bis ca. 8 Felder | Einfache vertikale Form reicht. |
|
||||
| Viele Felder | Abschnittsueberschriften/visuelle Gruppen erlauben, aber kein Multi-Step erzwingen. |
|
||||
| Viele Pflichtfelder | Pflichtfeldhinweis oben und am Submit. |
|
||||
| Viele Datei-Felder | Upload-Status je Feld sehr klar machen. |
|
||||
|
||||
## Detail: Conditional Logic live
|
||||
|
||||
| Zustand | Public-Verhalten |
|
||||
|---|---|
|
||||
| Bedingung noch nicht erfuellt | Ziel-Feld nicht sichtbar, ohne leere Luecke. |
|
||||
| Bedingung erfuellt | Ziel-Feld erscheint ruhig, ideal ohne aggressive Dnimation. |
|
||||
| Bereits eingegebener Wert wird versteckt | Wert bleibt technisch erhalten oder wird klar behandelt; UI zeigt keine verwirrende Loeschung. |
|
||||
| Pflichtfeld wird versteckt | Es blockiert Submit nicht, solange es unsichtbar ist. |
|
||||
| Logic-Fehler in Public | Sollte intern verhindert werden; falls doch, Formular freundlich blockieren oder Feld normal anzeigen nach Fallback-Regel. |
|
||||
|
||||
Empfehlung: Public Logic soll nicht erklaeren, dass es "Conditional Logic" ist. Der Nutzer erlebt nur ein Formular, das passende Folgefragen zeigt.
|
||||
|
||||
## Detail: Submit-Flow
|
||||
|
||||
| Schritt | UI |
|
||||
|---|---|
|
||||
| Nutzer klickt Submit | Button zeigt Loading, Doppel-Submit verhindern. |
|
||||
| Feldfehler vorhanden | Springt/scrollt zum ersten Fehler und markiert Felder. |
|
||||
| Captcha fehlt | Fehler nahe Captcha, Werte bleiben erhalten. |
|
||||
| Datenschutz fehlt | Fehler an der Checkbox, Werte bleiben erhalten. |
|
||||
| Submit laeuft | Button disabled, kurzer Status. |
|
||||
| Submit erfolgreich | V01 Success oder Redirect. |
|
||||
| Submit fehlgeschlagen | V03 Fehlerbanner; Werte bleiben erhalten, Retry moeglich. |
|
||||
|
||||
### Submit-Button-Zustaende
|
||||
|
||||
| Zustand | Label / Verhalten |
|
||||
|---|---|
|
||||
| Normal | "Absenden" oder formularspezifisch, z. B. "Anfrage senden". |
|
||||
| Disabled | Wenn technisch noetig; Grund sichtbar, nicht nur grau. |
|
||||
| Loading | "Wird gesendet..." |
|
||||
| Retry | "Erneut senden" |
|
||||
|
||||
## Detail: Datei-/Foto-Upload Public
|
||||
|
||||
| Zustand | UI |
|
||||
|---|---|
|
||||
| Noch keine Datei | Upload-Flaeche mit erlaubten Typen/Groesse. |
|
||||
| Datei ausgewaehlt | Dateiname, Groesse, Entfernen. |
|
||||
| Upload laeuft | Progress je Datei. |
|
||||
| Upload erfolgreich | Bestaetigung am Feld. |
|
||||
| Uploadfehler | Klartext + Datei erneut waehlen. |
|
||||
| Mobile Foto | "Foto aufnehmen" und "Datei auswaehlen" falls moeglich. |
|
||||
|
||||
Wichtig: Datei-Fehler duerfen nicht erst nach komplettem Submit sichtbar werden, wenn technisch fruehere Pruefung moeglich ist.
|
||||
|
||||
## Detail: Public States
|
||||
|
||||
| Zustand | Screen / Variante | Notiz |
|
||||
|---|---|---|
|
||||
| Loading | S04 | Skeleton oder ruhiger Ladezustand. |
|
||||
| Ready | S04 | Formular sichtbar. |
|
||||
| Field Error | S04 | Inline, kein eigener Screen. |
|
||||
| Captcha Error | V03 | Public-Fehlerzustand, Werte behalten. |
|
||||
| Submit Error | V03 | Retry, keine technischen Details. |
|
||||
| Success | V01 | Dnkommen bestaetigen. |
|
||||
| Redirect | V01 | Weiterleitung klar ankündigen. |
|
||||
| Nicht verfuegbar | V02 | Formular nicht public/geschlossen/ungueltig. |
|
||||
|
||||
## Detail: Branding
|
||||
|
||||
| Element | Empfehlung |
|
||||
|---|---|
|
||||
| Tenant-Logo | Oben sichtbar, aber nicht riesig. |
|
||||
| Fallback | Anbietername oder neutraler Dvatar/Initialen. |
|
||||
| Farbe | Dezente Dccent-Farbe aus Tenant, keine komplette App-Theming-Komplexitaet. |
|
||||
| HiveGrid-Hinweis | Optional klein im Footer; nicht Hauptmarke. |
|
||||
| Datenschutz | Pflicht-Checkbox im Submit-Bereich plus Link oder kurzer Hinweis im Footer. |
|
||||
|
||||
## Detail: Datenschutz / Vertrauen
|
||||
|
||||
| Frage | UI-Antwort |
|
||||
|---|---|
|
||||
| Wer bekommt meine Daten? | Anbietername/Logo und kurzer Kontext. |
|
||||
| Was passiert nach Absenden? | Erfolgstext/Redirect aus Form-Konfiguration. |
|
||||
| Muss ich angemeldet sein? | Nein fuer Public v1; falls spaeter Login-Pflicht, eigener Zustand. |
|
||||
| Was, wenn ein Fehler passiert? | Werte behalten, Retry, Anbieter kontaktieren. |
|
||||
|
||||
## Daten
|
||||
|
||||
- Tenant-Logo oder Fallback-Branding.
|
||||
- Form-Titel und Beschreibung.
|
||||
- Gerenderte Felder in definierter Reihenfolge.
|
||||
- Conditional Logic fuer sichtbare/ausgeblendete Felder.
|
||||
- Pflichtfeld- und Validation-Regeln.
|
||||
- mCaptcha.
|
||||
- Submit-Button.
|
||||
- Erfolgstext oder Redirect-Ziel.
|
||||
|
||||
## Mobile-Prioritaet
|
||||
|
||||
Viele Public-Formular-Nutzer werden am Telefon sein. David sollte deshalb besonders pruefen:
|
||||
|
||||
- Feldabstaende und Fehlermeldungen bei schmaler Breite.
|
||||
- Datei-/Foto-Upload ohne App-Kontext.
|
||||
- Captcha sichtbar, aber nicht dominant.
|
||||
- Submit-Button nach langen Formularen gut erreichbar.
|
||||
- Success/Error-Zustaende ohne Scroll-Verwirrung.
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Feldwerte eingeben.
|
||||
- Conditional Logic live ausloesen.
|
||||
- Datei/Foto hochladen, falls Feldtyp aktiv ist.
|
||||
- Captcha bestaetigen.
|
||||
- Formular absenden.
|
||||
- Nach Erfolg ggf. Redirect folgen.
|
||||
|
||||
## Banner / Hinweise
|
||||
|
||||
- Validation-Hinweise pro Feld.
|
||||
- Dllgemeiner Submit-Fehler, wenn die Einreichung nicht gespeichert werden kann.
|
||||
- Captcha-Hinweis, wenn Bot-Schutz fehlschlaegt.
|
||||
|
||||
## Toasts / Action-Feedback
|
||||
|
||||
- Keine klassischen App-Toasts. Public Form nutzt Inline-Feedback und Success-State.
|
||||
|
||||
## Meldungsentscheidung
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Umsetzung | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Pflichtfeld fehlt | Inline am Feld | ja | Wiederverwenden | Klar und feldnah. |
|
||||
| Ungueltiges Format | Inline am Feld | ja | Wiederverwenden | Beispiel: Email-Ddresse pruefen. |
|
||||
| Captcha fehlt/fehlgeschlagen | Banner/Inline beim Captcha | ja | Bauen in V03 | Erneut versuchen. |
|
||||
| Submit erfolgreich | Success-State/Redirect | nein | Bauen in V01 | Anfrage ist angekommen. |
|
||||
| Public Form nicht verfuegbar | Blocker Screen | ja | Bauen in V02 | Kein technischer 404 fuer Endkunden. |
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | Formular hat keine sichtbaren Felder; sollte intern verhindert werden. | Nur dokumentieren |
|
||||
| Laden | Public Form laedt. | Wiederverwenden |
|
||||
| Fehler | Public Form kann nicht geladen oder gesendet werden. | Bauen ueber V02/V03 |
|
||||
| Keine Berechtigung | Nicht relevant fuer Public; falls Login-Pflicht spaeter kommt, eigener Zustand. | Raus |
|
||||
| Captcha Error | Captcha oder Bot-Schutz blockiert Submit. | Bauen in V03 |
|
||||
| Erfolg | Submit wurde angenommen. | Bauen in V01 |
|
||||
|
||||
## Blockierende Error States
|
||||
|
||||
| Zustand | Was sieht der Nutzer? | Primaeraktion | Sekundare Aktion |
|
||||
|---|---|---|---|
|
||||
| Formular nicht veroeffentlicht | Ruhiger Public-Blocker. | Zur Website zurueck | Anbieter kontaktieren |
|
||||
| Formular geschlossen | Hinweis auf geschlossenen Dnnahmezeitraum. | Anbieter kontaktieren | - |
|
||||
| Submit dauerhaft fehlgeschlagen | Fehlerhinweis ohne technische Details. | Erneut versuchen | Anbieter kontaktieren |
|
||||
|
||||
## Permissions / Gates
|
||||
|
||||
- Keine eingeloggte Rolle noetig.
|
||||
- Public-Zugriff haengt an `is_public`, `status=published`, optional close/limit config und Spam-Schutz.
|
||||
|
||||
## Subframe
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/caef9ddd-03d6-4a26-8dc1-16aa198a7304/edit
|
||||
|
||||
## Notizen
|
||||
|
||||
Dieser Renderer wird spaeter wiederverwendet fuer HR-Forms, Booking-Intake, Urlaub/Krank und Requests. Deshalb keine App-Shell, keine internen Admin-Begriffe, keine Tabellenlogik.
|
||||
|
||||
Public muss mobil sauber funktionieren, weil viele Endkunden und Monteure Formulare am Telefon ausfuellen.
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
---
|
||||
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/:slug
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/c06ecfc3-1f86-4dfe-9cfd-cec8b8629253/edit"
|
||||
---
|
||||
|
||||
# V01 - Public Erfolg oder Redirect
|
||||
|
||||
## Ziel
|
||||
|
||||
Erfolgsmeldung nach dem Absenden eines oeffentlichen Formulars.
|
||||
|
||||
Der Kunde soll klar verstehen, dass die Anfrage angekommen ist.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Tenant-Branding wie in [[07 S04 Oeffentliches Formular|S04 Oeffentliches Formular]]
|
||||
- Erfolgstitel, z. B. `Anfrage gesendet`
|
||||
- Kurzer Bestaetigungstext
|
||||
- Optionaler Hinweis auf Weiterleitung
|
||||
- Optionaler Button zur Website oder Startseite
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Werte muessen nicht erneut gezeigt werden.
|
||||
- Bei Redirect wird kurz bestaetigt und dann weitergeleitet.
|
||||
- Keine internen Begriffe wie Submission, Lead, Action oder Mapping.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/c06ecfc3-1f86-4dfe-9cfd-cec8b8629253/edit
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
---
|
||||
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/:slug
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/f96ec12a-5e6a-471d-9a9c-6babcb57c74c/edit"
|
||||
---
|
||||
|
||||
# V02 - Public Formular nicht verfuegbar
|
||||
|
||||
## Ziel
|
||||
|
||||
Ruhiger Public-Blocker, wenn ein Formular nicht erreichbar ist.
|
||||
|
||||
Der Kunde soll keine technische 404-/500-Fehlermeldung sehen.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Tenant-Branding oder neutraler Fallback
|
||||
- Titel, z. B. `Formular nicht verfuegbar`
|
||||
- Kurzer Grund ohne Technikdetails
|
||||
- Optionaler Kontakt-/Zurueck-Link
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Wird genutzt, wenn Formular unveroeffentlicht, geschlossen, geloescht oder nicht erreichbar ist.
|
||||
- Kein App-Layout und keine internen Informationen.
|
||||
- Keine technischen Fehlercodes fuer Endkunden.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/f96ec12a-5e6a-471d-9a9c-6babcb57c74c/edit
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
---
|
||||
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/:slug
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/95c96bc9-35d4-47ce-b510-7d8ea1f41936/edit"
|
||||
---
|
||||
|
||||
# V03 - Public Captcha oder Submit Fehler
|
||||
|
||||
## Ziel
|
||||
|
||||
Fehlerzustand im oeffentlichen Formular, wenn Captcha, Upload oder Submit scheitert.
|
||||
|
||||
Der Kunde soll korrigieren oder erneut senden koennen, ohne Daten neu einzutippen.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Gleicher Formularaufbau wie [[07 S04 Oeffentliches Formular|S04 Oeffentliches Formular]]
|
||||
- Fehlerbanner nahe Submit-Bereich
|
||||
- Inline-Fehler bei Captcha, Upload oder Pflichtfeld
|
||||
- Submit-Button bleibt erneut nutzbar
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Bereits eingetragene Werte bleiben sichtbar.
|
||||
- Fehler werden in Kundensprache erklaert.
|
||||
- Keine technischen Details, keine internen Begriffe.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/95c96bc9-35d4-47ce-b510-7d8ea1f41936/edit
|
||||
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S05
|
||||
screen: Antworten Tabelle
|
||||
typ: Builder Tab
|
||||
umsetzung: Bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/9e8eeab7-44ea-4b77-85e6-0818d97e1ac3/edit"
|
||||
---
|
||||
|
||||
# S05 - Antworten Tabelle
|
||||
|
||||
## Ziel
|
||||
|
||||
Antworten-Tab fuer ein konkretes Formular.
|
||||
|
||||
Der Mitarbeiter sieht Einsendungen wie in einer einfachen Excel-/Tabellenansicht.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Formularname `Website-Anfrage`
|
||||
- Status `Veroeffentlicht`
|
||||
- Tabs:
|
||||
- Fragen
|
||||
- Design
|
||||
- Antworten
|
||||
- Hilfetext: `Jede Zeile ist eine Einsendung. Spalten entsprechen den Formularfeldern.`
|
||||
- Keine Kennzahl-Kacheln; der Screen startet nach Titel/Tabs direkt mit Toolbar und Tabelle.
|
||||
- Toolbar:
|
||||
- Suche
|
||||
- Zeitraum: Heute, Letzte 7 Tage, Dieser Monat, Letzter Monat, Letzte 3 Monate, Letztes Jahr, Alle
|
||||
- Statusfilter
|
||||
- Spalten
|
||||
- Excel / CSV exportieren
|
||||
- Tabelle mit Spalten:
|
||||
- Eingegangen
|
||||
- Name
|
||||
- E-Mail
|
||||
- Telefon
|
||||
- Bereich
|
||||
- Nachricht
|
||||
- Datei
|
||||
- Lead-Status
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Jede Zeile steht fuer eine Einsendung.
|
||||
- Spalten entsprechen den Formularfeldern.
|
||||
- Export erzeugt Excel/CSV.
|
||||
- Keine Kennzahl-Kacheln, weil die Ansicht sonst fuer den einfachen Antworten-Tab zu schwer wirkt.
|
||||
- Kein `Link teilen` in diesem Tab; die Antwortseite dient Auswertung und Export, Teilen/Link gehoert zu Veroeffentlichen.
|
||||
- Zeilen koennen spaeter ein Detail oeffnen; dieser Detail-Drawer ist nicht Teil dieses Screens.
|
||||
|
||||
## Error-/Empty-Zustaende
|
||||
|
||||
- Keine Antworten: eigener State [[12 E03 S05 Keine Antworten|E03 S05 Keine Antworten]].
|
||||
- Suche/Filter ohne Treffer: Empty State im Tabellenbereich.
|
||||
- Export fehlgeschlagen: eigener State [[13 E04 S05 Export Fehler|E04 S05 Export Fehler]].
|
||||
- Export laeuft: Button Loading/disabled.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/9e8eeab7-44ea-4b77-85e6-0818d97e1ac3/edit
|
||||
|
||||
Qualitaetsregel:
|
||||
|
||||
- Nutzt das vorhandene `Default Page Layout`.
|
||||
- Keine eigene Sidebar oder Header-Navigation.
|
||||
- Tabelle ist bewusst dicht, aber nicht ueberladen.
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: E03
|
||||
screen: S05 Keine Antworten
|
||||
typ: Empty State
|
||||
umsetzung: Bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/6f56c14f-d66e-4734-8a29-a900ac74a8a7/edit"
|
||||
---
|
||||
|
||||
# E03 - S05 Keine Antworten
|
||||
|
||||
## Ziel
|
||||
|
||||
Leerer Antworten-Tab fuer ein Formular, das noch keine Einsendungen hat.
|
||||
|
||||
Der Mitarbeiter soll sehen, dass der Tab richtig ist, aber noch niemand das Formular abgeschickt hat.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Formularheader wie S05
|
||||
- Tab `Antworten` aktiv
|
||||
- Toolbar schlicht halten, keine Kennzahl-Kacheln
|
||||
- Empty State im Tabellenbereich: `Noch keine Antworten`
|
||||
- Hilfreiche Aktion: `Vorschau oeffnen`
|
||||
- Optionaler Hinweis: `Nach dem Absenden erscheinen Einsendungen hier als Tabelle.`
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Export ist disabled oder nicht prominent, solange keine Antworten existieren.
|
||||
- `Vorschau oeffnen` zeigt das Public Formular oder die Preview.
|
||||
- Kein `Link teilen` in diesem Tab; Teilen gehoert zum Veroeffentlichen-/Public-Link-Kontext.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/6f56c14f-d66e-4734-8a29-a900ac74a8a7/edit
|
||||
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: E04
|
||||
screen: S05 Export Fehler
|
||||
typ: Error State
|
||||
umsetzung: Bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/00553ea4-9839-4d22-b540-9b9ef0bf014f/edit"
|
||||
---
|
||||
|
||||
# E04 - S05 Export Fehler
|
||||
|
||||
## Ziel
|
||||
|
||||
Fehlerzustand, wenn Excel/CSV-Export nicht erstellt werden konnte.
|
||||
|
||||
Der Nutzer soll die Antworten nicht verlieren und direkt erneut versuchen koennen.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- S05-Grundlayout mit Antworten-Tabelle
|
||||
- Error-Banner nahe Toolbar oder Exportbereich
|
||||
- Text: `Export konnte nicht erstellt werden`
|
||||
- Aktion: `Erneut versuchen`
|
||||
- Sekundaere Aktion: optional `CSV statt Excel`
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Tabellenwerte bleiben sichtbar.
|
||||
- Filter und Zeitraum bleiben erhalten.
|
||||
- Export-Button kann kurz `loading` sein und danach wieder aktiv werden.
|
||||
- Keine technischen Fehlermeldungen fuer normale Nutzer.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/00553ea4-9839-4d22-b540-9b9ef0bf014f/edit
|
||||
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S01C
|
||||
screen: Website Formular Editor
|
||||
typ: Simple Builder Beispiel
|
||||
umsetzung: Alternative bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/d7d33e94-5c12-48e8-8ec6-1e94590ee89c/edit"
|
||||
---
|
||||
|
||||
# S01C - Website Formular Editor
|
||||
|
||||
## Ziel
|
||||
|
||||
Beispiel-Editor fuer die S00-Auswahl `Website-/Externes Formular`.
|
||||
|
||||
Der Nutzer erstellt ein einfaches oeffentliches Anfrageformular fuer Website, Link oder QR-Code.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Formularname `Website-Anfrage`
|
||||
- Hinweis `Oeffentliches Formular`
|
||||
- Public-Link-/Anfrage-Hinweis
|
||||
- Fragenkarten:
|
||||
- Name
|
||||
- E-Mail
|
||||
- Telefon
|
||||
- Worum geht es?
|
||||
- Nachricht
|
||||
- Datei / Bild hochladen
|
||||
- Schutz-/Datenschutzbereich:
|
||||
- mCaptcha / Spam-Schutz
|
||||
- Datenschutzhinweis
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Kein Lead-Mapping sichtbar.
|
||||
- Keine Pipeline-Verknuepfung im Vordergrund.
|
||||
- Nutzer denkt: `Ich baue ein Kontakt-/Anfrageformular fuer die Website.`
|
||||
- Publish/Preview bleiben oben erreichbar.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/d7d33e94-5c12-48e8-8ec6-1e94590ee89c/edit
|
||||
|
||||
Qualitaetsregel:
|
||||
|
||||
- Nutzt das vorhandene `Default Page Layout`.
|
||||
- Keine eigene Sidebar oder Header-Navigation.
|
||||
- Liegt im D-FORM-Flow als optionale Referenzvariante.
|
||||
- Wiederhergestellte Layout-Version vom 2026-07-07; alte kaputte Subframe-ID wurde ersetzt.
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S01D
|
||||
screen: Umfrage Editor
|
||||
typ: Simple Builder Beispiel
|
||||
umsetzung: Alternative bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/5abd7799-7058-40b3-9772-884cbda97b9c/edit"
|
||||
---
|
||||
|
||||
# S01D - Umfrage Editor
|
||||
|
||||
## Ziel
|
||||
|
||||
Beispiel-Editor fuer die S00-Auswahl `Fragebogen / Umfrage`.
|
||||
|
||||
Der Nutzer erstellt eine einfache Umfrage, z. B. kurze Rueckmeldung oder Zufriedenheit.
|
||||
|
||||
Hinweis 2026-07-08: S01D ist aktuell nur Referenz. Im Hauptfluss oeffnet auch `Fragebogen / Umfrage` den S02-Editor mit passender Vorlage.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Formularname `Kundenzufriedenheit`
|
||||
- Hinweis `Umfrage - Antworten werden gesammelt`
|
||||
- Keine Lead-Verknuepfung
|
||||
- Fragenkarten:
|
||||
- Multiple Choice
|
||||
- Freitext
|
||||
- optional Datum/Zeit, falls fuer Rueckmeldung noetig
|
||||
- Kleine Vorschau-/Antworten-Zusammenfassung
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Keine Pipeline.
|
||||
- Keine Lead-Automatik.
|
||||
- Antworten werden gesammelt und spaeter im Antworten-Bereich geprueft.
|
||||
- Nutzer denkt: `Ich frage Feedback ab.`
|
||||
- Keine Lineare Skala, keine Bewertung/Sterne und keine Raster im aktuellen S02-Hauptdropdown.
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/5abd7799-7058-40b3-9772-884cbda97b9c/edit
|
||||
|
||||
Qualitaetsregel:
|
||||
|
||||
- Nutzt das vorhandene `Default Page Layout`.
|
||||
- Keine eigene Sidebar oder Header-Navigation.
|
||||
- Liegt im D-FORM-Flow als optionale Referenzvariante.
|
||||
- Korrigierte Version; die falsch generierte Variante ohne Layout wurde geloescht.
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: S01E
|
||||
screen: Internes Formular Editor
|
||||
typ: Simple Builder Beispiel
|
||||
umsetzung: Alternative bauen
|
||||
status: Subframe Draft / Review offen
|
||||
route: /forms/:id/edit
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/ea08fd1c-1a76-4e2c-b27c-1091baa0586a/edit"
|
||||
---
|
||||
|
||||
# S01E - Internes Formular Editor
|
||||
|
||||
## Ziel
|
||||
|
||||
Beispiel-Editor fuer die S00-Auswahl `Internes Formular`.
|
||||
|
||||
Der Nutzer erstellt ein internes Formular fuer Mitarbeitende, z. B. Materialbedarf oder interne Meldung.
|
||||
|
||||
## Inhalt
|
||||
|
||||
- Formularname `Materialbedarf melden`
|
||||
- Badge `Nur intern`
|
||||
- Hinweis `Kein oeffentlicher Link`
|
||||
- Zuständiges Team `Lager & Einkauf`
|
||||
- Fragenkarten:
|
||||
- Mitarbeiter
|
||||
- Bereich
|
||||
- Dringlichkeit
|
||||
- Material / Problem
|
||||
- Beschreibung
|
||||
- Foto / Datei
|
||||
- Wunschdatum
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Kein Public-Link-Fokus.
|
||||
- Keine Lead-Pipeline.
|
||||
- Kein Mapping sichtbar.
|
||||
- Nutzer denkt: `Ich sammle interne Meldungen sauber ein.`
|
||||
|
||||
## Subframe
|
||||
|
||||
Gebaut in Subframe:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/design/ea08fd1c-1a76-4e2c-b27c-1091baa0586a/edit
|
||||
|
||||
Qualitaetsregel:
|
||||
|
||||
- Nutzt das vorhandene `Default Page Layout`.
|
||||
- Keine eigene Sidebar oder Header-Navigation.
|
||||
- Liegt im D-FORM-Flow als optionale Referenzvariante.
|
||||
- Wiederhergestellte Layout-Version vom 2026-07-07; alte kaputte Subframe-ID wurde ersetzt.
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: D01
|
||||
screen: Sharing Panel URL QR iFrame
|
||||
typ: Panel-Zustand in S01
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: Detailnotiz, kein eigener Screen
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# D01 - Sharing Panel URL QR iFrame
|
||||
|
||||
## Ziel
|
||||
|
||||
Interne Nutzer koennen nach dem Publish die Public URL, den QR-Code und den iFrame-Code nutzen, ohne den Builder zu verlassen.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
Panel / Arbeitsmodus innerhalb von S01.
|
||||
|
||||
## Daten
|
||||
|
||||
- Formularname
|
||||
- Publish-Status: Draft, Published, Unpublished Changes, Archived
|
||||
- Public URL: `/f/{tenant}/{slug}`
|
||||
- Slug und Tenant
|
||||
- QR-Code fuer Public URL
|
||||
- iFrame-Code
|
||||
- Allowed Origins, falls fuer iFrame relevant
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Public URL kopieren
|
||||
- Public URL oeffnen
|
||||
- QR-Code kopieren oder herunterladen
|
||||
- iFrame-Code kopieren
|
||||
- zu Settings springen, wenn Slug fehlt
|
||||
- zu Publish springen, wenn Formular noch Draft ist
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Klick auf `Share` in der Topbar oeffnet keinen Dialog, sondern wechselt in den Sharing-Modus von S01.
|
||||
- Bei `Published` sind URL, QR und iFrame aktiv.
|
||||
- Bei `Draft` bleibt der Bereich sichtbar, aber die echten Copy-Aktionen sind disabled oder zeigen einen Publish-Hinweis.
|
||||
- Bei fehlendem Slug verweist das Panel auf Settings.
|
||||
- Copy-Aktionen zeigen nur Toasts, keine Modals.
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Published | URL, QR und iFrame sind aktiv. | Nur dokumentieren |
|
||||
| Draft | Sharing ist ausgegraut und erklaert Publish als Voraussetzung. | Nur dokumentieren |
|
||||
| Slug fehlt | Panel verweist auf Settings. | Nur dokumentieren |
|
||||
| Kopiert | Toast bestaetigt Copy-Aktion. | Wiederverwenden |
|
||||
| Archived | Sharing ist read-only oder deaktiviert. | Nur dokumentieren |
|
||||
|
||||
## Subframe
|
||||
|
||||
Kein eigener Subframe-Screen. Der Zustand wird im S01-Builder als Sharing-Modus/Panel gezeigt. Ein eigener Frame ist nur noetig, wenn David den geoeffneten Sharing-Zustand separat sehen will.
|
||||
|
||||
## Notizen
|
||||
|
||||
Personalisierte Links und JS-Snippet bleiben v2. D-FORM v1 zeigt URL, QR und iFrame.
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: D02
|
||||
screen: Post-Submit Actions
|
||||
typ: Detailnotiz im S02-Kontext
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: Detailnotiz, kein eigener Screen
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# D02 - Post-Submit Actions
|
||||
|
||||
## Ziel
|
||||
|
||||
Interne Nutzer legen fest, was nach dem Absenden eines Public Forms passieren soll, ohne einen kompletten Automation-Editor zu oeffnen.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
Action-Liste plus Detailbereich innerhalb des einfachen Builders.
|
||||
|
||||
## Daten
|
||||
|
||||
- Action-Typ
|
||||
- Action-Name
|
||||
- Status aktiv/inaktiv
|
||||
- Reihenfolge
|
||||
- Pflichtmapping
|
||||
- Warnungen und Blocker
|
||||
- letzter Teststatus
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Action hinzufuegen
|
||||
- Action-Typ waehlen
|
||||
- Action bearbeiten
|
||||
- Action aktiv/inaktiv setzen
|
||||
- Action duplizieren
|
||||
- Action loeschen
|
||||
- Reihenfolge aendern
|
||||
- Mapping pruefen
|
||||
- Test ausfuehren
|
||||
|
||||
## Verhalten
|
||||
|
||||
- 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 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]].
|
||||
|
||||
## Add-Action-Popover
|
||||
|
||||
| Inhalt | Beschreibung |
|
||||
|---|---|
|
||||
| Typ-Liste | Email Submitter, Email Team, Lead, Kontakt, Projekt, Task, Auto-Match, Webhook, Automation-Trigger. |
|
||||
| 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 im selben Builder-Kontext. |
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Keine Actions | Empty State mit `Action hinzufuegen`. | Nur dokumentieren |
|
||||
| Action valid | Action ist aktiv und vollstaendig konfiguriert. | Nur dokumentieren |
|
||||
| Action incomplete | Pflichtmapping oder Ziel fehlt. | Nur dokumentieren |
|
||||
| Test erfolgreich | Inline-Ergebnis plus Toast. | Wiederverwenden |
|
||||
| Test fehlgeschlagen | Inline-Hinweis im Action-Detail. | Nur dokumentieren |
|
||||
|
||||
## Was-passiert-wenn-Faelle
|
||||
|
||||
| Fall | UI-Reaktion |
|
||||
|---|---|
|
||||
| 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 zur betroffenen Zuweisung. |
|
||||
| Nutzer loescht Action | Confirm nur bei aktiver/published-relevanter Action. |
|
||||
|
||||
## Subframe
|
||||
|
||||
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
|
||||
|
||||
Der Bereich darf nicht wie M17 Automation wirken. D-FORM braucht nur Action-Typ, Ziel, Mapping, Status und Test.
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: D03
|
||||
screen: Conditional Logic Editor
|
||||
typ: Detailnotiz im S02-Kontext
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: Detailnotiz, kein eigener Screen
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# D03 - Conditional Logic Editor
|
||||
|
||||
## Ziel
|
||||
|
||||
Interne Nutzer koennen einfache Anzeige-/Ausblende-Regeln fuer Formularfelder erstellen und pruefen.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
Einfache Bedingung direkt an der Frage; komplexere Regel-Liste bleibt nur dokumentiert.
|
||||
|
||||
## Daten
|
||||
|
||||
- Regelname optional
|
||||
- Bedingungsfeld
|
||||
- Operator
|
||||
- Wert
|
||||
- Aktion: anzeigen oder verstecken
|
||||
- Zielfeld
|
||||
- Status aktiv/inaktiv
|
||||
- Referenzstatus: gueltig oder kaputt
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Regel hinzufuegen
|
||||
- Regel bearbeiten
|
||||
- Regel aktiv/inaktiv setzen
|
||||
- Regel loeschen
|
||||
- kaputte Referenz reparieren
|
||||
- Regel in Preview testen
|
||||
|
||||
## Verhalten
|
||||
|
||||
- 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.
|
||||
- Auswahl- und Vergessensfaelle fuer Logic sind in [[D10 Builder Interaktionsfaelle]] dokumentiert.
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Keine Regeln | Empty State mit `Regel hinzufuegen`. | Nur dokumentieren |
|
||||
| Regel aktiv | Regel wirkt im Public Renderer. | Nur dokumentieren |
|
||||
| Regel inaktiv | Regel bleibt gespeichert, wirkt aber nicht. | Nur dokumentieren |
|
||||
| Referenz kaputt | Feld fehlt oder wurde geaendert; Publish blockiert. | Nur dokumentieren |
|
||||
| Preview-Test | Public-nahe Vorschau zeigt Feld sichtbar/versteckt. | In S01 dokumentieren |
|
||||
|
||||
## Was-passiert-wenn-Faelle
|
||||
|
||||
| Fall | UI-Reaktion |
|
||||
|---|---|
|
||||
| Wenn-Feld gewaehlt, Operator vergessen | Regel bleibt unvollstaendig; Aktivieren/Test disabled. |
|
||||
| Operator gewaehlt, Wert vergessen | Wertfeld zeigt Inline-Fehler; aktive Regel blockiert Publish. |
|
||||
| Operator `ist leer` gewaehlt | Wertfeld verschwindet, weil kein Wert gebraucht wird. |
|
||||
| Ziel-Feld vergessen | Regel bleibt unvollstaendig; Publish blockiert nur, wenn Regel aktiv sein soll. |
|
||||
| Select-Option wird geloescht | Betroffene Regel wird kaputt markiert und in Publish Summary verlinkt. |
|
||||
| Bedingungsfeld und Ziel-Feld gleich | Regel kann nicht aktiv werden; Inline-Hinweis auf Selbstreferenz. |
|
||||
|
||||
## Subframe
|
||||
|
||||
Kein eigener Hauptscreen. Logic bleibt Arbeitsbereich in S01. Ein extra Frame ist nur noetig, wenn David den geoeffneten Logic-Modus separat sehen will.
|
||||
|
||||
## Notizen
|
||||
|
||||
Nicht v1: Multi-Step, If/Else-Baeume, Repeater, Scoring oder Cross-Field-Rechnung.
|
||||
@@ -0,0 +1,89 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: D06
|
||||
screen: Feldkarten Menue
|
||||
typ: Inline-Zustand in S01
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: Detailnotiz, kein eigener Screen
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# D06 - Feldkarten Menue
|
||||
|
||||
## Ziel
|
||||
|
||||
Interne Nutzer erreichen sekundaere Feldaktionen direkt an der Feldkarte, ohne den Inspector mit seltenen Aktionen zu ueberladen.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
3-Punkte-Menue / Kontextmenue auf einer Feldkarte.
|
||||
|
||||
## Daten
|
||||
|
||||
- Feldname
|
||||
- Feldtyp
|
||||
- Field Key
|
||||
- ob das Feld in Logic verwendet wird
|
||||
- ob das Feld in Actions/Mapping verwendet wird
|
||||
- ob das Formular published ist
|
||||
|
||||
## Aktionen
|
||||
|
||||
- Feld bearbeiten
|
||||
- Feld duplizieren
|
||||
- nach oben/unten verschieben, falls Drag nicht genutzt wird
|
||||
- Feld einklappen/ausklappen
|
||||
- Field Key kopieren
|
||||
- Feld loeschen
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Klick auf das 3-Punkte-Menue oeffnet ein kleines Menue an der Feldkarte.
|
||||
- `Bearbeiten` setzt den Fokus auf den rechten Inspector.
|
||||
- `Duplizieren` erstellt direkt eine Kopie unter dem Feld, schlaegt einen neuen `field_key` vor und selektiert die Kopie.
|
||||
- `Loeschen` fuehrt bei Abhaengigkeiten zu [[M01 Feld loeschen Confirm]].
|
||||
- Destruktive Aktionen stehen getrennt unten im Menue.
|
||||
- Weitere Folgefaelle stehen in [[D10 Builder Interaktionsfaelle]].
|
||||
|
||||
## Menue-Inhalt
|
||||
|
||||
| Eintrag | Verhalten | Sichtbarkeit |
|
||||
|---|---|---|
|
||||
| `Bearbeiten` | selektiert Feld und fokussiert Inspector. | immer, wenn editierbar |
|
||||
| `Duplizieren` | erstellt Kopie unter dem Feld, neuer `field_key`, Kopie selected. | wenn editierbar |
|
||||
| `Field Key kopieren` | kopiert technischen Key, Toast. | wenn Key vorhanden |
|
||||
| `Nach oben/unten` | Alternative zu Drag, falls noetig. | optional |
|
||||
| `Einklappen/Ausklappen` | veraendert nur Canvas-Darstellung. | bei langen Feldern |
|
||||
| `Loeschen` | fuehrt zu Confirm bei Abhaengigkeiten. | getrennt unten, Danger |
|
||||
|
||||
## Was-passiert-wenn-Faelle
|
||||
|
||||
| Fall | UI-Reaktion |
|
||||
|---|---|
|
||||
| Feld wird in Logic genutzt | Menue kann kleinen Hinweis am Loeschen-Eintrag zeigen; Klick oeffnet [[M01 Feld loeschen Confirm]]. |
|
||||
| Feld wird in Action-Mapping genutzt | Confirm nennt betroffene Action(s). |
|
||||
| Formular ist archived | Bearbeiten/Loeschen disabled, Duplizieren kann als Ausweg aktiv bleiben. |
|
||||
| Nutzer dupliziert Feld mit Select-Optionen | Optionen werden kopiert, aber Logic/Mapping nicht automatisch. |
|
||||
| Nutzer dupliziert Datei/Fotofeld | Upload-Regeln werden kopiert, neuer `field_key`; keine hochgeladenen Dateien. |
|
||||
| Nutzer loescht Feld ohne Abhaengigkeit | Kurze Rueckfrage oder Undo-Toast reicht; kein grosses Modal noetig. |
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Standard | normale Feldaktionen sichtbar. | Nur dokumentieren |
|
||||
| Feld wird referenziert | Menue zeigt Hinweis vor Loeschen. | Nur dokumentieren |
|
||||
| Keine Berechtigung | einzelne Aktionen disabled oder Menue fehlt. | Nur dokumentieren |
|
||||
| Archived | Bearbeiten/Loeschen disabled, Duplizieren moeglich. | Nur dokumentieren |
|
||||
|
||||
## Subframe
|
||||
|
||||
Kein eigener Subframe-Screen. Das Menue wird in S01 dokumentiert. Ein eigener Frame ist nur noetig, wenn David den geoeffneten Feldkarten-Zustand sehen will.
|
||||
|
||||
## Notizen
|
||||
|
||||
Das Menue ist fuer sekundaere Aktionen. Primaere Feldbearbeitung bleibt im Inspector.
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: D10
|
||||
screen: Builder Interaktionsfaelle
|
||||
typ: Case-Matrix im S02-Kontext
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: Detailnotiz, kein eigener Screen
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# D10 - Builder Interaktionsfaelle
|
||||
|
||||
## Ziel
|
||||
|
||||
Diese Datei beantwortet die naechste Review-Ebene: Was passiert, wenn Nutzer im Builder etwas auswaehlen, ankreuzen, vergessen, wechseln oder eine Folgeaktion ausloesen?
|
||||
|
||||
Nicht jedes Detail muss ein eigener Frame werden. Dber vor Subframe muss klar sein, ob daraus Inline-Feedback, Dropdown, Popover, Panel, Modal, Toast oder Publish-Blocker entsteht.
|
||||
|
||||
## Grundregel
|
||||
|
||||
| Fall | UI-Reaktion |
|
||||
|---|---|
|
||||
| Nutzer waehlt etwas aus und der naechste Schritt haengt davon ab | Nachfolgende Felder im selben Panel werden sichtbar oder aktiv. |
|
||||
| Nutzer vergisst einen Pflichtteil in der Mitte | Der Block bleibt unvollstaendig, zeigt Inline-Warnung und blockiert Publish/Test nur dort, wo es fachlich noetig ist. |
|
||||
| Nutzer waehlt etwas, das alte Eingaben ungueltig macht | Dlte Eingaben werden nicht still geloescht; System zeigt Hinweis und laesst bestaetigen oder markiert ungueltig. |
|
||||
| Nutzer loescht etwas, das anderswo verwendet wird | Confirm oder Inline-Blocker mit konkreter Referenzliste. |
|
||||
| Nutzer fuegt etwas Medien-/Dateibezogenes hinzu | Kein globales Modal; normales Datei-Feld oeffnet Inspector. Nur Datei-Auswahl selbst ist System-/Upload-Dialog. |
|
||||
| Nutzer bestaetigt eine public-wirksame Aktion | Confirm-Dialog. |
|
||||
|
||||
## Feld hinzufuegen / Feldtyp auswaehlen
|
||||
|
||||
| Nutzeraktion | Was passiert? | UI-Ebene | Blockiert? | Notiz fuer Subframe |
|
||||
|---|---|---|---|---|
|
||||
| Klick auf Feldtyp `Text` | Feld wird am Ende eingefuegt, Karte selected, Inspector oeffnet Basis-Sektion. | Canvas + Inspector | nein | Happy Path zeigen. |
|
||||
| Drag eines Feldtyps | Dropzonen erscheinen, nach Drop ist Feld selected. | Canvas-Zustand | nein | Dropziel sichtbar machen. |
|
||||
| Nutzer fuegt `Select` hinzu und vergisst Optionen | Feldkarte zeigt Warnung, Inspector `Optionen` zeigt Pflicht-Hinweis, Publish blockiert. | Inline + Inspector + Publish Summary | ja fuer Publish | Wichtig, weil Public Form sonst nicht beantwortbar ist. |
|
||||
| Nutzer fuegt `Datei` hinzu | Feldkarte erscheint als Upload-Feld, Inspector zeigt Dateitypen, Groesse, Mehrfachupload, Foto-Hinweis. | Inspector | nein | Kein eigenes Modal fuer Feld-Konfiguration. |
|
||||
| Nutzer aktiviert `Foto erlaubt` beim Datei-Feld | Mobile-Kamera-Hinweis wird im Inspector sichtbar; Public Renderer darf Kamera/Upload anbieten. | Inline im Inspector | nein | Foto bleibt Variante von Datei, kein eigener Feldtyp. |
|
||||
| Nutzer setzt `Mehrere Dateien` und vergisst max. Groesse | Warnung, aber Publish blockiert nicht zwingend; Security/Dev kann Default setzen. | Inline-Warnung | nein/Warning | Empfehlung: warnen, nicht blockieren. |
|
||||
| Nutzer aendert Feldtyp nach Konfiguration | System zeigt Warnung, wenn Optionen/Validation verloren gehen koennen. | Popover/Confirm klein | ja bis Bestaetigung | Nur relevant, falls Feldtypwechsel erlaubt ist. |
|
||||
| Nutzer dupliziert Feld mit Logic/Mapping | Kopie bekommt neuen `field_key`; Logic/Mapping wird nicht automatisch kopiert. | Toast + Inspector | nein | Sonst entstehen unsichtbare Doppelreferenzen. |
|
||||
|
||||
## Feld-Inspector / Checkboxen / Optionen
|
||||
|
||||
| Nutzeraktion | Was passiert? | UI-Ebene | Blockiert? | Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Label leer lassen | Feldkarte und Inspector zeigen Inline-Fehler. | Inline | ja fuer Publish | Feld darf als Draft gespeichert werden. |
|
||||
| `Pflichtfeld` ankreuzen, aber Feld ist durch Logic versteckt | Hinweis: Pflicht gilt nur, wenn Feld sichtbar ist. | Inline-Hinweis im Inspector | nein | Public Submit darf nicht blockieren, wenn Feld versteckt ist. |
|
||||
| `Pflichtfeld` ankreuzen bei Datei | Inspector empfiehlt Dateitypen/Groesse; ohne Beschraenkung nur Warnung. | Inline-Warnung | nein/Warning | Public Risiko, aber v1 nicht hart blockieren. |
|
||||
| Select-Option leer lassen | Option-Zeile zeigt Fehler; Publish blockiert. | Inline | ja fuer Publish | Fehler nahe Option, nicht nur global. |
|
||||
| Select-Option loeschen, die in Logic genutzt wird | Confirm/Inline-Hinweis zeigt betroffene Regeln; nach Loeschen werden Regeln kaputt markiert. | Confirm oder Inline-Blocker | ja fuer Publish | Sehr wichtiger Folgefall. |
|
||||
| Field Key manuell aendern | System prueft Duplikat/ungueltig; zeigt Mapping/Logic-Hinweis. | Inline im Inspector | ja bei ungueltig | Nicht still aendern, wenn Referenzen betroffen sind. |
|
||||
| User vergisst den mittleren Schritt `Optionen` und geht zu Publish | Publish Summary springt direkt zur Optionen-Sektion. | Publish Summary | ja | Genau der "Mitte vergessen"-Fall. |
|
||||
|
||||
## Logic-Regel: Auswahlfolge und vergessene Mitte
|
||||
|
||||
| Nutzeraktion | Was passiert? | UI-Ebene | Blockiert? | Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Neue Regel klicken | Leeres Detailpanel oeffnet mit Reihenfolge: Wenn-Feld -> Operator -> Wert -> Dann-Aktion -> Zielfeld. | Panel | nein | Kein Modal. |
|
||||
| Wenn-Feld auswaehlen | Operator-Dropdown wird passend zum Feldtyp gefiltert. | Dropdown im Panel | nein | Text hat andere Operatoren als Boolean/Select. |
|
||||
| Wenn-Feld waehlen, Operator vergessen | Regel bleibt `Unvollstaendig`; Aktivieren/Test disabled. | Inline im Panel | ja fuer aktive Regel | Speichern als inaktiver Draft moeglich. |
|
||||
| Operator waehlen, Wert vergessen | Wertfeld wird markiert; Test disabled; Publish blockiert nur, wenn Regel aktiv ist. | Inline im Panel | ja fuer aktive Regel | "Mitte vergessen" wird lokal sichtbar. |
|
||||
| Ziel-Feld vergessen | Regel bleibt unvollstaendig; Summary zeigt fehlendes Zielfeld. | Inline | ja fuer aktive Regel | Sprungziel auf Zielfeld-Auswahl. |
|
||||
| Bedingungsfeld und Zielfeld sind identisch | Inline-Warnung; Regel kann nicht aktiv werden. | Inline | ja fuer aktive Regel | Verhindert Selbstreferenz. |
|
||||
| Nutzer waehlt `ist leer` | Wertfeld verschwindet, weil kein Wert noetig ist. | Dynamisches Panel | nein | Wichtig: Feld nicht disabled ohne Erklaerung. |
|
||||
| Nutzer wechselt Wenn-Feld nach gesetztem Wert | Dlter Wert wird markiert als ungueltig oder geloescht nach Hinweis. | Inline-Hinweis / kleines Confirm | ja bis korrigiert | Keine stille Datenvernichtung. |
|
||||
| Nutzer loescht Feld, das in Regel steckt | Regel bleibt sichtbar, rot markiert, Publish blockiert. | Logic-Liste + Publish Summary | ja | Referenzbruch nicht verstecken. |
|
||||
|
||||
## Action-Detail / Mapping
|
||||
|
||||
| Nutzeraktion | Was passiert? | UI-Ebene | Blockiert? | Notiz |
|
||||
|---|---|---|---|---|
|
||||
| `Add Action` klicken | Typ-Auswahl oeffnet als Popover/Auswahlpanel mit kurzen Beschreibungen. | Popover | nein | Kein Modal. |
|
||||
| Action-Typ waehlen | Detailpanel oeffnet mit typ-spezifischen Pflichtfeldern. | Panel/Drawer | nein | Action ist erstmal unvollstaendig. |
|
||||
| Typ `Email Submitter` waehlen, aber kein Email-Feld vorhanden | Panel zeigt Hinweis und bietet `Email-Feld hinzufuegen` oder anderes Feld waehlen. | Inline-Hinweis + CTD | ja fuer aktive Action | Kein stilles Mapping. |
|
||||
| Typ `Projekt erstellen` waehlen, aber Pipeline fehlt | Pipeline-Feld markiert; Test/Publish blockiert fuer aktive Action. | Inline | ja | Action darf als inaktiv geparkt werden. |
|
||||
| Mapping-Zeile Ziel gesetzt, Quelle vergessen | Zeile bleibt unvollstaendig; Test disabled; Publish blockiert aktive Action. | Inline in Mapping-Zeile | ja fuer aktive Action | "Mitte vergessen" bei Mapping. |
|
||||
| Nutzer aendert Action-Typ nach Mapping | Hinweis: bestehendes Mapping passt evtl. nicht mehr; Nutzer bestaetigt oder bricht ab. | Confirm/Popover | ja bis Bestaetigung | Sonst Datenverlust. |
|
||||
| Nutzer deaktiviert unvollstaendige Action | Warnung verschwindet aus Publish-Blockern, bleibt aber in Action-Liste als inaktiv/unvollstaendig. | Inline | nein | Inaktive Actions duerfen Draft bleiben. |
|
||||
| Webhook URL eingetragen, aber ungueltig | URL-Feld zeigt Fehler, Test disabled. | Inline | ja fuer aktive Action/Test | Copy: `URL muss mit http:// oder https:// beginnen.` |
|
||||
| Test ausfuehren ohne Pflichtmapping | Test startet nicht; Panel markiert fehlende Zeilen. | Inline | ja fuer Test | Kein Toast, weil nichts ausgefuehrt wurde. |
|
||||
|
||||
## Publish / Save / Wechselwirkungen
|
||||
|
||||
| Nutzeraktion | Was passiert? | UI-Ebene | Blockiert? | Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Publish klicken mit fehlendem Feldlabel | Publish Summary zeigt Blocker und springt zur Feldkarte/Inspector. | Inline Summary | ja | Kein Modal. |
|
||||
| Publish klicken mit unvollstaendiger aktiver Logic | Summary zeigt Logic-Blocker, Klick oeffnet Logic-Modus und Detailpanel. | Summary + Panel | ja | Direkt reparierbar. |
|
||||
| Publish klicken mit inaktiver unvollstaendiger Action | Warnung optional, aber kein Blocker. | Warning | nein | Inaktiv wirkt nicht public. |
|
||||
| Publish klicken mit unsaved changes | Erst Save/Validation-Hinweis; danach Publish-Check. | Inline/Popover | ja bis Save | Kein eigener Screen. |
|
||||
| Published Form stark aendern | Hinweis, dass Public-Version betroffen ist; Save/Publish-Update klar trennen. | Banner/Inline | nein/Warning | David/Dev muss final entscheiden, ob Update extra Publish braucht. |
|
||||
| Nutzer verlaesst S01 mit Dirty State | [[M04 Unsaved Changes Confirm]] greift. | Confirm/Browser Guard | ja bis Entscheidung | Standard-Guard. |
|
||||
| Unpublish klicken | [[M02 Unpublish Confirm]] oeffnet. | Confirm Modal | ja bis Bestaetigung | Public-Link betroffen. |
|
||||
|
||||
## Public-Preview / Live-Folgen
|
||||
|
||||
| Nutzeraktion | Was passiert? | UI-Ebene | Blockiert? | Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Preview oeffnen mit unvollstaendigem Feld | Preview zeigt Draft-nahe Darstellung, aber Warnung bleibt im Builder. | Preview + Inline-Warnung | nein | Preview darf beim Bauen helfen. |
|
||||
| Logic in Preview testen | Felder erscheinen/verschwinden live. | Preview-Modus | nein | Nutzer sieht Folge direkt. |
|
||||
| Datei/Fotofeld in Preview | Upload-Bereich zeigt erlaubte Typen, max. Groesse, mobile Foto-Hinweis. | Preview | nein | Kein echter Upload noetig im Builder. |
|
||||
| Captcha/Public Schutz in Preview | Kann als Platzhalter sichtbar sein. | Preview | nein | Kein echtes Captcha im Builder notwendig. |
|
||||
|
||||
## Modal-/Popover-Inhalte
|
||||
|
||||
| UI-Ebene | Wann | Inhalt |
|
||||
|---|---|---|
|
||||
| Action-Typ-Popover | `Add Action` | Liste der Action-Typen, je ein Kurzsatz, disabled Hinweis fuer nicht verfuegbare Typen. |
|
||||
| Feldtyp-Wechsel-Confirm | Feldtyp nach Konfiguration aendern | Was verloren geht: Optionen, Validation, Default, Mapping-Hinweis; Buttons `Typ aendern` / `Abbrechen`. |
|
||||
| Option-loeschen-Confirm | Option wird in Logic genutzt | betroffene Regel(n), Hinweis auf Publish-Blocker, Buttons `Option loeschen` / `Abbrechen`. |
|
||||
| Feld-loeschen-Confirm | Feld wird in Logic/Actions genutzt | Feldname, Field Key, betroffene Regeln/Actions, Buttons `Feld loeschen` / `Abbrechen`. |
|
||||
| Publish-Warnpopover | nur Warnungen, keine Blocker | Warnliste und Button `Trotzdem veroeffentlichen` falls Produkt das erlaubt. |
|
||||
| Unpublish-Confirm | Public-Link offline nehmen | Public URL, Folge fuer QR/iFrame, Buttons `Unpublish` / `Abbrechen`. |
|
||||
|
||||
## Offene Produktentscheidungen
|
||||
|
||||
| Frage | Empfehlung |
|
||||
|---|---|
|
||||
| Darf der Feldtyp nachtraeglich gewechselt werden? | Ja, aber mit Confirm, wenn dadurch Optionen/Validation/Mapping betroffen sind. |
|
||||
| Werden unvollstaendige inaktive Logic/Actions gespeichert? | Ja, als Draft/inaktiv, aber klar markiert. |
|
||||
| Blockiert fehlende Datei-Typbeschraenkung Publish? | Empfehlung: Warnung, kein harter Blocker. |
|
||||
| Braucht `Bild hinzufuegen` einen eigenen Content Block? | Nicht in D-FORM v1. Bilder/Fotos laufen als Datei-Feld-Variante; Branding-Logo gehoert in Settings/Public Form. |
|
||||
| Sollen published Aenderungen direkt live gehen oder Publish-Update brauchen? | Offene Produktentscheidung; S01 muss Zustand `Published mit ungespeicherten/unveroeffentlichten Aenderungen` zeigen koennen. |
|
||||
|
||||
## Subframe
|
||||
|
||||
Kein eigener Subframe-Screen. D10 ist eine Vor-Subframe-Case-Matrix. Wenn David einzelne Faelle visuell sehen will, sollten zuerst diese Kandidaten gebaut werden:
|
||||
|
||||
- [[M01 Feld loeschen Confirm]]
|
||||
- [[M02 Unpublish Confirm]]
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: M01
|
||||
screen: Feld loeschen Confirm
|
||||
typ: Confirm Modal
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: von S01 Feldkarte oder Inspector
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# M01 - Feld loeschen Confirm
|
||||
|
||||
## Ziel
|
||||
|
||||
Interne Nutzer bestaetigen bewusst, dass ein Feld entfernt wird, besonders wenn es in Logic oder Actions verwendet wird.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
D5 Confirm-Modal / kleiner Sicherheitsdialog.
|
||||
|
||||
## Daten
|
||||
|
||||
- Feldname
|
||||
- Feldtyp
|
||||
- Field Key
|
||||
- Anzahl betroffener Logic-Regeln
|
||||
- Anzahl betroffener Actions oder Mapping-Zeilen
|
||||
- Publish-Status des Formulars
|
||||
|
||||
## Aktionen
|
||||
|
||||
- `Feld loeschen`
|
||||
- `Abbrechen`
|
||||
- optional `Betroffene Regeln ansehen`
|
||||
- optional `Betroffene Actions ansehen`
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Bei Feldern ohne Abhaengigkeiten kann Loeschen sehr kurz bestaetigt werden oder als Menue-Aktion mit Undo/Toast laufen.
|
||||
- Bei Abhaengigkeiten ist ein Confirm Pflicht.
|
||||
- Der Confirm nennt konkret, welche Regeln oder Actions betroffen sind.
|
||||
- Nach Loeschen wird das Feld entfernt; betroffene Logic/Actions werden markiert oder muessen repariert werden.
|
||||
- Publish bleibt blockiert, solange kaputte Referenzen existieren.
|
||||
- Details zu Folgefaellen stehen in [[D10 Builder Interaktionsfaelle]].
|
||||
|
||||
## Layout / Inhalt
|
||||
|
||||
1. Headline `Feld loeschen?`
|
||||
2. Feldname und Feldtyp.
|
||||
3. Hinweis, dass das Feld aus dem Formular entfernt wird.
|
||||
4. Falls relevant: Liste der betroffenen Logic-Regeln und Actions.
|
||||
5. Aktionen: Danger-Button `Feld loeschen`, sekundar `Abbrechen`.
|
||||
|
||||
## Modal-Inhalt je Fall
|
||||
|
||||
| Fall | Was steht im Modal? |
|
||||
|---|---|
|
||||
| Keine Abhaengigkeit | `Dieses Feld wird aus dem Formular entfernt.` |
|
||||
| Feld in Logic verwendet | `Dieses Feld wird in 2 Logic-Regeln verwendet. Diese Regeln muessen danach repariert oder deaktiviert werden.` |
|
||||
| Feld in Actions verwendet | `Dieses Feld ist in 1 Action-Mapping hinterlegt. Die Action wird danach unvollstaendig.` |
|
||||
| Published Form | `Das Formular ist veroeffentlicht. Aenderungen koennen die oeffentliche Version betreffen.` |
|
||||
| Datei/Fotofeld | `Das Upload-Feld wird entfernt. Bereits eingereichte Dateien in Submissions sind davon nicht Teil dieses Builders.` |
|
||||
|
||||
## Nach Bestaetigung
|
||||
|
||||
| Folge | Verhalten |
|
||||
|---|---|
|
||||
| Feld geloescht | Feldkarte verschwindet, Canvas selektiert naechstes sinnvolles Feld. |
|
||||
| Logic betroffen | Regel wird rot/kaputt markiert und in Publish Summary gelistet. |
|
||||
| Action betroffen | Mapping-Zeile wird als fehlend markiert; aktive Action blockiert Publish. |
|
||||
| Keine Abhaengigkeit | Toast `Feld geloescht`; Undo optional. |
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Ohne Abhaengigkeit | einfacher Confirm oder kurze Rueckfrage. | Nur dokumentieren |
|
||||
| Mit Logic/Action-Bezug | Confirm mit Referenzliste. | Nur dokumentieren |
|
||||
| Published Form | Hinweis, dass Public-Version betroffen sein kann. | Nur dokumentieren |
|
||||
| Fehler | Loeschen fehlgeschlagen. | Nur dokumentieren |
|
||||
|
||||
## Subframe
|
||||
|
||||
Noch kein eigener Subframe-Frame. Wenn David einen Modal-Frame fuer D-FORM sehen will, ist dieses Confirm der erste Kandidat.
|
||||
|
||||
## Notizen
|
||||
|
||||
Keine normale Feldbearbeitung im Modal. Das Modal ist nur fuer den Risiko-Moment Loeschen.
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: M02
|
||||
screen: Unpublish Confirm
|
||||
typ: Confirm Modal
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: von S01 Header oder More-Menue
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# M02 - Unpublish Confirm
|
||||
|
||||
## Ziel
|
||||
|
||||
Interne Nutzer bestaetigen bewusst, dass ein Public Form nicht mehr erreichbar ist.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
D5 Confirm-Modal.
|
||||
|
||||
## Daten
|
||||
|
||||
- Formularname
|
||||
- aktuelle Public URL
|
||||
- Publish-Status
|
||||
- Hinweis, ob iFrame/QR ebenfalls betroffen sind
|
||||
|
||||
## Aktionen
|
||||
|
||||
- `Unpublish`
|
||||
- `Abbrechen`
|
||||
- optional Public URL kopieren, bevor deaktiviert wird
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Klick auf `Unpublish` oeffnet einen Confirm-Dialog.
|
||||
- Der Dialog erklaert, dass Public URL, QR und iFrame danach nicht mehr fuer Submitter nutzbar sind.
|
||||
- Nach Bestaetigung wechselt der Status zu Draft/Unpublished.
|
||||
- Sharing zeigt danach Draft-Hinweis.
|
||||
- Erfolg wird per Toast bestaetigt.
|
||||
|
||||
## Layout / Inhalt
|
||||
|
||||
1. Headline `Formular offline nehmen?`
|
||||
2. Hinweis: Der oeffentliche Link ist danach nicht mehr erreichbar.
|
||||
3. Public URL als Kontext.
|
||||
4. Aktionen: Danger- oder Secondary-Button `Unpublish`, sekundar `Abbrechen`.
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Confirm | Nutzer bestaetigt Public-Auswirkung. | Nur dokumentieren |
|
||||
| Laden | Statuswechsel wird gespeichert. | Wiederverwenden |
|
||||
| Erfolg | Builder zeigt Draft/Unpublished. | Toast/Statuswechsel |
|
||||
| Fehler | Unpublish fehlgeschlagen. | Nur dokumentieren |
|
||||
|
||||
## Subframe
|
||||
|
||||
Noch kein eigener Subframe-Frame. Falls David einen public-wirksamen Confirm sehen will, ist M02 ein sinnvoller Kandidat.
|
||||
|
||||
## Notizen
|
||||
|
||||
Publish selbst bleibt Inline-Check. Unpublish braucht Confirm, weil externe Nutzer betroffen sind.
|
||||
@@ -0,0 +1,67 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: M03
|
||||
screen: Archive Confirm
|
||||
typ: Confirm Modal
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: von S01 More-Menue
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# M03 - Archive Confirm
|
||||
|
||||
## Ziel
|
||||
|
||||
Interne Nutzer bestaetigen bewusst, dass ein Formular archiviert und nicht mehr normal bearbeitet wird.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
D5 Confirm-Modal.
|
||||
|
||||
## Daten
|
||||
|
||||
- Formularname
|
||||
- Publish-Status
|
||||
- Anzahl Felder
|
||||
- Hinweis auf Public-Verfuegbarkeit
|
||||
- Hinweis auf spaetere Duplikat-Option
|
||||
|
||||
## Aktionen
|
||||
|
||||
- `Drchivieren`
|
||||
- `Abbrechen`
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Drchivieren liegt im More-Menue, nicht als Hauptaktion.
|
||||
- Der Confirm erklaert, ob die Public-Version deaktiviert wird oder ob vorher Unpublish noetig ist.
|
||||
- Nach Drchivierung wird S01 read-only oder verlaesst den Bearbeitungsmodus.
|
||||
- Primaere naechste Aktion ist meist `Duplizieren` oder zur Forms-Liste zurueck, aber Forms-Liste ist nicht Teil von D-FORM.
|
||||
|
||||
## Layout / Inhalt
|
||||
|
||||
1. Headline `Formular archivieren?`
|
||||
2. Kurztext, dass das Formular nicht mehr aktiv bearbeitet werden soll.
|
||||
3. Hinweis auf Public-Link-Folge.
|
||||
4. Aktionen: Danger-Button `Drchivieren`, sekundar `Abbrechen`.
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Confirm | Sicherheitsfrage vor Drchivierung. | Nur dokumentieren |
|
||||
| Published | Hinweis auf Public-Folge. | Nur dokumentieren |
|
||||
| Laden | Drchivierung wird gespeichert. | Wiederverwenden |
|
||||
| Fehler | Drchivieren fehlgeschlagen. | Nur dokumentieren |
|
||||
|
||||
## Subframe
|
||||
|
||||
Kein eigener Hauptscreen. Nur als Confirm-Zustand dokumentieren, ausser David will Risiko-Modals gesammelt bauen.
|
||||
|
||||
## Notizen
|
||||
|
||||
Archive ist nicht dasselbe wie Unpublish. Falls das Produkt beides koppelt, muss Development/Produkt das final festlegen.
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
id: M04
|
||||
screen: Unsaved Changes Confirm
|
||||
typ: Confirm Modal / Browser Guard
|
||||
umsetzung: Nur dokumentieren
|
||||
status: Vor Subframe / dokumentiert
|
||||
route: beim Verlassen von S01 mit Dirty State
|
||||
subframe: "-"
|
||||
---
|
||||
|
||||
# M04 - Unsaved Changes Confirm
|
||||
|
||||
## Ziel
|
||||
|
||||
Interne Nutzer verlieren keine ungespeicherten Builder-Aenderungen, wenn sie S01 verlassen.
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
Confirm-Dialog oder Browser Navigation Guard.
|
||||
|
||||
## Daten
|
||||
|
||||
- Dirty State
|
||||
- letzter Speicherzeitpunkt
|
||||
- ob Save aktuell moeglich ist
|
||||
- ob Publish-Check noch Blocker hat
|
||||
|
||||
## Aktionen
|
||||
|
||||
- `Speichern und verlassen`
|
||||
- `Ohne Speichern verlassen`
|
||||
- `Abbrechen`
|
||||
|
||||
## Verhalten
|
||||
|
||||
- Der Zustand tritt nur auf, wenn ungespeicherte Aenderungen existieren.
|
||||
- Bei normalem Wechsel zwischen S01-Modi erscheint kein Dialog.
|
||||
- Beim Wegnavigieren ueber Breadcrumb, Routewechsel oder Browser-Zurueck wird gewarnt.
|
||||
- Wenn Autosave voll zuverlaessig ist, kann der Zustand zu einem kurzen Save-Hinweis reduziert werden.
|
||||
|
||||
## Zustaende
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Dirty | Aenderungen noch nicht gespeichert. | Nur dokumentieren |
|
||||
| Save moeglich | Nutzer kann speichern und verlassen. | Nur dokumentieren |
|
||||
| Save fehlgeschlagen | Nutzer soll im Builder bleiben koennen. | Nur dokumentieren |
|
||||
| Keine Aenderungen | kein Confirm noetig. | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
Kein eigener Subframe-Screen. Standard-Guard, nur dokumentieren.
|
||||
|
||||
## Notizen
|
||||
|
||||
Dieser Zustand ist wichtig fuer Builder-Vertrauen, aber kein D-FORM-Hauptframe.
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
---
|
||||
kind: design-direction
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
status: Review-ready / Subframe Draft gebaut
|
||||
stand: 2026-07-09
|
||||
---
|
||||
|
||||
# Simple Builder Neuausrichtung
|
||||
|
||||
## Warum
|
||||
|
||||
Der bisherige S01 ist fachlich vollstaendig, wirkt fuer normale Handwerksbetriebe aber zu schwer. Nutzer sollen nicht das Gefuehl haben, einen Automations- oder CRM-Editor bedienen zu muessen, wenn sie nur ein Anfrageformular erstellen wollen.
|
||||
|
||||
Neue Richtung: einfacher Formular-Editor nach Google-Forms-Gefuehl, aber mit HiveGrid-Logik im Hintergrund.
|
||||
|
||||
## Grundsatz
|
||||
|
||||
| Alt | Neu |
|
||||
|---|---|
|
||||
| Palette + Canvas + Inspector dauerhaft sichtbar | Ein ruhiger Fragen-Editor mit einzelnen Fragekarten |
|
||||
| Viele Arbeitsmodi gleichzeitig | Nur das zeigen, was fuer den naechsten Schritt gebraucht wird |
|
||||
| Logic, Actions, Mapping sichtbar als Profi-Module | Logic/Lead-Verknuepfung als einfache Zusatzoptionen |
|
||||
| 12 technische Feldtypen | Verstaendliche Fragetypen |
|
||||
| Nutzer baut Verknuepfungen selbst | Lead-Formular ist automatisch aktiv, zeigt aber `Felder zuweisen` verstaendlich im Editor |
|
||||
|
||||
## Neue Screen-Idee
|
||||
|
||||
| ID | Screen | Ziel |
|
||||
|---|---|---|
|
||||
| S00 | [[Screens/01 S00 Formulare verwalten|S00 Formulare verwalten]] | Formular-Zentrale als erste Seite: finden, mehrfach filtern, bearbeiten, neu erstellen. |
|
||||
| E01 | [[Screens/02 E01 S00 Keine Formulare|E01 S00 Keine Formulare]] | Empty State, wenn noch kein Formular existiert. |
|
||||
| E02 | [[Screens/03 E02 S00 Keine Treffer|E02 S00 Keine Treffer]] | Empty State, wenn Suche/Filter nichts finden. |
|
||||
| S01 | [[Screens/04 S01 Formularart auswaehlen|S01 Formularart auswaehlen]] | Nutzer waehlt zuerst, welche Art Formular er bauen will. |
|
||||
| S02 | [[Screens/05 S02 Einfacher Fragen Editor|S02 Einfacher Fragen Editor]] | Haupt-Editor fuer alle Formulararten, jeweils mit Vorlage/Startfragen. |
|
||||
| S02L | [[Screens/05b S02L Lead Felder zuweisen|S02L Lead Felder zuweisen]] | Lead-spezifischer Zustand im S02-Look: Formularfragen Lead-Feldern zuweisen. |
|
||||
| E05 | [[Screens/05c E05 S02 Lead Zuweisung pruefen|E05 S02 Lead Zuweisung pruefen]] | Fehlerzustand, wenn eine Lead-Zuweisung fehlt oder nicht moeglich ist. |
|
||||
| S03 | [[Screens/06 S03 Formular Design|S03 Formular Design]] | Design-Tab mit Logo, Farben und Live-Vorschau. |
|
||||
| S04 | [[Screens/07 S04 Oeffentliches Formular|S04 Oeffentliches Formular]] | Public Zielbild fuer Kunden. |
|
||||
| V01 | [[Screens/08 V01 Public Erfolg oder Redirect|V01 Public Erfolg oder Redirect]] | Erfolg nach Absenden. |
|
||||
| V02 | [[Screens/09 V02 Public Formular nicht verfuegbar|V02 Public Formular nicht verfuegbar]] | Public-Blocker, wenn Formular nicht erreichbar ist. |
|
||||
| V03 | [[Screens/10 V03 Public Captcha oder Submit Fehler|V03 Public Captcha oder Submit Fehler]] | Public Fehlerzustand mit erhaltenen Werten. |
|
||||
| S05 | [[Screens/11 S05 Antworten Tabelle|S05 Antworten Tabelle]] | Antworten-Tab als Excel-/Tabellenansicht ohne Kennzahl-Kacheln. |
|
||||
| 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. |
|
||||
|
||||
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
|
||||
|
||||
```text
|
||||
S00 Formulare verwalten
|
||||
-> Neues Formular
|
||||
-> S01 Formularart auswaehlen
|
||||
-> S02 mit passender Vorlage/Startfragen
|
||||
-> Design: S03
|
||||
-> Public Zielbild: S04 und Public States
|
||||
-> Antworten/Export: S05
|
||||
```
|
||||
|
||||
S00 bleibt bewusst knapp: vier Karten, kurze Texte, unten `Weiter`. Keine zweite Vorlagen-Auswahl im selben Screen.
|
||||
|
||||
## Formulararten
|
||||
|
||||
| Art | Fuer wen | Was passiert automatisch? |
|
||||
|---|---|---|
|
||||
| Website-/Externes Formular | Kunden oder Interessenten fuellen es per Link/Website aus. | Public Link, mCaptcha, Datenschutz-Hinweis. |
|
||||
| Lead-Formular | Neue Kundenanfragen sollen direkt im Vertrieb landen. | Kontakt-/Anfragefelder werden vorgeschlagen, Lead-Erstellung ist aktiv, `Felder zuweisen` ist sichtbar. |
|
||||
| Fragebogen / Umfrage | Feedback, Zufriedenheit, kurze Abfragen. | Antworten werden gesammelt und als Auswertung vorbereitet, keine Lead-Pipeline. |
|
||||
| Internes Formular | Mitarbeiter melden etwas intern, z. B. Material, Rueckruf, Schaden. | Kein Public-Marketing-Kontext, interne Sicht und interne Ablage. |
|
||||
|
||||
## Fragetypen statt Feldtypen
|
||||
|
||||
| Fragetyp | UI-Begriff |
|
||||
|---|---|
|
||||
| Einzeiliger Text | Kurzantwort |
|
||||
| Mehrzeiliger Text | Absatz |
|
||||
| Single Select | Multiple Choice |
|
||||
| Multi Select | Mehrfachauswahl |
|
||||
| Select | Drop-down |
|
||||
| Datei / Bild | Datei oder Bild hochladen |
|
||||
| Datum | Datum |
|
||||
| Zeit | Uhrzeit |
|
||||
|
||||
Email, Telefon und Name koennen beim Lead-Formular als vorgeschlagene Startfragen erscheinen, statt als technische Sondertypen laut zu werden.
|
||||
|
||||
Bewusst nicht im aktuellen S02-Hauptdropdown: Lineare Skala, Bewertung, Multiple-Choice-Raster und Kaestchenraster. Diese Typen koennen spaeter wieder diskutiert werden, werden jetzt aber nicht gebaut.
|
||||
|
||||
## Was bleibt aus unserer bisherigen Logik
|
||||
|
||||
- Public Formular S04 bleibt Zielbild fuer Kunden.
|
||||
- mCaptcha bleibt fuer externe Formulare.
|
||||
- Publish-Blocker bleiben, aber einfacher formuliert.
|
||||
- Logic bleibt moeglich, aber als `Bedingung` an einer Frage.
|
||||
- Actions bleiben im Screen. Bei Lead-Formularen wird `Lead anlegen` als einfache Card mit `Felder zuweisen` gezeigt.
|
||||
- Link/QR/Einbetten bleiben moeglich, aber im Veroeffentlichen-/Public-Link-Kontext statt als eigener Reiter.
|
||||
|
||||
## Empfehlung
|
||||
|
||||
S02 wurde in Subframe gebaut, weil es am naechsten an Google Forms liegt und schnell vergleichbar ist.
|
||||
|
||||
S01C/S01D/S01E wurden als Beispiel-Editoren gebaut, sind aktuell aber nur Referenz. Im Hauptfluss oeffnen alle Formulararten S02 mit anderer Vorlage/Startfragen.
|
||||
|
||||
Die alten Advanced-Screens wurden aus dem Obsidian-Handoff entfernt, damit S02 als klare Empfehlung stehen bleibt.
|
||||
|
||||
## Ergaenzung: Lead Felder zuweisen
|
||||
|
||||
Nach David-Feedback reicht der reine Hinweis `Lead-Verknuepfung aktiv` nicht. Nutzer muessen sehen koennen, welche Frage in welches Lead-Feld geschrieben wird.
|
||||
|
||||
Entscheidung:
|
||||
|
||||
- Keine Advanced-Mapping-Tabelle.
|
||||
- Gleicher Look wie S02.
|
||||
- Die blaue Lead-Hinweis-Card nutzt dieselbe Struktur wie die gruene `Lead anlegen`-Card: Icon links, Titel/Badge/Beschreibung in der Mitte, Aktion rechts.
|
||||
- Dropdown-Vorlage fuer jede Zuweisung.
|
||||
- Pflicht: Name, Kontaktweg und Beschreibung.
|
||||
- Optional: Bereich, Datei/Bild, Quelle.
|
||||
- Nicht passende Optionen werden verhindert oder disabled mit Begruendung gezeigt.
|
||||
- Wenn eine Zuweisung unmoeglich ist, greift E05.
|
||||
|
||||
## Ergaenzung: Verwaltung und Tabs
|
||||
|
||||
Nach der Formularart-Auswahl braucht der Nutzer auch einen ruhigen Ort, an dem alle Formulare verwaltet werden. Dafuer wurde S00 als Formular-Zentrale ergaenzt.
|
||||
|
||||
Innerhalb eines Formulars bleiben die Reiter bewusst einfach:
|
||||
|
||||
| Reiter | Bedeutung |
|
||||
|---|---|
|
||||
| Fragen | Formularfelder bauen und bearbeiten. |
|
||||
| Design | Logo, Farben und Darstellung fuer die Kundensicht anpassen. |
|
||||
| Antworten | Einsendungen als einfache Tabelle ansehen und exportieren. |
|
||||
|
||||
Link, QR-Code und Einbettung werden nach dem Veroeffentlichen bzw. im Public-Link-Kontext verwaltet, nicht als eigener Hauptreiter.
|
||||
|
||||
## Subframe-Links
|
||||
|
||||
| Screen | Subframe |
|
||||
|---|---|
|
||||
| S01 Formularart auswaehlen | https://app.subframe.com/f023064a5ca0/design/c423ebcd-914f-4038-ab9f-7c2a745a8bec/edit |
|
||||
| S02 Einfacher Fragen Editor | https://app.subframe.com/f023064a5ca0/design/181aaa0f-5ae7-4f74-acf7-8273fbbe4dd5/edit |
|
||||
| S02L Lead Felder zuweisen | https://app.subframe.com/f023064a5ca0/design/c8aa80cb-0cc8-473f-9fac-a09d395e6571/edit |
|
||||
| E05 S02 Lead Zuweisung pruefen | https://app.subframe.com/f023064a5ca0/design/26600ce4-7baf-4ffb-9955-7c7d1eef99d1/edit |
|
||||
| S00 Formulare verwalten | https://app.subframe.com/f023064a5ca0/design/2325aa7a-d968-4028-8282-0823b15bf964/edit |
|
||||
| S03 Formular Design | https://app.subframe.com/f023064a5ca0/design/090f06a9-3fa7-4442-b8bc-035e95de7329/edit |
|
||||
| S04 Oeffentliches Formular | https://app.subframe.com/f023064a5ca0/design/caef9ddd-03d6-4a26-8dc1-16aa198a7304/edit |
|
||||
| V01 Public Erfolg oder Redirect | https://app.subframe.com/f023064a5ca0/design/c06ecfc3-1f86-4dfe-9cfd-cec8b8629253/edit |
|
||||
| V02 Public Formular nicht verfuegbar | https://app.subframe.com/f023064a5ca0/design/f96ec12a-5e6a-471d-9a9c-6babcb57c74c/edit |
|
||||
| V03 Public Captcha oder Submit Fehler | https://app.subframe.com/f023064a5ca0/design/95c96bc9-35d4-47ce-b510-7d8ea1f41936/edit |
|
||||
| S05 Antworten Tabelle | https://app.subframe.com/f023064a5ca0/design/9e8eeab7-44ea-4b77-85e6-0818d97e1ac3/edit |
|
||||
| E01 S00 Keine Formulare | https://app.subframe.com/f023064a5ca0/design/136c11b3-8310-4165-b4ba-9cf099ee0873/edit |
|
||||
| E02 S00 Keine Treffer | https://app.subframe.com/f023064a5ca0/design/ccf8d2f7-e7b4-4ffd-87f6-1785edc1b2f7/edit |
|
||||
| E03 S05 Keine Antworten | https://app.subframe.com/f023064a5ca0/design/6f56c14f-d66e-4734-8a29-a900ac74a8a7/edit |
|
||||
| E04 S05 Export Fehler | https://app.subframe.com/f023064a5ca0/design/00553ea4-9839-4d22-b540-9b9ef0bf014f/edit |
|
||||
@@ -0,0 +1,173 @@
|
||||
---
|
||||
kind: subframe-build-log
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
status: Review-ready / Subframe Draft gebaut
|
||||
stand: 2026-07-09
|
||||
---
|
||||
|
||||
# Subframe Bau Log - D-FORM
|
||||
|
||||
## Projekt
|
||||
|
||||
Subframe-Projekt: `Basedesign`
|
||||
Project ID: `f023064a5ca0`
|
||||
Flow: `(MCP) WF-D-FORM Form Builder`
|
||||
Flow-Link: https://app.subframe.com/f023064a5ca0/flow/afb1c257-46f0-4b23-aaed-d75f4773f1a9/edit?tab=ai&conversationId=02d948da-f9aa-4ab5-8352-2745789bb9ad
|
||||
|
||||
## Gebaut
|
||||
|
||||
| Nr. | ID | Screen | Status | Subframe |
|
||||
|---|---|---|---|---|
|
||||
| 01 | S00 | Formulare verwalten | Hauptfluss | https://app.subframe.com/f023064a5ca0/design/2325aa7a-d968-4028-8282-0823b15bf964/edit |
|
||||
| 02 | E01 | S00 Keine Formulare | Hauptfluss / Empty | https://app.subframe.com/f023064a5ca0/design/136c11b3-8310-4165-b4ba-9cf099ee0873/edit |
|
||||
| 03 | E02 | S00 Keine Treffer | Hauptfluss / Empty | https://app.subframe.com/f023064a5ca0/design/ccf8d2f7-e7b4-4ffd-87f6-1785edc1b2f7/edit |
|
||||
| 04 | S01 | Formularart auswaehlen | Hauptfluss | https://app.subframe.com/f023064a5ca0/design/c423ebcd-914f-4038-ab9f-7c2a745a8bec/edit |
|
||||
| 05 | S02 | Einfacher Fragen Editor | Hauptfluss | https://app.subframe.com/f023064a5ca0/design/181aaa0f-5ae7-4f74-acf7-8273fbbe4dd5/edit |
|
||||
| 05b | S02L | Lead Felder zuweisen | Hauptfluss / Lead State | https://app.subframe.com/f023064a5ca0/design/c8aa80cb-0cc8-473f-9fac-a09d395e6571/edit |
|
||||
| 05c | E05 | S02 Lead Zuweisung pruefen | Hauptfluss / Lead Error | https://app.subframe.com/f023064a5ca0/design/26600ce4-7baf-4ffb-9955-7c7d1eef99d1/edit |
|
||||
| 06 | S03 | Formular Design | Hauptfluss | https://app.subframe.com/f023064a5ca0/design/090f06a9-3fa7-4442-b8bc-035e95de7329/edit |
|
||||
| 07 | S04 | Oeffentliches Formular | Public Zielbild | https://app.subframe.com/f023064a5ca0/design/caef9ddd-03d6-4a26-8dc1-16aa198a7304/edit |
|
||||
| 08 | V01 | Public Erfolg oder Redirect | Public State | https://app.subframe.com/f023064a5ca0/design/c06ecfc3-1f86-4dfe-9cfd-cec8b8629253/edit |
|
||||
| 09 | V02 | Public Formular nicht verfuegbar | Public State | https://app.subframe.com/f023064a5ca0/design/f96ec12a-5e6a-471d-9a9c-6babcb57c74c/edit |
|
||||
| 10 | V03 | Public Captcha oder Submit Fehler | Public State | https://app.subframe.com/f023064a5ca0/design/95c96bc9-35d4-47ce-b510-7d8ea1f41936/edit |
|
||||
| 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 |
|
||||
| 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 |
|
||||
|
||||
## Qualitaetscheck Builder
|
||||
|
||||
- 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.
|
||||
- S01 wurde am 2026-07-08 reduziert: keine doppelte Vorlagenzeile und keine einzelnen `Auswaehlen`-Links in den Karten; Auswahl ueber Karte + `Weiter`.
|
||||
- S01 macht Lead-Formular bewusst einfach: Antworten werden automatisch als Lead gespeichert, kein Mapping fuer normale Nutzer.
|
||||
- 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. 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.
|
||||
- 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.
|
||||
- S01D ist nur Referenz fuer Fragebogen/Umfrage; im aktuellen Hauptfluss keine Skala, Bewertung oder Raster bauen.
|
||||
- S01E nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
|
||||
- S01E ist das Beispiel fuer Internes Formular: interne Meldung/Materialbedarf, Team-Ziel, keine Public-Link- oder Lead-Pipeline-Logik.
|
||||
- S01C und S01E wurden am 2026-07-07 neu aufgebaut, weil die alten Subframe-IDs nicht mehr auffindbar waren.
|
||||
- S00 nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
|
||||
- S00 ist die Formular-Zentrale: Mehrfachfilter nach Status und Art, Suche, Sortierung, Tabelle und Zeilenaktionen.
|
||||
- S00 zeigt mehrere aktive Status-Filter; die Art-Filter stehen separat bereit, damit nicht nur ein einzelner Tab moeglich wirkt.
|
||||
- S03 nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
|
||||
- S03 ist der Design-Tab: Logo, Akzentfarbe, Theme, Formularbreite, Datenschutz-Hinweis und Live-Vorschau der Kundensicht.
|
||||
- S05 nutzt das vorhandene `Default Page Layout`, nicht eine selbst nachgebaute Sidebar.
|
||||
- S05 ist der Antworten-Tab: Excel-aehnliche Tabelle, Suche, erweiterter Zeitraumfilter und Excel/CSV-Export. Keine Kennzahl-Kacheln, damit die Ansicht ruhig bleibt.
|
||||
- S05 hat keinen `Link teilen`-Button; Teilen/Link gehoert in den Veroeffentlichen-/Public-Link-Kontext.
|
||||
- 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.
|
||||
- Die alten Advanced-Screens und D07-D09 wurden aus dem Obsidian-Handoff entfernt, weil S02 der aktuelle Review-Hauptfluss ist.
|
||||
|
||||
## Qualitaetscheck Public
|
||||
|
||||
- S04 ist Kundensicht ohne App-Shell.
|
||||
- S04 zeigt Tenant, Formular-Intro, Name, Email, Telefon, Bereich, Beschreibung, Datei/Foto, Datenschutz-Checkbox, mCaptcha und Submit.
|
||||
- V01 bestaetigt klar, dass die Anfrage angekommen ist und deckt Redirect ab.
|
||||
- V02 ersetzt rohe 404/500-Fehler durch einen ruhigen Public-Blocker.
|
||||
- V03 behaelt Werte sichtbar und zeigt Captcha-, Upload- und Submit-Fehler ohne technische Details.
|
||||
- `File Upload` nutzt in S04 und V03 `fullwith={true}`, damit Upload-Felder die verfuegbare Formularbreite nutzen.
|
||||
- S04 und V03 nutzen jetzt die `Card`-Komponente fuer das zentrale Formularpanel. Die Groesse wird pro Instanz ueber `className` erweitert, nicht global an der Card-Komponente.
|
||||
- S04 und V03 sind optisch angeglichen: beide nutzen `max-w-[760px]`, dieselbe Card-Logik und eine einspaltige Feldreihenfolge. V03 zeigt denselben Aufbau mit erhaltenen Werten plus Fehlerbanner/Inline-Fehler.
|
||||
|
||||
## Komponenten-Notiz
|
||||
|
||||
Die Subframe-Komponente `File Upload` hat eine Boolean-Prop `fullwith`.
|
||||
|
||||
Stand 2026-07-06 wurde die Komponente angepasst:
|
||||
|
||||
- `fullwith={true}` wirkt im Default-/Hover-/Error-Dropbereich.
|
||||
- `fullwith={true}` wirkt jetzt auch im `uploading`-Zustand.
|
||||
- `fullwith={true}` wirkt jetzt auch im `uploaded`-Zustand.
|
||||
|
||||
Merksatz: In Formularen nicht nur `className="w-full"` setzen, sondern bei `File Upload` auch `fullwith={true}` verwenden.
|
||||
|
||||
## Noch offen
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Empfohlene sichtbare Sortierung:
|
||||
|
||||
1. `01 S00 Formulare verwalten`
|
||||
2. `02 E01 S00 Keine Formulare`
|
||||
3. `03 E02 S00 Keine Treffer`
|
||||
4. `04 S01 Formularart auswaehlen`
|
||||
5. `05 S02 Einfacher Fragen Editor`
|
||||
6. `05b S02L Lead Felder zuweisen`
|
||||
7. `05c E05 S02 Lead Zuweisung pruefen`
|
||||
8. `06 S03 Formular Design`
|
||||
9. `07 S04 Oeffentliches Formular`
|
||||
10. `08 V01 Public Erfolg oder Redirect`
|
||||
11. `09 V02 Public Formular nicht verfuegbar`
|
||||
12. `10 V03 Public Captcha oder Submit Fehler`
|
||||
13. `11 S05 Antworten Tabelle`
|
||||
14. `12 E03 S05 Keine Antworten`
|
||||
15. `13 E04 S05 Export Fehler`
|
||||
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.
|
||||
|
||||
## Modal-Regel fuer spaeter
|
||||
|
||||
Die vier bereits gebauten Public-Screens sind keine Modals:
|
||||
|
||||
- S04 Oeffentliches Formular
|
||||
- V01 Public Erfolg oder Redirect
|
||||
- V02 Public Formular nicht verfuegbar
|
||||
- V03 Public Captcha oder Submit Fehler
|
||||
|
||||
Falls spaeter D-FORM-M-Zustaende gebaut werden, muessen sie als `Dialog`-Komponente gebaut werden:
|
||||
|
||||
- M01 Feld loeschen Confirm
|
||||
- M02 Unpublish Confirm
|
||||
- M03 Archive Confirm
|
||||
- M04 Unsaved Changes Confirm
|
||||
|
||||
Die alten Advanced-Detailframes D07/D08/D09 sind nicht mehr Teil dieses Obsidian-Handoffs.
|
||||
|
||||
## Naechster Subframe-Schritt
|
||||
|
||||
Review in Subframe in dieser Reihenfolge:
|
||||
|
||||
1. `S00 Formulare verwalten`
|
||||
2. `E01 S00 Keine Formulare`
|
||||
3. `E02 S00 Keine Treffer`
|
||||
4. `S01 Formularart auswaehlen`
|
||||
5. `S02 Einfacher Fragen Editor`
|
||||
6. `S02L Lead Felder zuweisen`
|
||||
7. `E05 S02 Lead Zuweisung pruefen`
|
||||
8. `S03 Formular Design`
|
||||
9. `S04 Oeffentliches Formular`
|
||||
10. `V01 Public Erfolg oder Redirect`
|
||||
11. `V02 Public Formular nicht verfuegbar`
|
||||
12. `V03 Public Captcha oder Submit Fehler`
|
||||
13. `S05 Antworten Tabelle`
|
||||
14. `E03 S05 Keine Antworten`
|
||||
15. `E04 S05 Export Fehler`
|
||||
|
||||
Danach nur bei Bedarf die spaeteren Referenzseiten pruefen: S01C/S01D/S01E.
|
||||
@@ -0,0 +1,355 @@
|
||||
---
|
||||
kind: subframe-build-plan
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
status: Bauplan / umgesetzt als Review-ready Subframe Draft
|
||||
stand: 2026-07-09
|
||||
---
|
||||
|
||||
# Subframe Bauplan - D-FORM
|
||||
|
||||
Ziel: D-FORM so in Subframe bauen, dass der Unterschied sofort klar wird:
|
||||
|
||||
- **S02 Einfacher Fragen Editor** = internes Werkzeug fuer Mitarbeiter.
|
||||
- **S04 Oeffentliches Formular** = fertiges Formular fuer Kunden/Submitter.
|
||||
- **Preview in S02** = Vorschau auf S04, kein PDF.
|
||||
- **Logic** = steuert, welche Felder im Kundenformular sichtbar werden.
|
||||
- **Actions** = passiert nach dem Absenden, z. B. Email, Lead, Kontakt, Projekt, Task.
|
||||
|
||||
## 1. Verstaendnisanker
|
||||
|
||||
```text
|
||||
Mitarbeiter baut in S02:
|
||||
"Welche Fragen sollen Kunden beantworten?"
|
||||
|
||||
Kunde sieht S04:
|
||||
"Ich fuelle schnell ein Formular aus und sende es ab."
|
||||
|
||||
Nach Submit:
|
||||
Submission wird gespeichert und Actions koennen laufen.
|
||||
```
|
||||
|
||||
Der Kunde sieht nie den Builder. Der Kunde sieht nur die public Formularseite.
|
||||
|
||||
## 2. Review-Reihenfolge
|
||||
|
||||
Empfehlung fuer Review und Weiterarbeit: zuerst den aktuellen Hauptfluss pruefen. Spaetere Varianten und Advanced-Zustaende stehen bewusst hinten.
|
||||
|
||||
| Reihenfolge | Frame | Warum zuerst / danach? |
|
||||
|---|---|---|
|
||||
| 1 | S00 Formulare verwalten | Einstieg in den Arbeitsbereich: vorhandene Formulare, Mehrfachfilter, Status, Aktionen. |
|
||||
| 2 | E01 S00 Keine Formulare | Wichtiger Empty State der Formular-Zentrale. |
|
||||
| 3 | E02 S00 Keine Treffer | Wichtiger Filter-/Suchzustand der Formular-Zentrale. |
|
||||
| 4 | S01 Formularart auswaehlen | Nutzer entscheidet, welche Art Formular gebaut wird. |
|
||||
| 5 | S02 Einfacher Fragen Editor | Aktueller Haupt-Editor fuer alle Formulararten. |
|
||||
| 6 | S02L Lead Felder zuweisen | Lead-Zustand im gleichen S02-Look: Formularfragen Lead-Feldern zuweisen. |
|
||||
| 7 | E05 S02 Lead Zuweisung pruefen | Optionaler Fehlerzustand, wenn eine Zuweisung fehlt oder nicht moeglich ist. |
|
||||
| 8 | S03 Formular Design | Design-Tab: Logo, Farben, Public Preview. |
|
||||
| 9 | S04 Oeffentliches Formular | Zielbild: So sieht das fertige Formular fuer Kunden aus. |
|
||||
| 10 | V01 Public Erfolg oder Redirect | Zeigt, was nach Absenden passiert. |
|
||||
| 11 | V02 Public Formular nicht verfuegbar | Zeigt Public-Blocker ohne App-Kontext. |
|
||||
| 12 | V03 Public Captcha oder Submit Fehler | Zeigt Public-Fehler, Werte bleiben erhalten. |
|
||||
| 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. |
|
||||
| 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. |
|
||||
|
||||
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. 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
|
||||
|
||||
```text
|
||||
S00 Formulare verwalten
|
||||
-> Neues Formular
|
||||
-> S01 Formularart auswaehlen
|
||||
-> je Auswahl:
|
||||
Website / Extern -> S02 mit Website-/Extern-Vorlage
|
||||
Lead -> S02 mit aktiver Lead-Verknuepfung -> S02L Felder zuweisen
|
||||
Fragebogen / Umfrage -> S02 mit Umfrage-Startfragen
|
||||
Intern -> S02 mit interner Formularvorlage
|
||||
-> Design anpassen -> S03
|
||||
-> Public Zielbild pruefen -> S04/V01/V02/V03
|
||||
-> Antworten ansehen/exportieren -> S05
|
||||
```
|
||||
|
||||
Die Subframe-Seitenliste selbst ist nicht zwingend die Review-Reihenfolge. Fachlich gilt die Reihenfolge oben.
|
||||
|
||||
### Noch relevante Error-/Empty-Zustaende
|
||||
|
||||
| Bereich | Zustand | Eigener Screen noetig? | Notiz |
|
||||
|---|---|---|---|
|
||||
| S00 Verwaltung | Keine Formulare vorhanden | ja | E01 ist gebaut, weil die erste leere Nutzung fachlich wichtig ist. |
|
||||
| S00 Verwaltung | Suche/Filter ohne Treffer | ja | E02 ist gebaut, weil Mehrfachfilter sonst schnell verwirren. |
|
||||
| S01 Auswahl | Keine Formularart gewaehlt | nein | `Weiter` disabled oder Lead als Default vorausgewaehlt. |
|
||||
| S02 | Frage ohne Label/Optionen | nein | Inline markieren; Publish-Blocker als Banner/Popover im selben Screen. |
|
||||
| S02L Lead | Pflichtzuweisung fehlt | ja, optional E05 | Name, Kontaktweg und Beschreibung muessen zuweisbar sein. |
|
||||
| S02L Lead | Feld passt nicht zum Lead-Feld | ja, optional E05 | Dropdown-Option disabled oder Zeile mit Fehler markieren. |
|
||||
| S03 Design | Logo/Datei-Upload fehlschlaegt | nein | Inline am Upload oder Toast. |
|
||||
| S05 Antworten | Keine Antworten | ja | E03 ist gebaut, weil neue Formulare anfangs leer sind. |
|
||||
| S05 Antworten | Suche/Filter ohne Treffer | nein | Kleiner Empty State im Tabellenbereich reicht. |
|
||||
| S05 Antworten | Export fehlgeschlagen | ja | E04 ist gebaut, weil Export fuer Arbeit/Weitergabe wichtig ist. |
|
||||
| Public | Formular nicht verfuegbar | ja | V02 ist gebaut. |
|
||||
| Public | Captcha/Submit-Fehler | ja | V03 ist gebaut. |
|
||||
| Public | Submit erfolgreich | ja | V01 ist gebaut. |
|
||||
|
||||
## 3. Exakte Subframe-Namen
|
||||
|
||||
Flow-Name:
|
||||
|
||||
- `(MCP) WF-D-FORM Form Builder`
|
||||
|
||||
Frames / Designs:
|
||||
|
||||
| ID | Subframe-Name | Typ |
|
||||
|---|---|---|
|
||||
| S00 | `S00 Formulare verwalten` | Formular-Zentrale |
|
||||
| S01 | `S01 Formularart auswaehlen` | Einstieg / Auswahl |
|
||||
| S02 | `S02 Einfacher Fragen Editor` | Simple Builder |
|
||||
| S02L | `S02L Lead Felder zuweisen` | S02-Zustand / Lead Editor |
|
||||
| E05 | `E05 S02 Lead Zuweisung pruefen` | Lead Mapping Error State |
|
||||
| S03 | `S03 Formular Design` | Builder Tab |
|
||||
| S04 | `S04 Oeffentliches Formular` | Public Form |
|
||||
| V01 | `V01 Public Erfolg oder Redirect` | Public Feedback |
|
||||
| V02 | `V02 Public Formular nicht verfuegbar` | Public Blocker |
|
||||
| V03 | `V03 Public Captcha oder Submit Fehler` | Public Error |
|
||||
| S05 | `S05 Antworten Tabelle` | Builder Tab |
|
||||
| E01 | `E01 S00 Keine Formulare` | Hauptfluss / Empty State |
|
||||
| E02 | `E02 S00 Keine Treffer` | Hauptfluss / Empty State |
|
||||
| E03 | `E03 S05 Keine Antworten` | Hauptfluss / Empty State |
|
||||
| E04 | `E04 S05 Export Fehler` | Hauptfluss / Error State |
|
||||
| S01C | `S01C Website Formular Editor` | Spaeter / Referenz |
|
||||
| S01D | `S01D Umfrage Editor` | Spaeter / Referenz |
|
||||
| S01E | `S01E Internes Formular Editor` | Spaeter / 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`.
|
||||
|
||||
Nicht als erste Frames bauen:
|
||||
|
||||
- `D01 Sharing Panel URL QR iFrame`
|
||||
- `D02 Post-Submit Actions`
|
||||
- `D03 Conditional Logic Editor`
|
||||
- `D06 Feldkarten Menue`
|
||||
- `D10 Builder Interaktionsfaelle`
|
||||
- `M01 Feld loeschen Confirm`
|
||||
- `M02 Unpublish Confirm`
|
||||
- `M03 Archive Confirm`
|
||||
- `M04 Unsaved Changes Confirm`
|
||||
|
||||
## 4. Komponenten aus deinen Subframe Standards
|
||||
|
||||
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. 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. |
|
||||
| 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. |
|
||||
| Form Inputs | Textarea | Beschreibung, Success Message, langer Hilfetext. |
|
||||
| Form Inputs | Select | Bereich, Operator, Zielfeld, Action-Typ, Pipeline. |
|
||||
| Form Inputs | Multiselect / Checkbox Group | Multi-Select-Felder und Public Auswahlgruppen. |
|
||||
| Form Inputs | Checkbox | Public Captcha/Consent, Boolean-Felder. |
|
||||
| Form Inputs | Switch | Required, Logic aktiv, Action aktiv. |
|
||||
| Form Inputs | File Upload | Public Datei-/Foto-Upload. |
|
||||
| Feedback | Banner Alert | Publish Blocker, Public Submit Error, Draft Sharing Hinweis. |
|
||||
| Feedback | Toast | Gespeichert, kopiert, published. |
|
||||
| Data Display | Badge Feedback / Tag Label | Draft/Published, Pflicht, Fehler, Feldtyp, aktiv/inaktiv. |
|
||||
| Data Display | Empty State | Leerer Canvas, keine Actions, keine Logic-Regeln. |
|
||||
| Overlays | Dropdown Menu / Context Menu | Feldkarten-Menue, More-Menue. |
|
||||
| Overlays | Confirm Dialog | M01/M02/M03/M04, nur dokumentiert oder spaeter kleine Frames. |
|
||||
| Layout | Separator Divider | Inspector-Sektionen, Public Form-Abgrenzungen. |
|
||||
| Utility | Tooltip | Disabled Actions, Rechte-Hinweise, Copy/Share-Hilfe. |
|
||||
|
||||
## 5. Namens- und Variantenregeln
|
||||
|
||||
Aus den Subframe UI Standards:
|
||||
|
||||
- Size-Default heisst `Medium`, nicht `Default`.
|
||||
- States: `default`, `hover`, `active`, `focus`, `disabled`, `loading`, `error`, `selected`.
|
||||
- Varianten: `primary`, `secondary`, `tertiary`, `ghost`, `destructive`, `neutral`, `success`, `warning`, `information`.
|
||||
- Form Field Anatomy:
|
||||
- `label`
|
||||
- `helpText`
|
||||
- Control
|
||||
- `message`
|
||||
- Unterer Field-Text heisst immer `message`, nicht Helper, Label oder Help.
|
||||
- Textnahe Controls nutzen `Radius Small`.
|
||||
- `File Upload` hat die Boolean-Prop `fullwith`. Wenn ein Upload-Feld in einem Formularbereich die ganze verfuegbare Breite nutzen soll, immer `fullwith={true}` setzen. Das gilt besonders fuer Public Forms und Upload-Fehlerzustaende.
|
||||
|
||||
## 5a. Modal-Regel
|
||||
|
||||
Die gebauten Public-Screens `S02`, `V01`, `V02` und `V03` sind **keine** Modal-Screens. Sie sind Public Page States und duerfen mit einem zentrierten Container oder einer Card arbeiten.
|
||||
|
||||
Fuer alle echten D-FORM-Modals gilt:
|
||||
|
||||
- `M01 Feld loeschen Confirm`
|
||||
- `M02 Unpublish Confirm`
|
||||
- `M03 Archive Confirm`
|
||||
- `M04 Unsaved Changes Confirm`
|
||||
|
||||
Wenn einer dieser M-Zustaende spaeter in Subframe gebaut wird, muss die vorhandene Komponente `Dialog` verwendet werden. Nicht als normale Card bauen, nicht als Drawer bauen und nicht als eigener Public/Page-State.
|
||||
|
||||
Abgrenzung:
|
||||
|
||||
- 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
|
||||
|
||||
S04 ist die einfache Seite, die der Kunde sieht. S02 bleibt der interne Fragen-Editor fuer Mitarbeiter.
|
||||
|
||||
### Komponentenregel Public Form Panel
|
||||
|
||||
Das eigentliche Formularpanel in `S04` und der Fehlerzustand in `V03` sollen die vorhandene `Card`-Komponente verwenden. Weil `Card` standardmaessig eher kompakt ist, bekommt die Instanz ein Breiten-Sondermass ueber `className`, z. B. `w-full`, `min-w-[0px]` und den max-width-Container der Seite.
|
||||
|
||||
Wichtig: Dafuer keine globale `Card`-Variante nur fuer D-FORM anlegen und die globale Card nicht verbreitern. Das Sondermass gehoert an die konkrete Public-Form-Card.
|
||||
|
||||
S04 und V03 sollen gleich aufgebaut sein:
|
||||
|
||||
- gleicher Public-Container
|
||||
- gleiche maximale Breite `max-w-[760px]`
|
||||
- gleiche `Card`-Breite
|
||||
- gleiche einspaltige Feldreihenfolge
|
||||
- kein zweispaltiges Name/E-Mail-Layout, damit lange Namen und lange E-Mail-Adressen mehr Platz bekommen
|
||||
- V03 ist derselbe Formularaufbau plus Fehlerbanner, erhaltene Werte und Inline-Fehler
|
||||
|
||||
### Layout
|
||||
|
||||
```text
|
||||
Public Container
|
||||
Public Header
|
||||
Tenant Logo / Fallback
|
||||
Anbietername
|
||||
Formular Intro
|
||||
Titel
|
||||
Beschreibung
|
||||
Form Body
|
||||
Fields in Reihenfolge
|
||||
Captcha / Schutz
|
||||
Absende-Bereich
|
||||
Footer
|
||||
```
|
||||
|
||||
### Beispielinhalt
|
||||
|
||||
| Element | Inhalt |
|
||||
|---|---|
|
||||
| Tenant | SHK Demo GmbH |
|
||||
| Titel | SHK Anfrageformular |
|
||||
| Beschreibung | Beschreiben Sie kurz Ihr Anliegen. Wir melden uns mit den naechsten Schritten. |
|
||||
| Felder | Name, Email, Telefon, Bereich, Beschreibung, Fotos/Dokumente |
|
||||
| Schutz | mCaptcha oder Sicherheitspruefung |
|
||||
| Submit | Anfrage senden |
|
||||
|
||||
### Wichtige Regel
|
||||
|
||||
Keine App-Shell, keine Sidebar, keine internen Begriffe. Keine Woerter wie Submission, Action, Lead, Mapping, Webhook.
|
||||
|
||||
## 7. S01 danach bauen: interne Werkstatt
|
||||
|
||||
S01 ist nicht fuer Kunden. S01 ist fuer Mitarbeiter, die Formulare bauen.
|
||||
|
||||
### Layout
|
||||
|
||||
```text
|
||||
Default Page Layout
|
||||
vorhandene App-Shell des Layouts
|
||||
vorhandene Header Navigation
|
||||
Page Content
|
||||
Header
|
||||
Breadcrumb
|
||||
Formname
|
||||
Status Badge
|
||||
Save
|
||||
Preview
|
||||
Share
|
||||
Publish
|
||||
More
|
||||
Body
|
||||
Left: Field Palette
|
||||
Center: Canvas
|
||||
Right: Inspector
|
||||
Mode Tabs
|
||||
Builder
|
||||
Logic
|
||||
Actions
|
||||
Sharing
|
||||
Preview
|
||||
Settings
|
||||
```
|
||||
|
||||
### Drei-Zonen-Builder
|
||||
|
||||
| Zone | Aufgabe | Wichtig fuer Subframe |
|
||||
|---|---|---|
|
||||
| Linke Palette | Feldtypen hinzufuegen | 12 Feldtypen klar gruppieren. |
|
||||
| Canvas Mitte | Formularstruktur bauen | Feldkarten, Dropzones, Fehler, Selected State. |
|
||||
| Rechter Inspector | Feld konfigurieren | label, helpText, required, validation, options, message. |
|
||||
|
||||
### Layout-Regel fuer interne Builder-Screens
|
||||
|
||||
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.
|
||||
|
||||
### Tabs
|
||||
|
||||
S02 nutzt nur die Review-relevanten Tabs: Fragen, Design und Antworten. Logic, Actions und Publish bleiben in S02 bewusst einfach und inline.
|
||||
|
||||
## 8. Entfernte Advanced-Detailframes
|
||||
|
||||
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
|
||||
|
||||
- Builder nicht wie Kundenformular bauen.
|
||||
- Public Form nicht wie interne App bauen.
|
||||
- Preview nicht als PDF verstehen.
|
||||
- Logic nicht als PDF-/Dokumentgenerator verstehen.
|
||||
- Actions nicht als kompletter Automation-Editor bauen.
|
||||
- Confirm-Dialoge nicht vor dem S02-Hauptfluss priorisieren.
|
||||
- Keine neuen globalen Subframe Standards aus D-FORM ableiten.
|
||||
|
||||
## 12. Umsetzungsstand in Subframe
|
||||
|
||||
Subframe-Flow:
|
||||
|
||||
https://app.subframe.com/f023064a5ca0/flow/afb1c257-46f0-4b23-aaed-d75f4773f1a9/edit?tab=ai&conversationId=02d948da-f9aa-4ab5-8352-2745789bb9ad
|
||||
|
||||
Gebaut und verlinkt:
|
||||
|
||||
1. S00 Formulare verwalten
|
||||
2. E01 S00 Keine Formulare
|
||||
3. E02 S00 Keine Treffer
|
||||
4. S01 Formularart auswaehlen
|
||||
5. S02 Einfacher Fragen Editor
|
||||
6. S02L Lead Felder zuweisen
|
||||
7. E05 S02 Lead Zuweisung pruefen
|
||||
8. S03 Formular Design
|
||||
9. S04 Oeffentliches Formular
|
||||
10. V01 Public Erfolg oder Redirect
|
||||
11. V02 Public Formular nicht verfuegbar
|
||||
12. V03 Public Captcha oder Submit Fehler
|
||||
13. S05 Antworten Tabelle
|
||||
14. E03 S05 Keine Antworten
|
||||
15. E04 S05 Export Fehler
|
||||
81. S01C Website Formular Editor
|
||||
82. S01D Umfrage Editor
|
||||
83. S01E Internes Formular Editor
|
||||
|
||||
Gebaut nach Davids Lead-Feedback:
|
||||
|
||||
- 05b. S02L Lead Felder zuweisen: https://app.subframe.com/f023064a5ca0/design/c8aa80cb-0cc8-473f-9fac-a09d395e6571/edit
|
||||
- 05c. E05 S02 Lead Zuweisung pruefen: https://app.subframe.com/f023064a5ca0/design/26600ce4-7baf-4ffb-9955-7c7d1eef99d1/edit
|
||||
|
||||
Naechster Schritt: Review in Subframe mit Fokus auf S00 bis S05 plus S02L/E05. Die Seiten 80-93 bleiben spaeter/Referenz und werden nur bei Bedarf geprueft.
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"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-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 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":"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-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-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":{}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,539 @@
|
||||
---
|
||||
kind: wireframe-package
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FORM
|
||||
package: WF-D-FORM Form Builder
|
||||
typ: Flow
|
||||
status: Review-ready / Subframe Draft gebaut
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/flow/afb1c257-46f0-4b23-aaed-d75f4773f1a9/edit?tab=ai&conversationId=02d948da-f9aa-4ab5-8352-2745789bb9ad"
|
||||
canvas: "02 Wireframes/D-FORM Formulare/WF-D-FORM Form Builder/WF-D-FORM Form Builder.canvas"
|
||||
---
|
||||
|
||||
# WF-D-FORM Form Builder
|
||||
|
||||
Status: Review-ready fuer David / Subframe Draft gebaut
|
||||
Subframe-Link: https://app.subframe.com/f023064a5ca0/flow/afb1c257-46f0-4b23-aaed-d75f4773f1a9/edit?tab=ai&conversationId=02d948da-f9aa-4ab5-8352-2745789bb9ad
|
||||
Canvas: [[WF-D-FORM Form Builder.canvas]]
|
||||
David-Review: [[David Review Checkliste]]
|
||||
Subframe-Bauplan: [[Subframe Bauplan]]
|
||||
Subframe-Bau-Log: [[Subframe Bau Log]]
|
||||
Simple Builder: [[Simple Builder Neuausrichtung]]
|
||||
Stand: 2026-07-09
|
||||
Uebergabe: [[D-FORM David Uebergabe 2026-07-09]]
|
||||
Start fuer Review: [[00 Start hier - David]]
|
||||
|
||||
---
|
||||
|
||||
## 1. Kurzfassung
|
||||
|
||||
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:
|
||||
|
||||
- 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 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 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 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.
|
||||
|
||||
**Nachtrag Lead-Zuweisung 2026-07-08:** David hat ergaenzt, dass Lead-Formulare einen sichtbaren Bereich `Felder zuweisen` brauchen. Deshalb bleibt S02 der einfache Haupteditor, bekommt aber den neuen Zustand [[Screens/05b S02L Lead Felder zuweisen|S02L Lead Felder zuweisen]]. Wenn eine Zuweisung fehlt oder nicht moeglich ist, greift optional [[Screens/05c E05 S02 Lead Zuweisung pruefen|E05 S02 Lead Zuweisung pruefen]]. Logic und Actions kommen damit in den Screen: `Bedingung` an der Frage, `Nach Absenden / Lead anlegen` als Card mit Dropdown-Zuweisung.
|
||||
|
||||
**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
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Welches Ticket/Modul ist betroffen? | `D-FORM` / P16 / M05 Form Builder |
|
||||
| Was soll der Nutzer am Ende schaffen? | Interne Nutzer bauen und veroeffentlichen Formulare; externe Nutzer reichen ein Formular sauber ein. |
|
||||
| Ist es ein Flow, einzelner Screen, Zustand oder nur Dokumentation? | Bespoke-Flow mit zwei Hauptscreens und wenigen Public-Varianten. |
|
||||
| Welche Planning-Quellen wurden geprueft? | `D-FORM.md`, `P16-kalender-booking-forms-signatur.md`, `M05-form-builder.md`, `ENTITY-MODEL.md` Domaene 9, `SCREEN-MAP.md` Paragraph 3, `DESIGNER-FIRST-PLAYBOOK.md` Rang 2, `ROADMAP.md` Phase 16. |
|
||||
| Was ist sicher im Scope? | Drag-and-Drop-Builder, 12 Feldtypen, Conditional Logic, Field-Config, Live-Vorschau, Publish, URL/QR/iFrame-Sharing, Post-Submit-Actions, Public Form mit mCaptcha und 4 Zustaenden. |
|
||||
| Was ist sicher nicht im Scope? | Booking-Page, Kalender, vollstaendige Submissions-Liste, Signatur-Wizard, personalisierte Links, JS-Snippet, Multi-Step-Forms, Repeater, A/B-Testing. S00 ist nur die schlanke Formular-Zentrale, nicht das komplette Submissions-Modul. |
|
||||
| Gibt es Admin/Normalrolle-Unterschiede? | Ja: Builder/Publisher/Admin duerfen bauen und publishen; einfache Nutzer sehen ggf. nur Submission-/Basic-Rechte. |
|
||||
| Welche Annahmen sind noch unsicher? | Ob David einzelne dokumentierte Zustands-/Modalframes aus S01 zusaetzlich in Subframe sehen will. |
|
||||
|
||||
---
|
||||
|
||||
## 3. Scope
|
||||
|
||||
| Punkt | Inhalt |
|
||||
|---|---|
|
||||
| Ticket/Modul | `D-FORM` / M05 Form Builder |
|
||||
| Nutzerrolle | Interner Builder/Publisher/Admin; externer Submitter im Public Form. |
|
||||
| Admin-Variante | Darf Form konfigurieren, Actions anlegen, publishen, Sharing nutzen. |
|
||||
| Normale Rolle | Kann je nach Permission eventuell Formular bearbeiten oder nur Submissions sehen; Submissions sind nicht Teil dieses Pakets. |
|
||||
| Startpunkt | Intern: `/forms/:id/edit`; Public: `/f/{tenant}/{slug}` |
|
||||
| Ziel | Formulare robust bauen, veroeffentlichen und extern einreichbar machen. |
|
||||
| Haupt-Archetyp | A4 Form/Input-Kit + A7 Zustands-Kit |
|
||||
| Bespoke-Anteil | Sehr hoch: Canvas, Drag-and-Drop, Conditional Logic, Live Preview, Public Renderer. |
|
||||
| Out of scope | Booking/Kalender/Signatur, Submission-Detail, personalisierte Links/JS-Snippet, komplexe v2-Logic. |
|
||||
|
||||
---
|
||||
|
||||
## 3a. Detailausbau vor Fertig
|
||||
|
||||
Diese Punkte fehlen noch, bevor D-FORM wirklich als fertig vorbereitet gelten sollte:
|
||||
|
||||
| Bereich | Was noch auszuarbeiten ist | Warum wichtig |
|
||||
|---|---|---|
|
||||
| Builder-Layout | Entscheidung fuer Canvas-Aufbau: Drei-Spalten, Tabs, Drawer, Preview-Mode, Mobile/Small-Viewport-Verhalten. | Der Builder ist die schwerste UI im Ticket. |
|
||||
| Drag-and-Drop | Empty Dropzone, Drag Preview, Reorder, Drop zwischen Feldern, Feld-Auswahl, Undo/Cancel-Gefuehl. | Sonst bleibt der Canvas zu abstrakt. |
|
||||
| Feldtypen | Properties je Feldtyp, Sonderfaelle fuer Datei/Foto, Datum/Datum-Range, Select/Multi-Select, Boolean. | David braucht konkrete Inspector-Inhalte. |
|
||||
| Validation | Required, min/max, Regex, Datei-Typen/Groesse, Custom Error, Publish-Blocker. | Das Ticket verlangt Klartext-Validation. |
|
||||
| Conditional Logic | Regel-Liste, Regel-Editor, kaputte Referenzen, Vorschau/Test, Limits fuer v1. | Pflicht laut Ticket, aber UX-riskant. |
|
||||
| Form-Stammdaten | Name, Beschreibung, Slug, Status, Subtype, Success Message, Redirect, Close/Limit. | M05-Datenmodell ist groesser als nur Felder. |
|
||||
| Templates | SHK-Templates sichtbar machen oder bewusst nur als Forms-Liste/Seed dokumentieren. | Ticket nennt geseedete Templates. |
|
||||
| Publish / Unpublish | Publish-Flow, Blocker, Warnungen bei bereits oeffentlichem Formular, Unpublish-Folge. | Kritischer Arbeitsmoment fuer interne Nutzer. |
|
||||
| Sharing / Embed | URL, QR, iFrame-Code, Copy-Feedback, Allowed Origins, v2-Abgrenzung JS-Snippet/personalisierte Links. | Public-Verteilung ist Teil von D-FORM. |
|
||||
| Post-Submit-Actions | Action-Typen, Reihenfolge, Mapping-Zeilen, Pflichtmapping, Test/Preview, einfache Filter. | Sehr grosser Komplex im Builder. |
|
||||
| Public Form | 4 Public-Zustaende, Mobile, mCaptcha, Datei-Upload, Success/Redirect, nicht verfuegbar. | Oeffentliche Screens brauchen hohen Polish. |
|
||||
| Permissions | Builder, Publisher, Admin, Read-only/No-Permission-Zustand. | D-FORM hat eigene Permission-Bundles. |
|
||||
| Abgrenzung | Was bleibt in D-FORM, was gehoert zu Submissions, Forms-Liste, D-BOOK, D-REST oder v2. | Verhindert Scope-Explosion. |
|
||||
|
||||
Empfehlung fuer die naechste Arbeitseinheit: David validiert die nachgezogene S01-Interaktionslogik. Danach kann Subframe-Bau oder letzte Korrektur erfolgen.
|
||||
|
||||
---
|
||||
|
||||
## 3b. SCREEN-MAP-Abgleich
|
||||
|
||||
Die `SCREEN-MAP.md` enthaelt deutlich mehr Screens, aber sie ist die Gesamt-Bauliste fuer HiveGrid v1. Fuer `D-FORM` zaehlen daraus nur die Form-Builder-bezogenen Zeilen.
|
||||
|
||||
| SCREEN-MAP-Screen | Gehoert zu D-FORM? | Umgang |
|
||||
|---|---|---|
|
||||
| Form-Builder-Canvas `/forms/:id/edit` | ja | In diesem Paket als S01 ausarbeiten. |
|
||||
| Oeffentliches Formular `/f/{tenant}/{slug}` | ja | In diesem Paket als S04 plus Public-Varianten ausarbeiten. |
|
||||
| Submissions `/forms/:id/submissions` | nein, Forms-Compose | Nicht D-FORM-Bespoke; spaeter eigenes Compose-/Submissions-Paket. |
|
||||
| Forms-Liste `/forms` | teilweise | S00 als schlanke Formular-Zentrale im D-FORM-Paket; vollstaendige Forms-/Submissions-Compose bleibt spaeter. |
|
||||
| Booking-Page `/b/{tenant}/{slug}` | nein | Eigenes Ticket/Paket `D-BOOK`. |
|
||||
| Booking intern / Booking-Page-Editor / Verfuegbarkeit | nein | Eigenes Booking-Paket. |
|
||||
| Kalender `/calendar` | nein | Eigenes Kalender-Paket. |
|
||||
| Signatur-Wizard | nein | Eigenes Signatur-/D-REST-Paket. |
|
||||
| HR Urlaub/Krankmeldung, Requests, Surveys | nein | HR nutzt M05/Form-Renderer wieder, ist aber nicht D-FORM. |
|
||||
| Kampagnen-Editor, Kampagnen-Liste, Segmente, Sender | nein | Email-Marketing-Paket, nicht D-FORM. |
|
||||
| Pipeline-Kanban, Projekt-Liste, Projekt-Detail, Pipeline-Config | nein | Projekt/Pipeline-Paket, nicht D-FORM. |
|
||||
| Plattform-Admin-Screens | nein | Plattform-Admin-Paket, nicht D-FORM. |
|
||||
|
||||
Merksatz: D-FORM hat wenige eigene Routen, aber einen riesigen Detailumfang innerhalb des Builder-Screens und des Public-Renderers.
|
||||
|
||||
---
|
||||
|
||||
## 3c. Detailausbau-Fortschritt
|
||||
|
||||
| Bereich | Stand | Naechster Schritt |
|
||||
|---|---|---|
|
||||
| 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-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
|
||||
|
||||
Review-Ergebnis: Der grobe fachliche Scope ist gut. D-FORM bleibt Builder plus oeffentliches Formular. Nicht nach D-FORM gehoeren Forms-Liste, Submissions, Booking, Kalender, Signatur und HR.
|
||||
|
||||
Nacharbeit: In S01 fehlte die Interaktionslogik fuer konkrete Aktionen. Die wichtigsten Klicks sind jetzt entschieden:
|
||||
|
||||
| Bereich | Entscheidung |
|
||||
|---|---|
|
||||
| Feld bearbeiten | Im rechten Inspector, kein Modal. |
|
||||
| Feld duplizieren | Feldkarte oder 3-Punkte-Menue; kein Confirm. |
|
||||
| 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 | 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: Der aktuelle Review konzentriert sich auf den S02-Hauptfluss. M01/M02 und die restlichen D-/M-Zustaende bleiben vorerst dokumentiert.
|
||||
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
## 3e. P2-Auth-Dbgleich 2026-07-06
|
||||
|
||||
P2 Auth ist als Referenz fuer Reifegrad genutzt worden. Dort sind nicht nur Hauptscreens, sondern auch D-/M-Zustaende, Modal-Inhalte, Subframe-Grid, Canvas-Notizen und Handoff-Checks konsequent dokumentiert.
|
||||
|
||||
Nachgezogen fuer D-FORM:
|
||||
|
||||
| P2-Muster | D-FORM-Umsetzung |
|
||||
|---|---|
|
||||
| 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 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.
|
||||
|
||||
---
|
||||
|
||||
## 4. Brainstorming
|
||||
|
||||
### Flow-Frage
|
||||
|
||||
Wie bekommt David den Builder so vorbereitet, dass er nicht in zehn Unterseiten zerfaellt, aber trotzdem alle schweren Entscheidungen sichtbar sind?
|
||||
|
||||
### UX-Varianten
|
||||
|
||||
| Option | Beschreibung | Vorteil | Nachteil | Empfehlung |
|
||||
|---|---|---|---|---|
|
||||
| D | Ein grosser Builder-Screen mit Palette, Canvas, Properties, Preview und Tabs/Panels fuer Sharing/Actions/Logic. | Ein Arbeitsort, weniger Navigation, passt zum Bespoke-Canvas. | Kann sehr dicht werden. | Genommen fuer v1-Draft. |
|
||||
| B | Mehrere Unterseiten: Felder, Design, Logic, Sharing, Actions, Preview. | Uebersichtlicher pro Thema. | Wirkt eher Settings als Canvas; mehr Route- und Handoff-Last. | Raus fuer v1-Draft. |
|
||||
| C | Minimaler Builder plus separate Modals fuer jedes Feature. | Reduziert Hauptscreen. | Modal-Kaskade wird schwer wartbar; Field-Mapping leidet. | Nur fuer einzelne Confirm-/Blocker-Zustaende. |
|
||||
|
||||
### Entscheidung
|
||||
|
||||
| Entscheidung | Status | Notiz |
|
||||
|---|---|---|
|
||||
| Builder als ein Hauptscreen | genommen | Die Route `/forms/:id/edit` ist der Arbeitsort. |
|
||||
| Public Form als eigener Screen | genommen | Extern sichtbar, eigener Polish, eigene Zustaende. |
|
||||
| Sharing in Builder integrieren | genommen | URL, QR, iFrame als Panel/Tab im Builder. |
|
||||
| Post-Submit-Actions in Builder integrieren | genommen | Field-Mapping gehoert zur Form-Konfiguration, kein eigener Screen. |
|
||||
| Conditional Logic in v1 eng schneiden | genommen | Nur Anzeige/Ausblenden: Wenn Feld Y = Z, zeige Feld X. |
|
||||
| 12 Feldtypen nach A4 verwenden | Empfehlung genommen | Text, Textarea, Zahl, Waehrung, Datum, Datum-Range, Select, Multi-Select, Boolean, Email, Telefon, Datei. |
|
||||
| Code-Stand nicht als Design-Grenze nehmen | genommen | Der vorhandene Form-Widget-Code ist kleiner als D-FORM; Design folgt Planning/D4. |
|
||||
| Personalisierte Links | raus fuer v1 | Laut Ticket v2. |
|
||||
| JS-Snippet | raus fuer v1 | Laut Ticket v2, iFrame bleibt. |
|
||||
|
||||
### Arbeitsentscheidung: 12 Feldtypen
|
||||
|
||||
Fuer Davids D-FORM-Draft nehmen wir die A4-Liste als verbindliche v1-Designbasis:
|
||||
|
||||
| Feldtyp | Design-Hinweis |
|
||||
|---|---|
|
||||
| Text | Einzeiliger Text. |
|
||||
| Textarea | Mehrzeiliger Text, optional Markdown-Anmutung fuer interne/langformatige Antworten. |
|
||||
| Zahl | Ganze Zahl oder Dezimalwert. |
|
||||
| Waehrung | Zahl mit Waehrungsformat, z. B. Auftragswert. |
|
||||
| Datum | Einzelnes Datum. |
|
||||
| Datum-Range | Start-/Enddatum oder Zeitraum. |
|
||||
| Select | Eine Auswahl aus Optionen; Radio kann als Darstellungsvariante davon gelten. |
|
||||
| Multi-Select | Mehrere Optionen, z. B. Chips oder Checkbox-Liste. |
|
||||
| Boolean | Ja/Nein, Checkbox oder Toggle. |
|
||||
| Email | Email mit Formatvalidierung. |
|
||||
| Telefon | Telefonnummer mit Format-/Normalisierungs-Hinweis. |
|
||||
| Datei | Datei-Upload; Foto ist fuer v1 eine Upload-/Kamera-Variante, kein eigener Feldtyp. |
|
||||
|
||||
Nicht als normale Feldtypen zaehlen: Honeypot/mCaptcha (Anti-Spam), Section Header/Description (Darstellungsbloecke), Signature (Abnahme/Signatur-Kontext), Hidden Field, Address-Autocomplete. Diese koennen spaeter als v2 oder Spezialbausteine dazukommen.
|
||||
|
||||
### Arbeitsentscheidung: Post-Submit-Actions
|
||||
|
||||
Der Builder zeigt Actions, aber baut keinen zweiten Automation-Editor.
|
||||
|
||||
| Tiefe | Inhalt | Entscheidung |
|
||||
|---|---|---|
|
||||
| Action-Liste | Reihenfolge, Typ, aktiv/inaktiv, kurzer Status, Warnungen. | In S01 sichtbar. |
|
||||
| Action-Konfiguration | Ziel, Bedingung optional, Empfaenger/URL/Entity, Field-Mapping-Zeilen. | In S01 als Panel/Drawer/Tab sichtbar. |
|
||||
| Field-Mapping | Form-Feld -> Ziel-Feld, Pflichtfeldwarnungen, fehlende Zuordnung. | In S01 sichtbar. |
|
||||
| Test/Validation | Webhook-URL pruefen, Mapping-Warnungen, Preview was erzeugt wird. | In S01 dokumentieren. |
|
||||
| ActionLog voll | Submission-bezogene Ausfuehrungen, Re-Run, Fehlerverlauf. | Nicht eigener D-FORM-Screen; gehoert zu Submissions-Compose. |
|
||||
|
||||
### Arbeitsentscheidung: Builder-Arbeitsbereiche
|
||||
|
||||
Der Form-Builder bleibt ein Hauptscreen, aber nicht alles muss gleichzeitig im Vordergrund sein.
|
||||
|
||||
| Arbeitsbereich | Gewichtung | Empfehlung fuer David |
|
||||
|---|---|---|
|
||||
| Header / Status | dauerhaft sichtbar | Name, Status Draft/Published, Save, Preview, Publish, Share. |
|
||||
| Feld-Palette | Primaerbereich | 12 Feldtypen schnell scanbar, Drag + Klick. |
|
||||
| Canvas | Primaerbereich | Reihenfolge der Felder, Drag-and-Drop, Empty State, Feldfehler. |
|
||||
| Feld-Inspector | Primaerbereich | Ausgewaehltes Feld bearbeiten: Label, Key, Pflicht, Validation, Optionen. |
|
||||
| Logic | Sekundaerbereich | Eigener Tab/Panel/Drawer; einfache Wenn-Dann-Regeln. |
|
||||
| Actions | Sekundaerbereich | Eigener Tab/Panel/Drawer; Action-Liste + Mapping. |
|
||||
| Sharing | Sekundaerbereich | Eigener Tab/Panel/Drawer; URL, QR, iFrame. |
|
||||
| Preview | Umschaltbereich | Public-nahe Vorschau, ideal als eigener View/Tab oder rechte Preview-Fläche. |
|
||||
| Settings | Sekundaerbereich | Slug, Success Message, Redirect, Branding/Theme, Allowed Origins. |
|
||||
|
||||
Empfehlung: David sollte **Palette + Canvas + Inspector** als Kernarbeit verstehen. Logic, Actions, Sharing, Preview und Settings sind eigene Arbeitsmodi um denselben Form-Datensatz herum.
|
||||
|
||||
### Happy Path
|
||||
|
||||
1. Nutzer oeffnet den Form-Builder.
|
||||
2. Nutzer waehlt ein Feld aus der Palette und zieht es in den Canvas.
|
||||
3. Nutzer konfiguriert Label, Pflichtfeld, Optionen und Validierung.
|
||||
4. Nutzer setzt bei Bedarf Conditional Logic.
|
||||
5. Nutzer prueft die Live-Vorschau.
|
||||
6. Nutzer definiert Post-Submit-Actions mit Field-Mapping.
|
||||
7. Nutzer published das Formular.
|
||||
8. Nutzer kopiert Public URL, QR oder iFrame.
|
||||
9. Externer Submitter oeffnet das Public Form, fuellt es aus und sendet ab.
|
||||
10. System zeigt Erfolgstext oder leitet weiter.
|
||||
|
||||
### Varianten / Branches
|
||||
|
||||
- Feld ohne Label oder ungueltige Konfiguration.
|
||||
- Conditional Logic referenziert ein geloeschtes Feld.
|
||||
- Pflichtfeld ohne passende Validation.
|
||||
- Webhook-URL ungueltig.
|
||||
- Publish blockiert wegen fehlendem Namen, Slug oder sichtbaren Feldern.
|
||||
- Public Form ist nicht veroeffentlicht, archiviert, geschlossen oder nicht erreichbar.
|
||||
- Captcha oder Submit schlaegt fehl.
|
||||
|
||||
### Roadblocks
|
||||
|
||||
- Zu viele Funktionen im Builder koennen David ueberladen.
|
||||
- 12 Feldtypen muessen aus A4 kommen, aber Builder braucht Feld-spezifische Properties.
|
||||
- Post-Submit-Actions koennen sehr komplex werden; im Design sollte Field-Mapping sichtbar sein, ohne einen Automations-Editor nachzubauen.
|
||||
- Public Form muss wiederverwendbar fuer HR, Booking-Intake, Urlaub/Krank und Requests sein.
|
||||
|
||||
### Meldungs-/Error-State-Brainstorming
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Keine Felder im Formular | Empty State im Canvas | nein | ja, in S01 | Klarer CTD: Feld aus Palette hinzufuegen. |
|
||||
| Ungueltiges Feld | Inline + Summary-Banner | ja, fuer Publish | dokumentieren | Feldname nennen, nicht nur generisch. |
|
||||
| Logic-Regel kaputt | Inline im Logic-Panel | ja, fuer Publish | dokumentieren | Ursache zeigen: referenziertes Feld fehlt. |
|
||||
| Publish nicht moeglich | Banner im Builder | ja | dokumentieren | Liste der fehlenden Voraussetzungen. |
|
||||
| Kopieren erfolgreich | Toast | nein | dokumentieren | URL/iFrame kopiert. |
|
||||
| Public Form nicht verfuegbar | Public Blocker Screen | ja | ja, V02 | Externe Nutzer brauchen klare Erklaerung. |
|
||||
| Captcha fehlgeschlagen | Inline/Banner im Public Form | ja, temporar | ja, V03 | Erneut versuchen. |
|
||||
| Submit erfolgreich | Public Success State | nein | ja, V01 | Erfolgstext oder Redirect. |
|
||||
|
||||
### Offene Fragen
|
||||
|
||||
- Soll `date`, `datetime`, `time` spaeter als Varianten des Datumsfelds oder als eigene v2-Feldtypen behandelt werden?
|
||||
- Soll `signature` im Form-Builder v1 als normales Feld verfuegbar sein oder nur im Abnahme-/Signatur-Kontext?
|
||||
- Wie tief soll Field-Mapping fuer `create_projekt` in v1 sichtbar sein?
|
||||
- Soll der Public Form Renderer mehrere Branding-Level haben oder nur Tenant-Logo plus einfache Theme-Werte?
|
||||
|
||||
---
|
||||
|
||||
## 5. Screen-Kandidaten nach Entscheidung
|
||||
|
||||
| Kandidat | Warum eventuell noetig? | Erste Einschaetzung |
|
||||
|---|---|---|
|
||||
| Form-Builder Canvas | Hauptarbeitsort, komplexe Sonder-UI. | Bauen |
|
||||
| Oeffentliches Formular | Extern sichtbar, eigener Polish, eigener Renderer. | Bauen |
|
||||
| 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 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 |
|
||||
| Signatur-Wizard | Eigenes Paket/Compose. | Raus |
|
||||
|
||||
---
|
||||
|
||||
## 6. Screen Validation Gate
|
||||
|
||||
| ID | Screen/Zustand | Ist eigener Arbeitsmoment? | Neue Struktur/Entscheidung/Risiko? | Entscheidung | Begruendung |
|
||||
|---|---|---|---|---|---|
|
||||
| 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. |
|
||||
| V03 | [[Screens/10 V03 Public Captcha oder Submit Fehler|V03 Public Captcha oder Submit Fehler]] | teilweise | ja, Public Trust | Bauen | Fehler darf nicht technisch wirken. |
|
||||
| D01 | [[Screens/D01 Sharing Panel URL QR iFrame]] | nein | nein, Bereich in S01 | Nur dokumentieren | Kein eigener Screen, aber UI-Bereich. |
|
||||
| D02 | [[Screens/D02 Post-Submit Actions]] | nein | ja, Mapping-Komplexitaet | Nur dokumentieren | In S01 als Panel/Tab dokumentieren. |
|
||||
| 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. |
|
||||
| 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. |
|
||||
| M04 | [[Screens/M04 Unsaved Changes Confirm]] | nein | ja, Datenverlust-Risiko | Nur dokumentieren | Standard-Guard beim Verlassen mit Dirty State. |
|
||||
| D04 | Forms-Liste | nein | nein | Raus | Compose, nicht Teil von D-FORM. |
|
||||
| D05 | Submissions | nein | nein | Raus | Compose, nicht Teil von D-FORM. |
|
||||
|
||||
Entscheidung: `Bauen`, `Wiederverwenden`, `Nur dokumentieren`, `Spaeter`, `Raus`
|
||||
|
||||
### Validation-Ergebnis fuer David
|
||||
|
||||
Der urspruengliche Advanced-Subframe-Fokus lag auf diesen **8 Frames/Zustaenden**:
|
||||
|
||||
- S04 Oeffentliches Formular
|
||||
- V01 Public Erfolg oder Redirect
|
||||
- V02 Public Formular nicht verfuegbar
|
||||
- V03 Public Captcha oder Submit Fehler
|
||||
|
||||
Nach der Simple-Builder-Neuausrichtung sind zusaetzlich gebaut und fuer Review nach vorne gezogen:
|
||||
|
||||
- S00 Formulare verwalten
|
||||
- S01 Formularart auswaehlen
|
||||
- S02 Einfacher Fragen Editor
|
||||
- S01C Website Formular Editor
|
||||
- S01D Umfrage Editor
|
||||
- S01E Internes Formular Editor
|
||||
- S03 Formular Design
|
||||
- S05 Antworten Tabelle
|
||||
|
||||
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 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.
|
||||
|
||||
Keine zusaetzlichen Advanced-Zustandsframes im aktuellen Handoff bauen.
|
||||
|
||||
### Copy-kritische Zustaende
|
||||
|
||||
| Zustand | Bauen? | Warum / Copy-Entscheidung |
|
||||
|---|---|---|
|
||||
| Publish blockiert | dokumentieren | Interner Nutzer braucht konkrete fehlende Punkte. |
|
||||
| Public Erfolg | ja | Externer Nutzer muss sicher wissen, dass die Anfrage angekommen ist. |
|
||||
| Public nicht verfuegbar | ja | Externer Nutzer ist blockiert. |
|
||||
| Captcha/Submit Fehler | ja | Vertrauen erhalten, einfache naechste Aktion. |
|
||||
|
||||
### Blockierende Error States
|
||||
|
||||
| Zustand | UI-Form | Primaeraktion | Sekundare Aktion | Inhalt/Copy-Richtung |
|
||||
|---|---|---|---|---|
|
||||
| Public Form nicht veroeffentlicht | Screen | Zur Website zurueck | Anbieter kontaktieren | Formular ist aktuell nicht verfuegbar. |
|
||||
| Public Form geschlossen | Screen | Anbieter kontaktieren | - | Dnnahmezeitraum ist beendet. |
|
||||
| Public Submit scheitert dauerhaft | Banner/Screen | Erneut versuchen | Anbieter kontaktieren | Keine technischen Details. |
|
||||
| Builder Publish blockiert | Banner im Builder | Fehler beheben | Vorschau weiter nutzen | Konkrete Liste: Name, Slug, Feldfehler. |
|
||||
|
||||
---
|
||||
|
||||
## 7. Validierte Screen-Liste
|
||||
|
||||
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| S00 | [[Screens/01 S00 Formulare verwalten|S00 Formulare verwalten]] | Formular-Zentrale | Bauen | `/forms` | Subframe Draft / Review offen |
|
||||
| E01 | [[Screens/02 E01 S00 Keine Formulare|E01 S00 Keine Formulare]] | Empty State | Bauen | `/forms` | Subframe Draft / Review offen |
|
||||
| E02 | [[Screens/03 E02 S00 Keine Treffer|E02 S00 Keine Treffer]] | Empty State | Bauen | `/forms` | Subframe Draft / Review offen |
|
||||
| S01 | [[Screens/04 S01 Formularart auswaehlen|S01 Formularart auswaehlen]] | Einstieg / Auswahl | Bauen | `/forms/new` | Subframe Draft / Review offen |
|
||||
| S02 | [[Screens/05 S02 Einfacher Fragen Editor|S02 Einfacher Fragen Editor]] | Simple Builder | Bauen | `/forms/:id/edit` | Subframe Draft / Review offen |
|
||||
| S02L | [[Screens/05b S02L Lead Felder zuweisen|S02L Lead Felder zuweisen]] | Lead-Zustand | Bauen | `/forms/:id/edit` | Subframe Draft / Review offen |
|
||||
| E05 | [[Screens/05c E05 S02 Lead Zuweisung pruefen|E05 S02 Lead Zuweisung pruefen]] | Lead Error State | Bauen | `/forms/:id/edit` | Subframe Draft / Review offen |
|
||||
| S03 | [[Screens/06 S03 Formular Design|S03 Formular Design]] | Builder Tab | Bauen | `/forms/:id/edit` | Subframe Draft / Review offen |
|
||||
| S04 | [[Screens/07 S04 Oeffentliches Formular|S04 Oeffentliches Formular]] | Public Form | Bauen | `/f/{tenant}/{slug}` | Subframe Draft / Review offen |
|
||||
| V01 | [[Screens/08 V01 Public Erfolg oder Redirect|V01 Public Erfolg oder Redirect]] | Public Feedback | Bauen | nach Submit | Subframe Draft / Review offen |
|
||||
| V02 | [[Screens/09 V02 Public Formular nicht verfuegbar|V02 Public Formular nicht verfuegbar]] | Public Blocker | Bauen | Variante von S04 | Subframe Draft / Review offen |
|
||||
| V03 | [[Screens/10 V03 Public Captcha oder Submit Fehler|V03 Public Captcha oder Submit Fehler]] | Public Error | Bauen | Variante von S04 | Subframe Draft / Review offen |
|
||||
| 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 |
|
||||
| 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 |
|
||||
### Detailnotizen ohne eigene Review-Screens
|
||||
|
||||
Diese Eintraege sind ausgearbeitet, bleiben aber Dokumentation und sind nicht Teil der aktuellen Subframe-Review-Reihenfolge.
|
||||
|
||||
| ID | Zustand | Typ | Umsetzung |
|
||||
|---|---|---|---|
|
||||
| D01 | [[Screens/D01 Sharing Panel URL QR iFrame]] | Panel-Zustand | Nur dokumentieren |
|
||||
| D02 | [[Screens/D02 Post-Submit Actions]] | Panel-Zustand | Nur dokumentieren |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| M04 | [[Screens/M04 Unsaved Changes Confirm]] | Confirm Modal / Browser Guard | Nur dokumentieren |
|
||||
|
||||
---
|
||||
|
||||
## 8. Subframe-Grid
|
||||
|
||||
Interner Hauptarbeitsort:
|
||||
|
||||
```text
|
||||
S02 Einfacher Fragen Editor
|
||||
- Fragen
|
||||
- Lead-Hinweis / Felder zuweisen
|
||||
- Bedingung direkt an der Frage
|
||||
- Design-Tab S03
|
||||
- Antworten-Tab S05
|
||||
```
|
||||
|
||||
Dokumentierte Detailnotizen:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
S04 Oeffentliches Formular
|
||||
|
|
||||
+--> V01 Public Erfolg oder Redirect
|
||||
|
|
||||
+--> V02 Public Formular nicht verfuegbar
|
||||
|
|
||||
+--> V03 Public Captcha oder Submit Fehler
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Screen-Pakete
|
||||
|
||||
- [[David Review Checkliste]]
|
||||
- [[Screens/01 S00 Formulare verwalten|S00 Formulare verwalten]]
|
||||
- [[Screens/02 E01 S00 Keine Formulare|E01 S00 Keine Formulare]]
|
||||
- [[Screens/03 E02 S00 Keine Treffer|E02 S00 Keine Treffer]]
|
||||
- [[Screens/04 S01 Formularart auswaehlen|S01 Formularart auswaehlen]]
|
||||
- [[Screens/05 S02 Einfacher Fragen Editor|S02 Einfacher Fragen Editor]]
|
||||
- [[Screens/06 S03 Formular Design|S03 Formular Design]]
|
||||
- [[Screens/07 S04 Oeffentliches Formular|S04 Oeffentliches Formular]]
|
||||
- [[Screens/08 V01 Public Erfolg oder Redirect|V01 Public Erfolg oder Redirect]]
|
||||
- [[Screens/09 V02 Public Formular nicht verfuegbar|V02 Public Formular nicht verfuegbar]]
|
||||
- [[Screens/10 V03 Public Captcha oder Submit Fehler|V03 Public Captcha oder Submit Fehler]]
|
||||
- [[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/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/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]]
|
||||
|
||||
---
|
||||
|
||||
## 10. Handoff-Check
|
||||
|
||||
- [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 Klickzustaende sind als Markdown-Detailnotizen dokumentiert.
|
||||
- [x] Die wichtigsten Was-passiert-wenn-Faelle sind in D10 als Case-Matrix dokumentiert.
|
||||
- [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.
|
||||
- [x] Blockierende Error States sind mit naechster Aktion definiert.
|
||||
- [x] Relevante Zustaende sind beschrieben.
|
||||
- [x] Offene Fragen sind sichtbar.
|
||||
- [x] Ticket-Handoff-Entwurf ist in `Tickets/Fertige Tickets/` angelegt.
|
||||
- [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 und Hauptfluss 01-13 ist eingetragen.
|
||||
@@ -0,0 +1,28 @@
|
||||
# Todo — Workflow Engine (P12)
|
||||
|
||||
Status: Offen
|
||||
|
||||
Eigenstaendige Aufgabenliste fuer die Workflow Engine (P12 / Automationen).
|
||||
Wird zentral in [[Todo]] eingebunden; die Aufgaben werden nicht dupliziert.
|
||||
Detailwahrheit zu den Bausteinen: [[S05a Baustein-Konfig Vorplanung]] und [[Screen Paket Tracker]].
|
||||
|
||||
## Screen-Review (haendischer Durchgang, ab 2026-07-25)
|
||||
|
||||
Offene Punkte aus dem gemeinsamen Durchgang Screen fuer Screen (gefunden/gemeldet von **Dejan**). Meist Layout-/Feinschliff, nachdem die strukturellen Themen bereits geloest sind.
|
||||
|
||||
- [ ] **K-T2 Frist oder Termin** — Feld »Abstand« nimmt nicht die volle Breite ein wie »Wann genau« (steht schmal und allein). Ursache: Number-Input ist im Baukasten auf 192px begrenzt. → Layout mit »Wann genau« angleichen (z. B. Abstand + Wann genau in eine Zeile, oder volle Breite ermoeglichen). — Dejan
|
||||
- [ ] **K-A2 Benachrichtigung senden + K-A2 E-Mail senden** — Feld »Nachricht« (TextArea): **Komponenten-Zwickmuehle**. Mit `fillContainer` an = volle Breite, aber Hoehe zerlaeuft/kollabiert. Mit `fillContainer` aus (aktueller Stand) = stabile Hoehe, aber Feld ist schmaler als die anderen (nicht volle Breite). Beides zugleich geht mit der TextArea-Komponente nicht sauber. → TextArea-Komponente im Baukasten (D-D0b) braucht eine Variante »volle Breite + feste Hoehe«. Bis dahin bewusst `fillContainer` aus lassen (stabile Hoehe wichtiger als volle Breite). — Dejan
|
||||
|
||||
## Aus der K-Validierung uebergeben (bereits dokumentiert)
|
||||
|
||||
Von David von Hand zu erledigen; Details im [[Screen Paket Tracker]] und in [[S05a Baustein-Konfig Vorplanung]].
|
||||
|
||||
- [ ] Subframe-Seite »K-T2 Deadline naht« → »K-T2 Frist oder Termin« umbenennen.
|
||||
- [ ] Subframe-Seite »K-A1 Kontakt aendern« → »K-A1 Datensatz aendern« umbenennen.
|
||||
- [ ] Dialog-Breite »Wenn-Dann« und »Filter«: von `large` auf `medium` stellen.
|
||||
- [ ] Baustein-Picker: siezt noch, Farbschema angleichen, fehlende/umbenannte Bausteine nachziehen.
|
||||
- [ ] Baukasten (D-D0b): Uhrzeit-Komponente fehlt; kein Kategorie-Rot/-Gelb (Badge/Icon); Number-Input auf 192px festgenagelt.
|
||||
|
||||
## Erledigt
|
||||
|
||||
Erledigte Punkte werden mit Datum hierhin verschoben.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FLOW
|
||||
package: WF-P12 Flow-Editor
|
||||
id: M01
|
||||
screen: Probelauf
|
||||
typ: Modal
|
||||
umsetzung: Bauen
|
||||
status: Validiert - Subframe-Entwurf geloescht, neu zu bauen
|
||||
route: "aus S01 (Probelauf-Knopf / vor Aktivierung)"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M01 — Probelauf (Dry-Run)
|
||||
|
||||
## Ziel
|
||||
|
||||
Vor dem Scharfschalten sehen, was die Automation WIRKLICH tun würde — keine bösen Überraschungen.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- **»Trifft X Datensätze«** + die ersten 5 als Beispiele
|
||||
- Schritt-für-Schritt-Simulation in Klartext (»E-Mail würde an max@… gehen«)
|
||||
- **Pflicht-Bestätigung** ab Schwelle (> 100 Datensätze/Schritt, mandant-einstellbar) — ggf. mit Bestätigungs-Phrase
|
||||
- Ergebnis: aktivieren oder zurück in den Editor
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Modal + Simulations-Liste.
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Über Schwelle | Bestätigung Pflicht | Nur dokumentieren |
|
||||
| Trifft nichts | »Aktuell trifft die Automation 0 Datensätze« | Nur dokumentieren |
|
||||
|
||||
## Subframe
|
||||
|
||||
**Der Entwurf vom 2026-07-10 wurde in Subframe gelöscht** (Stand 2026-07-13, per MCP geprüft). M01 muss im Zuge der Editor-Neuausrichtung neu gebaut werden.
|
||||
|
||||
### Erkenntnisse aus dem gelöschten Entwurf (für den Neubau mitnehmen)
|
||||
|
||||
- Spec war abgedeckt: »Trifft 143 Datensätze«, erste 5 Beispiele, Klartext-Simulation, Schwellen-Bestätigung, aktivieren/zurück
|
||||
- Nachzubessern war: Bestätigung lief über eine **Checkbox statt einer Bestätigungs-Phrase**, und der »Aktivieren«-Button war nicht disabled, solange die Checkbox leer war
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FLOW
|
||||
package: WF-P12 Flow-Editor
|
||||
id: M02
|
||||
screen: Schleifen-Warnung
|
||||
typ: Modal
|
||||
umsetzung: Bauen
|
||||
status: Validiert - Subframe-Entwurf geloescht, neu zu bauen
|
||||
route: "aus S01 bei Schleifen-Verdacht"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M02 — Schleifen-/Raten-Warnung
|
||||
|
||||
## Ziel
|
||||
|
||||
Endlos-Schleifen verhindern, bevor sie den Betrieb fluten — verständlich erklärt.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- **Mini-Abhängigkeits-Graph**: welche Automationen sich gegenseitig auslösen (der Kreis ist markiert)
|
||||
- Klartext: »Automation A löst B aus, B löst wieder A aus«
|
||||
- **»Beheben«**-Knopf (springt zum betroffenen Baustein)
|
||||
- Anomalie-Hinweis-Variante: »2.000-mal in 5 Min gelaufen, typisch 5–10/Tag — pausiert« + wieder aktivieren
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Modal + Mini-Graph.
|
||||
|
||||
## Subframe
|
||||
|
||||
**Der Entwurf vom 2026-07-10 wurde in Subframe gelöscht** (Stand 2026-07-13, per MCP geprüft). M02 muss im Zuge der Editor-Neuausrichtung neu gebaut werden.
|
||||
|
||||
### Erkenntnisse aus dem gelöschten Entwurf (für den Neubau mitnehmen)
|
||||
|
||||
- Spec war abgedeckt: Mini-Graph mit markiertem Kreis, Klartext-Erklärung, »Beheben«-Knopf, Anomalie-Copy (2.000-mal/5 Min, typisch 5–10/Tag)
|
||||
- Nachzubessern war: Schleife und Raten-Anomalie waren **in einem Dialog kombiniert** (Spec: Anomalie als eigene Variante)
|
||||
- Nachzubessern war: der **»Trotzdem aktivieren«-Button** widerspricht der Fehlermatrix (Schleife blockiert) — beim Neubau nicht wieder einbauen, ohne das vorher zu klären
|
||||
- Der Kreis war als Text-Pill markiert statt als sichtbare Rück-Kante im Graph
|
||||
@@ -0,0 +1,38 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FLOW
|
||||
package: WF-P12 Flow-Editor
|
||||
id: M03
|
||||
screen: Start-Auswahl
|
||||
typ: Modal
|
||||
umsetzung: Bauen
|
||||
status: Validiert - Subframe-Entwurf geloescht, neu zu bauen
|
||||
route: "»+ Neue Automation« (aus der Automation-Liste)"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# M03 — Start-Auswahl
|
||||
|
||||
## Ziel
|
||||
|
||||
Der schnellste Weg zum Erfolgserlebnis: mit einer Vorlage starten statt vor leerer Fläche zu sitzen.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- **Leer starten** ODER **Vorlage wählen** (SHK-Vorlagen + eigene, nach Kategorie, mit Use-Case-Beschreibung — eingebetteter Vorlagen-Katalog aus WF-P12 Verwaltung)
|
||||
- Auswahl → Editor öffnet mit vorbefülltem Flow (Vorlage) oder leer
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Dialog (echtes Modal).
|
||||
|
||||
## Subframe
|
||||
|
||||
**Der Entwurf vom 2026-07-10 wurde in Subframe gelöscht** (Stand 2026-07-13, per MCP geprüft). M03 muss im Zuge der Editor-Neuausrichtung neu gebaut werden.
|
||||
|
||||
### Erkenntnisse aus dem gelöschten Entwurf (für den Neubau mitnehmen)
|
||||
|
||||
- Spec war vollständig abgedeckt: leer ODER Vorlage, SHK + eigene, Kategorien, Use-Case-Beschreibungen, eingebetteter Vorlagen-Katalog
|
||||
- Gute Ergänzungen, die erhalten bleiben sollten: Suchfeld, Flow-Vorschau-Chips, Nutzungszahlen (»38-mal verwendet«)
|
||||
- Nachzubessern war: **doppelter CTA** (»Verwenden« pro Karte UND »Mit Auswahl weiter« im Footer) — beim Neubau auf ein Interaktionsmodell festlegen
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FLOW
|
||||
package: WF-P12 Flow-Editor
|
||||
id: S01
|
||||
screen: Flow-Editor
|
||||
typ: BESPOKE (schwerste UI)
|
||||
umsetzung: Bauen
|
||||
status: In Subframe (Grundgeruest) - Bausteine auf dem Canvas fehlen
|
||||
route: "/automations/:id/edit"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/ae9f5d91-1153-44de-9af3-63010bc86162/edit"
|
||||
---
|
||||
|
||||
# S01 — Flow-Editor ⭐
|
||||
|
||||
## Ziel
|
||||
|
||||
Automationen zusammenklicken wie ein Diagramm — verständlich für Büro-Menschen, nicht nur Techniker.
|
||||
|
||||
## Neuausrichtung 2026-07-11/12 — Subframe gilt
|
||||
|
||||
Die alten Subframe-Varianten A »Dreispalten kompakt« und B »Geführter Inspector« wurden **gelöscht**. Der Editor wurde neu aufgesetzt. Der gebaute Stand **ersetzt** die Entscheidung vom 2026-07-09 (»Katalog links · Canvas Mitte · Konfig rechts«).
|
||||
|
||||
| Element | Alt (validiert 2026-07-09) | Neu (gebaut, gilt) |
|
||||
|---|---|---|
|
||||
| Katalog | festes Panel links, einklappbar | **Drawer** »Baustein hinzufügen« (400 px) mit Suche + Kachel-Filter Auslöser/Aktionen/Logik |
|
||||
| Konfig | festes Panel rechts | **Echter Dialog je Baustein-Typ** (Entscheidung David 2026-07-12) → [[S05a Baustein-Konfig Vorplanung]] |
|
||||
| Canvas | Mitte zwischen zwei Panels | **Vollbild** mit Punktraster |
|
||||
| Werkzeuge | Toolbar oben | Bottom-Toolbar (Rückgängig/Wiederholen/Zoom + Probelauf), Mini-Übersicht unten links, Rechtsklick-Kontextmenü |
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- **Zeichenfläche**: Bausteine setzen, verbinden, verschieben, duplizieren, löschen; Pan/Zoom; Undo/Redo; automatisch anordnen; Mini-Übersichtskarte
|
||||
- **Baustein-Picker** (Drawer): Auslöser, Aktionen und Logik gruppiert und filterbar, per Klick hinzufügen
|
||||
- **Konfig-Dialog**: Klick auf Baustein → typ-abhängiges Klartext-Formular (die 30 Dialoge, s. [[S05a Baustein-Konfig Vorplanung]])
|
||||
- **Inline-Validierung** direkt am Baustein: nicht verbunden · Schleifen-Verdacht · Pflichtfeld fehlt
|
||||
- Kopf: Name (inline editierbar), Status-Pill, Aktiv-Schalter, Verlauf, **Probelauf** → [[M01 Probelauf]]
|
||||
- Aktivieren blockiert bei Fehlern (Klartext-Liste, Sprung zum Baustein)
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
**BESPOKE** — Vollbild-Canvas + Drawer-Picker + Konfig-Dialoge.
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leerer Flow | Gestrichelte Kachel »Baustein hinzufügen« mittig | In Subframe (V1) |
|
||||
| Gefüllter Flow | Bausteine + Kanten auf dem Canvas | **fehlt — noch nicht gebaut** |
|
||||
| Ungespeichert verlassen | Hinweis | Nur dokumentieren |
|
||||
| Laden / Fehler / kein Zugriff | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe (Stand 2026-07-13, per MCP geprüft)
|
||||
|
||||
Flow: [(MCP) HiveGrid Workflow Engine / Automationen P12](https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit)
|
||||
|
||||
| Seite | Zweck | Link |
|
||||
|---|---|---|
|
||||
| V1 Vollbild minimal | Editor-Grundgerüst, leerer Zustand | [Subframe](https://app.subframe.com/f023064a5ca0/design/ae9f5d91-1153-44de-9af3-63010bc86162/edit) |
|
||||
| Picker Kachel-Filter | Baustein hinzufügen (Drawer) | [Subframe](https://app.subframe.com/f023064a5ca0/design/6fab8a3e-c016-4381-b7e8-19414e8dcb7b/edit) |
|
||||
| Kontextmenue Canvas | Rechtsklick auf die Zeichenfläche | [Subframe](https://app.subframe.com/f023064a5ca0/design/2278da93-f0a2-4e46-bd3b-250d5912a62d/edit) |
|
||||
|
||||
## Was im Editor noch fehlt (Bau-Backlog)
|
||||
|
||||
1. **Baustein-Karte auf dem Canvas** — es existiert keine Knoten-Darstellung. Ohne sie hängen die 30 Konfig-Dialoge an nichts. Höchste Priorität.
|
||||
2. **Kanten/Verbindungen** — inklusive Verzweigung: Wenn-Dann (Ja/Nein), Switch (n Pfade + Sonst), Schleife (Weiter/Fertig).
|
||||
3. **Inline-Validierung am Baustein** — Badge für »nicht verbunden«, »Pflichtfeld fehlt«, »Schleifen-Verdacht«.
|
||||
4. **Gefüllter Editor-Zustand** — ein echtes Beispiel-Board als Referenz.
|
||||
5. **Aktivieren-Blocker (D01)** und **Anomalie-Banner (D02)** — waren in den gelöschten Varianten ausgebaut, sind mit ihnen verschwunden.
|
||||
|
||||
## Offene Entscheidungen
|
||||
|
||||
- **Modus-Umschalter »Bauen / Aktivität / Auswertung«** im Kopf: **offen, David muss entscheiden** (aufgefallen beim Abgleich 2026-07-13). »Auswertung« steht in keinem Ticket; »Aktivität« würde die Lauf-Liste ([[S02 Lauf-Liste]]) in den Editor holen statt auf eine eigene Route. Die Planung läuft vorerst **ohne** die beiden Tabs weiter.
|
||||
- Kanten-Interaktion (Klick-Verbinden vs. Ziehen) und Verhalten von »Automatisch anordnen«.
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FLOW
|
||||
package: WF-P12 Flow-Editor
|
||||
id: S01b
|
||||
screen: Baustein-Picker
|
||||
typ: Drawer
|
||||
umsetzung: Bauen
|
||||
status: In Subframe - Farbschema + fehlende Bausteine nachziehen
|
||||
route: "aus S01 (Baustein hinzufuegen)"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/6fab8a3e-c016-4381-b7e8-19414e8dcb7b/edit"
|
||||
---
|
||||
|
||||
# S01b — Baustein-Picker (Drawer)
|
||||
|
||||
## Ziel
|
||||
|
||||
Der schnelle Weg, einen Baustein auf die Zeichenfläche zu holen. Öffnet sich als seitlicher Drawer (400 px) über dem Editor.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- Suchfeld »Baustein suchen …«
|
||||
- Kachel-Filter oben: Auslöser / Aktionen / Logik
|
||||
- Bausteine nach Kategorie gruppiert, jeweils mit Symbol, Name, Kurzbeschreibung und Hilfe-Tooltip
|
||||
- Klick auf einen Baustein → er landet auf dem Canvas und sein Konfig-Dialog öffnet
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
Drawer (seitliches Overlay), nicht zentrierter Dialog.
|
||||
|
||||
## Offene Punkte (aus der Validierung 2026-07-13)
|
||||
|
||||
- **Farbschema angleichen**: Der Picker nutzt Orange für Auslöser, Blau für alle Aktionen, Neutral für Logik. Gilt: das S05a-Schema (Grün/Rot/Blau/Gelb/Violett/Grau). → nachziehen.
|
||||
- **Duzen**: Der Picker siezt (»Wählen Sie einen Baustein«). → auf Duzen umstellen.
|
||||
- **Unvollständig**: Der Picker zeigt nur ~12 Bausteine, der Katalog kennt 30. Integration (HTTP) fehlt ganz. → vollständig füllen.
|
||||
- **Bausteine ohne Dialog entfernen**: »Termin in Kürze« und »Zahlungsziel überschritten« werden durch **einen** Eintrag »Frist oder Termin« ersetzt (s. [[S05a Baustein-Konfig Vorplanung]]).
|
||||
- Uneinheitlicher Hilfetext: beim ersten Baustein festes Kästchen, sonst Tooltip-Komponente. → vereinheitlichen.
|
||||
|
||||
## Sync
|
||||
|
||||
Baustein-Katalog und Feld-Details: [[S05a Baustein-Konfig Vorplanung]].
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FLOW
|
||||
package: WF-P12 Flow-Editor
|
||||
id: S01c
|
||||
screen: Canvas-Kontextmenue
|
||||
typ: Kontextmenue
|
||||
umsetzung: Bauen
|
||||
status: In Subframe - Review offen
|
||||
route: "Rechtsklick auf die Zeichenflaeche in S01"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/design/2278da93-f0a2-4e46-bd3b-250d5912a62d/edit"
|
||||
---
|
||||
|
||||
# S01c — Canvas-Kontextmenü
|
||||
|
||||
## Ziel
|
||||
|
||||
Schneller Zugriff auf die häufigsten Editor-Aktionen per Rechtsklick auf die leere Zeichenfläche.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- Baustein hinzufügen · Einfügen
|
||||
- Rückgängig · Wiederholen
|
||||
- Ausschneiden · Kopieren · Duplizieren
|
||||
- Alles auswählen · Automatisch anordnen
|
||||
- Löschen (in Rot)
|
||||
- Jeweils mit Tastenkürzel-Anzeige
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
Kontextmenü-Komponente aus dem Baukasten.
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Rechtsklick auf leere Fläche | dieses Menü | In Subframe |
|
||||
| Rechtsklick auf einen Baustein | eigenes Menü (Konfigurieren, Duplizieren, Löschen …) | **fehlt — kommt mit der Baustein-Karte** (S01d) |
|
||||
|
||||
## Bewertung (Validierung 2026-07-13)
|
||||
|
||||
Sauber gebaut: richtige Baukasten-Komponente, alle Editor-Aktionen vorhanden, Kürzel ordentlich. Keine Reparatur nötig.
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"md-paket","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/WF-P12 Flow-Editor.md","x":-80,"y":-440,"width":460,"height":280},
|
||||
{"id":"group-editor","type":"group","x":-80,"y":-160,"width":2860,"height":460,"label":"Editor (Bespoke — schwerste UI, Langläufer)"},
|
||||
{"id":"group-schutz","type":"group","x":-80,"y":460,"width":1820,"height":380,"label":"Schutz-Dialoge"},
|
||||
{"id":"note-entry","type":"text","text":"# Einstieg\n\n»+ Neue Automation« aus der Automation-Liste (WF-P12 Verwaltung) → Start-Auswahl.\n\nKlartext-First: alles in verständlichem Deutsch.","x":0,"y":0,"width":360,"height":200},
|
||||
{"id":"m03","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/Screens/M03 Start-Auswahl.md","x":560,"y":0,"width":420,"height":200},
|
||||
{"id":"s01","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/Screens/S01 Flow-Editor.md","x":1240,"y":0,"width":420,"height":200},
|
||||
{"id":"s01b","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/Screens/S01b Baustein-Picker.md","x":1800,"y":-80,"width":420,"height":170},
|
||||
{"id":"s01c","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/Screens/S01c Canvas-Kontextmenue.md","x":1800,"y":110,"width":420,"height":170},
|
||||
{"id":"s01d","type":"text","text":"# S01d — Baustein-Karte + Kanten\n\nFEHLT — hoechste Prioritaet.\n\nOhne die Knoten-Darstellung auf dem Canvas haengen die 30 Konfig-Dialoge an nichts. Inkl. Verzweigungs-Kanten (Wenn-Dann Ja/Nein, Switch, Schleife) und Inline-Validierung am Baustein.\n\n(Ein Muster war gebaut und wurde wieder geloescht.)","x":2260,"y":0,"width":420,"height":200},
|
||||
{"id":"m01","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/Screens/M01 Probelauf.md","x":560,"y":560,"width":420,"height":200},
|
||||
{"id":"m02","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Flow-Editor/Screens/M02 Schleifen-Warnung.md","x":1240,"y":560,"width":420,"height":200},
|
||||
{"id":"note-embed","type":"text","text":"# Anordnung (neu ab 2026-07-12)\n\nVollbild-Canvas · Baustein-Picker als Drawer · Konfig als echter Dialog je Baustein.\n\nDie alte Anordnung (Katalog links · Konfig rechts) ist ERSETZT.\n\nDie 30 Konfig-Dialoge liegen in WF-P12 Verwaltung (S05 / S05a).","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-start","fromNode":"m03","fromSide":"right","toNode":"s01","toSide":"left","toEnd":"arrow","label":"leer oder Vorlage"},
|
||||
{"id":"e-picker","fromNode":"s01","fromSide":"right","toNode":"s01b","toSide":"left","toEnd":"arrow","label":"Baustein hinzufügen"},
|
||||
{"id":"e-ctx","fromNode":"s01","fromSide":"right","toNode":"s01c","toSide":"left","toEnd":"arrow","label":"Rechtsklick"},
|
||||
{"id":"e-card","fromNode":"s01b","fromSide":"right","toNode":"s01d","toSide":"left","toEnd":"arrow","label":"landet als Karte"},
|
||||
{"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"}
|
||||
}
|
||||
],
|
||||
"metadata":{
|
||||
"version":"1.0-1.0",
|
||||
"frontmatter":{}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
---
|
||||
kind: wireframe-package
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-FLOW
|
||||
package: WF-P12 Flow-Editor
|
||||
typ: Flow
|
||||
status: In Subframe (Grundgeruest) - Neuausrichtung 2026-07-12
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit"
|
||||
canvas: "WF-P12 Flow-Editor.canvas"
|
||||
---
|
||||
|
||||
# WF-P12 Flow-Editor
|
||||
|
||||
Status: Editor-Grundgerüst in Subframe, Bausteine auf dem Canvas fehlen; M01–M03 neu zu bauen
|
||||
Subframe-Flow: [(MCP) HiveGrid Workflow Engine / Automationen P12](https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit)
|
||||
Canvas: [Canvas](<WF-P12 Flow-Editor.canvas>)
|
||||
Stand: 2026-07-13 (Subframe per MCP abgeglichen)
|
||||
|
||||
---
|
||||
|
||||
## 1. Kurzfassung
|
||||
|
||||
Der Automations-Baukasten: Zeichenfläche mit Auslöser- und Aktions-Bausteinen, alles in verständlichem Deutsch, mit Probelauf und Schleifen-Schutz. **Schwerste UI der App, erste USP-Säule, Langläufer — viele Iterationen einplanen.**
|
||||
|
||||
---
|
||||
|
||||
## 2. Intent Check
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Ticket/Modul | D-FLOW, Dev-Pendant R-P12a/R-P12b (Editor blockt R-P12b!) |
|
||||
| Nutzer-Ziel | »Wenn X passiert, tu Y« zusammenklicken — ohne Programmierkenntnisse, ohne Angst vor Fehlern |
|
||||
| Quellen geprüft | `ticket-docs/D-FLOW.md`, ENTITY-MODEL Domäne 7, HiveGrid Map |
|
||||
| Sicher im Scope | Graph-Canvas, Baustein-Picker, Konfig-Dialoge, Mini-Map, Toolbar, Validation, Dry-Run, Loop-Warnung, Start-Auswahl |
|
||||
| Sicher nicht im Scope | Sprach-zu-Automation (gestrichen, AD-26) · KWP-Konfig-UI (v2) · Liste/Verläufe/Vorlagen (WF-P12 Verwaltung) |
|
||||
| Unsichere Annahmen | — |
|
||||
|
||||
---
|
||||
|
||||
## 3. Scope
|
||||
|
||||
| Punkt | Inhalt |
|
||||
|---|---|
|
||||
| Startpunkt | »+ Neue Automation« (aus der Automation-Liste) oder bestehende öffnen |
|
||||
| Ziel | Automation gebaut, per Probelauf geprüft, bewusst aktiviert |
|
||||
| Haupt-Archetyp | **BESPOKE — schwerste UI** + A5 Dialoge |
|
||||
| Out of scope | s. o. |
|
||||
|
||||
---
|
||||
|
||||
## 4. Entscheidungen
|
||||
|
||||
| Entscheidung | Status | Notiz |
|
||||
|---|---|---|
|
||||
| Zwei P12-Pakete (Editor / Verwaltung) | genommen (07-09) | Editor ist Langläufer |
|
||||
| ~~Grundanordnung: Katalog links · Canvas Mitte · Konfig rechts~~ | **ERSETZT (07-12)** | n8n-Dreispalten verworfen. Beide Subframe-Varianten (A/B) wurden gelöscht. |
|
||||
| **Grundanordnung: Vollbild-Canvas · Baustein-Picker als Drawer · Konfig als Dialog** | genommen (07-12) | Neuer gebauter Stand, siehe [[S01 Flow-Editor]]. Subframe gilt. |
|
||||
| **Konfig als echtes Modal je Baustein-Typ** | genommen (07-12, David) | 30 Dialoge gebaut, siehe [[S05a Baustein-Konfig Vorplanung]] |
|
||||
| Farbschema der Kategorien: S05a-Schema | genommen (07-13, Dejan) | Grün/Rot/Blau/Gelb/Violett/Grau. Die 30 Konfig-Dialoge stimmen bereits; der **Picker muss nachziehen** (nutzt derzeit Orange für Auslöser). |
|
||||
| Ansprache: durchgehend duzen | genommen (07-13, Dejan) | Der Baustein-Picker siezt noch und muss nachziehen. |
|
||||
| Start-Auswahl mit Vorlagen | genommen (07-09) | »+ Neue Automation« → Dialog: leer starten ODER SHK-/eigene Vorlage wählen → Editor öffnet |
|
||||
| Dry-Run + Schleifen-Warnung als eigene Modals | genommen (07-09) | Pflicht-Bestätigung ab Schwelle (mandant-einstellbar) |
|
||||
| Aktivieren blockiert bei Fehlern | genommen (07-09) | Klartext-Fehlerliste (nicht verbunden / Schleife / Pflichtfeld) |
|
||||
| Klartext-First | genommen (07-09) | Baustein-Labels, Validierung, Dry-Run-Ausgaben: verständliches Deutsch |
|
||||
| **Modus-Umschalter »Bauen / Aktivität / Auswertung«** | **OFFEN — David muss entscheiden** | Im Editor-Kopf gebaut, aber »Auswertung« steht in keinem Ticket; »Aktivität« würde die Lauf-Liste in den Editor holen. Aufgefallen beim Abgleich 2026-07-13. Planung läuft vorerst **ohne** die Tabs. |
|
||||
|
||||
### Happy Path
|
||||
|
||||
1. »+ Neue Automation« → Start-Auswahl: Vorlage wählen (oder leer starten).
|
||||
2. Editor: Baustein über den Picker-Drawer hinzufügen, verbinden; Klick auf Baustein → Konfig-Dialog in Klartext.
|
||||
3. Inline-Fehler beheben (»Baustein nicht verbunden«).
|
||||
4. **Probelauf**: »Trifft 143 Datensätze …« — prüfen, ggf. Pflicht-Bestätigung.
|
||||
5. Aktivieren. Bei Schleifen-Verdacht: Warnmodal mit Mini-Graph + »Beheben«.
|
||||
|
||||
### Meldungs-/Error-States (validiert)
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Probelauf ab Schwelle | Pflicht-Bestätigung im Dry-Run-Modal | ja | Bauen (M01) | »Trifft > 100 Datensätze — bitte bestätigen« |
|
||||
| Schleife erkannt | Warnmodal mit Mini-Abhängigkeits-Graph | ja | Bauen (M02) | + »Beheben«-Knopf |
|
||||
| Aktivieren mit Fehlern | blockiert + Klartext-Fehlerliste | ja | Nur dokumentieren | je Fehler Sprung zum Baustein |
|
||||
| Anomalie-Pause | Banner (auch in Liste/Detail) | nein | Nur dokumentieren | »2.000-mal in 5 Min — pausiert« |
|
||||
| Ungespeicherte Änderungen | Hinweis beim Verlassen | nein | Nur dokumentieren | — |
|
||||
|
||||
---
|
||||
|
||||
## 7. Screen-Liste (Stand 2026-07-13)
|
||||
|
||||
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| S01 | Flow-Editor (Vollbild-Canvas) ⭐ | BESPOKE | Bauen | `/automations/:id/edit` | **In Subframe** (Grundgerüst, leerer Canvas) |
|
||||
| S01b | Baustein-Picker (Drawer) | Drawer | Bauen | aus S01 | **In Subframe** (Farbschema nachziehen) |
|
||||
| S01c | Canvas-Kontextmenü | Kontextmenü | Bauen | Rechtsklick in S01 | **In Subframe** |
|
||||
| S01d | Baustein-Karte + Kanten auf dem Canvas | BESPOKE | Bauen | in S01 | **FEHLT — höchste Priorität** |
|
||||
| M01 | Probelauf (Dry-Run) | Modal | Bauen | aus S01 | Validiert, Subframe gelöscht → neu bauen |
|
||||
| M02 | Schleifen-/Raten-Warnung | Modal | Bauen | aus S01 | Validiert, Subframe gelöscht → neu bauen |
|
||||
| M03 | Start-Auswahl (leer / Vorlage) | Modal | Bauen | »+ Neue Automation« | Validiert, Subframe gelöscht → neu bauen |
|
||||
| D01–D03 | Aktivieren-Block / Anomalie-Banner / Verlassen-Hinweis | Inline | Nur dokumentieren | — | Validiert |
|
||||
|
||||
---
|
||||
|
||||
## 8. Grid
|
||||
|
||||
```text
|
||||
Automation-Liste (WF-P12 Verwaltung) -> M03 (Start-Auswahl) -> S01 (Editor)
|
||||
S01 -> S01b (Baustein-Picker Drawer) -> Baustein landet auf dem Canvas
|
||||
S01 -> Klick auf Baustein -> Konfig-Dialog (WF-P12 Verwaltung S05/S05a)
|
||||
S01 -> M01 (Probelauf) -> Aktivieren
|
||||
S01 -> M02 (Schleifen-Warnung, bei Verdacht)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Screen-Pakete
|
||||
|
||||
- [[S01 Flow-Editor]] · [[M01 Probelauf]] · [[M02 Schleifen-Warnung]] · [[M03 Start-Auswahl]]
|
||||
- Baustein-Konfig: [[S05a Baustein-Konfig Vorplanung]] (Katalog aller 30 Dialoge)
|
||||
|
||||
---
|
||||
|
||||
## 10. Offene Fragen
|
||||
|
||||
- **Modus-Umschalter »Bauen / Aktivität / Auswertung«** — offen (David). Siehe Entscheidungstabelle.
|
||||
- Kanten-Interaktion (Klick-Verbinden vs. nur Ziehen) + Auto-Anordnen-Verhalten → Subframe-Iterationen
|
||||
- Dry-Run-Schwelle: Default-Wert → Dev
|
||||
- M02: »Trotzdem aktivieren« widerspricht der Blockier-Regel — beim Neubau klären
|
||||
- M03: doppelter CTA (»Verwenden« je Karte + »Mit Auswahl weiter« im Footer) — Interaktionsmodell festlegen
|
||||
|
||||
## Handoff-Check
|
||||
|
||||
- [x] Jeder Screen ist mit Umsetzung markiert.
|
||||
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
|
||||
- [ ] Subframe vollständig. *(Editor-Grundgerüst + Picker + Kontextmenü stehen; Baustein-Karte, Kanten und M01–M03 fehlen.)*
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P12
|
||||
package: WF-P12 Verwaltung
|
||||
id: S01
|
||||
screen: Automation-Liste
|
||||
typ: Liste
|
||||
umsetzung: Bauen
|
||||
status: Validiert - Subframe-Entwurf geloescht, neu zu bauen
|
||||
route: "/automations"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S01 — Automation-Liste
|
||||
|
||||
## Ziel
|
||||
|
||||
Alle Automationen im Blick: Was läuft, was ist pausiert, was tut wie oft?
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- Zeile: Name · Auslöser (Klartext) · Status-Pill (aktiv/pausiert/Entwurf) · Läufe (30 Tage) · letzte Ausführung
|
||||
- »nur meine«-Filter · Anomalie-Pause-Banner
|
||||
- »+ Neue Automation« → Start-Auswahl (WF-P12 Flow-Editor M03) · Zeile öffnen → Editor · Läufe → [[S02 Lauf-Liste]]
|
||||
- Zeilen-Aktion »als Vorlage speichern« → [[S04 Vorlagen-Katalog]]
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A2 Liste.
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | »Noch keine Automationen« + Start-Knopf | Nur dokumentieren |
|
||||
| Laden / Fehler / kein Zugriff | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
**Der Entwurf vom 2026-07-10 wurde in Subframe gelöscht** (Stand 2026-07-13, per MCP geprüft). S01 muss neu gebaut werden.
|
||||
|
||||
### Erkenntnisse aus dem gelöschten Entwurf (für den Neubau mitnehmen)
|
||||
|
||||
- Spec war abgedeckt: Zeilen-Anatomie, »nur meine«-Filter, Anomalie-Banner, »+ Neue Automation«, Läufe-Zugang, »Als Vorlage speichern«
|
||||
- Gute Ergänzungen, die erhalten bleiben sollten: KPI-Kacheln, Suchfeld, Status-/Auslöser-Filter, Spalten »Verantwortlich« + »Aktionen«, »Vorlagen«-Button
|
||||
- Nachzubessern war: **Copy-Bug** — Spalte »Läufe (30 Tage)« zeigte »143 Datensätze« statt der Lauf-Anzahl
|
||||
- Zu klären: Status-Pill hatte zusätzlich den Wert »Fehler« (Spec kennt nur aktiv/pausiert/Entwurf)
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P12
|
||||
package: WF-P12 Verwaltung
|
||||
id: S02
|
||||
screen: Lauf-Liste
|
||||
typ: Liste
|
||||
umsetzung: Bauen
|
||||
status: Validiert - Subframe-Entwurf geloescht, neu zu bauen
|
||||
route: "/automations/:id/executions"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S02 — Lauf-Liste
|
||||
|
||||
## Ziel
|
||||
|
||||
Was hat diese Automation zuletzt getan?
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- Letzte Läufe: Zeit · Status-Pill (ok/fehlgeschlagen/übersprungen) · Klartext-Summary · Probelauf-Marker · Dauer
|
||||
- Filter: Status, Datum, Auslöser-Typ
|
||||
- Zeile öffnen → [[S03 Lauf-Detail]]
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A2 Liste.
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Leer | »Noch keine Läufe« | Nur dokumentieren |
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
**Der Entwurf vom 2026-07-10 wurde in Subframe gelöscht** (Stand 2026-07-13, per MCP geprüft). S02 muss neu gebaut werden.
|
||||
|
||||
> ⚠️ Vor dem Neubau klären: Der Editor-Kopf hat einen Modus-Umschalter »Bauen / Aktivität / Auswertung«. Wenn »Aktivität« bleibt, lebt die Lauf-Liste **im Editor** statt auf einer eigenen Route. **Entscheidung offen, David muss sie treffen** (aufgefallen beim Abgleich 2026-07-13) — siehe [[S01 Flow-Editor]].
|
||||
|
||||
### Erkenntnisse aus dem gelöschten Entwurf (für den Neubau mitnehmen)
|
||||
|
||||
- Spec war abgedeckt: Zeit/Status/Klartext-Summary/Probelauf-Marker/Dauer, alle drei Filter, Zeile → Detail
|
||||
- Gute Ergänzungen, die erhalten bleiben sollten: StatsCard-Reihe, Suchfeld, »Nur Probeläufe«-Switch, Spalte »Betroffene Datensätze«, Status »Läuft«, Pagination
|
||||
- Nachzubessern war: Seite lief **ohne DefaultPageLayout** (App-Sidebar fehlte — anders als S01)
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P12
|
||||
package: WF-P12 Verwaltung
|
||||
id: S03
|
||||
screen: Lauf-Detail
|
||||
typ: Detail + Timeline
|
||||
umsetzung: Bauen
|
||||
status: Validiert - Subframe-Entwurf geloescht, neu zu bauen
|
||||
route: "/automations/:id/executions/:exec_id"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S03 — Lauf-Detail
|
||||
|
||||
## Ziel
|
||||
|
||||
Jeden Lauf Schritt für Schritt nachvollziehen — und Fehler rückgängig machen.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- Kopf: Klartext-Summary + Auslöser-Daten **lesbar** (kein rohes JSON) + Probelauf-Marker
|
||||
- **Schritt-für-Schritt-Timeline**: je Schritt Klartext (»E-Mail an max@… gesendet«), Status, Ein-/Ausgabe lesbar, Dauer
|
||||
- **24-h-Rückgängig-Knopf mit Countdown** (Restzeit sichtbar; danach ausgegraut + Hinweis)
|
||||
- Fehlgeschlagenen Schritt **erneut ausführen** · **»ab Schritt X fortsetzen«**
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A3 + Timeline.
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Schritt fehlgeschlagen | roter Marker + Klartext-Fehler + Retry daneben | Nur dokumentieren |
|
||||
| Rückgängig abgelaufen | Knopf grau + »nur 24 h möglich« | Nur dokumentieren |
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
**Der Entwurf vom 2026-07-10 wurde in Subframe gelöscht** (Stand 2026-07-13, per MCP geprüft). S03 muss neu gebaut werden.
|
||||
|
||||
### Erkenntnisse aus dem gelöschten Entwurf (für den Neubau mitnehmen)
|
||||
|
||||
- Spec war vollständig abgedeckt: lesbare Auslöser-Daten, Probelauf-Marker, Klartext-Timeline mit Input/Output, 24-h-Countdown, Retry + »ab Schritt X fortsetzen«
|
||||
- Gute Ergänzungen, die erhalten bleiben sollten: rechte Sidebar (Laufdaten/Ergebnis/»Aktion erforderlich«), Quick-Fix »Person zuweisen«
|
||||
- Nachzubessern war: Der Countdown stand doppelt (Banner + Sidebar) plus ein dritter »Rückgängig«-Button im Header — beim Neubau auf **einen** Ort festlegen
|
||||
- Nachzubessern war: **Demo-Widerspruch** — der Lauf war als »Probelauf« markiert, bot aber Rückgängig an, obwohl Probeläufe nichts schreiben
|
||||
- Nachzubessern war: Seite lief ohne DefaultPageLayout
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P12
|
||||
package: WF-P12 Verwaltung
|
||||
id: S04
|
||||
screen: Vorlagen-Katalog
|
||||
typ: Liste/Karten
|
||||
umsetzung: Bauen
|
||||
status: Validiert - Subframe-Entwurf geloescht, neu zu bauen
|
||||
route: "/automations/templates"
|
||||
subframe: ""
|
||||
---
|
||||
|
||||
# S04 — Vorlagen-Katalog
|
||||
|
||||
## Ziel
|
||||
|
||||
Fertige SHK-Automationen zum Sofort-Nutzen — plus eigene Vorlagen des Betriebs.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- Vorlagen-Karten nach Kategorie: Name · Use-Case-Beschreibung · Nutzungs-Anzahl · **»Verwenden«** (öffnet Editor vorbefüllt)
|
||||
- SHK-Vorlagen (geseedet) + eigene (»aus Automation erstellen« in der Liste)
|
||||
- Wird auch in der Start-Auswahl (Flow-Editor M03) eingebettet
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A2 Karten-Liste.
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Laden / Fehler | A7 | Wiederverwenden |
|
||||
|
||||
## Subframe
|
||||
|
||||
**Der Entwurf vom 2026-07-10 wurde in Subframe gelöscht** (Stand 2026-07-13, per MCP geprüft). S04 muss neu gebaut werden — zusammen mit M03, da die Start-Auswahl den Katalog einbettet.
|
||||
|
||||
### Erkenntnisse aus dem gelöschten Entwurf (für den Neubau mitnehmen)
|
||||
|
||||
- Spec war abgedeckt: Karten nach Kategorie mit Name/Beschreibung/Nutzungs-Anzahl/»Verwenden«, SHK + eigene unterscheidbar
|
||||
- Gute Ergänzungen, die erhalten bleiben sollten: Suchfeld, Modul-/Kategorie-Filter, »Beliebt«-Tab, Flow-Schritt-Chips, Hinweise »Variable/Verbindung erforderlich«
|
||||
- Nachzubessern war: Copy — Button hieß »Eigene Vorlage erstellen« statt »aus Automation erstellen«
|
||||
- Nachzubessern war: Seite lief ohne DefaultPageLayout
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
---
|
||||
kind: screen
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P12
|
||||
package: WF-P12 Verwaltung
|
||||
id: S05
|
||||
screen: Baustein-Konfig-Panels
|
||||
typ: Konfig-Dialoge (30 Stueck)
|
||||
umsetzung: Bauen
|
||||
status: In Subframe (30 Dialoge gebaut) - Review durch David offen
|
||||
route: "Dialog ueber dem Flow-Editor (Klick auf Baustein)"
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit"
|
||||
---
|
||||
|
||||
# S05 — Baustein-Konfig-Panels
|
||||
|
||||
## Ziel
|
||||
|
||||
Je Baustein-Typ ein Klartext-Formular. Klick auf einen Baustein im Editor öffnet die Konfiguration.
|
||||
|
||||
## Neuausrichtung 2026-07-12 — Subframe gilt
|
||||
|
||||
Zwei Dinge haben sich gegenüber der ursprünglichen Planung geändert:
|
||||
|
||||
1. **Kein rechtes Panel, sondern ein echter Dialog** (Entscheidung David, 2026-07-12). Klick auf einen Baustein öffnet ein `DialogLayout → Dialog.Content`.
|
||||
2. **Nicht zwei Muster-Panels, sondern alle 30** wurden gebaut (Nacht-Build 2026-07-12). Die alte Muster-Seite mit beiden Panels untereinander wurde gelöscht.
|
||||
|
||||
Der vollständige Katalog mit Archetypen, Feldern und Subframe-Links steht in **[[S05a Baustein-Konfig Vorplanung]]** — das ist ab jetzt die Detailwahrheit für die Bausteine.
|
||||
|
||||
## Was das Tool können muss
|
||||
|
||||
- **Typ-abhängige Felder** je Auslöser, Aktion, Logik-Baustein und Integration
|
||||
- **Klartext-Labels** (»Wenn eine neue Anfrage aus Quelle … eingeht«) statt Technik-Sprache
|
||||
- Jede Feld-Erklärung als `helpText` über die Komponenten-Props, nicht als freier Textblock
|
||||
- Erklärungs-Box (»So liest es sich«) in der Kategoriefarbe
|
||||
- Fuß rechts: Abbrechen / Übernehmen
|
||||
- Inline-Validierung (Pflichtfeld fehlt) mit Badge am Baustein
|
||||
|
||||
## Pattern / Archetyp
|
||||
|
||||
A5 Dialog. Blaupause: **K-T1 Neuer Kontakt** — `Dialog.Content` ohne Overrides (560 px / 16 px / 24 px laut Layout-Standards); größere Panels (Kontakt ändern, Benachrichtigung, Aufgabe anlegen, Wenn-Dann, Switch, HTTP) mit `size="medium"` = 720 px.
|
||||
|
||||
## Zustände
|
||||
|
||||
| Zustand | Beschreibung | Umsetzung |
|
||||
|---|---|---|
|
||||
| Pflichtfeld fehlt | Inline + Badge am Baustein | Nur dokumentieren |
|
||||
|
||||
## Subframe (Stand 2026-07-13, per MCP geprüft)
|
||||
|
||||
- **30 Konfig-Dialoge gebaut** im Flow [(MCP) HiveGrid Workflow Engine / Automationen P12](https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit) — Links je Baustein in [[S05a Baustein-Konfig Vorplanung]]
|
||||
- Die alte S05-Musterseite (beide Panels untereinander) wurde gelöscht. Die dort notierten Mängel — ToggleGroup ohne aktiven Wert, Tippfehler »Bauhow-Analyse« — sind damit erledigt.
|
||||
- **Händisches Review durch David steht aus.**
|
||||
|
||||
## Notizen
|
||||
|
||||
- KWP-Push: nur Registry-Eintrag, kein Konfig-UI (v1-Grenze).
|
||||
- Farbschema: **Vorschlag ist das S05a-Schema** (Grün/Rot/Blau/Gelb/Violett/Grau) — **wartet auf Davids Freigabe**. Die 30 Dialoge sind bereits konform; der Baustein-Picker nutzt derzeit Orange für Auslöser und müsste nachziehen.
|
||||
+311
@@ -0,0 +1,311 @@
|
||||
---
|
||||
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 |
|
||||
|
||||
> ✅ **Entschieden (Dejan, 2026-07-13, mit Mandat von David): Dieses Schema gilt.** Die 30 Konfig-Dialoge sind bereits konform (Auslöser grün, Aufgaben warning/gelb, Logik violett). Der **Baustein-Picker muss nachziehen** — er nutzt derzeit Orange für Auslöser, Blau für alle Aktionen und Neutral für Logik.
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
|
||||
> Die Spalte »Konfig-Felder« beschreibt den **aktuell gebauten Stand**. Sie wird bei jeder Validierungsrunde nachgezogen. `*` = Pflichtfeld. Zuletzt aktualisiert 2026-07-13 (Blöcke K-T1 und K-T2).
|
||||
|
||||
### 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 | **Schalter »Alle Felder beobachten«** + Feld-Auswahl als Tags (ausgegraut, solange der Schalter an ist) — geändert 07-13 |
|
||||
| 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 | **Board**, Qualifizierungs-Stufe — »Pipeline« umbenannt 07-13 |
|
||||
| Projekt gewonnen | Wenn ein Projekt gewonnen wird | 1 | T1 | Board, optional Mindestwert (**Zahlenfeld**, nicht Text) — geändert 07-13 |
|
||||
| Status gewechselt | Wenn eine Karte die Spalte wechselt | 1 | T1 | Board `*`, von Spalte (optional), nach Spalte `*` — Pflichtfelder ergänzt 07-13 |
|
||||
| Projekt angelegt | Wenn ein Projekt erstellt wird | 1 | T1 | Board, optional Quelle |
|
||||
| **Frist oder Termin** | Vor oder nach einer Frist / einem Termin | 1 | T2 | Bezug `*` (Aufgaben-Fälligkeit / Projekt-Deadline / Zahlungsziel / **Termin**), Abstand `*` (Zahl) + Einheit `*` (Stunden/Tage/Wochen **vorher oder danach**) — **ersetzt »Deadline naht« 07-13**; deckt Terminerinnerung und Mahnwesen mit ab |
|
||||
| E-Mail eingegangen | Wenn eine E-Mail ankommt | 1 | T3 | Postfach, optional Betreff-/Absender-Filter. **Badge »Ab v2« + Hinweisbox**: braucht das Postfach (Postfach-Sync = v2, → P23). In v1 einrichtbar, aber nicht auslösbar. |
|
||||
| E-Mail unzustellbar | Wenn eine Kampagnen-Mail bounct | 1 | T3 | Kampagne (alle oder Auswahl), Art der Unzustellbarkeit (dauerhaft/vorübergehend). **Abhängigkeit**: braucht D-KAMP (Kampagnen) + D-P14 (Bounce-Tracking) — beide v1, aber noch nicht gebaut. |
|
||||
| Formular abgeschickt | Wenn ein Formular eingeht | 1 | T3 | Formular `*` (aus D-FORM), Felder-Vorschau als Chips — Pflichtfeld ergänzt 07-16 |
|
||||
| Termin gebucht | Wenn ein Termin gebucht wird | 1 | T2 | Terminart, optional Mitarbeiter |
|
||||
| Termin storniert | Wenn ein Termin abgesagt wird | 1 | T2 | Terminart, 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 `*`; **Felder wechseln je nach Wiederholung**: täglich → nur Uhrzeit `*`; wöchentlich → Wochentage `*` + Uhrzeit `*`; monatlich → Tag im Monat `*` + Uhrzeit `*`. Uhrzeit ist **vorläufig ein Dropdown** (dem Baukasten fehlt eine Uhrzeit-Komponente). Zustände »täglich« und »monatlich« noch nicht gezeichnet. |
|
||||
| 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 |
|
||||
|---|---|---|---|---|
|
||||
| **Datensatz ändern** | Datensatz aktualisieren | 1 | A1 | Welcher Datensatz (Kontakt/Projekt/Auftrag, aus Auslöser/suchen), Feld-Zuordnungen (Feld → neuer Wert, Platzhalter) — **umbenannt von »Kontakt ändern« 07-16** |
|
||||
| Notiz anlegen | Notiz am Datensatz speichern | 1 | A1 | Ziel-Datensatz, Notiztext `*` (Platzhalter), optional sichtbar für — Pflichtfeld ergänzt 07-16 |
|
||||
|
||||
### Aktionen: Kommunikation (Blau)
|
||||
|
||||
| Baustein | Kurzbeschreibung | Ausgänge | Archetyp | Konfig-Felder |
|
||||
|---|---|---|---|---|
|
||||
| Benachrichtigung senden | **Intern**: Push oder in der App | 1 | A2 | Weg (Push/In-App/Beide), Empfänger `*` (Ich/Person/Team/Verantwortliche aus Auslöser), Titel, Nachricht `*` — **auf intern beschränkt 07-16** (E-Mail an Kunden hat eigenen Baustein) |
|
||||
| **E-Mail senden** | **Extern**: E-Mail an einen Kontakt | 1 | A2 | Empfänger `*` (Kontakt), Absender `*` (Postfach-Adresse), Betreff `*`, Nachricht `*` (Platzhalter), optional Anhang — **neuer Baustein 07-16** |
|
||||
|
||||
### 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.**
|
||||
|
||||
## Subframe-Links aller 30 Dialoge (Stand 2026-07-13, per MCP verifiziert)
|
||||
|
||||
### Auslöser (16)
|
||||
|
||||
| Baustein | Subframe |
|
||||
|---|---|
|
||||
| K-T1 Neuer Kontakt (Blaupause) | [Dialog](https://app.subframe.com/f023064a5ca0/design/b826c642-9b14-4c83-98e0-dba33470852e/edit) |
|
||||
| K-T1 Kontakt geaendert | [Dialog](https://app.subframe.com/f023064a5ca0/design/48d85ffd-c90c-4da0-b37a-6b3d2711299d/edit) |
|
||||
| K-T1 Neue Anfrage | [Dialog](https://app.subframe.com/f023064a5ca0/design/0e6798e1-5daf-4cd4-ac37-0d3c53316ffb/edit) |
|
||||
| K-T1 Lead qualifiziert | [Dialog](https://app.subframe.com/f023064a5ca0/design/168740c8-c344-40db-9a86-9b8dbb0b86f7/edit) |
|
||||
| K-T1 Projekt gewonnen | [Dialog](https://app.subframe.com/f023064a5ca0/design/7dbedd13-7bd9-4203-ac4b-367fe98a0c90/edit) |
|
||||
| K-T1 Status gewechselt | [Dialog](https://app.subframe.com/f023064a5ca0/design/4531af4b-270d-4338-a7aa-9bf9f22acb2a/edit) |
|
||||
| K-T1 Projekt angelegt | [Dialog](https://app.subframe.com/f023064a5ca0/design/6ddca087-0655-4390-b365-47b46796520a/edit) |
|
||||
| K-T2 Deadline naht | [Dialog](https://app.subframe.com/f023064a5ca0/design/4049387e-82e7-46d9-bcc8-1f0623212f4d/edit) |
|
||||
| K-T2 Termin gebucht | [Dialog](https://app.subframe.com/f023064a5ca0/design/4f65190b-0088-4774-b0d4-47c2548b9e1f/edit) |
|
||||
| K-T2 Termin storniert | [Dialog](https://app.subframe.com/f023064a5ca0/design/ecfcc5d9-fa76-401d-ba4f-cae76cbdff69/edit) |
|
||||
| K-T2 Ereignis erstellt | [Dialog](https://app.subframe.com/f023064a5ca0/design/6dbde62e-a714-484a-a7c1-eeb45b281537/edit) |
|
||||
| K-T2 Zeitplan | [Dialog](https://app.subframe.com/f023064a5ca0/design/69a04a7d-11e1-4507-97db-79556a4058a1/edit) |
|
||||
| K-T3 E-Mail eingegangen | [Dialog](https://app.subframe.com/f023064a5ca0/design/19182d3b-ae54-4327-b8a7-bc2f7a525e8e/edit) |
|
||||
| K-T3 E-Mail unzustellbar | [Dialog](https://app.subframe.com/f023064a5ca0/design/b53d974b-f3d4-43f8-9118-879d165c475f/edit) |
|
||||
| K-T3 Formular abgeschickt | [Dialog](https://app.subframe.com/f023064a5ca0/design/ece5c3ef-81e4-430b-af86-6317c9921963/edit) |
|
||||
| K-T3 Webhook empfangen | [Dialog](https://app.subframe.com/f023064a5ca0/design/cd8330f6-1acb-4dd2-bd56-7f2f159d506b/edit) |
|
||||
|
||||
### Aktionen (5)
|
||||
|
||||
| Baustein | Subframe |
|
||||
|---|---|
|
||||
| K-A1 Kontakt aendern | [Dialog](https://app.subframe.com/f023064a5ca0/design/69019ec4-d884-4d89-b699-d67a6ec99c7f/edit) |
|
||||
| K-A1 Notiz anlegen | [Dialog](https://app.subframe.com/f023064a5ca0/design/a94188de-7a32-4e7d-a608-04cd47f2cbf2/edit) |
|
||||
| K-A2 Benachrichtigung senden | [Dialog](https://app.subframe.com/f023064a5ca0/design/a0a46df7-4f24-4e36-98ab-c4772ecf2e63/edit) |
|
||||
| K-A3 Aufgabe anlegen | [Dialog](https://app.subframe.com/f023064a5ca0/design/9d9f2a55-0d46-4644-ac9f-c63721262fdb/edit) |
|
||||
| K-A3 Aufgabe zuweisen | [Dialog](https://app.subframe.com/f023064a5ca0/design/94ccafb9-b3d2-4256-907c-f7a95632945a/edit) |
|
||||
|
||||
### Logik (8)
|
||||
|
||||
| Baustein | Subframe |
|
||||
|---|---|
|
||||
| K-L1 Wenn-Dann | [Dialog](https://app.subframe.com/f023064a5ca0/design/7e6bcf69-2938-4cd3-b060-2e0a9695499f/edit) |
|
||||
| K-L1 Und | [Dialog](https://app.subframe.com/f023064a5ca0/design/95c4b661-8070-4fb0-90e5-9a60910a7754/edit) |
|
||||
| K-L1 Oder | [Dialog](https://app.subframe.com/f023064a5ca0/design/6c360480-f4cf-4f3f-85ff-2a9bab994ed0/edit) |
|
||||
| K-L1 Switch | [Dialog](https://app.subframe.com/f023064a5ca0/design/879e169d-839c-450b-adc6-c01a9d3cc2fd/edit) |
|
||||
| K-L1 Filter | [Dialog](https://app.subframe.com/f023064a5ca0/design/d7adb2e6-e7b2-412a-9b3e-884e1968c7d8/edit) |
|
||||
| K-L2 Warten | [Dialog](https://app.subframe.com/f023064a5ca0/design/3b8067ec-1905-4fb6-bafd-e3e414c216b2/edit) |
|
||||
| K-L2 Schleife | [Dialog](https://app.subframe.com/f023064a5ca0/design/de5b5fa7-bf30-4150-a5b5-5f27d7f37a87/edit) |
|
||||
| K-L2 Wert setzen | [Dialog](https://app.subframe.com/f023064a5ca0/design/0c2fae48-e2ab-4103-b111-15a3e120adb1/edit) |
|
||||
|
||||
### Integration (1)
|
||||
|
||||
| Baustein | Subframe |
|
||||
|---|---|
|
||||
| K-I1 HTTP-Anfrage | [Dialog](https://app.subframe.com/f023064a5ca0/design/b41d53ea-a101-41c5-8950-cca4fc57ed90/edit) |
|
||||
|
||||
## Validierung der 30 Konfig-Dialoge
|
||||
|
||||
Läuft seit 2026-07-13. Validiert von **Dejan** (mit ausdrücklichem Mandat von David, 2026-07-13). Vorgehen: blockweise gegen `D-FLOW.md`/`D-P12.md`, den Baustein-Katalog oben und die Layout-Standards. Befunde werden direkt in Subframe behoben; alles, was eine Produktentscheidung ist, wird hier festgehalten.
|
||||
|
||||
### Geltende Muster (aus der Validierung abgeleitet)
|
||||
|
||||
| Regel | Wie |
|
||||
|---|---|
|
||||
| **Ansprache** | **Durchgehend duzen.** Entschieden 2026-07-13. Betrifft auch den Baustein-Picker (siezt noch) und potenziell das ganze Produkt. |
|
||||
| **Board, nicht Pipeline** | Der Begriff heißt überall `Board`. Entschieden 2026-07-13. |
|
||||
| **Pflichtfeld-Muster** | Sternchen im Label (`Verantwortlich *`) **plus** das Wort `Pflichtfeld.` am Ende des helpText. Vorbild: K-A3 Aufgabe anlegen. |
|
||||
| **Erklär-Box (Info-Kasten unten)** | Bleibt handgebaut. **Immer GRÜN** in allen Dialogen — entschieden David (abgesegnet) + Dejan (2026-07-16/17). Nicht kategorie-farbig. Symbol und Badge behalten dagegen ihre **Kategorie-Farbe** (Auslöser grün, Daten rot, Kommunikation blau, Aufgaben gelb, Logik violett, Integration grau). Grund: Der rote/violette Info-Kasten wirkte wie eine Warnung; ein einheitlich grüner Hilfetext ist freundlich und ruhig, während Symbol+Badge weiter die Kategorie zeigen. |
|
||||
| **Ausgänge im Panel** | Bausteine mit mehreren Ausgängen zeigen sie unten im Dialog (Vorbild: K-L1 Wenn-Dann mit `Ja →` / `Nein →`). Damit ist die alte offene Frage »zeigt das Panel die Ausgänge?« beantwortet: **ja**. |
|
||||
|
||||
### Block K-T1 — Datensatz-Auslöser (7 Dialoge) — ✅ validiert und repariert 2026-07-13
|
||||
|
||||
Struktur, Farben, Abstände und Katalog-Treue waren durchgehend in Ordnung. Behoben wurden:
|
||||
|
||||
| Dialog | Befund | Behebung |
|
||||
|---|---|---|
|
||||
| Kontakt geändert | Zwei Felder für dieselbe Sache (Dropdown »Welche Felder beobachten« **und** Tag-Feld) | Dropdown entfernt. Neu: **Schalter »Alle Felder beobachten«** + Tag-Feld darunter. Aus = einzelne Felder wählbar, An = Tag-Feld ausgegraut. |
|
||||
| Status gewechselt | `Board` und `Nach Spalte` faktisch Pflicht, aber nicht markiert | Beide auf Pflichtfeld-Muster umgestellt (`Board *`, `Nach Spalte *`). `Von Spalte` bleibt optional. |
|
||||
| Lead qualifiziert | Nannte das Board »Pipeline« | Auf `Board` umgestellt. |
|
||||
| Projekt angelegt | Siezte als einziger Dialog | Auf Duzen umgestellt. |
|
||||
| Projekt gewonnen | Euro-Betrag als freies Textfeld; Label »Board« unsichtbar | Auf **Number Input** umgestellt; Label sichtbar geschaltet. |
|
||||
| Neuer Kontakt (Blaupause) | Label »Quelle« unsichtbar (`showLabel` fehlte) | Label sichtbar geschaltet. |
|
||||
|
||||
**Offen aus diesem Block:**
|
||||
|
||||
- **»Kontakt geändert«**: Der ausgegraute Zustand (Schalter an → Tag-Feld gesperrt) ist bisher nur im helpText beschrieben, nicht als eigenes Frame gezeichnet. Entscheiden, ob das reicht.
|
||||
- **Number Input ist auf 192 px Breite festgenagelt** (`max-w-[192px]` in der Komponente) und lässt sich nicht auf volle Feldbreite ziehen. Dadurch bricht der helpText darunter schmal um. → Befund am Baukasten, s. u.
|
||||
|
||||
### Block K-T2 — Zeit- und Termin-Auslöser (5 Dialoge) — ✅ validiert und repariert 2026-07-13
|
||||
|
||||
| Dialog | Befund | Behebung |
|
||||
|---|---|---|
|
||||
| **Deadline naht → »Frist oder Termin«** | Deckte nur »vorher« ab und kannte keinen Termin-Typ. Dadurch liefen die Picker-Einträge **»Termin in Kürze«** und **»Zahlungsziel überschritten«** ins Leere. | **Baustein erweitert statt zwei neue zu bauen** (entschieden Dejan 2026-07-13): Bezug bekommt zusätzlich `Termin`; die Zeitangabe bekommt `Stunden/Tage/Wochen danach` neben `vorher`. Deckt damit Terminerinnerung **und** Mahnwesen ab. Titel, Untertitel, Erklär-Box und Feldnamen (`Abstand` statt `Vorlauf`) nachgezogen; Bezug und Zeitangabe sind jetzt Pflichtfelder. |
|
||||
| Termin gebucht | Beide Feld-Beschriftungen unsichtbar | Sichtbar geschaltet |
|
||||
| Termin storniert | Beide Feld-Beschriftungen unsichtbar | Sichtbar geschaltet |
|
||||
| Zeitplan | Uhrzeit als freies Textfeld (»morgens« wäre eingebbar) | **Vorläufig** Dropdown in 30-Minuten-Schritten, im helpText sichtbar als vorläufig markiert. Grund: dem Baukasten fehlt eine Uhrzeit-Komponente (s. u.). |
|
||||
| Zeitplan | `Wochentage` immer sichtbar, obwohl nur bei »Wöchentlich« sinnvoll; Feld für den Tag im Monat fehlt ganz | **Entschieden (Dejan 2026-07-13): Felder wechseln je nach Wiederholung.** Täglich → nur Uhrzeit. Wöchentlich → Wochentage + Uhrzeit. Monatlich → Tag im Monat + Uhrzeit. **»Monatlich« ist als eigene Subframe-Seite `K-T2 Zeitplan monatlich` gezeichnet (2026-07-15).** »Täglich« ist trivial (ein Feld weniger) und wird nur beschrieben — folgt Davids Muster (bedeutsame Zustände = eigene Seite, triviale = nur dokumentiert). |
|
||||
|
||||
**Wichtig:** Die Subframe-Seite heißt weiterhin `K-T2 Deadline naht`, der Inhalt aber »Frist oder Termin«. **Die Seite muss in Subframe noch umbenannt werden** — per MCP nicht möglich, muss von Hand geschehen.
|
||||
|
||||
### Block K-T3 — Eingangs-Auslöser (4 Dialoge) — ✅ validiert und repariert 2026-07-16
|
||||
|
||||
Bester Block bisher — Struktur, Sichtbarkeit der Labels und Duzen durchgehend korrekt.
|
||||
|
||||
| Dialog | Befund | Behebung |
|
||||
|---|---|---|
|
||||
| Webhook empfangen | — | **Vorbildlich.** Beantwortet die offene Frage »wie viel Technik zeigen wir Handwerkern?«: zweites Badge »Profi-Baustein«, »Webhook-Adresse« statt »Endpoint«, »Sicherheitsschlüssel« mit Klartext, Kopier-Knöpfe, kein rohes JSON. Keine Änderung. |
|
||||
| Formular abgeschickt | Formular-Feld faktisch Pflicht, aber nicht markiert | Auf Pflichtfeld-Muster umgestellt (`Formular *`). |
|
||||
| E-Mail eingegangen | Braucht ein Postfach — das ist v2 | **Entschieden (Dejan 2026-07-16): drin lassen mit »Ab v2«-Kennzeichen.** Zweites Badge »Ab v2« + neutrale Hinweisbox oben (»braucht das Postfach, kommt später«). Dialog bleibt vollständig, wird aber ehrlich als noch-nicht-auslösbar markiert. |
|
||||
| E-Mail unzustellbar | Braucht Kampagnen (D-KAMP) + Bounce-Tracking (D-P14), beide v1 aber ungebaut | **Entschieden (Dejan 2026-07-16): drin lassen, nur Abhängigkeit notieren** (keine v2-Kennzeichnung, da es v1 ist — nur eine Bau-Reihenfolge für den Entwickler). |
|
||||
|
||||
### Block K-A — Aktionen (5 → 6 Dialoge) — ✅ validiert und repariert 2026-07-16
|
||||
|
||||
| Dialog | Befund | Behebung |
|
||||
|---|---|---|
|
||||
| Kontakt ändern → **Datensatz ändern** | Name zu eng (kann auch Projekt/Auftrag) + Namens-Drift zum Picker (»Datensatz ändern«) | **Umbenannt in »Datensatz ändern«** (Entscheidung Dejan 07-16). Feld »Welcher Kontakt« → »Welcher Datensatz«, Untertitel angepasst. |
|
||||
| Datensatz ändern | Rot mit **Gefahr-Optik** (destructive Icon + roter Fehler-Rahmen) | **Entschärft** (Entscheidung Dejan 07-16): Kategorie-Rot statt Gefahr-Rot — Icon und Erklär-Box auf `ui-red`-Tokens umgestellt, wie K-L1 Wenn-Dann es mit Violett vormacht. |
|
||||
| Notiz anlegen | Gleiche Gefahr-Optik + Notiztext nicht als Pflicht markiert | Rot entschärft (wie oben) + `Notiztext *` als Pflichtfeld. |
|
||||
| Benachrichtigung senden | Vermischte extern/intern; »E-Mail« als Kanal, obwohl Picker »E-Mail senden« separat führt; Nachricht nicht Pflicht | **Auf intern beschränkt** (Entscheidung Dejan 07-16: zwei getrennte Bausteine): Weg = Push/In-App, Empfänger nur intern (`*`), Nachricht (`*`). |
|
||||
| **E-Mail senden** (neu) | Picker bot »E-Mail senden« an, es gab aber keinen Dialog | **Neuer Baustein gebaut** (Entscheidung Dejan 07-16): Empfänger `*` (Kontakt), Absender `*`, Betreff `*`, Nachricht `*`, optional Anhang. Optik = Benachrichtigung, blau. |
|
||||
| Aufgabe anlegen / Aufgabe zuweisen | — | In Ordnung. »Aufgabe zuweisen« markiert sein Pflichtfeld (`Neue Verantwortung *`) bereits vorbildlich. |
|
||||
|
||||
**Wichtig für Subframe (von Hand):** Die Seite `K-A1 Kontakt aendern` sollte zu `K-A1 Datensatz aendern` umbenannt werden (Inhalt stimmt schon). Der Picker-Eintrag »E-Mail senden« bekommt jetzt einen echten Dialog; der neue Baustein ist auch im Picker als eigener Kommunikations-Eintrag zu führen.
|
||||
|
||||
### Info-Kästen: alle 30 auf Grün (2026-07-17)
|
||||
|
||||
Entscheidung David (abgesegnet) + Dejan: Der Erklär-/Info-Kasten unten in **jedem** Dialog ist grün — nicht mehr kategorie-farbig. Symbol und Badge behalten die Kategorie-Farbe. Umgesetzt in allen 30 Dialogen (16 Auslöser waren schon grün; die 14 Aktions-, Logik- und Integrations-Dialoge nachgezogen). Damit ist das »Rot wirkt wie Fehler«-Problem gelöst, ohne die Kategorie-Codierung aufzugeben.
|
||||
|
||||
### Block K-L — Logik (8 Dialoge) — teil-validiert 2026-07-17
|
||||
|
||||
Info-Kästen gegrünt. Zwei klare Fehler direkt behoben:
|
||||
- **Filter**: Symbol war markenfarbig (`variant="primary"`) statt violett → auf Violett korrigiert.
|
||||
- Info-Kästen aller 8 Logik-Dialoge gegrünt.
|
||||
|
||||
**Noch offen — braucht Davids/Dejans Entscheidung (Struktur, nicht Farbe):**
|
||||
|
||||
| Befund | Details |
|
||||
|---|---|
|
||||
| **Bedingungen: nur Custom, aber freundlich** ✅ entschieden | **Entscheidung (Dejan 2026-07-17, nach Abwägung):** EIN Muster für alle Logik-Bedingungs-Bausteine — Feld + Vergleich + Wert, mit Klartext-Vergleichen (»ist größer als«), guten Feldnamen und Beispiel-Platzhaltern. **Kein Umschalter, kein »Einfach«-Modus, keine fertige-Bedingungs-Liste.** Grund: Fertige Bedingungen mit festem Wert (»Auftragswert über 10.000«) passen fast nie exakt (jeder Betrieb will andere Schwellen) und die Liste wäre nicht pflegbar (Felder sind pro Betrieb individuell). Der Custom-Builder ist ohnehin nur »Filter wie in Excel« und mit gutem Wording niederschwellig genug. **Der zuvor gebaute Umschalter + Einfach-Frame wurden wieder entfernt.** Umgesetzt: Wenn-Dann/Oder/Filter waren schon Custom; **Und wurde von der fertigen-Liste auf Custom umgebaut.** |
|
||||
| **Symbol-Darstellung uneinheitlich** | Wenn-Dann/Und/Switch/Wert setzen: `IconWithBackground` mit Violett-Hintergrund. »Oder«: Symbol **handgebaut** als eigenes div. Glyph-Farbe mal neutral, mal violett. → auf ein Muster vereinheitlichen. |
|
||||
| **Dialog-Breiten springen** | Wenn-Dann und Filter stehen auf `large` (1200 px) für 2 Bedingungszeilen — deutlich zu breit. Oder/Switch `medium`, Und/Warten/Schleife/Wert setzen `default` (560). → einheitliche Breite je Komplexität. |
|
||||
| ~~**Warten**: »Dauer« ist Textfeld~~ ✅ behoben 2026-07-17 | »Dauer« auf **Number Input** umgestellt; widersprüchliches Icon-Attribut (`variant="primary"` + Violett-Override) auf sauberes Violett-Muster korrigiert. |
|
||||
| **Dialog-Breite** (offen — David von Hand) | **Wenn-Dann** und **Filter** stehen auf `large` (1200 px) für zwei Bedingungszeilen → auf `medium` (720 px) stellen. Im Subframe-Editor: Dialog.Content → Size → Medium (Zwei-Klick). Per MCP zu riskant (ganzer Seiteninhalt müsste neu geschrieben werden). |
|
||||
|
||||
Gut gelöst in K-L: Alle zeigen ihre **Ausgänge** klar an (Ja/Nein, Weg 1/2/3 + Sonst, Weiter/Fertig). Klartext durchgehend, Duzen durchgehend.
|
||||
|
||||
### Block K-I — Integration (1 Dialog: HTTP-Anfrage) — ✅ validiert 2026-07-17
|
||||
|
||||
Vorbildlich für einen technischen Baustein: zwei Badges (»Integration« + »Profi-Baustein«), Klartext-Feldnamen (»Adresse (URL)«, »Kopfzeilen«), Erklärung »GET holt Daten, POST sendet Daten«, URL als Pflichtfeld, Hinweis »im Zweifel Support fragen«. Info-Kasten gegrünt. Keine weitere Reparatur.
|
||||
|
||||
### Befunde am Baukasten (nicht selbst ändern — Sperrgebiet)
|
||||
|
||||
| Komponente | Befund | Auswirkung |
|
||||
|---|---|---|
|
||||
| **Uhrzeit-Komponente fehlt komplett** | Der `Date Picker` ist ein reiner Kalender ohne Zeit. Es gibt kein Time-Picker-Bauteil. | Betrifft **nicht nur P12**: Plantafel (D-PLAN), Terminbuchung (D-BOOK) und Kalender brauchen es ebenfalls. In P12 vorläufig mit einem Dropdown überbrückt. → **Befund an D-D0b (UI-Baukasten)** |
|
||||
| `Number Input` | Fest auf `min-w-[192px]` **und** `max-w-[192px]` — also exakt 192 px, weder schmaler noch breiter | Schmale Zahlenfelder (z. B. `Abstand` = »3«) sind unmöglich; volle Feldbreite ebenso. Bricht den Formular-Rhythmus. |
|
||||
| `IconWithBackground` | Nur `destructive` (Gefahr-Rot) als Rot; kein Kategorie-Rot/Gelb-Variant | Daten-Bausteine (rot) und Logik (violett) brauchen einen handgeschriebenen `ui-*`-Farb-Override im Screen. |
|
||||
| `BadgeFeedback` | Kein `subtle-red` und kein `subtle-yellow` (nur `subtle-negative`/`subtle-warning` = Gefahr/Warnung). `subtle-blue`/`subtle-purple` existieren. | Daten- und Aufgaben-Badges nutzen zwangsläufig die Feedback-Farben (Gefahr/Warnung) statt echter Kategorie-Farben. **Broader-Finding**: Die 30 Dialoge mischen `ui-*`- und `feedback-*`-Farbtoken. Für volle Einheitlichkeit müsste der Baukasten `ui-red`/`ui-yellow`-Badge- und Icon-Varianten bekommen. → eigene Standards-Runde mit David. |
|
||||
|
||||
## Lücken und Widersprüche (Abgleich 2026-07-13)
|
||||
|
||||
Der Baustein-Picker ([[S01 Flow-Editor]], Seite »Picker Kachel-Filter«) und dieser Katalog stimmen noch nicht überein:
|
||||
|
||||
| Befund | Was zu tun ist |
|
||||
|---|---|
|
||||
| ✅ Picker bot **»Termin in Kürze«** und **»Zahlungsziel überschritten«** an — kein Dialog vorhanden | **Gelöst 2026-07-13:** Beide Fälle deckt jetzt der erweiterte Baustein **»Frist oder Termin«** ab. Im Picker müssen die zwei Einträge durch **einen** Eintrag »Frist oder Termin« ersetzt werden. |
|
||||
| Picker bietet **»E-Mail senden«** an — kein Konfig-Dialog vorhanden | Der Katalog kennt nur »Benachrichtigung senden« (Kanal E-Mail/Push/intern) — vermutlich derselbe Baustein unter zwei Namen. **Noch zu entscheiden** (kommt in Block K-A dran). |
|
||||
| Picker sagt **»Datensatz ändern«**, der Dialog heißt **»Kontakt ändern«** | Auf einen Namen festlegen. Der Katalog meint den generischen Datensatz, der Dialog nur den Kontakt. **Noch zu entscheiden** (Block K-A). |
|
||||
| Picker zeigt nur **12 Bausteine**, der Katalog kennt **30** | Picker vollständig füllen (mit Suche/Filter ist die Menge tragbar). |
|
||||
| Picker-Farben weichen ab (Orange/Blau/Neutral) | Auf das S05a-Schema umstellen (entschieden 2026-07-13). |
|
||||
| Picker **siezt** (»Wählen Sie einen Baustein«) | Auf Duzen umstellen (entschieden 2026-07-13). |
|
||||
|
||||
## 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?)
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"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},
|
||||
{"id":"s03","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/Screens/S03 Lauf-Detail.md","x":1780,"y":0,"width":420,"height":200},
|
||||
{"id":"s04","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/Screens/S04 Vorlagen-Katalog.md","x":0,"y":560,"width":420,"height":200},
|
||||
{"id":"s05","type":"file","file":"02 Wireframes/P12 Automationen/WF-P12 Verwaltung/Screens/S05 Baustein-Konfig-Panels.md","x":580,"y":560,"width":420,"height":200},
|
||||
{"id":"note-embed","type":"text","text":"# Einbettungen\n\n- S04 steckt auch in der Start-Auswahl (Flow-Editor M03)\n- S05 ist das rechte Panel im Flow-Editor\n- »+ Neue Automation« in S01 → Start-Auswahl (Flow-Editor)","x":1160,"y":560,"width":500,"height":240}
|
||||
],
|
||||
"edges":[
|
||||
{
|
||||
"id":"e-entry",
|
||||
"styleAttributes":{"path":"dotted"},
|
||||
"fromNode":"note-entry",
|
||||
"fromSide":"right",
|
||||
"toNode":"s01",
|
||||
"toSide":"left"
|
||||
},
|
||||
{"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",
|
||||
"label":"als Vorlage speichern"
|
||||
}
|
||||
],
|
||||
"metadata":{
|
||||
"version":"1.0-1.0",
|
||||
"frontmatter":{}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
---
|
||||
kind: wireframe-package
|
||||
project: HiveGrid Screen Project
|
||||
ticket: D-P12
|
||||
package: WF-P12 Verwaltung
|
||||
typ: Flow
|
||||
status: Teilweise in Subframe - S01-S04 geloescht, S05 (30 Dialoge) gebaut
|
||||
subframe: "https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit"
|
||||
canvas: "WF-P12 Verwaltung.canvas"
|
||||
---
|
||||
|
||||
# WF-P12 Verwaltung
|
||||
|
||||
Status: S05 (30 Baustein-Dialoge) steht in Subframe; **S01–S04 wurden in Subframe gelöscht und müssen neu gebaut werden**
|
||||
Subframe-Flow: [(MCP) HiveGrid Workflow Engine / Automationen P12](https://app.subframe.com/f023064a5ca0/flow/22d511a9-1d8f-4554-89ad-86729b8d7738/edit)
|
||||
Canvas: [Canvas](<WF-P12 Verwaltung.canvas>)
|
||||
Stand: 2026-07-13 (Subframe per MCP abgeglichen)
|
||||
|
||||
---
|
||||
|
||||
## 1. Kurzfassung
|
||||
|
||||
Die Nicht-Canvas-Flächen der Automationen: Übersichtsliste, Lauf-Verläufe mit Klartext-Timeline und 24-h-Rückgängig, Vorlagen-Katalog — und die Baustein-Konfig-Panels, die der Flow-Editor einbettet.
|
||||
|
||||
---
|
||||
|
||||
## 2. Intent Check
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Ticket/Modul | D-P12, Dev-Pendant R-P12a/R-P12b |
|
||||
| Nutzer-Ziel | Überblick behalten, jeden Lauf nachvollziehen, Fehler rückgängig machen |
|
||||
| Quellen geprüft | `ticket-docs/D-P12.md`, ENTITY-MODEL Domäne 7, HiveGrid Map |
|
||||
| Sicher im Scope | Liste, Lauf-Liste/-Detail, Vorlagen-Katalog, Konfig-Panel-Inhalte |
|
||||
| Sicher nicht im Scope | Editor-Canvas (WF-P12 Flow-Editor), KWP-Konfig (v2), Sprach-Eingabe (gestrichen) |
|
||||
| Unsichere Annahmen | — |
|
||||
|
||||
---
|
||||
|
||||
## 3. Scope
|
||||
|
||||
| Punkt | Inhalt |
|
||||
|---|---|
|
||||
| Startpunkt | Sidebar »Automation« |
|
||||
| Ziel | Automation gefunden, Lauf verstanden, ggf. rückgängig/erneut |
|
||||
| Haupt-Archetyp | A2 Listen · A3 + Timeline · Compose-Panels |
|
||||
| Out of scope | s. o. |
|
||||
|
||||
---
|
||||
|
||||
## 4. Entscheidungen (validiert 2026-07-09)
|
||||
|
||||
| Entscheidung | Status | Notiz |
|
||||
|---|---|---|
|
||||
| Zwei P12-Pakete | genommen | dieses = Verwaltung |
|
||||
| Lauf-Detail mit Klartext-Timeline | genommen | je Schritt: was, womit (Input/Output lesbar), wie lange, Ergebnis |
|
||||
| 24-h-Rückgängig als Countdown-Knopf | genommen | + Retry + »ab Schritt X fortsetzen« |
|
||||
| Vorlagen-Katalog mit »aus Automation erstellen« | genommen | SHK + eigene, nach Kategorie |
|
||||
| Baustein-Konfig-Panels hier designen | genommen | typ-abhängige Klartext-Formulare je Auslöser/Aktion |
|
||||
| ~~Konfig als eingebettetes Panel, nur zwei Muster~~ | **ERSETZT (07-12)** | Konfig ist jetzt ein **echter Dialog je Baustein**, und es wurden **alle 30** gebaut statt zwei Muster. Siehe [[S05a Baustein-Konfig Vorplanung]]. |
|
||||
| Farbschema der Kategorien: S05a-Schema | genommen (07-13, Dejan) | Grün/Rot/Blau/Gelb/Violett/Grau. Die 30 Dialoge stimmen bereits; der **Baustein-Picker muss nachziehen**. |
|
||||
| **Ansprache: durchgehend duzen** | genommen (07-13, Dejan) | Betrifft das ganze Produkt, nicht nur P12. In P12 behoben; der Baustein-Picker siezt noch. |
|
||||
| Begriff: **Board**, nicht Pipeline | genommen (07-13, Dejan) | In K-T1 Lead qualifiziert behoben. |
|
||||
| Erklär-Box bleibt handgebaut | genommen (07-13, Dejan) | Bewusste Ausnahme: Die Alert-Komponente kann kein Violett/Gelb und würde das Kategorie-Farbschema brechen. |
|
||||
|
||||
### Meldungs-/Error-States (validiert)
|
||||
|
||||
| Ereignis | UI-Form | Blockiert? | Bauen? | Copy/Notiz |
|
||||
|---|---|---|---|---|
|
||||
| Lauf fehlgeschlagen | rote Status-Pill + Klartext-Fehler am Schritt | nein | Nur dokumentieren | Retry/Resume direkt daneben |
|
||||
| Anomalie-Pause | Banner in Liste + Detail | nein | Nur dokumentieren | wie im Editor |
|
||||
| Rückgängig-Fenster abgelaufen | Knopf ausgegraut + Hinweis | nein | Nur dokumentieren | »Nur 24 h nach Lauf möglich« |
|
||||
| Leere Liste | Leer-Zustand + »+ Neue Automation« | nein | Nur dokumentieren | → Start-Auswahl (Flow-Editor M03) |
|
||||
|
||||
---
|
||||
|
||||
## 7. Screen-Liste (Stand 2026-07-13)
|
||||
|
||||
| ID | Screen/Zustand | Typ | Umsetzung | Ort | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| S01 | Automation-Liste | Liste | Bauen | `/automations` | Validiert, Subframe gelöscht → neu bauen |
|
||||
| S02 | Lauf-Liste | Liste | Bauen | `/automations/:id/executions` | Validiert, Subframe gelöscht → neu bauen (Route hängt am offenen Modus-Umschalter) |
|
||||
| S03 | Lauf-Detail (Klartext-Timeline) | Detail + Timeline | Bauen | `…/executions/:exec_id` | Validiert, Subframe gelöscht → neu bauen |
|
||||
| S04 | Vorlagen-Katalog | Liste/Karten | Bauen | `/automations/templates` | Validiert, Subframe gelöscht → neu bauen |
|
||||
| S05 | Baustein-Konfig-Dialoge (alle 30) | A5 Dialog | Bauen | Dialog über dem Flow-Editor | **In Subframe** — Review durch David offen |
|
||||
| D01–D04 | Zustände (s. Tabelle) | Inline/Banner | Nur dokumentieren | — | Validiert |
|
||||
|
||||
---
|
||||
|
||||
## 8. Grid
|
||||
|
||||
```text
|
||||
Sidebar -> S01 (Liste) -> S02 (Laeufe) -> S03 (Lauf-Detail: Timeline, 24h-Undo, Retry, Resume)
|
||||
S01 -> "+ Neue Automation" -> M03 (Start-Auswahl, WF-P12 Flow-Editor)
|
||||
S04 (Vorlagen) <- "aus Automation erstellen" (S01)
|
||||
S05 (Konfig-Panels) -> eingebettet in Flow-Editor S01
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Screen-Pakete
|
||||
|
||||
- [[S01 Automation-Liste]] · [[S02 Lauf-Liste]] · [[S03 Lauf-Detail]] · [[S04 Vorlagen-Katalog]] · [[S05 Baustein-Konfig-Panels]]
|
||||
|
||||
---
|
||||
|
||||
## 10. Offene Fragen
|
||||
|
||||
- **Modus-Umschalter »Bauen / Aktivität / Auswertung«** im Editor-Kopf: **offen, David muss entscheiden** (aufgefallen beim Abgleich 2026-07-13). Wenn »Aktivität« bleibt, lebt [[S02 Lauf-Liste]] im Editor statt auf `/automations/:id/executions`. Betrifft direkt den Neubau von S02.
|
||||
- Beim Neubau von S01–S04: **DefaultPageLayout (App-Shell) verwenden** — in den gelöschten Entwürfen fehlte sie bei S02–S05.
|
||||
- Picker vs. Baustein-Katalog: fehlende Bausteine und Namens-Drift → [[S05a Baustein-Konfig Vorplanung]], Abschnitt »Lücken und Widersprüche«.
|
||||
|
||||
## Handoff-Check
|
||||
|
||||
- [x] Jeder Screen ist mit Umsetzung markiert.
|
||||
- [x] Meldungs-/Error-State-Matrix ist ausgefüllt.
|
||||
- [ ] Subframe vollständig. *(Nur S05 steht. S01–S04 wurden gelöscht und müssen neu gebaut werden.)*
|
||||
@@ -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)
|
||||
+36
@@ -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)
|
||||
Loaded 100 of 205 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user