feat: support multiple event proposals in single AI response

- Change proposedChange to proposedChanges array in ChatMessage type
- Add unique id and individual respondedAction to each ProposedEventChange
- Implement arrow navigation UI for multiple proposals with "Event X von Y" counter
- Add updateProposalResponse() method for per-proposal confirm/reject tracking
- GPTAdapter now collects multiple tool call results into proposals array
- Add RRULE documentation to system prompt (separate events for different times)
- Fix RRULE parsing to strip RRULE: prefix if present
- Add log summarization for large args (conversationHistory, existingEvents)
- Keep proposedChanges logged in full for debugging AI issues
This commit is contained in:
2026-01-10 23:30:32 +01:00
parent 8efe6c304e
commit e6b9dd9d34
18 changed files with 533 additions and 158 deletions

View File

@@ -44,6 +44,7 @@ const UpdatesSchema = new Schema<UpdateEventDTO>(
const ProposedChangeSchema = new Schema<ProposedEventChange>(
{
id: { type: String, required: true },
action: {
type: String,
enum: ["create", "update", "delete"],
@@ -52,6 +53,10 @@ const ProposedChangeSchema = new Schema<ProposedEventChange>(
eventId: { type: String },
event: { type: EventSchema },
updates: { type: UpdatesSchema },
respondedAction: {
type: String,
enum: ["confirm", "reject"],
},
},
{ _id: false },
);
@@ -77,12 +82,9 @@ const ChatMessageSchema = new Schema<
type: String,
required: true,
},
proposedChange: {
type: ProposedChangeSchema,
},
respondedAction: {
type: String,
enum: ["confirm", "reject"],
proposedChanges: {
type: [ProposedChangeSchema],
default: undefined,
},
},
{