-**Testsbaseline:****458 PASS**(45Domain+413Infra·0fail/skip;D10S112Run#496sha`e100ef0`—440→458incl+10`SupplierExcelImportServiceTests`+`PeSubmitGuardAndBypass`mods;prior440[S96#48045D+395I`PeSuggestedPriceSetterAuthzTests`],436,434,421).Phase9UATskipperchunkOK.🔑**Anon log endpoint `https://git.baocaogiaoduc.vn/vietreport-admin/solution-erp/actions/runs/{run_number}/jobs/0/logs` (HTTP 200 ~18KB) EXPOSES per-project `Passed! - Failed: 0, Passed: N, Skipped: 0` — concrete test count now available, NOT just status=success (the `/api/v1/.../tasks/{id}/logs` variant 404s; use web-UI runs/{run_number}/jobs/0/logs).**
-**Miglatestrepo:****Mig 63 `20260712070117_AddSupplierImportSourceFields`**(D10S112#496`e100ef0`;2 AddColumnnullableon`Suppliers`[`SourceUpdatedAt`datetime2+`SourceUpdatedBy`nvarchar(200)]forExcel-importPhaseBprovenance;NOCreateTable⟹sys.tablesstays89—VERIFIED-APPLIED-PRODhistory-top==`AddSupplierImportSourceFields`+both-cols-present=2+sys.tables=89).PrevMig62`ExpandSupplierFields`(S104#488,AddColumn×18Supplier9→27+un-cram4-NCCNote).PrevMig61`BackfillEndedByLevelFinalizeFromChangelog`(S97,data-only).Path`src/Backend/SolutionErp.Infrastructure/Persistence/Migrations/`.Prodcheck`sqlcmd __EFMigrationsHistory ORDER BY MigrationId DESC TOP 5`.⚠️**`sys.tables`(is_ms_shipped=0)=89**(S104LIVE-verifiedpost-#488—AddColumn/data-onlymigsdon'tchangecount→committouchesnonewtable⟹89correctdon'tFAIL.Cross-refCOMMITscopevsambientcount).enum-additive(e.g.`ApprovalAttachment=5`)=int-storedNO-mig→historyNOT-advance+empty`git diff -- '*Migrations*'`.
-**Bundlehashlive(D10 S112#496`e100ef0`2026-07-12—REAL-FE-SHIProtate,breaksFROZEN×6):**adminjs**`Cixlt_MA`**/css**`Ds-E5neu`**·userjs**`BhBOG1dn`**/css**`Beb0Bb1h`**—BOTHjs+cssrotated(from#490-#495admin`BVyH-FY7`/`Bbtesa6B`·user`EDsZebvn`/`BmuPz_Dy`)=expected,real`fe-*/src`change(SupplierImportDialog.tsxNEWbothapps).Ship-proofDEFINITIVE:real-sizeadmin1,652,140b/user1,558,489b(vs919bSPA-trap)+`application/javascript`+LM09:18:32/09:19:25GMT(=16:18/16:19+07indeploy-window16:14:33→16:19:58)+content-marker`"Database NCC"`count=1inBOTHbundles.⚠️**id ≠ run_number; head_sha-keyed.**⚠️**PER #69 TWO-MODE: hash MAY rotate (real src-diff #488/#496, HOẶC 0-fe-src #489/#312) OR freeze (0 fe-src #485-487) — SNAPSHOT per-run, NOT baseline; ALWAYS re-snapshot LIVE pre-deploy.**RealFEship =diff`fe-*/src`inrange+real-size-vs-fake+Last-Modified-in-window+content-marker-grep,NOThashdeltaalone.
-**Testsbaseline:****477 PASS**(45Domain+432Infra·0fail/skip;S113Run#383sha`5fa11b5`—458→477incl+19new`SupplierPublishAndListTests`+`SupplierImportV2DedupTests`;prior458[S112#49645D+413I+10SupplierExcelImportServiceTests],440,436,434,421).Phase9UATskipperchunkOK.🔑**Anon log endpoint `https://git.baocaogiaoduc.vn/vietreport-admin/solution-erp/actions/runs/{run_number}/jobs/0/logs` (HTTP 200 ~18KB) EXPOSES per-project `Passed! - Failed: 0, Passed: N, Skipped: 0` — concrete test count now available, NOT just status=success (the `/api/v1/.../tasks/{id}/logs` variant 404s; use web-UI runs/{run_number}/jobs/0/logs).**
-**Miglatestrepo:****Mig 64 `20260712110556_AddSupplierPublishState`**(S113#383`5fa11b5`;AddColumn`IsPublic`bitNOTNULLDEFAULT0on`Suppliers`+backfill`UPDATE Suppliers SET IsPublic=1`all-rows+DropIndex/CreateIndex`IX_Suppliers_Code`filter→`[IsDeleted]=0 AND [Code]<>''`;NOCreateTable⟹sys.tablesstays89—VERIFIED-APPLIED-PRODhistory-top==`AddSupplierPublishState`+`IsPublic`-col-present=1+Suppliers37/37PUBLIC=1+sys.tables=89).PrevMig63`AddSupplierImportSourceFields`(S112#496,2AddColumnprovenance).PrevMig62`ExpandSupplierFields`(S104#488,AddColumn×18Supplier9→27+un-cram4-NCCNote).PrevMig61`BackfillEndedByLevelFinalizeFromChangelog`(S97,data-only).Path`src/Backend/SolutionErp.Infrastructure/Persistence/Migrations/`.Prodcheck`sqlcmd __EFMigrationsHistory ORDER BY MigrationId DESC TOP 5`.⚠️**`sys.tables`(is_ms_shipped=0)=89**(S104LIVE-verifiedpost-#488—AddColumn/data-onlymigsdon'tchangecount→committouchesnonewtable⟹89correctdon'tFAIL.Cross-refCOMMITscopevsambientcount).enum-additive(e.g.`ApprovalAttachment=5`)=int-storedNO-mig→historyNOT-advance+empty`git diff -- '*Migrations*'`.
-**Bundlehashlive(S113#383`5fa11b5`2026-07-12—REAL-FE-SHIProtate×2):**adminjs**`acprMqfB`**/css**`CfunQHbd`**·userjs**`Ck3BTDdA`**/css**`DGqqHQXS`**—BOTHjs+cssrotated(from#496admin`Cixlt_MA`/`Ds-E5neu`·user`BhBOG1dn`/`Beb0Bb1h`)=expected,real`fe-*/src`change(SupplierImportDialog+SuppliersPage+PeDetailTabs+ContractCreatePagebothapps).Ship-proofDEFINITIVE:real-sizeadmin1,656,263b/user1,562,611b(vs919bSPA-trap)+`application/javascript`+LM12:07:50/12:08:43GMT(=19:07/19:08+07indeploy-window19:03:57→19:09:11)+byte-verifystrings`Tải file mẫu`×1/`Đã công bố`×3/`Nháp (ẩn)`×4present(gotcha#77not-cache).⚠️**id ≠ run_number; head_sha-keyed.**⚠️**PER #69 TWO-MODE: hash MAY rotate (real src-diff #488/#496, HOẶC 0-fe-src #489/#312) OR freeze (0 fe-src #485-487) — SNAPSHOT per-run, NOT baseline; ALWAYS re-snapshot LIVE pre-deploy.**RealFEship =diff`fe-*/src`inrange+real-size-vs-fake+Last-Modified-in-window+content-marker-grep,NOThashdeltaalone.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.