yindie-erp-mcp 2.0.7 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -531,9 +531,10 @@ export const JACKET_STYLE_GROUPS = [
531
531
  control: 'radio',
532
532
  options: [
533
533
  '贴袋',
534
- '平袋有袋盖',
534
+ '平袋单嵌线',
535
+ '平袋双嵌线',
535
536
  '平袋双嵌线袋有袋盖',
536
- '斜袋有袋盖',
537
+ '斜袋双嵌线',
537
538
  '斜袋双嵌线袋有袋盖',
538
539
  ],
539
540
  },
package/dist/tool-meta.js CHANGED
@@ -144,9 +144,9 @@ export const ENTITY_META = {
144
144
  step: '维护面料/辅料等物料档案',
145
145
  label: '物料',
146
146
  addRequired: 'categoryId, materialCode, materialName',
147
- addOptional: 'spec, color, unit, defaultSupplierId, composition, width, weight, imageOssId, status, remark',
147
+ addOptional: 'spec, color, unit, defaultSupplierId, composition, width, weight, isPlaid, imageOssId, status, remark',
148
148
  editRequired: 'id, categoryId, materialName',
149
- enums: 'materialCode 新增手填必传、唯一,修改不可改;分类 fabric:materialCode=面料号且 color(色号)必填;分类 lining:composition(成分)必填;编码命中已删除记录时 add 直接恢复并更新原记录,不报重复',
149
+ enums: 'materialCode 新增手填必传、唯一,修改不可改;分类 fabric:materialCode=面料号且 color(色号)、isPlaid(Y/N)必填;分类 lining:composition(成分)必填;编码命中已删除记录时 add 直接恢复并更新原记录,不报重复',
150
150
  removeConstraint: '已被订单引用(款式面料色号行/colorCardJson 色卡料/工艺 materialCode)、生产单引用或有比价快照时不可删,可改为停用;删前用 material.bound_orders 查引用',
151
151
  next: '面料 → style_save colors[].fabricMaterialId(colorCode 取物料 color);色卡料 → colors[].colorCardJson'
152
152
  },
@@ -318,8 +318,8 @@ export const WORKFLOW_META = {
318
318
  step: '写入尺寸表入库视图',
319
319
  summary: '按 orderId+styleNo 写入款式 sizeChartJson(erpView);主款或轮次克隆款均可;成功写变更日志;UI 与 MCP 共用',
320
320
  prerequisite: '款式已存在;payload 为入库视图,不是整包;MCP 侧需用户确认,UI 点保存即可',
321
- payload: '{orderId:string, styleNo, sizeChartJson:{view_version,style_no,category:top|bottom|set,unit,source:{sha256},sizes:[{raw}],rows:[{std_key,std_zh,category:top|bottom,raw_name?,raw_name_zh?,delta?,is_extra?,values:[{size,type,raw,value_cm?}]}],issues?:[],pending?:{to_supplement:[],to_confirm:[]}}, confirmedBy:确认人ID, source?:mcp|ui}',
322
- constraint: 'confirmedBy/sha256/缺字段一次报全;issues/pending 可省略(后端补空);style_no 与入参/视图不一致拒写;同键重试不写库;固定部位 std_key 对齐上衣/裤子模板,可加 is_extra 行;delta 空用 null;轮次表用克隆款 styleNo(sample_list.roundStyleId→style_list.roundStyles)',
321
+ payload: '{orderId:string, styleNo, sizeChartJson:{view_version,style_no,category:top|bottom|set,unit,source:{sha256},sizes:[{raw}],rows:[{std_key,std_zh,raw_name,raw_name_zh,delta,category:top|bottom,is_extra?,values:[{size,type,raw,value_cm?}]}],issues?:[],pending?:{to_supplement:[],to_confirm:[]}}, confirmedBy:确认人ID, source?:mcp|ui}',
322
+ constraint: 'confirmedBy/sha256/缺字段一次报全;issues/pending 可省略(后端补空);style_no 与入参/视图不一致拒写;同键重试不写库;固定部位 std_key 对齐上衣/裤子模板,可加 is_extra 行;rows 须带 raw_name/raw_name_zh/delta(无数据写 null,勿省略键);轮次表用克隆款 styleNo(sample_list.roundStyleId→style_list.roundStyles)',
323
323
  next: '可选 size_chart_export / oss.upload+attachment_add 留底;查历史 size_chart_logs'
324
324
  },
325
325
  erp_production_craft_save: {
@@ -513,8 +513,8 @@ export const READ_META = {
513
513
  usage: '订单状态见 erp_business_flow;可按 orderStatus/orderCustomerId/customerId/brandId/bizLine 筛选'
514
514
  },
515
515
  erp_order_customer_list: {
516
- usage: '查订单客户(跟单员挂在此层);可按 customerId/bizLine/orderNo/orderStatus 筛选',
517
- returns: 'rows[].{id,customerId,brandId,bizLine,assigneeId,assigneeName}'
516
+ usage: '查订单客户(跟单员挂在此层);可按 customerId/bizLine/orderNo/orderStatus 筛选;列表展示用 shortCode(客户缩写)',
517
+ returns: 'rows[].{id,customerId,customerName,shortCode,brandId,brandName,bizLine,assigneeId,assigneeName}'
518
518
  },
519
519
  erp_order_get: {
520
520
  usage: '查订单主档;认顶层 id|orderId 或 payload.id|orderId;include=samples,shipments,timeline 追加;fields 逗号裁剪',
@@ -534,7 +534,7 @@ export const READ_META = {
534
534
  returns: '[{garmentPart, fieldKey, titleCn, colorCardCode, materialCode, materialName, sort}]'
535
535
  },
536
536
  erp_order_style_craft_export: {
537
- usage: '单款导出工艺 Excel(页面「生产单」导出);【已去掉】多款合并导出,勿传 styleIds,请逐款导出;qtyType=prod|cut|actual;默认文件名含 qtyType;preview 默认,archive=true 才归档(失败直接报错);fileName 只取 basename',
537
+ usage: '单款导出工艺 Excel(页面「生产单」导出);【已去掉】多款合并导出,勿传 styleIds,请逐款导出;qtyType=prod|cut|actual;qtyType=actual 且 archive=true 时 colors[].materialUsage/cuttableWidth 必填,否则拒导;preview 不校验;面料按物料 isPlaid:混排同时出「面料」「面料(格子)」两列,纯普通仅「面料」、纯格子仅「面料(格子)」;默认文件名含 qtyType;preview 默认,archive=true 才归档(失败直接报错);fileName 只取 basename',
538
538
  returns: '{filePath, size},filePath 为本机绝对路径'
539
539
  },
540
540
  erp_order_style_size_chart_logs: {
@@ -580,9 +580,11 @@ export const READ_META = {
580
580
  erp_task_get: { usage: '查任务详情' },
581
581
  erp_material_category_list: { usage: '查物料分类树,新建物料前先查 categoryId' },
582
582
  erp_material_list: {
583
- usage: '分页查物料;款式配置选面料/色卡前先查;可按分类/编码/名称/状态筛选'
583
+ usage: '分页查物料;款式配置选面料/色卡前先查;可按分类/编码/名称/状态筛选;面料含 isPlaid(Y/N),工艺导出据此分「面料」「面料(格子)」列'
584
+ },
585
+ erp_material_get: {
586
+ usage: '查物料详情;拿到 id/materialCode/color/isPlaid 再写入款式配置或色卡;fabric 的 isPlaid 影响 craft_export 面料列表头'
584
587
  },
585
- erp_material_get: { usage: '查物料详情;拿到 id/materialCode/color 再写入款式配置或色卡' },
586
588
  erp_material_bound_orders: {
587
589
  usage: '查引用该物料的订单(含 orderNo/customerName/styleNo/bindSource),删除或停用前确认',
588
590
  returns: '[{orderId, orderNo, customerName, styleNo, styleName, bindSource}]'
@@ -614,7 +616,7 @@ export const ERP_BUSINESS_FLOW = {
614
616
  '3. 订单详情关联PI:erp_pi action=add(需 orderId, customerId, sourceType, piNo;独立 PI 菜单已隐藏)',
615
617
  '4. erp_workbench action=merchandiser_options 取跟单员 → erp_order action=customer_add 建订单客户 → action=add(需 orderNo,orderCustomerId,默认inquiry;复制订单号规则26SB01)',
616
618
  '5. 若 PI 未带 orderId:erp_order action=link_pi 关联PI',
617
- '6. erp_material list/add 选或新增面料(fabric 必填色号 color)→ erp_order action=style_save(colors[].fabricMaterialId/colorCode/colorName/colorCardJson + 尺码)',
619
+ '6. erp_material list/add 选或新增面料(fabric 必填色号 color、isPlaid=Y/N)→ erp_order action=style_save(colors[].fabricMaterialId/colorCode/colorName/colorCardJson + 尺码)',
618
620
  '7. erp_order action=craft_schema → craft_save 写工艺选项(jacket+pants 一次全量)→ craft_get 校验',
619
621
  '8. (可选)erp_order action=color_card_save 写色卡页脚备注(常规 {styleId,colorCardNote,items:[]});选料已在 style_save.colorCardJson',
620
622
  '9. (可选)erp_order action=sample_add 建轮次(自动克隆主款→roundStyleId);尺寸表/工艺按轮次写克隆款',
@@ -781,7 +783,7 @@ export const ERP_BUSINESS_FLOW = {
781
783
  '工艺选项与怎么选见 erp_order_craft_schema.selectionGuide 或资源 yindie://erp/craft-guide',
782
784
  '工艺选项固定模板(对齐打样单),不用 sys_dict;fieldValue 存 JSON(见 craftValueJson / fieldValueExample)',
783
785
  '工艺 fieldKey/craftModule 以 erp_order_craft_schema.fields 为准,勿再用旧字典码如 single_1',
784
- '款式面料色号:material.list/add → style_save colors[].fabricMaterialId,colorCode=物料 color,colorName 必填;勿传 fabricColorNo',
786
+ '款式面料色号:material.list/add(fabric 必填 color、isPlaid)→ style_save colors[].fabricMaterialId,colorCode=物料 color,colorName 必填;勿传 fabricColorNo;isPlaid 决定 craft_export 面料/面料(格子)列',
785
787
  '【色卡生成】material.list/add → style_save colors[].colorCardJson(选料,键=白名单 fieldKey,值={materialCode,materialName,titleCn})→ 可选 craft_save(仅影响前端可选列 onCard)→ 可选 color_card_save(仅备注)→ color_card_export;导出只认 colorCardJson,无选料直接拒',
786
788
  '色卡备注:color_card_save 常规 {styleId,colorCardNote,items:[]};选料不在 color_card_save',
787
789
  'Excel 导出/预览都是二进制:工艺单 craft_export(qtyType=prod生产单|cut预裁单|actual实裁单,标题同步)、色卡 color_card_export、尺寸表 size_chart_export、PI export,均落本机返回 filePath',
@@ -799,8 +801,8 @@ export const ERP_BUSINESS_FLOW = {
799
801
  'order.get / order.edit 认顶层 id|orderId 或 payload.id|orderId;雪花 ID 须字符串',
800
802
  'timeline_list 含 sample 轮次事件(attachment/size_chart 仍排除);轮次明细也可用 sample_list',
801
803
  'oss.upload 失败透出 OSS上传失败:原因;本地路径不可读/空文件先拒',
802
- 'craft_export cut/actual 数量空时回退 qty;色卡导出缺料报错带款号/色号',
803
- 'size_chart_save source.sha256 须 64 位;与视图字段同一遍校验汇总报错(有 type 等错误时不误报 sha 缺失)',
804
+ 'craft_export cut/actual 数量空时回退 qty;actual+archive 时用料 materialUsage、可裁门幅 cuttableWidth 必填,preview 不拦;面料 isPlaid 混排时同时出「面料」「面料(格子)」两列,纯格子仅「面料(格子)」;色卡导出缺料报错带款号/色号',
805
+ 'size_chart_save source.sha256 须 64 位;与视图字段同一遍校验汇总报错(有 type 等错误时不误报 sha 缺失);rows 必带 raw_name/raw_name_zh/delta(无则 null)',
804
806
  'size_chart_logs 认 styleId 或 orderId+styleNo',
805
807
  '【已去掉】工艺/色卡多款合并导出:与前端一致仅单款,勿传 styleIds;请逐款 craft_export / color_card_export',
806
808
  '材料比价列表导出:erp_material action=price_snapshot.export(对齐前端)',
@@ -838,11 +840,11 @@ export const ERP_MCP_INSTRUCTIONS = `银蝶 ERP MCP(域工具 + action 模式
838
840
 
839
841
  【色卡】选料只写 style_save.colors[].colorCardJson;备注 color_card_save(items:[]);导出 color_card_export 只认 colorCardJson(无选料会拒)。craft_save 只影响前端哪些色卡列可填(onCard),不是导出数据源。
840
842
 
841
- 【工艺】对应页面「生产单」按钮。先 craft_schema 拿 fieldKey 与 fieldValueExample(含 checkbox+gateNone 的 radio:有);craft_save 全量替换含商标位置;按 control 校验。导出 craft_export(qtyType=prod|cut|actual,仅单款;合并导出已去掉)/size_chart_export/attachment_export,默认不写附件,archive=true 才归档。
843
+ 【工艺】对应页面「生产单」按钮。先 craft_schema 拿 fieldKey 与 fieldValueExample(含 checkbox+gateNone 的 radio:有);craft_save 全量替换含商标位置;按 control 校验。导出 craft_export(qtyType=prod|cut|actual,仅单款;合并导出已去掉)/size_chart_export/attachment_export,默认不写附件,archive=true 才归档。actual+archive 须 colors[].materialUsage/cuttableWidth;面料 isPlaid 混排时 Excel 同时出「面料」「面料(格子)」两列。
842
844
 
843
845
  【轮次/尺寸表】sample_add 的 styleId 只能是主款;返回后 sample_list.roundStyleId 为克隆款。style_list 主款含 roundStyles。尺寸表 size_chart_save 按 styleNo 写;历史 size_chart_logs;导出 size_chart_export。
844
846
 
845
- 【物料】material.add(materialCode 手填;fabric 必填 color;lining 必填 composition);面料色号行填 fabricMaterialId;删前 material.bound_orders。
847
+ 【物料】material.add(materialCode 手填;fabric 必填 color、isPlaid=Y/N;lining 必填 composition);面料色号行填 fabricMaterialId;删前 material.bound_orders。
846
848
 
847
849
  【制单中心·不用】erp_production 整模块停用;主链路不含它。勿主动 create_from_order / save_items / check / submit_review / issue。API 仅保留,用户点名再说。
848
850
 
@@ -390,6 +390,7 @@ function inputSchemaFor(tpl, allowed) {
390
390
  ...base,
391
391
  materialCode: z.string().optional().describe('物料编码(面料分类即面料号)'),
392
392
  materialName: z.string().optional().describe('物料名称'),
393
+ isPlaid: z.string().optional().describe('是否格子 Y/N(面料分类必填)'),
393
394
  categoryId: optionalId.describe('分类 ID'),
394
395
  materialId: optionalId.describe('物料 ID'),
395
396
  supplierId: optionalId.describe('供应商 ID'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yindie-erp-mcp",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "description": "银蝶 ERP 独立 MCP 服务,通过 RuoYi API 提供查询与写操作能力",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",