intonear-erp-cli 0.2.2 → 0.2.4

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.
Files changed (2) hide show
  1. package/dist/bin.js +260 -95
  2. package/package.json +1 -1
package/dist/bin.js CHANGED
@@ -14520,7 +14520,7 @@ function date4(params) {
14520
14520
  config(en_default());
14521
14521
 
14522
14522
  // ../../packages/contracts/dist/agent-context.js
14523
- var erpDomainModelVersion = "2026-09-02";
14523
+ var erpDomainModelVersion = "2026-09-03";
14524
14524
  var erpCompletenessRulesVersion = "2026-09-01";
14525
14525
  var erpDomainTopics = [
14526
14526
  {
@@ -14536,12 +14536,12 @@ var erpDomainTopics = [
14536
14536
  {
14537
14537
  topic: "BUSINESS_CODE_SYSTEM",
14538
14538
  title: "\u4E1A\u52A1\u7F16\u7801\u4F53\u7CFB",
14539
- summary: "PR\u3001PS\u3001PK\u3001UM \u4E1A\u52A1\u7F16\u7801\u4E0E\u6570\u636E\u5E93\u5185\u90E8 ID \u7684\u533A\u522B\u3002"
14539
+ summary: "PR\u3001PS\u3001PK\u3001MANUAL \u4E1A\u52A1\u7F16\u7801\u4E0E\u6570\u636E\u5E93\u5185\u90E8 ID \u7684\u533A\u522B\u3002"
14540
14540
  },
14541
14541
  {
14542
14542
  topic: "FILES",
14543
14543
  title: "\u6587\u4EF6\u4E0E\u4EA7\u54C1\u8D44\u6599",
14544
- summary: "FileAsset\u3001\u4E0D\u53EF\u53D8 FileVersion\u3001\u4EA7\u54C1\u56FE\u7247\u5F52\u5C5E\u548C\u5F53\u524D\u4E0A\u4F20\u80FD\u529B\u3002"
14544
+ summary: "FileAsset\u3001\u4E0D\u53EF\u53D8 FileVersion\u3001\u4EA7\u54C1\u56FE\u7247\u4E0E\u7528\u6237\u8BF4\u660E\u4E66\u7684\u5F53\u524D\u4E0A\u4F20\u80FD\u529B\u3002"
14545
14545
  },
14546
14546
  {
14547
14547
  topic: "DEVELOPMENT_WORK_LIST",
@@ -14587,16 +14587,18 @@ var overviewContent = {
14587
14587
  readOnly: false,
14588
14588
  available: [
14589
14589
  "\u641C\u7D22 Product\u3001ProductSpec\u3001Pack \u4E3B\u6570\u636E\u5173\u7CFB",
14590
- "\u6309\u5B8C\u6574 PR\u3001PS\u3001PK \u4E1A\u52A1\u7F16\u7801\u8BFB\u53D6\u4E3B\u6570\u636E\u5173\u7CFB",
14590
+ "\u6309\u5B8C\u6574 PR\u3001PS\u3001PK\u3001MANUAL \u4E1A\u52A1\u7F16\u7801\u8BFB\u53D6\u4E3B\u6570\u636E",
14591
14591
  "\u5206\u9875\u67E5\u8BE2\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355",
14592
14592
  "\u8BFB\u53D6\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u53CA\u5B9E\u65F6\u8D44\u6599\u5B8C\u6574\u5EA6",
14593
14593
  "\u5206\u9875\u8BFB\u53D6\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u64CD\u4F5C\u8BB0\u5F55",
14594
14594
  "\u521B\u5EFA\u53CA\u66F4\u65B0 Product\u3001ProductSpec\u3001Pack",
14595
14595
  "\u7EF4\u62A4 ProductSpec\u2014Pack \u6620\u5C04",
14596
14596
  "\u521B\u5EFA\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u5E76\u6267\u884C\u539F\u5B50\u8BED\u4E49\u547D\u4EE4",
14597
- "\u4E3A ProductSpec \u4E0A\u4F20\u5E76\u5173\u8054\u4EA7\u54C1\u56FE\u7247"
14597
+ "\u4E3A Product \u4E0A\u4F20\u5E76\u5173\u8054\u4EA7\u54C1\u56FE\u7247",
14598
+ "\u4E3A UserManual \u4E0A\u4F20\u5E76\u8BBE\u7F6E\u5F53\u524D PDF",
14599
+ "CLI \u53EF\u8BFB\u53D6\u5E76\u7EF4\u62A4 ProductSpec\u2014UserManual \u9002\u7528\u5173\u7CFB"
14598
14600
  ],
14599
- unavailable: ["\u91C7\u8D2D\u67E5\u8BE2", "\u7269\u6D41\u67E5\u8BE2", "\u8BA2\u5355\u67E5\u8BE2", "Agent \u7528\u6237\u8BF4\u660E\u4E66\u4E0E\u5176\u4ED6\u8D44\u6599\u9644\u4EF6\u7EF4\u62A4"]
14601
+ unavailable: ["\u91C7\u8D2D\u67E5\u8BE2", "\u7269\u6D41\u67E5\u8BE2", "\u8BA2\u5355\u67E5\u8BE2", "\u4F9B\u5E94\u5546\u3001\u5C01\u6837\u4E0E Pack \u8D44\u6599\u9644\u4EF6\u7EF4\u62A4"]
14600
14602
  },
14601
14603
  permissionSemantics: {
14602
14604
  enforced: "\u8C03\u7528\u8EAB\u4EFD\u5FC5\u987B\u901A\u8FC7\u8BA4\u8BC1\u4E14 resource \u5339\u914D MCP\uFF1B\u6BCF\u4E2A\u5DE5\u5177\u5206\u522B\u6821\u9A8C erp:read \u6216 erp:write\u3002",
@@ -14604,7 +14606,7 @@ var overviewContent = {
14604
14606
  failures: "\u8BA4\u8BC1\u3001scope \u6216 resource \u5931\u8D25\u5728 HTTP \u5C42\u62D2\u7EDD\uFF1B\u7CBE\u786E\u67E5\u8BE2\u65E0\u7ED3\u679C\u53EA\u8FD4\u56DE\u901A\u7528 NOT_FOUND\u3002"
14605
14607
  },
14606
14608
  routing: [
14607
- "\u5DF2\u77E5\u5B8C\u6574 PR\u3001PS\u3001PK \u4E1A\u52A1\u7F16\u7801\u65F6\u4F7F\u7528\u7CBE\u786E\u4E3B\u6570\u636E\u67E5\u8BE2\u3002",
14609
+ "\u5DF2\u77E5\u5B8C\u6574 PR\u3001PS\u3001PK \u4E1A\u52A1\u7F16\u7801\u65F6\u4F7F\u7528\u4EA7\u54C1\u4E3B\u6570\u636E\u7CBE\u786E\u67E5\u8BE2\uFF1B\u5DF2\u77E5\u5B8C\u6574 ManualCode \u65F6\u8BFB\u53D6 UserManual\u3002",
14608
14610
  "\u53EA\u6709\u540D\u79F0\u6216 Supplier \u65F6\u4F7F\u7528\u4EA7\u54C1\u4E3B\u6570\u636E\u641C\u7D22\uFF1B\u5F53\u524D\u641C\u7D22\u4E0D\u652F\u6301\u90E8\u5206 PR\u3001PS\u3001PK \u7F16\u7801\u3002",
14609
14611
  "\u8D44\u6599\u5B8C\u6574\u5EA6\u4EE5\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u8BE6\u60C5\u4E2D\u7684\u5B9E\u65F6\u8BA1\u7B97\u7ED3\u679C\u4E3A\u51C6\uFF0C\u4E0D\u6309\u5B57\u6BB5\u6570\u91CF\u81EA\u884C\u63A8\u7B97\u3002",
14610
14612
  "\u53EA\u9009\u62E9 MCP tools/list \u6216 CLI list \u5B9E\u9645\u5217\u51FA\u7684\u80FD\u529B\u3002",
@@ -14618,13 +14620,13 @@ var productMasterDataContent = {
14618
14620
  entityType: "PRODUCT",
14619
14621
  name: "Product",
14620
14622
  businessIdentity: "ProductCode\uFF08PR \u4E1A\u52A1\u7F16\u7801\uFF09",
14621
- definition: "\u9762\u5411\u7528\u6237\u7684\u4EA7\u54C1\u65CF\uFF0C\u4FDD\u5B58\u4EA7\u54C1\u540D\u79F0\u3002"
14623
+ definition: "\u9762\u5411\u7528\u6237\u7684\u9500\u552E SKU \u53D8\u4F53\uFF0C\u4FDD\u5B58\u540D\u79F0\u3001\u54C1\u724C\u3001\u989C\u8272\u3001\u76EE\u6807\u5E02\u573A\u548C\u987E\u5BA2\u53EF\u89C1\u5C3A\u5BF8\u3002"
14622
14624
  },
14623
14625
  {
14624
14626
  entityType: "PRODUCT_SPEC",
14625
14627
  name: "ProductSpec",
14626
14628
  businessIdentity: "ProductSpecCode\uFF08PS \u4E1A\u52A1\u7F16\u7801\uFF09",
14627
- definition: "Product \u7684\u5177\u4F53\u53EF\u552E\u4E0E\u5185\u90E8\u5B9E\u73B0\u89C4\u683C\u3002"
14629
+ definition: "\u987E\u5BA2\u4E0D\u611F\u77E5\u7684\u5185\u90E8\u5B9E\u73B0\u65B9\u6848\uFF1B\u540C\u4E00 Product \u4E0B\u53EA\u5141\u8BB8\u7EC6\u5FAE\u7ED3\u6784\u6216\u4F9B\u5E94\u5B9E\u73B0\u5DEE\u5F02\u3002"
14628
14630
  },
14629
14631
  {
14630
14632
  entityType: "PACK",
@@ -14635,7 +14637,7 @@ var productMasterDataContent = {
14635
14637
  {
14636
14638
  entityType: "USER_MANUAL",
14637
14639
  name: "UserManual",
14638
- businessIdentity: "ManualCode\uFF08UM \u4E1A\u52A1\u7F16\u7801\uFF09",
14640
+ businessIdentity: "ManualCode\uFF08MANUAL \u4E1A\u52A1\u7F16\u7801\uFF09",
14639
14641
  definition: "\u53EF\u88AB\u591A\u4E2A ProductSpec \u590D\u7528\u7684\u5BA2\u6237\u7EC4\u88C5\u3001\u4F7F\u7528\u6216\u5B89\u5168\u8BF4\u660E\u8D44\u6599\u3002"
14640
14642
  },
14641
14643
  {
@@ -14673,6 +14675,7 @@ var productMasterDataContent = {
14673
14675
  ],
14674
14676
  rules: [
14675
14677
  "Product\u3001ProductSpec\u3001Pack \u548C UserManual \u521B\u5EFA\u540E\u7ACB\u5373\u53EF\u7528\uFF0C\u4E0D\u8BBE\u751F\u547D\u5468\u671F\u72B6\u6001\u3002",
14678
+ "\u54C1\u724C\u3001\u989C\u8272\u6216\u987E\u5BA2\u53EF\u89C1\u5C3A\u5BF8\u53D8\u5316\u5C5E\u4E8E\u65B0\u7684 Product\uFF1BProductSpec \u4E0D\u62E5\u6709\u8FD9\u4E9B\u9500\u552E\u8EAB\u4EFD\u5B57\u6BB5\u3002",
14676
14679
  "\u8D44\u6599\u5B8C\u6574\u5EA6\u53EA\u63D0\u793A\u5F85\u8865\u8D44\u6599\uFF0C\u4E0D\u963B\u65AD\u4EA7\u54C1\u4E3B\u6570\u636E\u67E5\u8BE2\u6216\u4F7F\u7528\u3002",
14677
14680
  "\u4E1A\u52A1\u7F16\u7801\u53EA\u6807\u8BC6\u5BF9\u8C61\u7C7B\u578B\u548C\u8EAB\u4EFD\uFF0C\u4E0D\u627F\u8F7D\u54C1\u7C7B\u3001\u4F9B\u5E94\u5546\u3001\u6E20\u9053\u6216\u7248\u672C\u542B\u4E49\u3002"
14678
14681
  ]
@@ -14703,9 +14706,10 @@ var businessCodeSystemContent = {
14703
14706
  {
14704
14707
  entity: "UserManual",
14705
14708
  field: "ManualCode",
14706
- prefix: "UM",
14707
- pattern: "^UM\\d{5,}$",
14708
- example: "UM00001"
14709
+ prefix: "MANUAL",
14710
+ pattern: "^MANUAL\\d{3,}$",
14711
+ example: "MANUAL001",
14712
+ acceptedLegacyPattern: "^UM\\d{5,}$"
14709
14713
  }
14710
14714
  ],
14711
14715
  rules: [
@@ -14732,7 +14736,7 @@ var developmentWorkListContent = {
14732
14736
  "\u5DE5\u4F5C\u6E05\u5355\u4E0D\u62E5\u6709\u4EA7\u54C1\u4E3B\u6570\u636E\uFF0C\u4E0D\u6539\u53D8 Product\u3001ProductSpec \u6216 Pack \u7684\u53EF\u7528\u6027\u3002",
14733
14737
  "\u5DE5\u4F5C\u6E05\u5355\u6CA1\u6709\u63D0\u4EA4\u3001\u64A4\u56DE\u3001\u8BC4\u5BA1\u3001\u8FDB\u5EA6\u6216\u9501\u5B9A\u72B6\u6001\u3002",
14734
14738
  "\u5DE5\u4F5C\u6E05\u5355\u8BE6\u60C5\u8FD4\u56DE\u6210\u5458\u5BF9\u5E94\u4E3B\u6570\u636E\u7684\u5B9E\u65F6\u6295\u5F71\uFF0C\u800C\u4E0D\u662F\u5386\u53F2\u5FEB\u7167\u3002",
14735
- "\u5B9E\u65F6\u5B8C\u6574\u5EA6\u53EA\u8BA1\u7B97\u5DE5\u4F5C\u6E05\u5355\u4E2D\u663E\u5F0F\u5305\u542B\u7684 ProductSpec\u3002"
14739
+ "\u5B9E\u65F6\u5B8C\u6574\u5EA6\u53EA\u8BA1\u7B97\u5DE5\u4F5C\u6E05\u5355\u4E2D\u663E\u5F0F\u5305\u542B\u7684 Product \u4E0E ProductSpec\u3002"
14736
14740
  ]
14737
14741
  };
14738
14742
  var filesContent = {
@@ -14747,22 +14751,32 @@ var filesContent = {
14747
14751
  }
14748
14752
  ],
14749
14753
  productImages: {
14750
- owner: "ProductSpec",
14751
- relationship: "\u4E00\u4E2A ProductSpec \u53EF\u5173\u8054\u591A\u5F20\u4EA7\u54C1\u56FE\u7247\uFF1B\u540C\u4E00 FileVersion \u4E0D\u91CD\u590D\u5173\u8054\u3002",
14754
+ owner: "Product",
14755
+ relationship: "\u4E00\u4E2A Product \u53EF\u5173\u8054\u591A\u5F20\u4EA7\u54C1\u56FE\u7247\uFF1B\u540C\u4E00 FileVersion \u4E0D\u91CD\u590D\u5173\u8054\u3002",
14752
14756
  acceptedTypes: ["JPG", "JPEG", "PNG", "WEBP"],
14753
14757
  maxSizeBytes: 50 * 1024 * 1024,
14754
- effect: "\u65B0\u589E\u56FE\u7247\u4F1A\u5F71\u54CD\u5305\u542B\u8BE5 ProductSpec \u7684\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u5B9E\u65F6\u5B8C\u6574\u5EA6\u3002"
14758
+ effect: "\u65B0\u589E\u56FE\u7247\u4F1A\u5F71\u54CD\u663E\u5F0F\u5305\u542B\u8BE5 Product \u7684\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u5B9E\u65F6\u5B8C\u6574\u5EA6\u3002"
14755
14759
  },
14756
- agentCapability: "\u5F53\u524D Agent \u53EA\u5F00\u653E\u65B0\u589E ProductSpec \u4EA7\u54C1\u56FE\u7247\uFF1B\u7528\u6237\u8BF4\u660E\u4E66\u3001\u4F9B\u5E94\u5546\u8D44\u6599\u3001\u5C01\u6837\u8D44\u6599\u548C Pack \u6587\u4EF6\u7B49\u5F85\u5404\u81EA\u9886\u57DF\u5DE5\u5177\u5F00\u653E\u540E\u4F7F\u7528\u3002"
14760
+ userManuals: {
14761
+ owner: "UserManual",
14762
+ relationship: "\u4E00\u4E2A UserManual \u7EF4\u62A4\u4E00\u4E2A\u5F53\u524D PDF FileVersion\uFF0C\u5E76\u53EF\u88AB\u591A\u4E2A ProductSpec \u590D\u7528\u3002",
14763
+ acceptedTypes: ["PDF"],
14764
+ maxSizeBytes: 50 * 1024 * 1024,
14765
+ effect: "\u66F4\u65B0\u5F53\u524D PDF \u4F1A\u5F71\u54CD\u5173\u8054\u8BE5 UserManual \u7684 ProductSpec \u5B9E\u65F6\u5B8C\u6574\u5EA6\u3002"
14766
+ },
14767
+ agentCapability: "\u5F53\u524D MCP \u4E0E CLI \u5F00\u653E Product \u4EA7\u54C1\u56FE\u7247\u53CA UserManual \u5F53\u524D PDF \u4E0A\u4F20\uFF1BCLI \u53E6\u5F00\u653E ProductSpec\u2014UserManual \u9002\u7528\u5173\u7CFB\u8BFB\u53D6\u4E0E\u7EF4\u62A4\u3002"
14757
14768
  };
14758
14769
  var completenessRulesContent = {
14759
14770
  projectionType: "REALTIME_NON_BLOCKING",
14760
14771
  rulesVersion: erpCompletenessRulesVersion,
14761
14772
  completeMeaning: "complete=true \u4EC5\u8868\u793A\u5F53\u524D\u6CA1\u6709\u8D44\u6599\u5F85\u8865\u63D0\u793A\uFF0C\u4E0D\u8868\u793A\u5DF2\u6279\u51C6\u6216\u9501\u5B9A\u3002",
14762
- evaluatedEntity: "\u5DE5\u4F5C\u6E05\u5355\u4E2D\u663E\u5F0F\u5305\u542B\u7684 ProductSpec",
14773
+ evaluatedEntity: "\u5DE5\u4F5C\u6E05\u5355\u4E2D\u663E\u5F0F\u5305\u542B\u7684 Product \u4E0E ProductSpec",
14763
14774
  checks: [
14764
14775
  { code: "MISSING_PACK_MAPPING", condition: "\u672A\u5173\u8054\u4EFB\u4F55 Pack" },
14765
- { code: "MINIMUM_PRODUCT_IMAGES_NOT_MET", condition: "\u6709\u6548\u4EA7\u54C1\u56FE\u7247\u5C11\u4E8E 3 \u5F20" },
14776
+ {
14777
+ code: "MINIMUM_PRODUCT_IMAGES_NOT_MET",
14778
+ condition: "\u663E\u5F0F\u5305\u542B\u7684 Product \u6709\u6548\u4EA7\u54C1\u56FE\u7247\u5C11\u4E8E 3 \u5F20"
14779
+ },
14766
14780
  { code: "MISSING_PRODUCT_SPEC_USER_MANUAL", condition: "\u672A\u5173\u8054\u4EFB\u4F55 UserManual" },
14767
14781
  {
14768
14782
  code: "USER_MANUAL_FILE_MISSING",
@@ -14825,12 +14839,22 @@ var changelogContent = {
14825
14839
  entries: [
14826
14840
  {
14827
14841
  version: erpDomainModelVersion,
14842
+ releasedAt: "2026-09-03",
14843
+ compatibility: "ADDITIVE",
14844
+ changes: [
14845
+ "MCP \u4E0E CLI \u589E\u52A0 UserManual \u7CBE\u786E\u8BFB\u53D6\u4E0E\u5F53\u524D PDF \u4E0A\u4F20\u80FD\u529B\u3002",
14846
+ "CLI \u589E\u52A0 ProductSpec\u2014UserManual \u9002\u7528\u5173\u7CFB\u8BFB\u53D6\u3001\u5173\u8054\u4E0E\u89E3\u7ED1\u80FD\u529B\u3002",
14847
+ "UserManual \u65B0\u7F16\u7801\u6539\u4E3A MANUAL \u52A0\u81F3\u5C11\u4E09\u4F4D\u6570\u5B57\uFF1B\u65E2\u6709 UM \u7F16\u7801\u7EE7\u7EED\u6709\u6548\u3002"
14848
+ ]
14849
+ },
14850
+ {
14851
+ version: "2026-09-02",
14828
14852
  releasedAt: "2026-09-02",
14829
14853
  compatibility: "ADDITIVE",
14830
14854
  changes: [
14831
14855
  "CLI \u4E0E MCP \u5F00\u653E\u9996\u6279\u4EA7\u54C1\u4E3B\u6570\u636E\u548C\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u5199\u64CD\u4F5C\u3002",
14832
14856
  "\u589E\u52A0 erp:write\u3001\u4E50\u89C2\u5E76\u53D1\u3001\u5E42\u7B49\u952E\u548C\u7834\u574F\u6027\u64CD\u4F5C\u8BED\u4E49\u3002",
14833
- "MCP \u4E0E CLI \u589E\u52A0 ProductSpec \u4EA7\u54C1\u56FE\u7247\u4E0A\u4F20\u80FD\u529B\u548C\u6587\u4EF6\u9886\u57DF\u4E3B\u9898\u3002"
14857
+ "MCP \u4E0E CLI \u589E\u52A0 Product \u4EA7\u54C1\u56FE\u7247\u4E0A\u4F20\u80FD\u529B\u548C\u6587\u4EF6\u9886\u57DF\u4E3B\u9898\u3002"
14834
14858
  ]
14835
14859
  },
14836
14860
  {
@@ -14894,6 +14918,7 @@ var codeSchema = (prefix, description) => external_exports.string().trim().toUpp
14894
14918
  var productCodeSchema = codeSchema("PR", "\u5B8C\u6574 ProductCode\uFF08PR \u4E1A\u52A1\u7F16\u7801\uFF09\uFF1APR \u5F00\u5934\uFF0C\u7528\u4E8E\u6807\u8BC6 Product\uFF1B\u4E0D\u662F\u6570\u636E\u5E93\u5185\u90E8 ID \u6216\u6E20\u9053 SKU\u3002");
14895
14919
  var productSpecCodeSchema = codeSchema("PS", "\u5B8C\u6574 ProductSpecCode\uFF08PS \u4E1A\u52A1\u7F16\u7801\uFF09\uFF1APS \u5F00\u5934\uFF0C\u7528\u4E8E\u6807\u8BC6 ProductSpec\uFF1B\u4E0D\u662F\u6570\u636E\u5E93\u5185\u90E8 ID \u6216\u6E20\u9053 SKU\u3002");
14896
14920
  var packCodeSchema = codeSchema("PK", "\u5B8C\u6574 PackCode\uFF08PK \u4E1A\u52A1\u7F16\u7801\uFF09\uFF1APK \u5F00\u5934\uFF0C\u7528\u4E8E\u6807\u8BC6 Pack\uFF1B\u4E0D\u662F\u6570\u636E\u5E93\u5185\u90E8 ID \u6216\u6E20\u9053 SKU\u3002");
14921
+ var manualCodeSchema = external_exports.string().trim().toUpperCase().regex(/^(?:MANUAL\d{3,}|UM\d{5,})$/).max(32).describe("\u5B8C\u6574 ManualCode\uFF1A\u65B0\u7F16\u7801\u4EE5 MANUAL \u5F00\u5934\u5E76\u5E26\u81F3\u5C11 3 \u4F4D\u6570\u5B57\uFF1B\u65E2\u6709 UM \u7F16\u7801\u7EE7\u7EED\u6709\u6548\u3002\u7528\u4E8E\u6807\u8BC6 UserManual\u3002");
14897
14922
  var internalIdSchema = external_exports.number().int().describe("\u6570\u636E\u5E93\u5185\u90E8\u6807\u8BC6\uFF0C\u4EC5\u7528\u4E8E\u5173\u8054\u5F53\u524D\u8FD4\u56DE\u7ED3\u6784\uFF1B\u4E0D\u662F PR\u3001PS\u3001PK \u7B49\u4E1A\u52A1\u7F16\u7801\u3002");
14898
14923
  var timestampSchema = external_exports.iso.datetime().describe("ISO 8601 UTC \u65F6\u95F4\u6233\u3002");
14899
14924
  var nullableCentimeterSchema = external_exports.number().finite().nullable().describe("\u5C3A\u5BF8\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u7CFB\u7EDF\u6CA1\u6709\u5DF2\u8BB0\u5F55\u503C\uFF0C\u5F53\u524D\u4E0D\u7EC6\u5206\u5177\u4F53\u7A7A\u503C\u539F\u56E0\u3002");
@@ -14902,6 +14927,14 @@ var productSummarySchema = external_exports.object({
14902
14927
  id: internalIdSchema,
14903
14928
  productCode: productCodeSchema,
14904
14929
  name: external_exports.string(),
14930
+ brand: external_exports.string().nullable(),
14931
+ color: external_exports.string().nullable(),
14932
+ salesMarketCodes: external_exports.array(external_exports.string()),
14933
+ lengthCm: nullableCentimeterSchema,
14934
+ widthCm: nullableCentimeterSchema,
14935
+ fixedHeightCm: nullableCentimeterSchema,
14936
+ minHeightCm: nullableCentimeterSchema,
14937
+ maxHeightCm: nullableCentimeterSchema,
14905
14938
  version: external_exports.number().int(),
14906
14939
  createdAt: timestampSchema,
14907
14940
  updatedAt: timestampSchema
@@ -14922,19 +14955,13 @@ var productSpecSummarySchema = external_exports.object({
14922
14955
  productSpecCode: productSpecCodeSchema,
14923
14956
  productId: internalIdSchema,
14924
14957
  specName: external_exports.string(),
14925
- brand: external_exports.string().nullable(),
14926
- color: external_exports.string().nullable(),
14927
- salesMarketCodes: external_exports.array(external_exports.string()),
14928
- lengthCm: nullableCentimeterSchema,
14929
- widthCm: nullableCentimeterSchema,
14930
- fixedHeightCm: nullableCentimeterSchema,
14931
- minHeightCm: nullableCentimeterSchema,
14932
- maxHeightCm: nullableCentimeterSchema,
14933
14958
  netWeightKg: nullableKilogramSchema,
14934
14959
  categorySpec: external_exports.unknown().nullable(),
14935
14960
  categorySpecSchema: external_exports.string().nullable(),
14936
14961
  version: external_exports.number().int(),
14937
14962
  createdAt: timestampSchema,
14963
+ accessUrl: external_exports.string().url().optional(),
14964
+ accessExpiresAt: timestampSchema.optional(),
14938
14965
  updatedAt: timestampSchema,
14939
14966
  sealedSampleConclusion: sealedSampleConclusionSchema,
14940
14967
  packMappings: external_exports.array(external_exports.object({
@@ -14967,9 +14994,28 @@ var packSummarySchema = external_exports.object({
14967
14994
  createdAt: timestampSchema,
14968
14995
  updatedAt: timestampSchema
14969
14996
  }).strict();
14997
+ var productImageSchema = external_exports.object({
14998
+ id: external_exports.number().int(),
14999
+ fileVersionId: external_exports.number().int(),
15000
+ fileName: external_exports.string(),
15001
+ mediaType: external_exports.string(),
15002
+ sizeBytes: external_exports.number().int().nullable(),
15003
+ version: external_exports.number().int(),
15004
+ createdAt: timestampSchema,
15005
+ accessUrl: external_exports.string().url().optional(),
15006
+ accessExpiresAt: timestampSchema.optional()
15007
+ }).strict();
15008
+ var productImagesResponseSchema = external_exports.object({
15009
+ productCode: productCodeSchema,
15010
+ productVersion: external_exports.number().int(),
15011
+ images: external_exports.array(productImageSchema)
15012
+ }).strict();
15013
+ var productSearchSummarySchema = productSummarySchema.extend({
15014
+ listImage: productImageSchema.nullable().describe("\u4EA7\u54C1\u5217\u8868\u5C55\u793A\u7684\u9996\u5F20\u5173\u8054\u56FE\u7247\uFF1Bnull \u8868\u793A\u5F53\u524D\u6CA1\u6709\u4EA7\u54C1\u56FE\u7247\u3002")
15015
+ }).strict();
14970
15016
  var searchProductsResponseSchema = external_exports.object({
14971
15017
  query: external_exports.string(),
14972
- products: external_exports.array(productSummarySchema),
15018
+ products: external_exports.array(productSearchSummarySchema),
14973
15019
  productSpecs: external_exports.array(productSpecSummarySchema),
14974
15020
  packs: external_exports.array(packSummarySchema),
14975
15021
  supplierGroups: external_exports.array(external_exports.object({
@@ -15080,18 +15126,20 @@ var getPackOperation = defineReadOperation({
15080
15126
  });
15081
15127
  var initialProductSpecInputSchema = external_exports.object({
15082
15128
  specName: external_exports.string().trim().min(1).max(255).optional().describe("\u9996\u4E2A ProductSpec \u7684\u663E\u793A\u540D\u79F0\uFF1B\u7701\u7565\u65F6\u4F7F\u7528 Product \u540D\u79F0\u3002"),
15083
- brand: external_exports.enum(["intoNear", "intoNir"]).optional().describe("\u53D7\u63A7\u54C1\u724C\u679A\u4E3E\u3002"),
15084
- color: external_exports.string().trim().min(1).max(120).optional().describe("\u989C\u8272\u63CF\u8FF0\u3002"),
15085
- salesMarketCodes: external_exports.array(external_exports.enum(["\u7F8E\u56FD", "\u5370\u5EA6", "\u6B27\u76DF", "\u82F1\u56FD"])).min(1).max(4).optional().describe("\u9500\u552E\u5E02\u573A\u4E2D\u6587\u679A\u4E3E\u96C6\u5408\u3002"),
15086
- lengthCm: external_exports.number().finite().positive().nullable().optional().describe("\u957F\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15087
- widthCm: external_exports.number().finite().positive().nullable().optional().describe("\u5BBD\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15088
- fixedHeightCm: external_exports.number().finite().positive().nullable().optional().describe("\u56FA\u5B9A\u9AD8\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15089
- minHeightCm: external_exports.number().finite().positive().nullable().optional().describe("\u6700\u5C0F\u9AD8\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15090
- maxHeightCm: external_exports.number().finite().positive().nullable().optional().describe("\u6700\u5927\u9AD8\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15091
- netWeightKg: external_exports.number().finite().positive().nullable().optional().describe("\u51C0\u91CD\uFF0C\u5355\u4F4D kg\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002")
15129
+ netWeightKg: external_exports.number().finite().positive().nullable().optional().describe("\u51C0\u91CD\uFF0C\u5355\u4F4D kg\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15130
+ categorySpec: external_exports.unknown().nullable().optional().describe("\u987E\u5BA2\u4E0D\u611F\u77E5\u7684\u5185\u90E8\u54C1\u7C7B\u89C4\u683C\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15131
+ categorySpecSchema: external_exports.string().trim().min(1).max(120).nullable().optional().describe("categorySpec \u4F7F\u7528\u7684\u7ED3\u6784\u7248\u672C\u6807\u8BC6\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002")
15092
15132
  }).strict();
15093
15133
  var createProductInputSchema = external_exports.object({
15094
15134
  name: external_exports.string().trim().min(1).max(255).describe("Product \u9762\u5411\u7528\u6237\u663E\u793A\u7684\u540D\u79F0\u3002"),
15135
+ brand: external_exports.enum(["intoNear", "intoNir"]).optional().describe("\u53D7\u63A7\u54C1\u724C\u679A\u4E3E\u3002"),
15136
+ color: external_exports.string().trim().min(1).max(120).optional().describe("\u989C\u8272\u63CF\u8FF0\u3002"),
15137
+ salesMarketCodes: external_exports.array(external_exports.enum(["\u7F8E\u56FD", "\u5370\u5EA6", "\u6B27\u76DF", "\u82F1\u56FD"])).min(1).max(4).optional().describe("Product \u7684\u76EE\u6807\u9500\u552E\u5E02\u573A\u4E2D\u6587\u679A\u4E3E\u96C6\u5408\u3002"),
15138
+ lengthCm: external_exports.number().finite().positive().nullable().optional(),
15139
+ widthCm: external_exports.number().finite().positive().nullable().optional(),
15140
+ fixedHeightCm: external_exports.number().finite().positive().nullable().optional(),
15141
+ minHeightCm: external_exports.number().finite().positive().nullable().optional(),
15142
+ maxHeightCm: external_exports.number().finite().positive().nullable().optional(),
15095
15143
  initialSpec: initialProductSpecInputSchema.optional().describe("\u53EF\u9009\u7684\u9996\u4E2A ProductSpec \u5B57\u6BB5\uFF1B\u7CFB\u7EDF\u59CB\u7EC8\u4F1A\u540C\u65F6\u521B\u5EFA\u9996\u4E2A ProductSpec\u3002")
15096
15144
  }).strict();
15097
15145
  var createProductResponseSchema = external_exports.object({ product: productSummarySchema, productSpec: productSpecRecordSchema }).strict();
@@ -15100,7 +15148,7 @@ var createProductOperation = defineWriteOperation({
15100
15148
  method: "POST",
15101
15149
  path: "/api/v1/products",
15102
15150
  summary: "\u521B\u5EFA Product \u53CA\u9996\u4E2A ProductSpec",
15103
- description: "\u521B\u5EFA\u4E00\u4E2A Product\uFF0C\u5E76\u7531\u7CFB\u7EDF\u751F\u6210\u4E0D\u53EF\u53D8 PR \u4E1A\u52A1\u7F16\u7801\uFF1B\u540C\u4E00\u4E8B\u52A1\u5185\u59CB\u7EC8\u521B\u5EFA\u9996\u4E2A ProductSpec \u5E76\u751F\u6210 PS \u4E1A\u52A1\u7F16\u7801\u3002\u9002\u7528\u4E8E\u65B0\u5EFA\u4EA7\u54C1\u65CF\uFF0C\u4E0D\u9002\u7528\u4E8E\u7ED9\u73B0\u6709 Product \u589E\u52A0\u89C4\u683C\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002",
15151
+ description: "\u521B\u5EFA\u4E00\u4E2A\u9762\u5411\u7528\u6237\u7684\u9500\u552E SKU \u53D8\u4F53 Product\uFF0C\u5E76\u7531\u7CFB\u7EDF\u751F\u6210\u4E0D\u53EF\u53D8 PR \u4E1A\u52A1\u7F16\u7801\uFF1B\u540C\u4E00\u4E8B\u52A1\u5185\u521B\u5EFA\u9996\u4E2A\u5185\u90E8\u5B9E\u73B0 ProductSpec \u5E76\u751F\u6210 PS \u4E1A\u52A1\u7F16\u7801\u3002\u989C\u8272\u3001\u5C3A\u5BF8\u7B49\u7528\u6237\u53EF\u611F\u77E5\u5DEE\u5F02\u5E94\u521B\u5EFA\u65B0\u7684 Product\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002",
15104
15152
  scope: "erp:write",
15105
15153
  agent: { exposed: true, readOnly: false, destructive: false, idempotent: false },
15106
15154
  request: { body: createProductInputSchema },
@@ -15108,16 +15156,18 @@ var createProductOperation = defineWriteOperation({
15108
15156
  cli: { path: ["products", "create"] }
15109
15157
  });
15110
15158
  var atLeastOneField = (value) => Object.values(value).some((item) => item !== void 0);
15111
- var updateProductInputSchema = external_exports.object({ name: external_exports.string().trim().min(1).max(255).optional() }).strict().refine(atLeastOneField, "\u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u53EF\u7F16\u8F91\u7684 Product \u5B57\u6BB5\u3002");
15159
+ var updateProductInputSchema = external_exports.object({
15160
+ name: external_exports.string().trim().min(1).max(255).optional(),
15161
+ brand: external_exports.enum(["intoNear", "intoNir"]).optional(),
15162
+ color: external_exports.string().trim().min(1).max(120).optional(),
15163
+ salesMarketCodes: external_exports.array(external_exports.enum(["\u7F8E\u56FD", "\u5370\u5EA6", "\u6B27\u76DF", "\u82F1\u56FD"])).min(1).max(4).optional(),
15164
+ lengthCm: external_exports.number().finite().positive().nullable().optional(),
15165
+ widthCm: external_exports.number().finite().positive().nullable().optional(),
15166
+ fixedHeightCm: external_exports.number().finite().positive().nullable().optional(),
15167
+ minHeightCm: external_exports.number().finite().positive().nullable().optional(),
15168
+ maxHeightCm: external_exports.number().finite().positive().nullable().optional()
15169
+ }).strict().refine(atLeastOneField, "\u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u53EF\u7F16\u8F91\u7684 Product \u5B57\u6BB5\u3002");
15112
15170
  var updateProductSpecInputSchema = external_exports.object({
15113
- brand: external_exports.enum(["intoNear", "intoNir"]).optional().describe("\u53D7\u63A7\u54C1\u724C\u679A\u4E3E\u3002"),
15114
- color: external_exports.string().trim().min(1).max(120).optional().describe("\u989C\u8272\u63CF\u8FF0\u3002"),
15115
- salesMarketCodes: external_exports.array(external_exports.enum(["\u7F8E\u56FD", "\u5370\u5EA6", "\u6B27\u76DF", "\u82F1\u56FD"])).min(1).max(4).optional().describe("\u9500\u552E\u5E02\u573A\u4E2D\u6587\u679A\u4E3E\u96C6\u5408\u3002"),
15116
- lengthCm: external_exports.number().finite().positive().nullable().optional().describe("\u957F\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15117
- widthCm: external_exports.number().finite().positive().nullable().optional().describe("\u5BBD\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15118
- fixedHeightCm: external_exports.number().finite().positive().nullable().optional().describe("\u56FA\u5B9A\u9AD8\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15119
- minHeightCm: external_exports.number().finite().positive().nullable().optional().describe("\u6700\u5C0F\u9AD8\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15120
- maxHeightCm: external_exports.number().finite().positive().nullable().optional().describe("\u6700\u5927\u9AD8\u5EA6\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15121
15171
  netWeightKg: external_exports.number().finite().positive().nullable().optional().describe("\u51C0\u91CD\uFF0C\u5355\u4F4D kg\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15122
15172
  categorySpec: external_exports.unknown().nullable().optional().describe("\u7531 categorySpecSchema \u6807\u8BC6\u7ED3\u6784\u7684\u54C1\u7C7B\u89C4\u683C\u5BF9\u8C61\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15123
15173
  categorySpecSchema: external_exports.string().trim().min(1).max(120).nullable().optional().describe("categorySpec \u4F7F\u7528\u7684\u7ED3\u6784\u7248\u672C\u6807\u8BC6\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002")
@@ -15162,19 +15212,58 @@ var deleteMappingResponseSchema = external_exports.object({
15162
15212
  productSpecCode: productSpecCodeSchema,
15163
15213
  packCode: packCodeSchema
15164
15214
  }).strict();
15165
- var productSpecImageSchema = external_exports.object({
15166
- fileVersionId: internalIdSchema,
15167
- fileName: external_exports.string().describe("\u9762\u5411\u7528\u6237\u663E\u793A\u7684\u539F\u59CB\u6587\u4EF6\u540D\u3002"),
15168
- mediaType: external_exports.enum(["image/jpeg", "image/png", "image/webp"]).describe("\u670D\u52A1\u7AEF\u6821\u9A8C\u540E\u7684\u56FE\u7247\u5A92\u4F53\u7C7B\u578B\u3002"),
15169
- sizeBytes: external_exports.number().int().nonnegative().nullable().describe("\u6587\u4EF6\u5927\u5C0F\uFF0C\u5355\u4F4D byte\uFF1Bnull \u8868\u793A\u5386\u53F2\u6587\u4EF6\u672A\u8BB0\u5F55\u5927\u5C0F\u3002"),
15170
- version: external_exports.number().int().positive().describe("\u4E0D\u53EF\u53D8 FileVersion \u7684\u7248\u672C\u53F7\u3002"),
15215
+ var addProductImageResponseSchema = external_exports.object({
15216
+ productCode: productCodeSchema,
15217
+ productVersion: external_exports.number().int().positive(),
15218
+ image: productImageSchema,
15219
+ images: external_exports.array(productImageSchema).describe("\u5B8C\u6210\u672C\u6B21\u64CD\u4F5C\u540E\uFF0C\u8BE5 Product \u5F53\u524D\u5173\u8054\u7684\u5168\u90E8\u4EA7\u54C1\u56FE\u7247\u3002")
15220
+ }).strict();
15221
+ var userManualFileSchema = external_exports.object({
15222
+ id: external_exports.number().int().positive(),
15223
+ fileAssetId: external_exports.number().int().positive(),
15224
+ fileName: external_exports.string(),
15225
+ mediaType: external_exports.literal("application/pdf"),
15226
+ sizeBytes: external_exports.number().int().nullable(),
15227
+ version: external_exports.number().int().positive(),
15171
15228
  createdAt: timestampSchema
15172
15229
  }).strict();
15173
- var addProductSpecImageResponseSchema = external_exports.object({
15230
+ var userManualSchema = external_exports.object({
15231
+ manualCode: manualCodeSchema,
15232
+ name: external_exports.string(),
15233
+ version: external_exports.number().int().positive(),
15234
+ currentFile: userManualFileSchema.nullable()
15235
+ }).strict();
15236
+ var productSpecUserManualsResponseSchema = external_exports.object({
15174
15237
  productSpecCode: productSpecCodeSchema,
15175
- image: productSpecImageSchema,
15176
- images: external_exports.array(productSpecImageSchema).describe("\u5B8C\u6210\u672C\u6B21\u64CD\u4F5C\u540E\uFF0C\u8BE5 ProductSpec \u5F53\u524D\u5173\u8054\u7684\u5168\u90E8\u4EA7\u54C1\u56FE\u7247\u3002")
15238
+ productSpecVersion: external_exports.number().int().positive(),
15239
+ manuals: external_exports.array(userManualSchema)
15177
15240
  }).strict();
15241
+ var getUserManualOperation = defineReadOperation({
15242
+ operationId: "getUserManual",
15243
+ method: "GET",
15244
+ path: "/api/v1/user-manuals/{manualCode}",
15245
+ summary: "\u6309 ManualCode \u8BFB\u53D6 UserManual",
15246
+ description: "\u6839\u636E\u5B8C\u6574 ManualCode \u8BFB\u53D6 UserManual \u540D\u79F0\u3001\u6700\u65B0 version \u4E0E\u5F53\u524D PDF \u5143\u6570\u636E\u3002\u4E0A\u4F20\u524D\u5FC5\u987B\u5148\u8BFB\u53D6\u6700\u65B0 version\uFF1B\u4E0D\u53EF\u7528\u4E8E\u540D\u79F0\u6216\u4E0D\u5B8C\u6574\u7F16\u7801\u641C\u7D22\u3002\u65E2\u6709 UM \u7F16\u7801\u7EE7\u7EED\u53EF\u8BFB\u3002\u53EA\u8BFB\u5E76\u8981\u6C42 erp:read\uFF1B\u4E0D\u5B58\u5728\u65F6\u8FD4\u56DE NOT_FOUND\u3002",
15247
+ scope: "erp:read",
15248
+ agentReadOnly: true,
15249
+ agent: { exposed: true, readOnly: true, destructive: false, idempotent: true },
15250
+ request: { path: external_exports.object({ manualCode: manualCodeSchema }).strict() },
15251
+ response: { data: userManualSchema },
15252
+ cli: { path: ["user-manuals", "get"] }
15253
+ });
15254
+ var listProductSpecUserManualsOperation = defineReadOperation({
15255
+ operationId: "listProductSpecUserManuals",
15256
+ method: "GET",
15257
+ path: "/api/v1/product-specs/{productSpecCode}/user-manuals",
15258
+ summary: "\u8BFB\u53D6 ProductSpec \u7684\u9002\u7528\u8BF4\u660E\u4E66",
15259
+ description: "\u6839\u636E\u5B8C\u6574 ProductSpecCode \u8BFB\u53D6\u5F53\u524D\u9002\u7528\u7684\u5168\u90E8 UserManual\uFF0C\u5E76\u8FD4\u56DE\u5173\u8054\u6216\u89E3\u7ED1\u6240\u9700\u7684\u6700\u65B0 ProductSpec version\u3002\u53EA\u8BFB\u5E76\u8981\u6C42 erp:read\uFF1BProductSpec \u4E0D\u5B58\u5728\u65F6\u8FD4\u56DE NOT_FOUND\u3002",
15260
+ scope: "erp:read",
15261
+ agentReadOnly: true,
15262
+ agent: { exposed: true, readOnly: true, destructive: false, idempotent: true },
15263
+ request: { path: productSpecPathSchema },
15264
+ response: { data: productSpecUserManualsResponseSchema },
15265
+ cli: { path: ["product-specs", "list-user-manuals"] }
15266
+ });
15178
15267
  var writeAgent = {
15179
15268
  exposed: true,
15180
15269
  readOnly: false,
@@ -15287,17 +15376,17 @@ var deleteProductSpecPackMappingOperation = defineWriteOperation({
15287
15376
  response: { data: deleteMappingResponseSchema },
15288
15377
  cli: { path: ["product-specs", "remove-pack"] }
15289
15378
  });
15290
- var addProductSpecImageOperation = defineWriteOperation({
15291
- operationId: "addProductSpecImage",
15379
+ var addProductImageOperation = defineWriteOperation({
15380
+ operationId: "addProductImage",
15292
15381
  method: "POST",
15293
- path: "/api/v1/product-specs/{productSpecCode}/images/upload",
15294
- summary: "\u4E3A ProductSpec \u4E0A\u4F20\u5E76\u5173\u8054\u4EA7\u54C1\u56FE\u7247",
15295
- description: "\u628A\u4E00\u5F20 JPG\u3001JPEG\u3001PNG \u6216 WEBP \u56FE\u7247\u4E0A\u4F20\u4E3A\u4E0D\u53EF\u53D8 FileVersion\uFF0C\u5E76\u5173\u8054\u5230\u5B8C\u6574 PS \u4E1A\u52A1\u7F16\u7801\u6807\u8BC6\u7684 ProductSpec\u3002\u9002\u7528\u4E8E\u65B0\u589E\u4EA7\u54C1\u5C55\u793A\u56FE\u7247\uFF1B\u4E0D\u9002\u7528\u4E8E\u8BF4\u660E\u4E66\u3001\u4F9B\u5E94\u5546\u8D44\u6599\u3001\u5C01\u6837\u8D44\u6599\u6216 Pack \u6587\u4EF6\u3002\u5355\u6587\u4EF6\u6700\u5927 50 MiB\uFF0C\u540C\u4E00\u903B\u8F91\u8BF7\u6C42\u91CD\u8BD5\u5FC5\u987B\u590D\u7528 idempotencyKey\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002",
15382
+ path: "/api/v1/products/{productCode}/images/upload",
15383
+ summary: "\u4E3A Product \u4E0A\u4F20\u5E76\u5173\u8054\u4EA7\u54C1\u56FE\u7247",
15384
+ description: "\u628A\u4E00\u5F20 JPG\u3001JPEG\u3001PNG \u6216 WEBP \u56FE\u7247\u4E0A\u4F20\u4E3A\u4E0D\u53EF\u53D8 FileVersion\uFF0C\u5E76\u5173\u8054\u5230\u5B8C\u6574 PR \u4E1A\u52A1\u7F16\u7801\u6807\u8BC6\u7684 Product\u3002\u4F7F\u7528\u6700\u65B0 Product version\uFF1B\u540C\u4E00\u903B\u8F91\u8BF7\u6C42\u91CD\u8BD5\u5FC5\u987B\u590D\u7528 idempotencyKey\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002",
15296
15385
  scope: "erp:write",
15297
15386
  agent: { exposed: true, readOnly: false, destructive: false, idempotent: true },
15298
15387
  request: {
15299
- path: productSpecPathSchema,
15300
- headers: idempotencyKeyHeadersSchema,
15388
+ path: productPathSchema,
15389
+ headers: commandHeadersSchema,
15301
15390
  file: {
15302
15391
  parameterName: "file",
15303
15392
  maxSizeBytes: 50 * 1024 * 1024,
@@ -15306,15 +15395,68 @@ var addProductSpecImageOperation = defineWriteOperation({
15306
15395
  description: "\u8981\u65B0\u589E\u7684\u4EA7\u54C1\u56FE\u7247\u6587\u4EF6\u3002CLI \u4F7F\u7528\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\uFF1BMCP \u4F7F\u7528\u5BA2\u6237\u7AEF\u63D0\u4F9B\u7684\u4E34\u65F6\u6587\u4EF6\u5F15\u7528\u3002"
15307
15396
  }
15308
15397
  },
15309
- response: { data: addProductSpecImageResponseSchema, status: 201 },
15310
- cli: { path: ["product-specs", "add-image"] }
15398
+ response: { data: addProductImageResponseSchema, status: 201 },
15399
+ cli: { path: ["products", "add-image"] }
15400
+ });
15401
+ var uploadUserManualOperation = defineWriteOperation({
15402
+ operationId: "uploadUserManual",
15403
+ method: "POST",
15404
+ path: "/api/v1/user-manuals/{manualCode}/upload",
15405
+ summary: "\u4E3A UserManual \u4E0A\u4F20\u5F53\u524D PDF",
15406
+ description: "\u628A PDF \u4E0A\u4F20\u4E3A\u4E0D\u53EF\u53D8 FileVersion\uFF0C\u5E76\u8BBE\u4E3A\u5B8C\u6574 ManualCode \u6807\u8BC6\u7684 UserManual \u5F53\u524D\u6587\u4EF6\u3002\u4F7F\u7528\u6700\u65B0 UserManual version\uFF1B\u540C\u4E00\u903B\u8F91\u8BF7\u6C42\u91CD\u8BD5\u5FC5\u987B\u590D\u7528 idempotencyKey\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002",
15407
+ scope: "erp:write",
15408
+ agent: { exposed: true, readOnly: false, destructive: false, idempotent: true },
15409
+ request: {
15410
+ path: external_exports.object({ manualCode: manualCodeSchema }).strict(),
15411
+ headers: commandHeadersSchema,
15412
+ file: {
15413
+ parameterName: "file",
15414
+ maxSizeBytes: 50 * 1024 * 1024,
15415
+ allowedMediaTypes: ["application/pdf"],
15416
+ allowedExtensions: ["pdf"],
15417
+ description: "\u8981\u8BBE\u4E3A UserManual \u5F53\u524D\u6587\u4EF6\u7684 PDF\u3002CLI \u4F7F\u7528\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\uFF1BMCP \u4F7F\u7528\u5BA2\u6237\u7AEF\u63D0\u4F9B\u7684\u4E34\u65F6\u6587\u4EF6\u5F15\u7528\u3002"
15418
+ }
15419
+ },
15420
+ response: { data: userManualSchema, status: 201 },
15421
+ cli: { path: ["user-manuals", "upload"] }
15422
+ });
15423
+ var attachProductSpecUserManualOperation = defineWriteOperation({
15424
+ operationId: "attachProductSpecUserManual",
15425
+ method: "POST",
15426
+ path: "/api/v1/product-specs/{productSpecCode}/user-manuals",
15427
+ summary: "\u5173\u8054 ProductSpec \u4E0E UserManual",
15428
+ description: "\u628A\u5DF2\u5B58\u5728\u7684\u5B8C\u6574 ManualCode \u5173\u8054\u5230 ProductSpec\u3002expectedVersion \u5FC5\u987B\u662F ProductSpec \u7684\u6700\u65B0 version\uFF1B\u91CD\u590D\u5173\u8054\u8FD4\u56DE DUPLICATE_USER_MANUAL\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42 erp:write\u3002",
15429
+ scope: "erp:write",
15430
+ agent: writeAgent,
15431
+ request: {
15432
+ path: productSpecPathSchema,
15433
+ headers: expectedVersionHeadersSchema,
15434
+ body: external_exports.object({ manualCode: manualCodeSchema }).strict()
15435
+ },
15436
+ response: { data: productSpecUserManualsResponseSchema, status: 201 },
15437
+ cli: { path: ["product-specs", "add-user-manual"] }
15438
+ });
15439
+ var productSpecUserManualPathSchema = productSpecPathSchema.extend({ manualCode: manualCodeSchema }).strict();
15440
+ var detachProductSpecUserManualOperation = defineWriteOperation({
15441
+ operationId: "detachProductSpecUserManual",
15442
+ method: "DELETE",
15443
+ path: "/api/v1/product-specs/{productSpecCode}/user-manuals/{manualCode}",
15444
+ summary: "\u89E3\u7ED1 ProductSpec \u4E0E UserManual",
15445
+ description: "\u5220\u9664 ProductSpec \u4E0E UserManual \u7684\u9002\u7528\u5173\u7CFB\uFF0C\u4E0D\u5220\u9664 UserManual \u6216\u5176 PDF\u3002expectedVersion \u5FC5\u987B\u662F ProductSpec \u7684\u6700\u65B0 version\uFF1B\u6267\u884C\u524D\u5E94\u53D6\u5F97\u7528\u6237\u660E\u786E\u610F\u56FE\u3002\u7834\u574F\u6027\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42 erp:write\u3002",
15446
+ scope: "erp:write",
15447
+ agent: destructiveWriteAgent,
15448
+ request: {
15449
+ path: productSpecUserManualPathSchema,
15450
+ headers: expectedVersionHeadersSchema
15451
+ },
15452
+ response: { data: productSpecUserManualsResponseSchema },
15453
+ cli: { path: ["product-specs", "remove-user-manual"] }
15311
15454
  });
15312
15455
 
15313
15456
  // ../../packages/contracts/dist/work-lists/index.js
15314
15457
  var timestampSchema2 = external_exports.iso.datetime().describe("ISO 8601 UTC \u65F6\u95F4\u6233\u3002");
15315
15458
  var workListInternalIdSchema = external_exports.number().int().describe("DevelopmentWorkList \u5DE5\u4F5C\u6E05\u5355\u5185\u90E8\u6807\u8BC6\uFF1B\u4E0D\u662F PR\u3001PS\u3001PK \u4E1A\u52A1\u7F16\u7801\u3002");
15316
15459
  var productInternalIdSchema = external_exports.number().int().describe("\u6570\u636E\u5E93\u5185\u90E8\u5173\u8054\u6807\u8BC6\uFF1B\u4E0D\u662F PR\u3001PS\u3001PK \u4E1A\u52A1\u7F16\u7801\u3002");
15317
- var nullableCentimeterSchema2 = external_exports.number().nullable().describe("\u5C3A\u5BF8\uFF0C\u5355\u4F4D cm\uFF1Bnull \u8868\u793A\u7CFB\u7EDF\u6CA1\u6709\u5DF2\u8BB0\u5F55\u503C\uFF0C\u5F53\u524D\u4E0D\u7EC6\u5206\u5177\u4F53\u7A7A\u503C\u539F\u56E0\u3002");
15318
15460
  var nullableKilogramSchema2 = external_exports.number().nullable().describe("\u91CD\u91CF\uFF0C\u5355\u4F4D kg\uFF1Bnull \u8868\u793A\u7CFB\u7EDF\u6CA1\u6709\u5DF2\u8BB0\u5F55\u503C\uFF0C\u5F53\u524D\u4E0D\u7EC6\u5206\u5177\u4F53\u7A7A\u503C\u539F\u56E0\u3002");
15319
15461
  var workListIdSchema = external_exports.coerce.number().int().positive().describe("\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u7684\u5185\u90E8\u6B63\u6574\u6570\u6807\u8BC6\uFF0C\u7531\u5217\u8868\u67E5\u8BE2\u8FD4\u56DE\uFF1B\u4E0D\u662F PR\u3001PS\u3001PK \u4E1A\u52A1\u7F16\u7801\u3002");
15320
15462
  var batchIdPathSchema = external_exports.object({ batchId: workListIdSchema }).strict();
@@ -15359,14 +15501,6 @@ var workListSpecContentSchema = external_exports.object({
15359
15501
  productId: productInternalIdSchema,
15360
15502
  productCode: productCodeSchema,
15361
15503
  specName: external_exports.string(),
15362
- brand: external_exports.string().nullable(),
15363
- color: external_exports.string().nullable(),
15364
- salesMarketCodes: external_exports.array(external_exports.string()),
15365
- lengthCm: nullableCentimeterSchema2,
15366
- widthCm: nullableCentimeterSchema2,
15367
- fixedHeightCm: nullableCentimeterSchema2,
15368
- minHeightCm: nullableCentimeterSchema2,
15369
- maxHeightCm: nullableCentimeterSchema2,
15370
15504
  netWeightKg: nullableKilogramSchema2,
15371
15505
  categorySpec: external_exports.unknown().nullable(),
15372
15506
  categorySpecSchema: external_exports.string().nullable(),
@@ -15441,7 +15575,7 @@ var getDevelopmentWorkListOperation = defineReadOperation({
15441
15575
  method: "GET",
15442
15576
  path: "/api/v1/dev-batches/{batchId}",
15443
15577
  summary: "\u8BFB\u53D6\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u53CA\u5B9E\u65F6\u5B8C\u6574\u5EA6",
15444
- description: "\u6839\u636E\u5217\u8868\u8FD4\u56DE\u7684\u5DE5\u4F5C\u6E05\u5355\u5185\u90E8 ID\uFF0C\u8BFB\u53D6\u6210\u5458\u4E3B\u6570\u636E\u5B9E\u65F6\u6295\u5F71\u53CA\u5B9E\u65F6\u3001\u975E\u963B\u65AD\u8D44\u6599\u5B8C\u6574\u5EA6\u3002\u5DE5\u4F5C\u6E05\u5355\u4E0D\u62E5\u6709\u4EA7\u54C1\u4E3B\u6570\u636E\uFF1B\u5B8C\u6574\u5EA6\u53EA\u8BA1\u7B97\u663E\u5F0F\u5305\u542B\u7684 ProductSpec\uFF0C\u6A21\u578B\u4E0D\u5F97\u81EA\u884C\u63A8\u7B97\u3002\u53EA\u8BFB\u5E76\u8981\u6C42 erp:read\u3002",
15578
+ description: "\u6839\u636E\u5217\u8868\u8FD4\u56DE\u7684\u5DE5\u4F5C\u6E05\u5355\u5185\u90E8 ID\uFF0C\u8BFB\u53D6\u6210\u5458\u4E3B\u6570\u636E\u5B9E\u65F6\u6295\u5F71\u53CA\u5B9E\u65F6\u3001\u975E\u963B\u65AD\u8D44\u6599\u5B8C\u6574\u5EA6\u3002\u5DE5\u4F5C\u6E05\u5355\u4E0D\u62E5\u6709\u4EA7\u54C1\u4E3B\u6570\u636E\uFF1B\u5B8C\u6574\u5EA6\u53EA\u8BA1\u7B97\u663E\u5F0F\u5305\u542B\u7684 Product \u548C ProductSpec\uFF0C\u6A21\u578B\u4E0D\u5F97\u81EA\u884C\u63A8\u7B97\u3002\u53EA\u8BFB\u5E76\u8981\u6C42 erp:read\u3002",
15445
15579
  scope: "erp:read",
15446
15580
  agentReadOnly: true,
15447
15581
  agent: { exposed: true, readOnly: true, destructive: false, idempotent: true },
@@ -15467,15 +15601,12 @@ var scopeCommandBase = (type, payload) => external_exports.object({ type: extern
15467
15601
  var editableSpecFields = initialProductSpecInputSchema.omit({ specName: true });
15468
15602
  var developmentWorkListCommandSchema = external_exports.discriminatedUnion("type", [
15469
15603
  scopeCommandBase("RENAME_TOPIC", external_exports.object({ title: external_exports.string().trim().min(1).max(160) }).strict()),
15470
- scopeCommandBase("CREATE_PRODUCT", external_exports.object({
15471
- name: external_exports.string().trim().min(1).max(255),
15472
- initialSpec: initialProductSpecInputSchema.optional()
15473
- }).strict()),
15604
+ scopeCommandBase("CREATE_PRODUCT", createProductInputSchema),
15474
15605
  scopeCommandBase("UPDATE_PRODUCT", external_exports.object({
15475
15606
  productCode: productCodeSchema,
15476
15607
  expectedVersion: external_exports.number().int().positive(),
15477
- name: external_exports.string().trim().min(1).max(255)
15478
- }).strict()),
15608
+ ...updateProductInputSchema.shape
15609
+ }).strict().refine((value) => Object.entries(value).some(([key, item]) => !["productCode", "expectedVersion"].includes(key) && item !== void 0), "\u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u53EF\u7F16\u8F91\u7684 Product \u5B57\u6BB5\u3002")),
15479
15610
  scopeCommandBase("ADD_PRODUCT_SPEC", initialProductSpecInputSchema.extend({ productCode: productCodeSchema, specName: external_exports.string().trim().min(1).max(255) }).strict()),
15480
15611
  scopeCommandBase("UPDATE_PRODUCT_SPEC", editableSpecFields.extend({
15481
15612
  productSpecCode: productSpecCodeSchema,
@@ -15558,12 +15689,17 @@ var erpReadOperations = [
15558
15689
  getProductOperation,
15559
15690
  getProductSpecOperation,
15560
15691
  getPackOperation,
15692
+ getUserManualOperation,
15693
+ listProductSpecUserManualsOperation,
15561
15694
  listDevelopmentWorkListsOperation,
15562
15695
  getDevelopmentWorkListOperation,
15563
15696
  listWorkListActivityOperation
15564
15697
  ];
15565
15698
  var erpWriteOperations = [
15566
- addProductSpecImageOperation,
15699
+ addProductImageOperation,
15700
+ uploadUserManualOperation,
15701
+ attachProductSpecUserManualOperation,
15702
+ detachProductSpecUserManualOperation,
15567
15703
  createProductOperation,
15568
15704
  updateProductOperation,
15569
15705
  updateProductSpecOperation,
@@ -15634,6 +15770,7 @@ var searchProductMasterDataTool = {
15634
15770
  \u9002\u7528\uFF1A\u4E0D\u77E5\u9053\u5B8C\u6574\u4E1A\u52A1\u7F16\u7801\uFF0C\u53EA\u6709 Product \u540D\u79F0\u3001ProductSpec \u89C4\u683C\u540D\u3001Pack \u540D\u79F0\u3001Supplier \u7F16\u7801\u6216\u540D\u79F0\uFF1B\u9700\u8981\u4ECE\u591A\u4E2A\u5019\u9009\u4E2D\u786E\u8BA4\u76EE\u6807\u3002
15635
15771
  \u4E0D\u9002\u7528\uFF1A\u5DF2\u7ECF\u63D0\u4F9B\u5B8C\u6574 PR\u3001PS\u3001PK \u4E1A\u52A1\u7F16\u7801\uFF0C\u6B64\u65F6\u4F7F\u7528 get_product_master_data\u3002\u5F53\u524D\u4E0D\u652F\u6301\u90E8\u5206\u4E1A\u52A1\u7F16\u7801\u5339\u914D\u3002
15636
15772
 
15773
+ Product\uFF08PR\uFF09\u662F\u9500\u552E SKU \u53D8\u4F53\uFF1BProductSpec\uFF08PS\uFF09\u662F\u987E\u5BA2\u4E0D\u611F\u77E5\u7684\u5185\u90E8\u5B9E\u73B0\u65B9\u6848\uFF1BPack\uFF08PK\uFF09\u662F\u4EA4\u4ED8\u5305\u88F9\u3002
15637
15774
  \u8FD4\u56DE\u5019\u9009 matches\u3001\u76F8\u5173 Product/ProductSpec/Pack\u3001\u5E26 quantity \u7684 ProductSpec\u2014Pack \u6620\u5C04\u53CA\u5206\u9875\u6E38\u6807\u3002\u591A\u4E2A\u5019\u9009\u90FD\u53EF\u80FD\u6709\u6548\uFF0C\u4E0D\u8981\u9ED8\u8BA4\u7B2C\u4E00\u6761\u5C31\u662F\u76EE\u6807\uFF1B\u7A7A\u5019\u9009\u662F SUCCESS\uFF0C\u8868\u793A\u5F53\u524D\u8BFB\u53D6\u8303\u56F4\u5185\u6CA1\u6709\u5339\u914D\u7ED3\u679C\uFF1B\u975E\u6CD5\u53C2\u6570\u8FD4\u56DE INVALID_ARGUMENT\u3002
15638
15775
  \u8BE5\u5DE5\u5177\u53EA\u8BFB\uFF0C\u4F7F\u7528\u5F53\u524D\u8C03\u7528\u8EAB\u4EFD\u5E76\u8981\u6C42 erp:read\u3002`,
15639
15776
  scope: "erp:read",
@@ -15648,7 +15785,7 @@ var getProductMasterDataTool = {
15648
15785
  PR \u662F ProductCode\uFF0CPS \u662F ProductSpecCode\uFF0CPK \u662F PackCode\uFF1B\u5B83\u4EEC\u662F\u4E1A\u52A1\u7F16\u7801\uFF0C\u4E0D\u662F\u6570\u636E\u5E93\u5185\u90E8 ID \u6216\u6E20\u9053 SKU\u3002
15649
15786
  \u9002\u7528\uFF1A\u7528\u6237\u5DF2\u7ECF\u63D0\u4F9B\u5B8C\u6574\u4E1A\u52A1\u7F16\u7801\u3002\u4E0D\u53EF\u7528\u4E8E\u540D\u79F0\u3001Supplier \u6216\u4E0D\u5B8C\u6574\u7F16\u7801\u641C\u7D22\uFF0C\u6B64\u65F6\u4F7F\u7528 search_product_master_data\u3002
15650
15787
 
15651
- PR \u8FD4\u56DE Product \u53CA\u5176 ProductSpec\u3001Pack \u5173\u7CFB\uFF1BPS \u8FD4\u56DE\u6240\u5C5E Product\u3001\u76EE\u6807 ProductSpec \u53CA Pack\uFF1BPK \u8FD4\u56DE\u76EE\u6807 Pack \u53CA\u5F15\u7528\u5B83\u7684 ProductSpec\u3001Product\u3002\u975E\u6CD5\u7F16\u7801\u8FD4\u56DE INVALID_ARGUMENT\uFF1B\u5F53\u524D\u8BFB\u53D6\u8303\u56F4\u5185\u4E0D\u5B58\u5728\u65F6\u8FD4\u56DE\u4E0D\u6CC4\u9732\u989D\u5916\u5B58\u5728\u6027\u7684 NOT_FOUND\uFF0C\u4E0D\u8FD4\u56DE\u7A7A\u5173\u7CFB\u5192\u5145\u6210\u529F\u3002
15788
+ PR \u8FD4\u56DE\u54C1\u724C\u3001\u989C\u8272\u3001\u76EE\u6807\u9500\u552E\u5E02\u573A\u3001\u987E\u5BA2\u53EF\u89C1\u5C3A\u5BF8\u53CA\u5176 ProductSpec\u3001Pack \u5173\u7CFB\uFF1BPS \u8FD4\u56DE\u987E\u5BA2\u4E0D\u611F\u77E5\u7684\u5185\u90E8\u5B9E\u73B0\u8D44\u6599\u4E0E Pack \u6620\u5C04\uFF1BPK \u8FD4\u56DE\u76EE\u6807 Pack \u53CA\u5F15\u7528\u5B83\u7684 ProductSpec\u3001Product\u3002\u4EA7\u54C1\u56FE\u7247\u7531\u72EC\u7ACB Product \u56FE\u7247\u8D44\u6E90\u7EF4\u62A4\u3002\u975E\u6CD5\u7F16\u7801\u8FD4\u56DE INVALID_ARGUMENT\uFF1B\u5F53\u524D\u8BFB\u53D6\u8303\u56F4\u5185\u4E0D\u5B58\u5728\u65F6\u8FD4\u56DE\u4E0D\u6CC4\u9732\u989D\u5916\u5B58\u5728\u6027\u7684 NOT_FOUND\u3002
15652
15789
  \u8BE5\u5DE5\u5177\u53EA\u8BFB\uFF0C\u4F7F\u7528\u5F53\u524D\u8C03\u7528\u8EAB\u4EFD\u5E76\u8981\u6C42 erp:read\u3002`,
15653
15790
  scope: "erp:read",
15654
15791
  annotations: readOnlyAnnotations,
@@ -15657,6 +15794,14 @@ PR \u8FD4\u56DE Product \u53CA\u5176 ProductSpec\u3001Pack \u5173\u7CFB\uFF1BPS
15657
15794
  }).strict(),
15658
15795
  output: output(external_exports.union([getProductResponseSchema, getProductSpecResponseSchema, getPackResponseSchema]), true)
15659
15796
  };
15797
+ var getUserManualTool = {
15798
+ name: "get_user_manual",
15799
+ description: "\u6839\u636E\u5B8C\u6574 ManualCode \u8BFB\u53D6\u4E00\u4E2A UserManual \u7684\u540D\u79F0\u3001\u6700\u65B0 version \u4E0E\u5F53\u524D PDF \u5143\u6570\u636E\u3002\u65B0\u7F16\u7801\u4F7F\u7528 MANUAL \u524D\u7F00\uFF0C\u65E2\u6709 UM \u7F16\u7801\u7EE7\u7EED\u6709\u6548\u3002\u8BF4\u660E\u4E66\u4E0A\u4F20\u524D\u4F7F\u7528\u8BE5\u5DE5\u5177\u53D6\u5F97 expectedVersion\uFF1B\u4E0D\u53EF\u7528\u4E8E\u540D\u79F0\u6216\u4E0D\u5B8C\u6574\u7F16\u7801\u641C\u7D22\u3002\u53EA\u8BFB\uFF0C\u4F7F\u7528\u5F53\u524D\u8C03\u7528\u8EAB\u4EFD\u5E76\u8981\u6C42 erp:read\u3002",
15800
+ scope: "erp:read",
15801
+ annotations: readOnlyAnnotations,
15802
+ input: getUserManualOperation.request.path,
15803
+ output: output(userManualSchema, true)
15804
+ };
15660
15805
  var listDevelopmentWorkListsTool = {
15661
15806
  name: "list_development_work_lists",
15662
15807
  description: `\u6309\u66F4\u65B0\u65F6\u95F4\u4ECE\u65B0\u5230\u65E7\u5206\u9875\u67E5\u8BE2 DevelopmentWorkList\uFF08\u5B9E\u73B0\u540D DevBatch\uFF09\u3002
@@ -15728,27 +15873,46 @@ var chatGptFileInputSchema = external_exports.object({
15728
15873
  mime_type: external_exports.string().trim().min(1).max(255).optional().describe("\u5BA2\u6237\u7AEF\u58F0\u660E\u7684 MIME \u7C7B\u578B\u3002"),
15729
15874
  file_name: external_exports.string().trim().min(1).max(255).optional().describe("\u7528\u6237\u4E0A\u4F20\u65F6\u7684\u539F\u59CB\u6587\u4EF6\u540D\u3002")
15730
15875
  }).strict();
15731
- var addProductSpecImageTool = {
15732
- name: "add_product_spec_image",
15733
- description: `\u4E3A\u4E00\u4E2A ProductSpec \u4E0A\u4F20\u5E76\u5173\u8054\u4E00\u5F20\u4EA7\u54C1\u56FE\u7247\u3002
15876
+ var addProductImageTool = {
15877
+ name: "add_product_image",
15878
+ description: `\u4E3A\u4E00\u4E2A Product \u4E0A\u4F20\u5E76\u5173\u8054\u4E00\u5F20\u4EA7\u54C1\u56FE\u7247\u3002
15734
15879
 
15735
- \u9002\u7528\uFF1A\u7528\u6237\u5DF2\u660E\u786E\u76EE\u6807 PS \u4E1A\u52A1\u7F16\u7801\uFF0C\u5E76\u5728\u5F53\u524D\u5BF9\u8BDD\u4E2D\u9644\u52A0\u4E86\u4E00\u5F20 JPG\u3001JPEG\u3001PNG \u6216 WEBP \u56FE\u7247\u3002
15736
- \u4E0D\u9002\u7528\uFF1A\u7528\u6237\u8BF4\u660E\u4E66\u3001\u4F9B\u5E94\u5546\u89C4\u683C\u4E66\u6216\u56FE\u7EB8\u3001\u5C01\u6837\u8D44\u6599\u3001Pack \u6587\u4EF6\uFF1B\u8FD9\u4E9B\u8D44\u6599\u5FC5\u987B\u4F7F\u7528\u5404\u81EA\u7684\u9886\u57DF\u5DE5\u5177\u3002\u4E5F\u4E0D\u53EF\u53EA\u51ED\u540D\u79F0\u731C\u6D4B ProductSpec\uFF0C\u5E94\u5148\u641C\u7D22\u5E76\u786E\u8BA4\u5B8C\u6574 PS \u7F16\u7801\u3002
15880
+ \u9002\u7528\uFF1A\u7528\u6237\u5DF2\u660E\u786E\u76EE\u6807 PR \u4E1A\u52A1\u7F16\u7801\uFF0C\u5E76\u5728\u5F53\u524D\u5BF9\u8BDD\u4E2D\u9644\u52A0\u4E86\u4E00\u5F20 JPG\u3001JPEG\u3001PNG \u6216 WEBP \u56FE\u7247\u3002
15881
+ \u4E0D\u9002\u7528\uFF1A\u7528\u6237\u8BF4\u660E\u4E66\u3001\u4F9B\u5E94\u5546\u89C4\u683C\u4E66\u6216\u56FE\u7EB8\u3001\u5C01\u6837\u8D44\u6599\u3001Pack \u6587\u4EF6\uFF1B\u8FD9\u4E9B\u8D44\u6599\u5FC5\u987B\u4F7F\u7528\u5404\u81EA\u7684\u9886\u57DF\u5DE5\u5177\u3002\u4E5F\u4E0D\u53EF\u53EA\u51ED\u540D\u79F0\u731C\u6D4B Product\uFF0C\u5E94\u5148\u641C\u7D22\u5E76\u786E\u8BA4\u5B8C\u6574 PR \u7F16\u7801\u3002
15737
15882
 
15738
- \u8BE5\u5DE5\u5177\u628A\u6587\u4EF6\u4E0A\u4F20\u4E3A\u4E0D\u53EF\u53D8 FileVersion\uFF0C\u5E76\u5173\u8054\u5230 ProductSpec \u4EA7\u54C1\u56FE\u7247\u96C6\u5408\u3002\u5355\u6587\u4EF6\u6700\u5927 50 MiB\uFF1B\u540C\u4E00\u903B\u8F91\u8BF7\u6C42\u91CD\u8BD5\u5FC5\u987B\u590D\u7528 idempotencyKey\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002`,
15883
+ \u8BE5\u5DE5\u5177\u628A\u6587\u4EF6\u4E0A\u4F20\u4E3A\u4E0D\u53EF\u53D8 FileVersion\uFF0C\u5E76\u5173\u8054\u5230 Product \u4EA7\u54C1\u56FE\u7247\u96C6\u5408\u3002\u5FC5\u987B\u63D0\u4F9B\u6700\u65B0 Product version\uFF1B\u5355\u6587\u4EF6\u6700\u5927 50 MiB\uFF1B\u540C\u4E00\u903B\u8F91\u8BF7\u6C42\u91CD\u8BD5\u5FC5\u987B\u590D\u7528 idempotencyKey\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002`,
15739
15884
  scope: "erp:write",
15740
15885
  annotations: { ...writeAnnotations, idempotentHint: true },
15741
15886
  meta: { "openai/fileParams": ["file"] },
15742
15887
  input: external_exports.object({
15743
- productSpecCode: productSpecCodeSchema,
15888
+ productCode: productCodeSchema,
15889
+ expectedVersion: expectedVersionInputSchema,
15890
+ idempotencyKey: idempotencyKeyInputSchema,
15891
+ file: chatGptFileInputSchema
15892
+ }).strict(),
15893
+ output: output(addProductImageResponseSchema, false)
15894
+ };
15895
+ var uploadUserManualTool = {
15896
+ name: "upload_user_manual",
15897
+ description: `\u4E3A\u4E00\u4E2A UserManual \u4E0A\u4F20\u5E76\u8BBE\u7F6E\u5F53\u524D PDF \u6587\u4EF6\u3002
15898
+
15899
+ \u9002\u7528\uFF1A\u7528\u6237\u5DF2\u660E\u786E\u76EE\u6807 ManualCode\uFF0C\u5E76\u5728\u5F53\u524D\u5BF9\u8BDD\u4E2D\u9644\u52A0\u4E86\u4E00\u4EFD PDF \u8BF4\u660E\u4E66\u3002\u76EE\u6807 UserManual \u5FC5\u987B\u5DF2\u7ECF\u5B58\u5728\uFF1B\u6587\u4EF6\u4E0A\u4F20\u540E\u4FDD\u5B58\u4E3A\u4E0D\u53EF\u53D8 FileVersion\uFF0C\u5E76\u6210\u4E3A\u8BE5\u8BF4\u660E\u4E66\u7684\u5F53\u524D\u6587\u4EF6\u3002
15900
+
15901
+ \u5982\u6587\u4EF6\u5DF2\u5C5E\u4E8E\u67D0\u4EFD\u8BF4\u660E\u4E66\uFF0C\u5DE5\u5177\u4F1A\u8FD4\u56DE\u5DF2\u6709 ManualCode\uFF0C\u5E94\u76F4\u63A5\u590D\u7528\u8BE5\u8BF4\u660E\u4E66\u3002\u5FC5\u987B\u63D0\u4F9B\u6700\u65B0 UserManual version\uFF1B\u5355\u6587\u4EF6\u6700\u5927 50 MiB\uFF1B\u540C\u4E00\u903B\u8F91\u8BF7\u6C42\u91CD\u8BD5\u5FC5\u987B\u590D\u7528 idempotencyKey\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002`,
15902
+ scope: "erp:write",
15903
+ annotations: { ...writeAnnotations, idempotentHint: true },
15904
+ meta: { "openai/fileParams": ["file"] },
15905
+ input: external_exports.object({
15906
+ manualCode: uploadUserManualOperation.request.path.shape.manualCode,
15907
+ expectedVersion: expectedVersionInputSchema,
15744
15908
  idempotencyKey: idempotencyKeyInputSchema,
15745
15909
  file: chatGptFileInputSchema
15746
15910
  }).strict(),
15747
- output: output(addProductSpecImageResponseSchema, false)
15911
+ output: output(userManualSchema, false)
15748
15912
  };
15749
15913
  var createProductTool = {
15750
15914
  name: "create_product",
15751
- description: "\u521B\u5EFA Product \u53CA\u5176\u9996\u4E2A ProductSpec\uFF0C\u7CFB\u7EDF\u751F\u6210\u4E0D\u53EF\u53D8 PR\u3001PS \u4E1A\u52A1\u7F16\u7801\u3002\u9002\u7528\uFF1A\u7528\u6237\u660E\u786E\u8981\u521B\u5EFA\u65B0\u7684\u4EA7\u54C1\u65CF\u3002\u4E0D\u9002\u7528\uFF1A\u7ED9\u73B0\u6709 Product \u589E\u52A0\u89C4\u683C\uFF1B\u5E94\u4F7F\u7528\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u8BED\u4E49\u547D\u4EE4\u3002\u8BE5\u5DE5\u5177\u4F1A\u5199\u5165\u4E1A\u52A1\u6570\u636E\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\uFF1B\u521B\u5EFA\u524D\u5E94\u786E\u8BA4\u540D\u79F0\u548C\u9996\u4E2A\u89C4\u683C\u5B57\u6BB5\u3002",
15915
+ description: "\u521B\u5EFA\u9500\u552E SKU \u53D8\u4F53 Product \u53CA\u5176\u9996\u4E2A\u5185\u90E8\u5B9E\u73B0 ProductSpec\uFF0C\u7CFB\u7EDF\u751F\u6210\u4E0D\u53EF\u53D8 PR\u3001PS \u4E1A\u52A1\u7F16\u7801\u3002\u989C\u8272\u3001\u5C3A\u5BF8\u7B49\u7528\u6237\u53EF\u611F\u77E5\u5DEE\u5F02\u5E94\u521B\u5EFA\u65B0\u7684 Product\uFF1B\u7ED9\u73B0\u6709 Product \u589E\u52A0\u987E\u5BA2\u4E0D\u611F\u77E5\u7684\u5185\u90E8\u5B9E\u73B0\u5E94\u4F7F\u7528\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u8BED\u4E49\u547D\u4EE4\u3002\u5199\u64CD\u4F5C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002",
15752
15916
  scope: "erp:write",
15753
15917
  annotations: writeAnnotations,
15754
15918
  input: createProductInputSchema,
@@ -16192,6 +16356,7 @@ async function createMultipartBody(values, file2) {
16192
16356
  return body;
16193
16357
  }
16194
16358
  function mediaTypeForExtension(extension) {
16359
+ if (extension === "pdf") return "application/pdf";
16195
16360
  if (extension === "jpg" || extension === "jpeg") return "image/jpeg";
16196
16361
  if (extension === "png") return "image/png";
16197
16362
  if (extension === "webp") return "image/webp";
@@ -16731,7 +16896,7 @@ function createCredentialStore(path = defaultCredentialPath(), options = {}) {
16731
16896
  // package.json
16732
16897
  var package_default = {
16733
16898
  name: "intonear-erp-cli",
16734
- version: "0.2.2",
16899
+ version: "0.2.4",
16735
16900
  description: "intoNear ERP \u6E10\u8FDB\u5F0F\u8BFB\u5199\u547D\u4EE4\u884C\u5BA2\u6237\u7AEF",
16736
16901
  type: "module",
16737
16902
  bin: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intonear-erp-cli",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "intoNear ERP 渐进式读写命令行客户端",
5
5
  "type": "module",
6
6
  "bin": {