feat(heute): ungeplant Erledigtes nachtragen (ENTWICKLUN-7)
Drive-by-Aufgaben ("btw, Yevgen-Security-Fix hab ich auch noch gemacht")
strukturiert erfassen statt nur im Freitext. Neues Feld todo.unplanned +
Endpoint dayEntry.addUnplanned: legt sofort ein erledigtes, als „ungeplant"
markiertes ToDo an.
- Schnell-Eingabe „Ungeplant erledigt" auf Heute (Mid-Day) und in der
Reflexion (End-of-Day-Recall).
- "ungeplant"-Badge in Heute, Reflexion und Historie.
- historyForDate liefert das unplanned-Flag mit.
- Reflexions-Freitext bleibt für die Tages-Story.
Migration 0012 (todo.unplanned).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
516b35bf15
commit
66adc49e2c
9 files changed
+3431
-3
No files matched your search
@@ -0,0 +1 @@
|
||||
ALTER TABLE "todo" ADD COLUMN "unplanned" boolean DEFAULT false NOT NULL;
|
||||
File diff suppressed because it is too large.
Load diff
@@ -85,6 +85,13 @@
|
||||
"when": 1780754557002,
|
||||
"tag": "0011_lead_project_link",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 12,
|
||||
"version": "7",
|
||||
"when": 1780761840614,
|
||||
"tag": "0012_todo_unplanned",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -261,6 +261,8 @@ export const todo = pgTable(
|
||||
.notNull()
|
||||
.default('open'),
|
||||
dropReason: text('drop_reason'),
|
||||
// Ungeplant dazugekommen & erledigt (Drive-by, „btw das habe ich heute auch gemacht").
|
||||
unplanned: boolean('unplanned').notNull().default(false),
|
||||
carriedOver: boolean('carried_over').notNull().default(false),
|
||||
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
|
||||
completedAt: timestamp('completed_at', { withTimezone: true }),
|
||||
|
||||
@@ -65,6 +65,14 @@ export const addTodoInput = z.object({
|
||||
});
|
||||
export type AddTodoInput = z.infer<typeof addTodoInput>;
|
||||
|
||||
// Ungeplant dazugekommenes & bereits erledigtes Item nachtragen (Drive-by).
|
||||
export const addUnplannedInput = z.object({
|
||||
title: z.string().min(1).max(200),
|
||||
bezugKind: bezugKindSchema.optional(),
|
||||
bezugId: z.string().uuid().optional(),
|
||||
});
|
||||
export type AddUnplannedInput = z.infer<typeof addUnplannedInput>;
|
||||
|
||||
export const historyForDateInput = z.object({
|
||||
date: z
|
||||
.string()
|
||||
|
||||
Reference in new issue
Block a user