[CLAUDE] Master: nạp master data thật từ Excel (62 dự án + 71 hạng mục + 3 NCC) + Project +4 cột (Mig 48)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m33s

Nạp master data công ty từ file Excel 'HẠNG MỤC CÔNG VIỆC DỰ ÁN':
- 62 Projects (Mã + Năm; tên/CĐT/địa điểm/gói thầu cho ~6 dự án có chi tiết)
- 71 WorkItems: Vật tư 16 · Thầu phụ 30 · MEP 9 · Thiết bị 16
- 3 Suppliers (TRUONGGIANG/TANPHU/TGN)

Mig 48 AddProjectMasterFields: Project +4 cột nullable (Year/Investor/Location/Package) + ProjectFeatures DTO/Create/Update + ProjectsPage form ×2 app (SHA256 mirror).
SeedRealMasterDataAsync per-code idempotent, UNGATED → reaches prod (coexist demo). FLOCK01 collision → skip (demo wins).

Verify: build 0-err · test 216 PASS · runtime Dev proof (data landed, Investor col populates). Provenance: scripts/master-import-data.generated.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-06-09 09:27:04 +07:00
parent f8640d6f18
commit 69cb3937bb
17 changed files with 7069 additions and 9 deletions

View File

@ -0,0 +1,61 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace SolutionErp.Infrastructure.Persistence.Migrations
{
/// <inheritdoc />
public partial class AddProjectMasterFields : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Investor",
table: "Projects",
type: "nvarchar(250)",
maxLength: 250,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Location",
table: "Projects",
type: "nvarchar(500)",
maxLength: 500,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "Package",
table: "Projects",
type: "nvarchar(300)",
maxLength: 300,
nullable: true);
migrationBuilder.AddColumn<int>(
name: "Year",
table: "Projects",
type: "int",
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Investor",
table: "Projects");
migrationBuilder.DropColumn(
name: "Location",
table: "Projects");
migrationBuilder.DropColumn(
name: "Package",
table: "Projects");
migrationBuilder.DropColumn(
name: "Year",
table: "Projects");
}
}
}

View File

@ -3484,9 +3484,17 @@ namespace SolutionErp.Infrastructure.Persistence.Migrations
b.Property<DateTime?>("EndDate")
.HasColumnType("datetime2");
b.Property<string>("Investor")
.HasMaxLength(250)
.HasColumnType("nvarchar(250)");
b.Property<bool>("IsDeleted")
.HasColumnType("bit");
b.Property<string>("Location")
.HasMaxLength(500)
.HasColumnType("nvarchar(500)");
b.Property<Guid?>("ManagerUserId")
.HasColumnType("uniqueidentifier");
@ -3499,6 +3507,10 @@ namespace SolutionErp.Infrastructure.Persistence.Migrations
.HasMaxLength(1000)
.HasColumnType("nvarchar(1000)");
b.Property<string>("Package")
.HasMaxLength(300)
.HasColumnType("nvarchar(300)");
b.Property<DateTime?>("StartDate")
.HasColumnType("datetime2");
@ -3508,6 +3520,9 @@ namespace SolutionErp.Infrastructure.Persistence.Migrations
b.Property<Guid?>("UpdatedBy")
.HasColumnType("uniqueidentifier");
b.Property<int?>("Year")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("Code")