@optima-chat/commerce-cli 1.13.0 → 1.14.0

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 (32) hide show
  1. package/.claude/skills/commerce-review/SKILL.md +57 -0
  2. package/dist/api/rest/commerce.d.ts +46 -1
  3. package/dist/api/rest/commerce.d.ts.map +1 -1
  4. package/dist/api/rest/commerce.js +21 -0
  5. package/dist/api/rest/commerce.js.map +1 -1
  6. package/dist/commands/homepage/create-banner.d.ts.map +1 -1
  7. package/dist/commands/homepage/create-banner.js +11 -6
  8. package/dist/commands/homepage/create-banner.js.map +1 -1
  9. package/dist/commands/homepage/index.d.ts.map +1 -1
  10. package/dist/commands/homepage/index.js +2 -0
  11. package/dist/commands/homepage/index.js.map +1 -1
  12. package/dist/commands/homepage/patch-banner-image.d.ts +3 -0
  13. package/dist/commands/homepage/patch-banner-image.d.ts.map +1 -0
  14. package/dist/commands/homepage/patch-banner-image.js +142 -0
  15. package/dist/commands/homepage/patch-banner-image.js.map +1 -0
  16. package/dist/commands/homepage/update-images.js +12 -7
  17. package/dist/commands/homepage/update-images.js.map +1 -1
  18. package/dist/commands/review/create.d.ts +3 -0
  19. package/dist/commands/review/create.d.ts.map +1 -0
  20. package/dist/commands/review/create.js +125 -0
  21. package/dist/commands/review/create.js.map +1 -0
  22. package/dist/commands/review/generate.d.ts +3 -0
  23. package/dist/commands/review/generate.d.ts.map +1 -0
  24. package/dist/commands/review/generate.js +134 -0
  25. package/dist/commands/review/generate.js.map +1 -0
  26. package/dist/commands/review/index.d.ts.map +1 -1
  27. package/dist/commands/review/index.js +4 -0
  28. package/dist/commands/review/index.js.map +1 -1
  29. package/dist/commands/review/list.d.ts.map +1 -1
  30. package/dist/commands/review/list.js +6 -0
  31. package/dist/commands/review/list.js.map +1 -1
  32. package/package.json +1 -1
@@ -0,0 +1,142 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { commerceApi } from '../../api/rest/commerce.js';
4
+ import { handleError, createApiError, ValidationError } from '../../utils/error.js';
5
+ import { output } from '../../utils/output.js';
6
+ import { addEnhancedHelp } from '../../utils/helpText.js';
7
+ const cmd = new Command('patch-banner-image')
8
+ .description('Update a single banner image by index')
9
+ .option('--id <id>', 'Section ID (required)')
10
+ .option('--index <number>', 'Image index, 1-based (required)')
11
+ .option('--url <url>', 'New desktop image URL (HTTPS)')
12
+ .option('--mobile-url <url>', 'New mobile image URL (HTTPS)')
13
+ .option('--remove-mobile-url', 'Remove mobile image')
14
+ .option('--alt <text>', 'Image alt text')
15
+ .option('--action-type <type>', 'Click action type (none|collection|product|url|section)')
16
+ .option('--action-value <value>', 'Action target (slug or URL)')
17
+ .action(async (options) => {
18
+ try {
19
+ await patchImage(options);
20
+ }
21
+ catch (error) {
22
+ handleError(error);
23
+ }
24
+ });
25
+ addEnhancedHelp(cmd, {
26
+ examples: [
27
+ '# Add mobile image to the 1st banner',
28
+ '$ commerce homepage patch-banner-image --id section-123 --index 1 --mobile-url "https://cdn.../mobile.jpg"',
29
+ '',
30
+ '# Update alt text of the 2nd image',
31
+ '$ commerce homepage patch-banner-image --id section-123 --index 2 --alt "New description"',
32
+ '',
33
+ '# Change click action of the 3rd image',
34
+ '$ commerce homepage patch-banner-image --id section-123 --index 3 --action-type collection --action-value summer-sale',
35
+ '',
36
+ '# Remove mobile image from the 1st banner',
37
+ '$ commerce homepage patch-banner-image --id section-123 --index 1 --remove-mobile-url',
38
+ '',
39
+ '# Replace desktop image',
40
+ '$ commerce homepage patch-banner-image --id section-123 --index 1 --url "https://cdn.../new-banner.jpg"',
41
+ ],
42
+ output: {
43
+ example: JSON.stringify({
44
+ success: true,
45
+ data: {
46
+ id: 'section-123',
47
+ type: 'banner',
48
+ title: 'Main Banner',
49
+ settings: {
50
+ images: [
51
+ {
52
+ media_id: 'media-abc',
53
+ mobile_media_id: 'media-def',
54
+ alt: 'Updated Banner',
55
+ action_type: 'none',
56
+ action_value: null,
57
+ },
58
+ ],
59
+ autoplay: true,
60
+ },
61
+ },
62
+ message: 'Banner 图片更新成功',
63
+ }, null, 2),
64
+ },
65
+ relatedCommands: [
66
+ { command: 'homepage get', description: 'View current images and indexes' },
67
+ { command: 'homepage update-images', description: 'Replace all images at once' },
68
+ { command: 'upload image', description: 'Upload images first' },
69
+ ],
70
+ notes: [
71
+ 'This command is only for banner type sections',
72
+ 'Index is 1-based (first image = 1)',
73
+ 'Only provided fields are updated, others remain unchanged',
74
+ 'Use --remove-mobile-url to remove the mobile image',
75
+ 'URLs must use HTTPS protocol',
76
+ 'For adding/removing images or reordering, use update-images instead',
77
+ ],
78
+ });
79
+ export const patchBannerImageCommand = cmd;
80
+ async function patchImage(options) {
81
+ if (!options.id || options.id.trim().length === 0) {
82
+ throw new ValidationError('缺少必需参数: --id (区块ID)', 'id');
83
+ }
84
+ if (!options.index) {
85
+ throw new ValidationError('缺少必需参数: --index (图片序号,从 1 开始)', 'index');
86
+ }
87
+ const imageIndex = parseInt(options.index, 10);
88
+ if (isNaN(imageIndex) || imageIndex < 1) {
89
+ throw new ValidationError('--index 必须是大于 0 的整数', 'index');
90
+ }
91
+ // Build patch object - only include provided fields
92
+ const patch = {};
93
+ if (options.url) {
94
+ patch.url = options.url;
95
+ }
96
+ if (options.removeMobileUrl) {
97
+ patch.mobile_url = null;
98
+ }
99
+ else if (options.mobileUrl) {
100
+ patch.mobile_url = options.mobileUrl;
101
+ }
102
+ if (options.alt) {
103
+ patch.alt = options.alt;
104
+ }
105
+ if (options.actionType) {
106
+ patch.action_type = options.actionType;
107
+ }
108
+ if (options.actionValue !== undefined) {
109
+ patch.action_value = options.actionValue || null;
110
+ }
111
+ // Validate at least one field
112
+ if (Object.keys(patch).length === 0) {
113
+ throw new ValidationError('至少需要提供一个要更新的字段 (--url, --mobile-url, --alt, --action-type, --action-value, --remove-mobile-url)', 'patch');
114
+ }
115
+ const spinner = output.spinner(`正在更新第 ${imageIndex} 张 Banner 图片...`);
116
+ try {
117
+ const result = await commerceApi.homepage.settings.patchImage(options.id, imageIndex, patch);
118
+ spinner.succeed(`第 ${imageIndex} 张 Banner 图片更新成功!`);
119
+ if (output.isJson()) {
120
+ output.success(result, 'Banner 图片更新成功');
121
+ }
122
+ else {
123
+ console.log();
124
+ console.log(chalk.green(`✓ 第 ${imageIndex} 张 Banner 图片更新成功!`));
125
+ console.log();
126
+ console.log(chalk.gray('区块ID: ') + chalk.cyan(result.id));
127
+ console.log(chalk.gray('标题: ') + chalk.white(result.title));
128
+ console.log();
129
+ console.log(chalk.gray('已更新字段:'));
130
+ for (const [key, value] of Object.entries(patch)) {
131
+ const displayValue = value === null ? chalk.yellow('(已移除)') : chalk.white(String(value));
132
+ console.log(chalk.cyan(` ${key}: `) + displayValue);
133
+ }
134
+ console.log();
135
+ }
136
+ }
137
+ catch (error) {
138
+ spinner.fail(`更新第 ${imageIndex} 张 Banner 图片失败`);
139
+ throw createApiError(error);
140
+ }
141
+ }
142
+ //# sourceMappingURL=patch-banner-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-banner-image.js","sourceRoot":"","sources":["../../../src/commands/homepage/patch-banner-image.ts"],"names":[],"mappings":"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"}
@@ -56,9 +56,9 @@ addEnhancedHelp(cmd, {
56
56
  ],
57
57
  notes: [
58
58
  'This command is only for banner type sections',
59
- 'Images array must contain: url (required), alt (required, min 1 char)',
60
- 'Optional fields: action_type (none/link/product), action_value (URL or product ID)',
61
- 'Upload images first using: optima upload image --path ./image.jpg',
59
+ 'Images array must contain: url or media_id (at least one), alt (required, min 1 char)',
60
+ 'Optional fields: mobile_url, mobile_media_id, action_type, action_value',
61
+ 'Use media_id for existing images (from homepage get), url for new images',
62
62
  ],
63
63
  });
64
64
  export const updateImagesCommand = cmd;
@@ -85,15 +85,19 @@ async function updateImages(options) {
85
85
  }
86
86
  // 验证每个图片对象并补充默认值
87
87
  const validatedImages = images.map((img, index) => {
88
- if (!img.url || typeof img.url !== 'string' || img.url.trim().length === 0) {
89
- throw new ValidationError(`图片 ${index + 1} 缺少必需字段: url`, 'images');
88
+ const hasUrl = img.url && typeof img.url === 'string' && img.url.trim().length > 0;
89
+ const hasMediaId = img.media_id && typeof img.media_id === 'string' && img.media_id.trim().length > 0;
90
+ if (!hasUrl && !hasMediaId) {
91
+ throw new ValidationError(`图片 ${index + 1} 缺少必需字段: url 或 media_id (至少提供一个)`, 'images');
90
92
  }
91
93
  if (!img.alt || typeof img.alt !== 'string' || img.alt.trim().length === 0) {
92
94
  throw new ValidationError(`图片 ${index + 1} 缺少必需字段: alt (至少 1 个字符)`, 'images');
93
95
  }
94
96
  return {
95
- url: img.url.trim(),
97
+ ...(img.url && { url: img.url.trim() }),
98
+ ...(img.media_id && { media_id: img.media_id.trim() }),
96
99
  ...(img.mobile_url && { mobile_url: img.mobile_url.trim() }),
100
+ ...(img.mobile_media_id && { mobile_media_id: img.mobile_media_id.trim() }),
97
101
  alt: img.alt.trim(),
98
102
  action_type: img.action_type || 'none',
99
103
  action_value: img.action_value || null,
@@ -116,7 +120,8 @@ async function updateImages(options) {
116
120
  console.log();
117
121
  console.log(chalk.gray('图片列表:'));
118
122
  validatedImages.forEach((img, index) => {
119
- console.log(chalk.cyan(` ${index + 1}. `) + chalk.white(img.url));
123
+ const source = img.url || `media_id:${img.media_id}`;
124
+ console.log(chalk.cyan(` ${index + 1}. `) + chalk.white(source));
120
125
  console.log(chalk.gray(` Alt: ${img.alt}, Action: ${img.action_type}`));
121
126
  });
122
127
  console.log();
@@ -1 +1 @@
1
- {"version":3,"file":"update-images.js","sourceRoot":"","sources":["../../../src/commands/homepage/update-images.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-images.js","sourceRoot":"","sources":["../../../src/commands/homepage/update-images.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const createReviewCommand: Command;
3
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/review/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0EpC,eAAO,MAAM,mBAAmB,SAAM,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { commerceApi } from '../../api/rest/commerce.js';
4
+ import { handleError, createApiError, ValidationError } from '../../utils/error.js';
5
+ import { output } from '../../utils/output.js';
6
+ import { addEnhancedHelp } from '../../utils/helpText.js';
7
+ import { isInteractiveEnvironment, requireParam, requireNumberParam } from '../../utils/interactive.js';
8
+ const cmd = new Command('create')
9
+ .description('Create a review for a product')
10
+ .option('--product-id <uuid>', 'Product ID (required)')
11
+ .option('--rating <number>', 'Rating 1-5 (required)')
12
+ .option('--title <text>', 'Review title')
13
+ .option('--content <text>', 'Review content')
14
+ .option('--customer-name <name>', 'Customer display name')
15
+ .option('--ai-generated', 'Mark as AI-generated')
16
+ .option('--language <code>', 'Language code (e.g. en, zh)')
17
+ .action(async (options) => {
18
+ try {
19
+ await createReview(options);
20
+ }
21
+ catch (error) {
22
+ handleError(error);
23
+ }
24
+ });
25
+ addEnhancedHelp(cmd, {
26
+ examples: [
27
+ '# Create a simple review',
28
+ '$ commerce review create --product-id abc-123 --rating 5 --title "Great!" --content "Love it"',
29
+ '',
30
+ '# Create an AI-generated review',
31
+ '$ commerce review create --product-id abc-123 --rating 4 --title "Good quality" --content "Nice product" --customer-name "John" --ai-generated',
32
+ '',
33
+ '# Create with language code',
34
+ '$ commerce review create --product-id abc-123 --rating 5 --content "Very good" --language en',
35
+ ],
36
+ output: {
37
+ example: JSON.stringify({
38
+ success: true,
39
+ data: {
40
+ id: 'review-uuid',
41
+ product_id: 'product-uuid',
42
+ rating: 5,
43
+ title: 'Great!',
44
+ content: 'Love it',
45
+ is_ai_generated: true,
46
+ moderation_status: 'approved',
47
+ created_at: '2026-02-25T10:00:00Z',
48
+ },
49
+ message: 'Review created',
50
+ }, null, 2),
51
+ },
52
+ relatedCommands: [
53
+ { command: 'review generate', description: 'Batch generate reviews' },
54
+ { command: 'review list', description: 'List reviews' },
55
+ { command: 'review list --ai-generated', description: 'List AI-generated reviews' },
56
+ ],
57
+ notes: [
58
+ 'Rating must be between 1 and 5',
59
+ 'AI-generated reviews are automatically approved',
60
+ 'Use "review generate" for batch creation with time spreading',
61
+ ],
62
+ });
63
+ export const createReviewCommand = cmd;
64
+ async function createReview(options) {
65
+ const productId = isInteractiveEnvironment()
66
+ ? (options.productId?.trim() || (() => { throw new ValidationError('Product ID is required', 'product-id'); })())
67
+ : requireParam(options.productId, 'product-id', 'Product ID');
68
+ const rating = isInteractiveEnvironment()
69
+ ? (() => {
70
+ if (!options.rating)
71
+ throw new ValidationError('Rating is required (1-5)', 'rating');
72
+ const n = parseInt(options.rating, 10);
73
+ if (isNaN(n) || n < 1 || n > 5)
74
+ throw new ValidationError('Rating must be between 1 and 5', 'rating');
75
+ return n;
76
+ })()
77
+ : requireNumberParam(options.rating, 'rating', 'Rating (1-5)', 1, 5);
78
+ const data = {
79
+ product_id: productId,
80
+ rating,
81
+ };
82
+ if (options.title)
83
+ data.title = options.title;
84
+ if (options.content)
85
+ data.content = options.content;
86
+ if (options.customerName)
87
+ data.customer_name = options.customerName;
88
+ if (options.aiGenerated)
89
+ data.is_ai_generated = true;
90
+ if (options.language)
91
+ data.language_code = options.language;
92
+ const spinner = output.spinner('Creating review...');
93
+ try {
94
+ const review = await commerceApi.reviews.create(data);
95
+ spinner.succeed('Review created');
96
+ if (output.isJson()) {
97
+ output.success({
98
+ id: review.id,
99
+ product_id: review.product_id,
100
+ rating: review.rating,
101
+ title: review.title,
102
+ content: review.content,
103
+ is_ai_generated: review.is_ai_generated,
104
+ moderation_status: review.moderation_status,
105
+ created_at: review.created_at,
106
+ }, 'Review created');
107
+ }
108
+ else {
109
+ console.log();
110
+ console.log(chalk.green('Review created successfully'));
111
+ console.log(chalk.gray('Review ID: ') + chalk.white(review.id));
112
+ console.log(chalk.gray('Rating: ') + chalk.yellow('★'.repeat(review.rating) + '☆'.repeat(5 - review.rating)));
113
+ console.log(chalk.gray('Status: ') + chalk.white(review.moderation_status));
114
+ if (review.is_ai_generated) {
115
+ console.log(chalk.gray('AI Generated: ') + chalk.cyan('Yes'));
116
+ }
117
+ console.log();
118
+ }
119
+ }
120
+ catch (error) {
121
+ spinner.fail('Failed to create review');
122
+ throw createApiError(error);
123
+ }
124
+ }
125
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/review/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const generateReviewCommand: Command;
3
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/commands/review/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoFpC,eAAO,MAAM,qBAAqB,SAAM,CAAC"}
@@ -0,0 +1,134 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { commerceApi } from '../../api/rest/commerce.js';
4
+ import { handleError, createApiError, ValidationError } from '../../utils/error.js';
5
+ import { output } from '../../utils/output.js';
6
+ import { addEnhancedHelp } from '../../utils/helpText.js';
7
+ import { isInteractiveEnvironment, requireParam } from '../../utils/interactive.js';
8
+ const cmd = new Command('generate')
9
+ .description('Batch generate reviews for a product')
10
+ .option('--product-id <uuid>', 'Product ID (required)')
11
+ .option('--reviews <json>', 'Reviews JSON array (required)')
12
+ .option('--spread-days <number>', 'Spread created_at over past N days (default: 30)', '30')
13
+ .option('--no-ai-generated', 'Do not mark as AI-generated (default: mark as AI-generated)')
14
+ .option('--language <code>', 'Language code (e.g. en, zh)')
15
+ .action(async (options) => {
16
+ try {
17
+ await generateReviews(options);
18
+ }
19
+ catch (error) {
20
+ handleError(error);
21
+ }
22
+ });
23
+ addEnhancedHelp(cmd, {
24
+ examples: [
25
+ '# Generate reviews for a product',
26
+ '$ commerce review generate --product-id abc-123 --reviews \'[{"rating":5,"title":"Great","content":"Love it","customer_name":"John"},{"rating":4,"title":"Good","content":"Nice","customer_name":"Jane"}]\'',
27
+ '',
28
+ '# Spread over 60 days',
29
+ '$ commerce review generate --product-id abc-123 --spread-days 60 --reviews \'[{"rating":5,"content":"Amazing"}]\'',
30
+ '',
31
+ '# Generate without AI-generated flag',
32
+ '$ commerce review generate --product-id abc-123 --no-ai-generated --reviews \'[{"rating":5,"content":"Great"}]\'',
33
+ ],
34
+ output: {
35
+ example: JSON.stringify({
36
+ success: true,
37
+ data: {
38
+ success: true,
39
+ created_count: 2,
40
+ reviews: [
41
+ {
42
+ id: 'review-uuid-1',
43
+ rating: 5,
44
+ title: 'Great',
45
+ is_ai_generated: true,
46
+ moderation_status: 'approved',
47
+ created_at: '2026-01-28T14:30:00Z',
48
+ },
49
+ {
50
+ id: 'review-uuid-2',
51
+ rating: 4,
52
+ title: 'Good',
53
+ is_ai_generated: true,
54
+ moderation_status: 'approved',
55
+ created_at: '2026-02-10T09:15:00Z',
56
+ },
57
+ ],
58
+ },
59
+ message: 'Generated 2 reviews',
60
+ }, null, 2),
61
+ },
62
+ relatedCommands: [
63
+ { command: 'review create', description: 'Create a single review' },
64
+ { command: 'review list --ai-generated', description: 'List AI-generated reviews' },
65
+ { command: 'review stats', description: 'View review statistics' },
66
+ ],
67
+ notes: [
68
+ 'Each review in the JSON array needs at least a "rating" field (1-5)',
69
+ 'Optional fields: "title", "content", "customer_name"',
70
+ 'Maximum 20 reviews per batch',
71
+ 'Reviews are spread over --spread-days (default 30), never earlier than product creation',
72
+ 'AI-generated reviews are automatically approved',
73
+ ],
74
+ });
75
+ export const generateReviewCommand = cmd;
76
+ async function generateReviews(options) {
77
+ const productId = isInteractiveEnvironment()
78
+ ? (options.productId?.trim() || (() => { throw new ValidationError('Product ID is required', 'product-id'); })())
79
+ : requireParam(options.productId, 'product-id', 'Product ID');
80
+ const reviewsJson = isInteractiveEnvironment()
81
+ ? (options.reviews?.trim() || (() => { throw new ValidationError('Reviews JSON is required', 'reviews'); })())
82
+ : requireParam(options.reviews, 'reviews', 'Reviews JSON array');
83
+ let reviewItems;
84
+ try {
85
+ reviewItems = JSON.parse(reviewsJson);
86
+ }
87
+ catch {
88
+ throw new ValidationError('Invalid JSON for --reviews. Expected a JSON array, e.g.: \'[{"rating":5,"title":"Great","content":"Love it","customer_name":"John"}]\'', 'reviews');
89
+ }
90
+ if (!Array.isArray(reviewItems) || reviewItems.length === 0) {
91
+ throw new ValidationError('The --reviews parameter must be a non-empty JSON array', 'reviews');
92
+ }
93
+ const spreadDays = parseInt(options.spreadDays || '30', 10);
94
+ if (isNaN(spreadDays) || spreadDays < 1) {
95
+ throw new ValidationError('--spread-days must be a positive integer', 'spread-days');
96
+ }
97
+ const data = {
98
+ product_id: productId,
99
+ reviews: reviewItems,
100
+ spread_days: spreadDays,
101
+ };
102
+ // --no-ai-generated sets options.aiGenerated to false (Commander convention)
103
+ // Default behavior (no flag) means aiGenerated is true for generate command
104
+ if (options.aiGenerated === false) {
105
+ data.is_ai_generated = false;
106
+ }
107
+ if (options.language)
108
+ data.language_code = options.language;
109
+ const spinner = output.spinner(`Generating ${reviewItems.length} reviews...`);
110
+ try {
111
+ const result = await commerceApi.reviews.generate(data);
112
+ spinner.succeed(`Generated ${result.created_count} reviews`);
113
+ if (output.isJson()) {
114
+ output.success(result, `Generated ${result.created_count} reviews`);
115
+ }
116
+ else {
117
+ console.log();
118
+ console.log(chalk.green(`Successfully generated ${result.created_count} reviews`));
119
+ console.log(chalk.gray(`Spread over past ${spreadDays} days`));
120
+ console.log();
121
+ for (const review of result.reviews) {
122
+ const stars = chalk.yellow('★'.repeat(review.rating) + '☆'.repeat(5 - review.rating));
123
+ const title = review.title ? chalk.white(review.title) : chalk.gray('(no title)');
124
+ console.log(` ${stars} ${title} ${chalk.gray(review.id)}`);
125
+ }
126
+ console.log();
127
+ }
128
+ }
129
+ catch (error) {
130
+ spinner.fail('Failed to generate reviews');
131
+ throw createApiError(error);
132
+ }
133
+ }
134
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/review/generate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,aAAa,SAeU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,aAAa,SAiBU,CAAC"}
@@ -6,6 +6,8 @@ import { approveCommand } from './approve.js';
6
6
  import { rejectCommand } from './reject.js';
7
7
  import { featureCommand } from './feature.js';
8
8
  import { respondCommand } from './respond.js';
9
+ import { createReviewCommand } from './create.js';
10
+ import { generateReviewCommand } from './generate.js';
9
11
  import { deleteResponseCommand } from './delete-response.js';
10
12
  import { deleteReviewCommand } from './delete.js';
11
13
  import { batchCommand } from './batch.js';
@@ -22,6 +24,8 @@ export const reviewCommand = new Command('review')
22
24
  .addCommand(rejectCommand)
23
25
  .addCommand(featureCommand)
24
26
  .addCommand(respondCommand)
27
+ .addCommand(createReviewCommand)
28
+ .addCommand(generateReviewCommand)
25
29
  .addCommand(deleteResponseCommand)
26
30
  .addCommand(deleteReviewCommand)
27
31
  .addCommand(batchCommand)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,mBAAmB,CAAC;KAChC,UAAU,CAAC,kBAAkB,CAAC;KAC9B,UAAU,CAAC,gBAAgB,CAAC;KAC5B,UAAU,CAAC,YAAY,CAAC;KACxB,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,aAAa,CAAC;KACzB,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,qBAAqB,CAAC;KACjC,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,YAAY,CAAC;KACxB,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,kBAAkB,CAAC;KAC9B,UAAU,CAAC,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/review/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,mBAAmB,CAAC;KAChC,UAAU,CAAC,kBAAkB,CAAC;KAC9B,UAAU,CAAC,gBAAgB,CAAC;KAC5B,UAAU,CAAC,YAAY,CAAC;KACxB,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,aAAa,CAAC;KACzB,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,qBAAqB,CAAC;KACjC,UAAU,CAAC,qBAAqB,CAAC;KACjC,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,YAAY,CAAC;KACxB,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,kBAAkB,CAAC;KAC9B,UAAU,CAAC,qBAAqB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/review/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAuG5C,eAAO,MAAM,kBAAkB,SAAM,CAAC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/review/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA4G5C,eAAO,MAAM,kBAAkB,SAAM,CAAC"}
@@ -15,6 +15,7 @@ const cmd = new Command('list')
15
15
  .option('--has-reply', 'Only show reviews with merchant reply')
16
16
  .option('--featured', 'Only show featured reviews')
17
17
  .option('--verified', 'Only show verified purchase reviews')
18
+ .option('--ai-generated', 'Only show AI-generated reviews')
18
19
  .addOption(new Option('--sort-by <sort>', 'Sort order')
19
20
  .choices(['newest', 'oldest', 'highest_rating', 'lowest_rating', 'most_helpful'])
20
21
  .default('newest'))
@@ -44,6 +45,9 @@ addEnhancedHelp(cmd, {
44
45
  '',
45
46
  '# Sort by helpfulness',
46
47
  '$ commerce review list --sort-by most_helpful',
48
+ '',
49
+ '# Show only AI-generated reviews',
50
+ '$ commerce review list --ai-generated',
47
51
  ],
48
52
  output: {
49
53
  example: JSON.stringify({
@@ -104,6 +108,8 @@ async function listReviews(options) {
104
108
  params.featured = true;
105
109
  if (options.verified)
106
110
  params.verified = true;
111
+ if (options.aiGenerated)
112
+ params.is_ai_generated = true;
107
113
  if (options.sortBy)
108
114
  params.sort_by = options.sortBy;
109
115
  const result = await commerceApi.reviews.list(params);
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/review/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/review/list.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/commerce-cli",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "用自然语言管理电商店铺 - 专为 Claude Code 设计的对话式 CLI 工具,支持多环境和功能测试",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",