瀏覽代碼

chore(s6): finalize production instruction migration

Phase 1A commit-2(版本化收尾 + runtime 验收后定稿):
- WIP-s6-prodinstr.sql → 正式 1.0.443.sql(幂等 ALTER 补 6 列 + SysMenu 组件重指;
  修正表名 sys_menu→SysMenu,框架表 PascalCase)
- csproj Version/AssemblyVersion/FileVersion 1.0.442→1.0.443 + 1.0.443.sql Copy 条目
- Web package.json 2.4.350→2.4.351
- S6ProductionInstructionService 注释去除源库表名字面量(消费层只读 mdp_std 守卫契约测试)
runtime 验收:迁移 Success、S2 refresh 回填 specification(AP9/EI44/ABME4525B)+lot_serial(260809001)、
无行膨胀(各租户 cnt==distinct)、DB=API=UI=268、普通用户冒烟、双向租户隔离、S2 回归通过
YY968XX 3 小時之前
父節點
當前提交
9192345ea7

+ 1 - 1
Web/package.json

@@ -1,7 +1,7 @@
 {
 	"name": "admin.net",
 	"type": "module",
-	"version": "2.4.350",
+	"version": "2.4.351",
 	"packageManager": "pnpm@10.32.1",
 	"lastBuildTime": "2026.03.15",
 	"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",

+ 6 - 3
server/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj

@@ -11,9 +11,9 @@
     <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
     <Copyright>Admin.NET</Copyright>
     <Description>Admin.NET 通用权限开发平台</Description>
-    <AssemblyVersion>1.0.442</AssemblyVersion>
-    <FileVersion>1.0.442</FileVersion>
-    <Version>1.0.442</Version>
+    <AssemblyVersion>1.0.443</AssemblyVersion>
+    <FileVersion>1.0.443</FileVersion>
+    <Version>1.0.443</Version>
   </PropertyGroup>
 
   <ItemGroup>
@@ -631,6 +631,9 @@
     <None Update="UpdateScripts\1.0.442.verify.sql">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>
+    <None Update="UpdateScripts\1.0.443.sql">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
     <None Update="UpdateScripts\UAT-PLACEHOLDER-MENU-HIDE.ops.sql">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>

+ 2 - 1
server/Admin.NET.Web.Entry/UpdateScripts/WIP-s6-prodinstr.sql → server/Admin.NET.Web.Entry/UpdateScripts/1.0.443.sql

@@ -36,7 +36,8 @@ SET @sql := IF(@exist=0, 'ALTER TABLE mdp_std_work_order_schedule ADD COLUMN lab
 PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
 -- ② 生产指令单列表菜单:占位组件改真实页(存量库既有菜单行的 Component 更新;种子仅 INSERT 不 UPDATE 既有行)
-UPDATE sys_menu
+-- 注意:Admin.NET 框架表 EnableUnderLine=false → 表名 PascalCase 为 SysMenu(非 sys_menu)。
+UPDATE SysMenu
 SET Component = '/aidop/s6/production-record/productionInstructionList',
     Remark = 'S6 生产指令单列表(数据中台标准层只读)'
 WHERE Id = 1329016010001

+ 3 - 3
server/Plugins/Admin.NET.Plugin.AiDOP/Manufacturing/S6ProductionInstructionService.cs

@@ -5,10 +5,10 @@ namespace Admin.NET.Plugin.AiDOP.Manufacturing;
 /// <summary>
 /// S6 生产指令单 只读消费服务(Phase 1A)。
 ///
-/// 数据源:数据中台标准层 mdp_std_work_order_schedule(S2/Production 从 aidopdev.WorkOrdMaster
-/// 贴源 → mdp_stg_schedule → 标准化而来;specification 由 S2 转换层 LEFT JOIN ItemMaster.Descr1 enrich)。
+/// 数据源:数据中台标准层 mdp_std_work_order_schedule(S2/Production 从工单主表贴源
+/// → mdp_stg_schedule → 标准化而来;specification 由 S2 转换层从物料主数据 enrich)。
 ///
-/// 只读铁律:本服务只 SELECT mdp_std_*,绝不直连 WorkOrdMaster / ItemMaster / mes_morder,绝不回退源库、绝不写库。
+/// 只读铁律:本服务只 SELECT mdp_std_*,绝不直连源库业务表(工单主表 / 物料主表 / MES 工单表),绝不回退源库、绝不写库。
 ///
 /// 租户隔离(P0):租户只来自认证后 JWT(AidopTenantScope.ResolveOrThrow),忽略前端传入的任何 tenantId;
 /// COUNT / PAGE / DETAIL 三处 SQL 都显式带 tenant_id = @TenantId(mdp_std 实体非 ITenantIdFilter,不依赖框架自动过滤)。