intonear-erp-cli 0.2.2 → 0.2.5

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 +283 -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-04";
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,19 @@ 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
+ "\u521B\u5EFA UserManual",
14595
14596
  "\u7EF4\u62A4 ProductSpec\u2014Pack \u6620\u5C04",
14596
14597
  "\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"
14598
+ "\u4E3A Product \u4E0A\u4F20\u5E76\u5173\u8054\u4EA7\u54C1\u56FE\u7247",
14599
+ "\u4E3A UserManual \u4E0A\u4F20\u5E76\u8BBE\u7F6E\u5F53\u524D PDF",
14600
+ "CLI \u53EF\u8BFB\u53D6\u5E76\u7EF4\u62A4 ProductSpec\u2014UserManual \u9002\u7528\u5173\u7CFB"
14598
14601
  ],
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"]
14602
+ 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
14603
  },
14601
14604
  permissionSemantics: {
14602
14605
  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 +14607,7 @@ var overviewContent = {
14604
14607
  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
14608
  },
14606
14609
  routing: [
14607
- "\u5DF2\u77E5\u5B8C\u6574 PR\u3001PS\u3001PK \u4E1A\u52A1\u7F16\u7801\u65F6\u4F7F\u7528\u7CBE\u786E\u4E3B\u6570\u636E\u67E5\u8BE2\u3002",
14610
+ "\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
14611
  "\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
14612
  "\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
14613
  "\u53EA\u9009\u62E9 MCP tools/list \u6216 CLI list \u5B9E\u9645\u5217\u51FA\u7684\u80FD\u529B\u3002",
@@ -14618,13 +14621,13 @@ var productMasterDataContent = {
14618
14621
  entityType: "PRODUCT",
14619
14622
  name: "Product",
14620
14623
  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"
14624
+ 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
14625
  },
14623
14626
  {
14624
14627
  entityType: "PRODUCT_SPEC",
14625
14628
  name: "ProductSpec",
14626
14629
  businessIdentity: "ProductSpecCode\uFF08PS \u4E1A\u52A1\u7F16\u7801\uFF09",
14627
- definition: "Product \u7684\u5177\u4F53\u53EF\u552E\u4E0E\u5185\u90E8\u5B9E\u73B0\u89C4\u683C\u3002"
14630
+ 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
14631
  },
14629
14632
  {
14630
14633
  entityType: "PACK",
@@ -14635,7 +14638,7 @@ var productMasterDataContent = {
14635
14638
  {
14636
14639
  entityType: "USER_MANUAL",
14637
14640
  name: "UserManual",
14638
- businessIdentity: "ManualCode\uFF08UM \u4E1A\u52A1\u7F16\u7801\uFF09",
14641
+ businessIdentity: "ManualCode\uFF08MANUAL \u4E1A\u52A1\u7F16\u7801\uFF09",
14639
14642
  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
14643
  },
14641
14644
  {
@@ -14673,6 +14676,7 @@ var productMasterDataContent = {
14673
14676
  ],
14674
14677
  rules: [
14675
14678
  "Product\u3001ProductSpec\u3001Pack \u548C UserManual \u521B\u5EFA\u540E\u7ACB\u5373\u53EF\u7528\uFF0C\u4E0D\u8BBE\u751F\u547D\u5468\u671F\u72B6\u6001\u3002",
14679
+ "\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
14680
  "\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
14681
  "\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
14682
  ]
@@ -14703,9 +14707,10 @@ var businessCodeSystemContent = {
14703
14707
  {
14704
14708
  entity: "UserManual",
14705
14709
  field: "ManualCode",
14706
- prefix: "UM",
14707
- pattern: "^UM\\d{5,}$",
14708
- example: "UM00001"
14710
+ prefix: "MANUAL",
14711
+ pattern: "^MANUAL\\d{3,}$",
14712
+ example: "MANUAL001",
14713
+ acceptedLegacyPattern: "^UM\\d{5,}$"
14709
14714
  }
14710
14715
  ],
14711
14716
  rules: [
@@ -14732,7 +14737,7 @@ var developmentWorkListContent = {
14732
14737
  "\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
14738
  "\u5DE5\u4F5C\u6E05\u5355\u6CA1\u6709\u63D0\u4EA4\u3001\u64A4\u56DE\u3001\u8BC4\u5BA1\u3001\u8FDB\u5EA6\u6216\u9501\u5B9A\u72B6\u6001\u3002",
14734
14739
  "\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"
14740
+ "\u5B9E\u65F6\u5B8C\u6574\u5EA6\u53EA\u8BA1\u7B97\u5DE5\u4F5C\u6E05\u5355\u4E2D\u663E\u5F0F\u5305\u542B\u7684 Product \u4E0E ProductSpec\u3002"
14736
14741
  ]
14737
14742
  };
14738
14743
  var filesContent = {
@@ -14747,22 +14752,32 @@ var filesContent = {
14747
14752
  }
14748
14753
  ],
14749
14754
  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",
14755
+ owner: "Product",
14756
+ relationship: "\u4E00\u4E2A Product \u53EF\u5173\u8054\u591A\u5F20\u4EA7\u54C1\u56FE\u7247\uFF1B\u540C\u4E00 FileVersion \u4E0D\u91CD\u590D\u5173\u8054\u3002",
14752
14757
  acceptedTypes: ["JPG", "JPEG", "PNG", "WEBP"],
14753
14758
  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"
14759
+ 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
14760
  },
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"
14761
+ userManuals: {
14762
+ owner: "UserManual",
14763
+ relationship: "\u4E00\u4E2A UserManual \u7EF4\u62A4\u4E00\u4E2A\u5F53\u524D PDF FileVersion\uFF0C\u5E76\u53EF\u88AB\u591A\u4E2A ProductSpec \u590D\u7528\u3002",
14764
+ acceptedTypes: ["PDF"],
14765
+ maxSizeBytes: 50 * 1024 * 1024,
14766
+ effect: "\u66F4\u65B0\u5F53\u524D PDF \u4F1A\u5F71\u54CD\u5173\u8054\u8BE5 UserManual \u7684 ProductSpec \u5B9E\u65F6\u5B8C\u6574\u5EA6\u3002"
14767
+ },
14768
+ agentCapability: "\u5F53\u524D MCP \u4E0E CLI \u5F00\u653E UserManual \u521B\u5EFA\u3001Product \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
14769
  };
14758
14770
  var completenessRulesContent = {
14759
14771
  projectionType: "REALTIME_NON_BLOCKING",
14760
14772
  rulesVersion: erpCompletenessRulesVersion,
14761
14773
  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",
14774
+ evaluatedEntity: "\u5DE5\u4F5C\u6E05\u5355\u4E2D\u663E\u5F0F\u5305\u542B\u7684 Product \u4E0E ProductSpec",
14763
14775
  checks: [
14764
14776
  { 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" },
14777
+ {
14778
+ code: "MINIMUM_PRODUCT_IMAGES_NOT_MET",
14779
+ condition: "\u663E\u5F0F\u5305\u542B\u7684 Product \u6709\u6548\u4EA7\u54C1\u56FE\u7247\u5C11\u4E8E 3 \u5F20"
14780
+ },
14766
14781
  { code: "MISSING_PRODUCT_SPEC_USER_MANUAL", condition: "\u672A\u5173\u8054\u4EFB\u4F55 UserManual" },
14767
14782
  {
14768
14783
  code: "USER_MANUAL_FILE_MISSING",
@@ -14825,12 +14840,28 @@ var changelogContent = {
14825
14840
  entries: [
14826
14841
  {
14827
14842
  version: erpDomainModelVersion,
14843
+ releasedAt: "2026-09-04",
14844
+ compatibility: "ADDITIVE",
14845
+ changes: ["MCP \u4E0E CLI \u589E\u52A0 UserManual \u521B\u5EFA\u80FD\u529B\u3002"]
14846
+ },
14847
+ {
14848
+ version: "2026-09-03",
14849
+ releasedAt: "2026-09-03",
14850
+ compatibility: "ADDITIVE",
14851
+ changes: [
14852
+ "MCP \u4E0E CLI \u589E\u52A0 UserManual \u7CBE\u786E\u8BFB\u53D6\u4E0E\u5F53\u524D PDF \u4E0A\u4F20\u80FD\u529B\u3002",
14853
+ "CLI \u589E\u52A0 ProductSpec\u2014UserManual \u9002\u7528\u5173\u7CFB\u8BFB\u53D6\u3001\u5173\u8054\u4E0E\u89E3\u7ED1\u80FD\u529B\u3002",
14854
+ "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"
14855
+ ]
14856
+ },
14857
+ {
14858
+ version: "2026-09-02",
14828
14859
  releasedAt: "2026-09-02",
14829
14860
  compatibility: "ADDITIVE",
14830
14861
  changes: [
14831
14862
  "CLI \u4E0E MCP \u5F00\u653E\u9996\u6279\u4EA7\u54C1\u4E3B\u6570\u636E\u548C\u5F00\u53D1\u5DE5\u4F5C\u6E05\u5355\u5199\u64CD\u4F5C\u3002",
14832
14863
  "\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"
14864
+ "MCP \u4E0E CLI \u589E\u52A0 Product \u4EA7\u54C1\u56FE\u7247\u4E0A\u4F20\u80FD\u529B\u548C\u6587\u4EF6\u9886\u57DF\u4E3B\u9898\u3002"
14834
14865
  ]
14835
14866
  },
14836
14867
  {
@@ -14894,6 +14925,7 @@ var codeSchema = (prefix, description) => external_exports.string().trim().toUpp
14894
14925
  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
14926
  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
14927
  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");
14928
+ 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
14929
  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
14930
  var timestampSchema = external_exports.iso.datetime().describe("ISO 8601 UTC \u65F6\u95F4\u6233\u3002");
14899
14931
  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 +14934,14 @@ var productSummarySchema = external_exports.object({
14902
14934
  id: internalIdSchema,
14903
14935
  productCode: productCodeSchema,
14904
14936
  name: external_exports.string(),
14937
+ brand: external_exports.string().nullable(),
14938
+ color: external_exports.string().nullable(),
14939
+ salesMarketCodes: external_exports.array(external_exports.string()),
14940
+ lengthCm: nullableCentimeterSchema,
14941
+ widthCm: nullableCentimeterSchema,
14942
+ fixedHeightCm: nullableCentimeterSchema,
14943
+ minHeightCm: nullableCentimeterSchema,
14944
+ maxHeightCm: nullableCentimeterSchema,
14905
14945
  version: external_exports.number().int(),
14906
14946
  createdAt: timestampSchema,
14907
14947
  updatedAt: timestampSchema
@@ -14922,19 +14962,13 @@ var productSpecSummarySchema = external_exports.object({
14922
14962
  productSpecCode: productSpecCodeSchema,
14923
14963
  productId: internalIdSchema,
14924
14964
  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
14965
  netWeightKg: nullableKilogramSchema,
14934
14966
  categorySpec: external_exports.unknown().nullable(),
14935
14967
  categorySpecSchema: external_exports.string().nullable(),
14936
14968
  version: external_exports.number().int(),
14937
14969
  createdAt: timestampSchema,
14970
+ accessUrl: external_exports.string().url().optional(),
14971
+ accessExpiresAt: timestampSchema.optional(),
14938
14972
  updatedAt: timestampSchema,
14939
14973
  sealedSampleConclusion: sealedSampleConclusionSchema,
14940
14974
  packMappings: external_exports.array(external_exports.object({
@@ -14967,9 +15001,28 @@ var packSummarySchema = external_exports.object({
14967
15001
  createdAt: timestampSchema,
14968
15002
  updatedAt: timestampSchema
14969
15003
  }).strict();
15004
+ var productImageSchema = external_exports.object({
15005
+ id: external_exports.number().int(),
15006
+ fileVersionId: external_exports.number().int(),
15007
+ fileName: external_exports.string(),
15008
+ mediaType: external_exports.string(),
15009
+ sizeBytes: external_exports.number().int().nullable(),
15010
+ version: external_exports.number().int(),
15011
+ createdAt: timestampSchema,
15012
+ accessUrl: external_exports.string().url().optional(),
15013
+ accessExpiresAt: timestampSchema.optional()
15014
+ }).strict();
15015
+ var productImagesResponseSchema = external_exports.object({
15016
+ productCode: productCodeSchema,
15017
+ productVersion: external_exports.number().int(),
15018
+ images: external_exports.array(productImageSchema)
15019
+ }).strict();
15020
+ var productSearchSummarySchema = productSummarySchema.extend({
15021
+ 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")
15022
+ }).strict();
14970
15023
  var searchProductsResponseSchema = external_exports.object({
14971
15024
  query: external_exports.string(),
14972
- products: external_exports.array(productSummarySchema),
15025
+ products: external_exports.array(productSearchSummarySchema),
14973
15026
  productSpecs: external_exports.array(productSpecSummarySchema),
14974
15027
  packs: external_exports.array(packSummarySchema),
14975
15028
  supplierGroups: external_exports.array(external_exports.object({
@@ -15080,18 +15133,20 @@ var getPackOperation = defineReadOperation({
15080
15133
  });
15081
15134
  var initialProductSpecInputSchema = external_exports.object({
15082
15135
  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")
15136
+ netWeightKg: external_exports.number().finite().positive().nullable().optional().describe("\u51C0\u91CD\uFF0C\u5355\u4F4D kg\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15137
+ 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"),
15138
+ 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
15139
  }).strict();
15093
15140
  var createProductInputSchema = external_exports.object({
15094
15141
  name: external_exports.string().trim().min(1).max(255).describe("Product \u9762\u5411\u7528\u6237\u663E\u793A\u7684\u540D\u79F0\u3002"),
15142
+ brand: external_exports.enum(["intoNear", "intoNir"]).optional().describe("\u53D7\u63A7\u54C1\u724C\u679A\u4E3E\u3002"),
15143
+ color: external_exports.string().trim().min(1).max(120).optional().describe("\u989C\u8272\u63CF\u8FF0\u3002"),
15144
+ 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"),
15145
+ lengthCm: external_exports.number().finite().positive().nullable().optional(),
15146
+ widthCm: external_exports.number().finite().positive().nullable().optional(),
15147
+ fixedHeightCm: external_exports.number().finite().positive().nullable().optional(),
15148
+ minHeightCm: external_exports.number().finite().positive().nullable().optional(),
15149
+ maxHeightCm: external_exports.number().finite().positive().nullable().optional(),
15095
15150
  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
15151
  }).strict();
15097
15152
  var createProductResponseSchema = external_exports.object({ product: productSummarySchema, productSpec: productSpecRecordSchema }).strict();
@@ -15100,7 +15155,7 @@ var createProductOperation = defineWriteOperation({
15100
15155
  method: "POST",
15101
15156
  path: "/api/v1/products",
15102
15157
  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",
15158
+ 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
15159
  scope: "erp:write",
15105
15160
  agent: { exposed: true, readOnly: false, destructive: false, idempotent: false },
15106
15161
  request: { body: createProductInputSchema },
@@ -15108,16 +15163,18 @@ var createProductOperation = defineWriteOperation({
15108
15163
  cli: { path: ["products", "create"] }
15109
15164
  });
15110
15165
  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");
15166
+ var updateProductInputSchema = external_exports.object({
15167
+ name: external_exports.string().trim().min(1).max(255).optional(),
15168
+ brand: external_exports.enum(["intoNear", "intoNir"]).optional(),
15169
+ color: external_exports.string().trim().min(1).max(120).optional(),
15170
+ salesMarketCodes: external_exports.array(external_exports.enum(["\u7F8E\u56FD", "\u5370\u5EA6", "\u6B27\u76DF", "\u82F1\u56FD"])).min(1).max(4).optional(),
15171
+ lengthCm: external_exports.number().finite().positive().nullable().optional(),
15172
+ widthCm: external_exports.number().finite().positive().nullable().optional(),
15173
+ fixedHeightCm: external_exports.number().finite().positive().nullable().optional(),
15174
+ minHeightCm: external_exports.number().finite().positive().nullable().optional(),
15175
+ maxHeightCm: external_exports.number().finite().positive().nullable().optional()
15176
+ }).strict().refine(atLeastOneField, "\u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u53EF\u7F16\u8F91\u7684 Product \u5B57\u6BB5\u3002");
15112
15177
  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
15178
  netWeightKg: external_exports.number().finite().positive().nullable().optional().describe("\u51C0\u91CD\uFF0C\u5355\u4F4D kg\uFF1Bnull \u8868\u793A\u6E05\u7A7A\u3002"),
15122
15179
  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
15180
  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 +15219,61 @@ var deleteMappingResponseSchema = external_exports.object({
15162
15219
  productSpecCode: productSpecCodeSchema,
15163
15220
  packCode: packCodeSchema
15164
15221
  }).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"),
15222
+ var addProductImageResponseSchema = external_exports.object({
15223
+ productCode: productCodeSchema,
15224
+ productVersion: external_exports.number().int().positive(),
15225
+ image: productImageSchema,
15226
+ 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")
15227
+ }).strict();
15228
+ var userManualFileSchema = external_exports.object({
15229
+ id: external_exports.number().int().positive(),
15230
+ fileAssetId: external_exports.number().int().positive(),
15231
+ fileName: external_exports.string(),
15232
+ mediaType: external_exports.literal("application/pdf"),
15233
+ sizeBytes: external_exports.number().int().nullable(),
15234
+ version: external_exports.number().int().positive(),
15171
15235
  createdAt: timestampSchema
15172
15236
  }).strict();
15173
- var addProductSpecImageResponseSchema = external_exports.object({
15237
+ var userManualSchema = external_exports.object({
15238
+ manualCode: manualCodeSchema,
15239
+ name: external_exports.string(),
15240
+ version: external_exports.number().int().positive(),
15241
+ currentFile: userManualFileSchema.nullable()
15242
+ }).strict();
15243
+ var createUserManualInputSchema = external_exports.object({
15244
+ name: external_exports.string().trim().min(1).max(255).describe("UserManual \u7684\u663E\u793A\u540D\u79F0\u3002")
15245
+ }).strict();
15246
+ var productSpecUserManualsResponseSchema = external_exports.object({
15174
15247
  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")
15248
+ productSpecVersion: external_exports.number().int().positive(),
15249
+ manuals: external_exports.array(userManualSchema)
15177
15250
  }).strict();
15251
+ var getUserManualOperation = defineReadOperation({
15252
+ operationId: "getUserManual",
15253
+ method: "GET",
15254
+ path: "/api/v1/user-manuals/{manualCode}",
15255
+ summary: "\u6309 ManualCode \u8BFB\u53D6 UserManual",
15256
+ 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",
15257
+ scope: "erp:read",
15258
+ agentReadOnly: true,
15259
+ agent: { exposed: true, readOnly: true, destructive: false, idempotent: true },
15260
+ request: { path: external_exports.object({ manualCode: manualCodeSchema }).strict() },
15261
+ response: { data: userManualSchema },
15262
+ cli: { path: ["user-manuals", "get"] }
15263
+ });
15264
+ var listProductSpecUserManualsOperation = defineReadOperation({
15265
+ operationId: "listProductSpecUserManuals",
15266
+ method: "GET",
15267
+ path: "/api/v1/product-specs/{productSpecCode}/user-manuals",
15268
+ summary: "\u8BFB\u53D6 ProductSpec \u7684\u9002\u7528\u8BF4\u660E\u4E66",
15269
+ 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",
15270
+ scope: "erp:read",
15271
+ agentReadOnly: true,
15272
+ agent: { exposed: true, readOnly: true, destructive: false, idempotent: true },
15273
+ request: { path: productSpecPathSchema },
15274
+ response: { data: productSpecUserManualsResponseSchema },
15275
+ cli: { path: ["product-specs", "list-user-manuals"] }
15276
+ });
15178
15277
  var writeAgent = {
15179
15278
  exposed: true,
15180
15279
  readOnly: false,
@@ -15287,17 +15386,17 @@ var deleteProductSpecPackMappingOperation = defineWriteOperation({
15287
15386
  response: { data: deleteMappingResponseSchema },
15288
15387
  cli: { path: ["product-specs", "remove-pack"] }
15289
15388
  });
15290
- var addProductSpecImageOperation = defineWriteOperation({
15291
- operationId: "addProductSpecImage",
15389
+ var addProductImageOperation = defineWriteOperation({
15390
+ operationId: "addProductImage",
15292
15391
  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",
15392
+ path: "/api/v1/products/{productCode}/images/upload",
15393
+ summary: "\u4E3A Product \u4E0A\u4F20\u5E76\u5173\u8054\u4EA7\u54C1\u56FE\u7247",
15394
+ 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
15395
  scope: "erp:write",
15297
15396
  agent: { exposed: true, readOnly: false, destructive: false, idempotent: true },
15298
15397
  request: {
15299
- path: productSpecPathSchema,
15300
- headers: idempotencyKeyHeadersSchema,
15398
+ path: productPathSchema,
15399
+ headers: commandHeadersSchema,
15301
15400
  file: {
15302
15401
  parameterName: "file",
15303
15402
  maxSizeBytes: 50 * 1024 * 1024,
@@ -15306,15 +15405,80 @@ var addProductSpecImageOperation = defineWriteOperation({
15306
15405
  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
15406
  }
15308
15407
  },
15309
- response: { data: addProductSpecImageResponseSchema, status: 201 },
15310
- cli: { path: ["product-specs", "add-image"] }
15408
+ response: { data: addProductImageResponseSchema, status: 201 },
15409
+ cli: { path: ["products", "add-image"] }
15410
+ });
15411
+ var uploadUserManualOperation = defineWriteOperation({
15412
+ operationId: "uploadUserManual",
15413
+ method: "POST",
15414
+ path: "/api/v1/user-manuals/{manualCode}/upload",
15415
+ summary: "\u4E3A UserManual \u4E0A\u4F20\u5F53\u524D PDF",
15416
+ 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",
15417
+ scope: "erp:write",
15418
+ agent: { exposed: true, readOnly: false, destructive: false, idempotent: true },
15419
+ request: {
15420
+ path: external_exports.object({ manualCode: manualCodeSchema }).strict(),
15421
+ headers: commandHeadersSchema,
15422
+ file: {
15423
+ parameterName: "file",
15424
+ maxSizeBytes: 50 * 1024 * 1024,
15425
+ allowedMediaTypes: ["application/pdf"],
15426
+ allowedExtensions: ["pdf"],
15427
+ 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"
15428
+ }
15429
+ },
15430
+ response: { data: userManualSchema, status: 201 },
15431
+ cli: { path: ["user-manuals", "upload"] }
15432
+ });
15433
+ var createUserManualOperation = defineWriteOperation({
15434
+ operationId: "createUserManual",
15435
+ method: "POST",
15436
+ path: "/api/v1/user-manuals",
15437
+ summary: "\u521B\u5EFA UserManual",
15438
+ description: "\u521B\u5EFA\u53EF\u88AB\u591A\u4E2A ProductSpec \u590D\u7528\u7684\u72EC\u7ACB UserManual \u4E3B\u6570\u636E\uFF0C\u7CFB\u7EDF\u751F\u6210\u4E0D\u53EF\u53D8 MANUAL \u4E1A\u52A1\u7F16\u7801\u3002\u521B\u5EFA\u540E\u8FD4\u56DE version\uFF0C\u53EF\u7528\u4E8E\u4E0A\u4F20\u5F53\u524D PDF\uFF1B\u8BF4\u660E\u4E66\u6587\u4EF6\u5185\u5BB9\u91CD\u590D\u65F6\u5E94\u590D\u7528\u5DF2\u6709 ManualCode\u3002\u5199\u64CD\u4F5C\uFF0C\u8981\u6C42\u5F53\u524D\u5458\u5DE5\u6388\u6743 erp:write\u3002",
15439
+ scope: "erp:write",
15440
+ agent: writeAgent,
15441
+ request: { body: createUserManualInputSchema },
15442
+ response: { data: userManualSchema, status: 201 },
15443
+ cli: { path: ["user-manuals", "create"] }
15444
+ });
15445
+ var attachProductSpecUserManualOperation = defineWriteOperation({
15446
+ operationId: "attachProductSpecUserManual",
15447
+ method: "POST",
15448
+ path: "/api/v1/product-specs/{productSpecCode}/user-manuals",
15449
+ summary: "\u5173\u8054 ProductSpec \u4E0E UserManual",
15450
+ 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",
15451
+ scope: "erp:write",
15452
+ agent: writeAgent,
15453
+ request: {
15454
+ path: productSpecPathSchema,
15455
+ headers: expectedVersionHeadersSchema,
15456
+ body: external_exports.object({ manualCode: manualCodeSchema }).strict()
15457
+ },
15458
+ response: { data: productSpecUserManualsResponseSchema, status: 201 },
15459
+ cli: { path: ["product-specs", "add-user-manual"] }
15460
+ });
15461
+ var productSpecUserManualPathSchema = productSpecPathSchema.extend({ manualCode: manualCodeSchema }).strict();
15462
+ var detachProductSpecUserManualOperation = defineWriteOperation({
15463
+ operationId: "detachProductSpecUserManual",
15464
+ method: "DELETE",
15465
+ path: "/api/v1/product-specs/{productSpecCode}/user-manuals/{manualCode}",
15466
+ summary: "\u89E3\u7ED1 ProductSpec \u4E0E UserManual",
15467
+ 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",
15468
+ scope: "erp:write",
15469
+ agent: destructiveWriteAgent,
15470
+ request: {
15471
+ path: productSpecUserManualPathSchema,
15472
+ headers: expectedVersionHeadersSchema
15473
+ },
15474
+ response: { data: productSpecUserManualsResponseSchema },
15475
+ cli: { path: ["product-specs", "remove-user-manual"] }
15311
15476
  });
15312
15477
 
15313
15478
  // ../../packages/contracts/dist/work-lists/index.js
15314
15479
  var timestampSchema2 = external_exports.iso.datetime().describe("ISO 8601 UTC \u65F6\u95F4\u6233\u3002");
15315
15480
  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
15481
  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
15482
  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
15483
  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
15484
  var batchIdPathSchema = external_exports.object({ batchId: workListIdSchema }).strict();
@@ -15359,14 +15523,6 @@ var workListSpecContentSchema = external_exports.object({
15359
15523
  productId: productInternalIdSchema,
15360
15524
  productCode: productCodeSchema,
15361
15525
  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
15526
  netWeightKg: nullableKilogramSchema2,
15371
15527
  categorySpec: external_exports.unknown().nullable(),
15372
15528
  categorySpecSchema: external_exports.string().nullable(),
@@ -15441,7 +15597,7 @@ var getDevelopmentWorkListOperation = defineReadOperation({
15441
15597
  method: "GET",
15442
15598
  path: "/api/v1/dev-batches/{batchId}",
15443
15599
  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",
15600
+ 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
15601
  scope: "erp:read",
15446
15602
  agentReadOnly: true,
15447
15603
  agent: { exposed: true, readOnly: true, destructive: false, idempotent: true },
@@ -15467,15 +15623,12 @@ var scopeCommandBase = (type, payload) => external_exports.object({ type: extern
15467
15623
  var editableSpecFields = initialProductSpecInputSchema.omit({ specName: true });
15468
15624
  var developmentWorkListCommandSchema = external_exports.discriminatedUnion("type", [
15469
15625
  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()),
15626
+ scopeCommandBase("CREATE_PRODUCT", createProductInputSchema),
15474
15627
  scopeCommandBase("UPDATE_PRODUCT", external_exports.object({
15475
15628
  productCode: productCodeSchema,
15476
15629
  expectedVersion: external_exports.number().int().positive(),
15477
- name: external_exports.string().trim().min(1).max(255)
15478
- }).strict()),
15630
+ ...updateProductInputSchema.shape
15631
+ }).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
15632
  scopeCommandBase("ADD_PRODUCT_SPEC", initialProductSpecInputSchema.extend({ productCode: productCodeSchema, specName: external_exports.string().trim().min(1).max(255) }).strict()),
15480
15633
  scopeCommandBase("UPDATE_PRODUCT_SPEC", editableSpecFields.extend({
15481
15634
  productSpecCode: productSpecCodeSchema,
@@ -15558,12 +15711,18 @@ var erpReadOperations = [
15558
15711
  getProductOperation,
15559
15712
  getProductSpecOperation,
15560
15713
  getPackOperation,
15714
+ getUserManualOperation,
15715
+ listProductSpecUserManualsOperation,
15561
15716
  listDevelopmentWorkListsOperation,
15562
15717
  getDevelopmentWorkListOperation,
15563
15718
  listWorkListActivityOperation
15564
15719
  ];
15565
15720
  var erpWriteOperations = [
15566
- addProductSpecImageOperation,
15721
+ addProductImageOperation,
15722
+ createUserManualOperation,
15723
+ uploadUserManualOperation,
15724
+ attachProductSpecUserManualOperation,
15725
+ detachProductSpecUserManualOperation,
15567
15726
  createProductOperation,
15568
15727
  updateProductOperation,
15569
15728
  updateProductSpecOperation,
@@ -15634,6 +15793,7 @@ var searchProductMasterDataTool = {
15634
15793
  \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
15794
  \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
15795
 
15796
+ 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
15797
  \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
15798
  \u8BE5\u5DE5\u5177\u53EA\u8BFB\uFF0C\u4F7F\u7528\u5F53\u524D\u8C03\u7528\u8EAB\u4EFD\u5E76\u8981\u6C42 erp:read\u3002`,
15639
15799
  scope: "erp:read",
@@ -15648,7 +15808,7 @@ var getProductMasterDataTool = {
15648
15808
  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
15809
  \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
15810
 
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
15811
+ 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
15812
  \u8BE5\u5DE5\u5177\u53EA\u8BFB\uFF0C\u4F7F\u7528\u5F53\u524D\u8C03\u7528\u8EAB\u4EFD\u5E76\u8981\u6C42 erp:read\u3002`,
15653
15813
  scope: "erp:read",
15654
15814
  annotations: readOnlyAnnotations,
@@ -15657,6 +15817,14 @@ PR \u8FD4\u56DE Product \u53CA\u5176 ProductSpec\u3001Pack \u5173\u7CFB\uFF1BPS
15657
15817
  }).strict(),
15658
15818
  output: output(external_exports.union([getProductResponseSchema, getProductSpecResponseSchema, getPackResponseSchema]), true)
15659
15819
  };
15820
+ var getUserManualTool = {
15821
+ name: "get_user_manual",
15822
+ 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",
15823
+ scope: "erp:read",
15824
+ annotations: readOnlyAnnotations,
15825
+ input: getUserManualOperation.request.path,
15826
+ output: output(userManualSchema, true)
15827
+ };
15660
15828
  var listDevelopmentWorkListsTool = {
15661
15829
  name: "list_development_work_lists",
15662
15830
  description: `\u6309\u66F4\u65B0\u65F6\u95F4\u4ECE\u65B0\u5230\u65E7\u5206\u9875\u67E5\u8BE2 DevelopmentWorkList\uFF08\u5B9E\u73B0\u540D DevBatch\uFF09\u3002
@@ -15728,27 +15896,46 @@ var chatGptFileInputSchema = external_exports.object({
15728
15896
  mime_type: external_exports.string().trim().min(1).max(255).optional().describe("\u5BA2\u6237\u7AEF\u58F0\u660E\u7684 MIME \u7C7B\u578B\u3002"),
15729
15897
  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
15898
  }).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
15899
+ var addProductImageTool = {
15900
+ name: "add_product_image",
15901
+ description: `\u4E3A\u4E00\u4E2A Product \u4E0A\u4F20\u5E76\u5173\u8054\u4E00\u5F20\u4EA7\u54C1\u56FE\u7247\u3002
15734
15902
 
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
15903
+ \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
15904
+ \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
15905
 
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`,
15906
+ \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
15907
  scope: "erp:write",
15740
15908
  annotations: { ...writeAnnotations, idempotentHint: true },
15741
15909
  meta: { "openai/fileParams": ["file"] },
15742
15910
  input: external_exports.object({
15743
- productSpecCode: productSpecCodeSchema,
15911
+ productCode: productCodeSchema,
15912
+ expectedVersion: expectedVersionInputSchema,
15913
+ idempotencyKey: idempotencyKeyInputSchema,
15914
+ file: chatGptFileInputSchema
15915
+ }).strict(),
15916
+ output: output(addProductImageResponseSchema, false)
15917
+ };
15918
+ var uploadUserManualTool = {
15919
+ name: "upload_user_manual",
15920
+ description: `\u4E3A\u4E00\u4E2A UserManual \u4E0A\u4F20\u5E76\u8BBE\u7F6E\u5F53\u524D PDF \u6587\u4EF6\u3002
15921
+
15922
+ \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
15923
+
15924
+ \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`,
15925
+ scope: "erp:write",
15926
+ annotations: { ...writeAnnotations, idempotentHint: true },
15927
+ meta: { "openai/fileParams": ["file"] },
15928
+ input: external_exports.object({
15929
+ manualCode: uploadUserManualOperation.request.path.shape.manualCode,
15930
+ expectedVersion: expectedVersionInputSchema,
15744
15931
  idempotencyKey: idempotencyKeyInputSchema,
15745
15932
  file: chatGptFileInputSchema
15746
15933
  }).strict(),
15747
- output: output(addProductSpecImageResponseSchema, false)
15934
+ output: output(userManualSchema, false)
15748
15935
  };
15749
15936
  var createProductTool = {
15750
15937
  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",
15938
+ 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
15939
  scope: "erp:write",
15753
15940
  annotations: writeAnnotations,
15754
15941
  input: createProductInputSchema,
@@ -16192,6 +16379,7 @@ async function createMultipartBody(values, file2) {
16192
16379
  return body;
16193
16380
  }
16194
16381
  function mediaTypeForExtension(extension) {
16382
+ if (extension === "pdf") return "application/pdf";
16195
16383
  if (extension === "jpg" || extension === "jpeg") return "image/jpeg";
16196
16384
  if (extension === "png") return "image/png";
16197
16385
  if (extension === "webp") return "image/webp";
@@ -16731,7 +16919,7 @@ function createCredentialStore(path = defaultCredentialPath(), options = {}) {
16731
16919
  // package.json
16732
16920
  var package_default = {
16733
16921
  name: "intonear-erp-cli",
16734
- version: "0.2.2",
16922
+ version: "0.2.5",
16735
16923
  description: "intoNear ERP \u6E10\u8FDB\u5F0F\u8BFB\u5199\u547D\u4EE4\u884C\u5BA2\u6237\u7AEF",
16736
16924
  type: "module",
16737
16925
  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.5",
4
4
  "description": "intoNear ERP 渐进式读写命令行客户端",
5
5
  "type": "module",
6
6
  "bin": {