refactor: extract training data collection into OpenNest.Training

Move brute-force data collection, TrainingDatabase, and GPU init from
OpenNest.Console into a dedicated OpenNest.Training project. Replaces
raw Microsoft.Data.Sqlite with EF Core. Console is now a pure nesting
CLI with template support and cleaned-up usage output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-14 14:41:38 -04:00
parent 74272bea80
commit acc75868c0
10 changed files with 591 additions and 428 deletions

View File

@@ -0,0 +1,38 @@
using Microsoft.EntityFrameworkCore;
namespace OpenNest.Training.Data
{
public class TrainingDbContext : DbContext
{
public DbSet<TrainingPart> Parts { get; set; }
public DbSet<TrainingRun> Runs { get; set; }
private readonly string _dbPath;
public TrainingDbContext(string dbPath)
{
_dbPath = dbPath;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlite($"Data Source={_dbPath}");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<TrainingPart>(e =>
{
e.HasIndex(p => p.FileName).HasDatabaseName("idx_parts_filename");
});
modelBuilder.Entity<TrainingRun>(e =>
{
e.HasIndex(r => r.PartId).HasDatabaseName("idx_runs_partid");
e.HasOne(r => r.Part)
.WithMany(p => p.Runs)
.HasForeignKey(r => r.PartId);
});
}
}
}