feat: planning sessions foundation (Plan A) #4

Merged
claude merged 16 commits from feat/planning-sessions-foundation into main 2026-04-23 16:31:37 +00:00
2 changed files with 25 additions and 0 deletions
Showing only changes of commit d099138487 - Show all commits

View File

@@ -282,6 +282,17 @@ public sealed class TaskRepository
return await _context.Tasks.AsNoTracking().FirstOrDefaultAsync(t => t.Id == taskId, ct); return await _context.Tasks.AsNoTracking().FirstOrDefaultAsync(t => t.Id == taskId, ct);
} }
public async Task UpdatePlanningSessionIdAsync(
string parentId,
string sessionId,
CancellationToken ct = default)
{
await _context.Tasks
.Where(t => t.Id == parentId)
.ExecuteUpdateAsync(s => s
.SetProperty(t => t.PlanningSessionId, sessionId), ct);
}
#endregion #endregion
#region Queue selection #region Queue selection

View File

@@ -152,4 +152,18 @@ public sealed class TaskRepositoryPlanningTests : IDisposable
Assert.Equal(TaskStatus.Queued, loaded!.Status); Assert.Equal(TaskStatus.Queued, loaded!.Status);
Assert.Null(loaded.PlanningSessionToken); Assert.Null(loaded.PlanningSessionToken);
} }
[Fact]
public async Task UpdatePlanningSessionIdAsync_StoresClaudeSessionId()
{
var listId = await CreateListAsync();
var task = MakeTask(listId, TaskStatus.Manual);
await _tasks.AddAsync(task);
await _tasks.SetPlanningStartedAsync(task.Id, "tok");
await _tasks.UpdatePlanningSessionIdAsync(task.Id, "claude-session-42");
var loaded = await _tasks.GetByIdAsync(task.Id);
Assert.Equal("claude-session-42", loaded!.PlanningSessionId);
}
} }