Files
Teamup/src/Modules/TeamUp.Modules.Assembler/Persistence/Migrations/AssemblerDbContextModelSnapshot.cs
T
soroush.asadi 09eaf360a3 M4: agent-run job queue + worker drain (Increment 1)
SharedKernel: IWorkerModule seam (RegisterWorker runs in the worker host only).
Bootstrap: AddTeamUpWorkerServices; the worker host now wires it.

Assembler module (schema "assembler", InitialAssembler migration):
- Job (Pending→Processing→Done/Failed) + AgentRun (Queued→Running→Completed/Failed) entities.
- JobQueue: enqueue + ClaimNextAsync using `FOR UPDATE SKIP LOCKED` in a transaction.
- AgentRunExecutor (Increment-1 placeholder — real assemble/model/parse lands in Increment 2).
- JobProcessor BackgroundService drains the queue on the worker host (web off the model path).
- POST /api/assembler/runs enqueues a run; GET /api/assembler/runs/{id} reads it.

Verified: build green; ArchitectureTests 8/8 (Assembler references only SharedKernel);
IntegrationTests 28/28 incl. enqueue→claim(SKIP LOCKED)→process→Completed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 01:16:37 +03:30

136 lines
4.6 KiB
C#

// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using TeamUp.Modules.Assembler.Persistence;
#nullable disable
namespace TeamUp.Modules.Assembler.Persistence.Migrations
{
[DbContext(typeof(AssemblerDbContext))]
partial class AssemblerDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasDefaultSchema("assembler")
.HasAnnotation("ProductVersion", "10.0.8")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("TeamUp.Modules.Assembler.Domain.AgentRun", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property<string>("ActionRisk")
.HasMaxLength(20)
.HasColumnType("character varying(20)");
b.Property<string>("ActionType")
.HasMaxLength(60)
.HasColumnType("character varying(60)");
b.Property<Guid?>("AgentId")
.HasColumnType("uuid");
b.Property<DateTimeOffset?>("CompletedAtUtc")
.HasColumnType("timestamp with time zone");
b.Property<DateTimeOffset>("CreatedAtUtc")
.HasColumnType("timestamp with time zone");
b.Property<string>("Error")
.HasColumnType("text");
b.Property<long?>("LatencyMs")
.HasColumnType("bigint");
b.Property<string>("Output")
.HasColumnType("text");
b.Property<string>("Prompt")
.HasColumnType("text");
b.Property<string>("ResultJson")
.HasColumnType("text");
b.Property<Guid>("SeatId")
.HasColumnType("uuid");
b.Property<string>("Status")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("character varying(20)");
b.Property<string>("Trace")
.HasColumnType("text");
b.Property<Guid>("WorkItemId")
.HasColumnType("uuid");
b.HasKey("Id");
b.HasIndex("SeatId");
b.HasIndex("WorkItemId");
b.ToTable("agent_runs", "assembler");
});
modelBuilder.Entity("TeamUp.Modules.Assembler.Domain.Job", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property<int>("Attempts")
.HasColumnType("integer");
b.Property<DateTimeOffset?>("CompletedAtUtc")
.HasColumnType("timestamp with time zone");
b.Property<DateTimeOffset>("CreatedAtUtc")
.HasColumnType("timestamp with time zone");
b.Property<string>("Error")
.HasColumnType("text");
b.Property<DateTimeOffset?>("LockedAtUtc")
.HasColumnType("timestamp with time zone");
b.Property<string>("LockedBy")
.HasMaxLength(120)
.HasColumnType("character varying(120)");
b.Property<string>("Payload")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Status")
.IsRequired()
.HasMaxLength(20)
.HasColumnType("character varying(20)");
b.Property<string>("Type")
.IsRequired()
.HasMaxLength(60)
.HasColumnType("character varying(60)");
b.HasKey("Id");
b.HasIndex("Status", "CreatedAtUtc");
b.ToTable("jobs", "assembler");
});
#pragma warning restore 612, 618
}
}
}