@optima-chat/bi-cli 0.3.4 → 0.3.6
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.
- package/README.md +136 -52
- package/dist/commands/analytics.d.ts.map +1 -1
- package/dist/commands/analytics.js +89 -14
- package/dist/commands/analytics.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +14 -6
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/product.d.ts.map +1 -1
- package/dist/commands/product.js +77 -13
- package/dist/commands/product.js.map +1 -1
- package/dist/commands/sales.d.ts.map +1 -1
- package/dist/commands/sales.js +24 -4
- package/dist/commands/sales.js.map +1 -1
- package/dist/commands/traffic.d.ts.map +1 -1
- package/dist/commands/traffic.js +110 -22
- package/dist/commands/traffic.js.map +1 -1
- package/dist/commands/trends.d.ts.map +1 -1
- package/dist/commands/trends.js +80 -13
- package/dist/commands/trends.js.map +1 -1
- package/dist/index.js +19 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/analytics.ts +98 -17
- package/src/commands/auth.ts +18 -6
- package/src/commands/product.ts +87 -13
- package/src/commands/sales.ts +28 -4
- package/src/commands/traffic.ts +122 -22
- package/src/commands/trends.ts +90 -13
- package/src/index.ts +21 -9
package/README.md
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# @optima-chat/bi-cli
|
|
2
2
|
|
|
3
|
-
Optima BI CLI -
|
|
3
|
+
Optima BI CLI - E-commerce business intelligence tool designed for LLM agents.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **LLM-Friendly**: Detailed help messages with JSON schemas and examples
|
|
8
|
+
- **JSON Output**: All commands output JSON by default for programmatic parsing
|
|
9
|
+
- **Pretty Tables**: Use `--pretty` flag for human-readable table format
|
|
10
|
+
- **Unified Auth**: Shared authentication with `commerce-cli` and `optima-agent`
|
|
4
11
|
|
|
5
12
|
## Installation
|
|
6
13
|
|
|
@@ -8,9 +15,26 @@ Optima BI CLI - AI-friendly business intelligence tool for e-commerce analytics.
|
|
|
8
15
|
npm install -g @optima-chat/bi-cli
|
|
9
16
|
```
|
|
10
17
|
|
|
11
|
-
##
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Login first (required)
|
|
22
|
+
bi-cli auth login
|
|
23
|
+
|
|
24
|
+
# Get sales data
|
|
25
|
+
bi-cli sales get --days 7
|
|
26
|
+
|
|
27
|
+
# Top selling products
|
|
28
|
+
bi-cli product best-sellers --limit 10
|
|
12
29
|
|
|
13
|
-
|
|
30
|
+
# Revenue trends
|
|
31
|
+
bi-cli trends revenue --days 30
|
|
32
|
+
|
|
33
|
+
# Compare with previous period
|
|
34
|
+
bi-cli analytics compare --days 7
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Authentication
|
|
14
38
|
|
|
15
39
|
### Login
|
|
16
40
|
|
|
@@ -28,14 +52,9 @@ bi-cli auth login --env development
|
|
|
28
52
|
### Check Status
|
|
29
53
|
|
|
30
54
|
```bash
|
|
31
|
-
# Show current user
|
|
32
|
-
bi-cli auth
|
|
33
|
-
|
|
34
|
-
# Show authentication status
|
|
35
|
-
bi-cli auth status
|
|
36
|
-
|
|
37
|
-
# Logout
|
|
38
|
-
bi-cli auth logout
|
|
55
|
+
bi-cli auth whoami # Show current user
|
|
56
|
+
bi-cli auth status # Show authentication status
|
|
57
|
+
bi-cli auth logout # Logout
|
|
39
58
|
```
|
|
40
59
|
|
|
41
60
|
### Environment Configuration
|
|
@@ -52,93 +71,158 @@ bi-cli auth logout
|
|
|
52
71
|
2. `OPTIMA_TOKEN` environment variable
|
|
53
72
|
3. `~/.optima/token.json` file
|
|
54
73
|
|
|
55
|
-
### Environment Variables
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
# Override token
|
|
59
|
-
export BI_CLI_TOKEN="your-access-token"
|
|
60
|
-
|
|
61
|
-
# Override URLs
|
|
62
|
-
export BI_CLI_BACKEND_URL="https://custom-api.example.com"
|
|
63
|
-
export BI_CLI_AUTH_URL="https://custom-auth.example.com"
|
|
64
|
-
|
|
65
|
-
# Override environment
|
|
66
|
-
export BI_CLI_ENV="stage"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
74
|
## Commands
|
|
70
75
|
|
|
71
76
|
### Sales Analytics
|
|
72
77
|
|
|
73
78
|
```bash
|
|
74
|
-
# Get
|
|
75
|
-
bi-cli sales get
|
|
76
|
-
bi-cli sales get --days
|
|
79
|
+
bi-cli sales get # Get last 7 days (default)
|
|
80
|
+
bi-cli sales get --days 30 # Get last 30 days
|
|
81
|
+
bi-cli sales get --days 7 --pretty # Output as table
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"summary": {
|
|
89
|
+
"total_revenue": 10000,
|
|
90
|
+
"total_orders": 100,
|
|
91
|
+
"avg_order_value": 100,
|
|
92
|
+
"unique_customers": 80
|
|
93
|
+
},
|
|
94
|
+
"daily": [{ "date": "2024-01-01", "total_revenue": 1500, "order_count": 15 }]
|
|
95
|
+
}
|
|
77
96
|
```
|
|
78
97
|
|
|
79
98
|
### Product Analytics
|
|
80
99
|
|
|
81
100
|
```bash
|
|
82
101
|
# Best selling products
|
|
83
|
-
bi-cli product best-sellers
|
|
84
|
-
bi-cli product best-sellers --limit
|
|
102
|
+
bi-cli product best-sellers # Top 10 by revenue
|
|
103
|
+
bi-cli product best-sellers --limit 5 # Top 5
|
|
104
|
+
bi-cli product best-sellers --sort quantity # Sort by quantity
|
|
85
105
|
|
|
86
|
-
# ABC inventory analysis
|
|
106
|
+
# ABC inventory analysis (Pareto)
|
|
87
107
|
bi-cli product abc-analysis
|
|
88
108
|
|
|
89
|
-
# Price
|
|
109
|
+
# Price range analysis
|
|
90
110
|
bi-cli product price-analysis
|
|
91
111
|
|
|
92
|
-
# Product performance
|
|
93
|
-
bi-cli product performance
|
|
112
|
+
# Product performance metrics
|
|
113
|
+
bi-cli product performance --days 30 --limit 20
|
|
94
114
|
```
|
|
95
115
|
|
|
96
116
|
### Trend Analytics
|
|
97
117
|
|
|
98
118
|
```bash
|
|
99
|
-
# Revenue trends
|
|
100
|
-
bi-cli trends revenue
|
|
101
|
-
bi-cli trends revenue --
|
|
119
|
+
# Revenue trends with moving average
|
|
120
|
+
bi-cli trends revenue # Last 30 days, daily
|
|
121
|
+
bi-cli trends revenue --granularity hourly # Hourly granularity
|
|
122
|
+
bi-cli trends revenue --granularity weekly # Weekly granularity
|
|
102
123
|
|
|
103
|
-
# Orders heatmap
|
|
124
|
+
# Orders heatmap by day and hour
|
|
104
125
|
bi-cli trends heatmap
|
|
105
126
|
|
|
106
|
-
#
|
|
127
|
+
# Monthly/seasonal patterns
|
|
107
128
|
bi-cli trends seasonality
|
|
108
129
|
|
|
109
130
|
# Revenue forecast
|
|
110
|
-
bi-cli trends forecast
|
|
131
|
+
bi-cli trends forecast # Next 7 days
|
|
132
|
+
bi-cli trends forecast --days 14 # Next 14 days
|
|
111
133
|
```
|
|
112
134
|
|
|
113
135
|
### Advanced Analytics
|
|
114
136
|
|
|
115
137
|
```bash
|
|
116
|
-
#
|
|
117
|
-
bi-cli analytics compare
|
|
118
|
-
bi-cli analytics compare --days
|
|
138
|
+
# Period comparison
|
|
139
|
+
bi-cli analytics compare # Last 30 days vs previous
|
|
140
|
+
bi-cli analytics compare --days 7 # This week vs last week
|
|
141
|
+
bi-cli analytics compare --compare-to previous_year # Year-over-year
|
|
119
142
|
|
|
120
143
|
# Growth trends
|
|
121
|
-
bi-cli analytics growth
|
|
144
|
+
bi-cli analytics growth # Daily, last 30 periods
|
|
145
|
+
bi-cli analytics growth --period weekly # Weekly
|
|
146
|
+
bi-cli analytics growth --period monthly # Monthly
|
|
122
147
|
|
|
123
|
-
# Customer cohort analysis
|
|
148
|
+
# Customer cohort analysis (LTV)
|
|
124
149
|
bi-cli analytics cohort
|
|
125
150
|
|
|
126
|
-
# Order funnel
|
|
127
|
-
bi-cli analytics funnel
|
|
151
|
+
# Order status funnel
|
|
152
|
+
bi-cli analytics funnel --days 30
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Traffic Analytics
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# Traffic overview
|
|
159
|
+
bi-cli traffic overview # Last 30 days
|
|
160
|
+
bi-cli traffic overview --days 7 # Last 7 days
|
|
161
|
+
bi-cli traffic overview --product <uuid> # Filter by product
|
|
162
|
+
|
|
163
|
+
# Traffic sources
|
|
164
|
+
bi-cli traffic sources --limit 10
|
|
165
|
+
|
|
166
|
+
# Conversion funnel
|
|
167
|
+
bi-cli traffic funnel
|
|
168
|
+
|
|
169
|
+
# Site search analytics
|
|
170
|
+
bi-cli traffic search
|
|
171
|
+
bi-cli traffic search --zero-results # Zero-result queries only
|
|
172
|
+
|
|
173
|
+
# Top pages
|
|
174
|
+
bi-cli traffic pages --limit 20
|
|
128
175
|
```
|
|
129
176
|
|
|
130
|
-
##
|
|
177
|
+
## Output Formats
|
|
131
178
|
|
|
132
|
-
|
|
179
|
+
### JSON (Default)
|
|
180
|
+
|
|
181
|
+
All commands output JSON by default, ideal for LLM agents and programmatic use:
|
|
133
182
|
|
|
134
183
|
```bash
|
|
135
|
-
# Pipe to jq for formatting
|
|
136
184
|
bi-cli sales get | jq .
|
|
137
|
-
|
|
138
|
-
# Use with AI agents
|
|
139
185
|
bi-cli product best-sellers --limit 5 | your-ai-tool
|
|
140
186
|
```
|
|
141
187
|
|
|
188
|
+
### Pretty Tables
|
|
189
|
+
|
|
190
|
+
Use `--pretty` flag for human-readable output:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
bi-cli sales get --pretty
|
|
194
|
+
bi-cli product best-sellers --pretty
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Environment Variables
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# Override token
|
|
201
|
+
export BI_CLI_TOKEN="your-access-token"
|
|
202
|
+
|
|
203
|
+
# Override URLs
|
|
204
|
+
export BI_CLI_BACKEND_URL="https://custom-api.example.com"
|
|
205
|
+
export BI_CLI_AUTH_URL="https://custom-auth.example.com"
|
|
206
|
+
|
|
207
|
+
# Override environment
|
|
208
|
+
export BI_CLI_ENV="stage"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## For LLM Agents
|
|
212
|
+
|
|
213
|
+
Each command includes detailed help with:
|
|
214
|
+
|
|
215
|
+
- Function description
|
|
216
|
+
- JSON return structure
|
|
217
|
+
- Usage examples
|
|
218
|
+
- Parameter descriptions with valid values
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
bi-cli sales get --help
|
|
222
|
+
bi-cli product abc-analysis --help
|
|
223
|
+
bi-cli analytics cohort --help
|
|
224
|
+
```
|
|
225
|
+
|
|
142
226
|
## License
|
|
143
227
|
|
|
144
228
|
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/commands/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyEpC,wBAAgB,sBAAsB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/commands/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyEpC,wBAAgB,sBAAsB,IAAI,OAAO,CAuVhD"}
|
|
@@ -3,14 +3,33 @@ import axios from 'axios';
|
|
|
3
3
|
import { getConfig } from '../config/index.js';
|
|
4
4
|
import { outputJson, outputPretty, error, OutputFormat, info } from '../utils/output.js';
|
|
5
5
|
export function createAnalyticsCommand() {
|
|
6
|
-
const analytics = new Command('analytics').description(
|
|
6
|
+
const analytics = new Command('analytics').description(`Advanced analytics.
|
|
7
|
+
|
|
8
|
+
Period comparison, growth analysis, customer cohorts, order funnels.`);
|
|
7
9
|
// analytics compare
|
|
8
10
|
analytics
|
|
9
11
|
.command('compare')
|
|
10
|
-
.description(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
.description(`Period comparison analysis.
|
|
13
|
+
|
|
14
|
+
Compare current period with previous period or year-over-year.
|
|
15
|
+
|
|
16
|
+
Returns JSON:
|
|
17
|
+
{
|
|
18
|
+
"current": { "revenue": 10000, "orders": 100, "avg_order_value": 100, "customers": 80 },
|
|
19
|
+
"previous": { "revenue": 8000, "orders": 90, ... },
|
|
20
|
+
"changes": {
|
|
21
|
+
"revenue": { "absolute": 2000, "percentage": 25.0 },
|
|
22
|
+
...
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Examples:
|
|
27
|
+
bi-cli analytics compare # Last 30 days vs previous 30
|
|
28
|
+
bi-cli analytics compare --days 7 # This week vs last week
|
|
29
|
+
bi-cli analytics compare --compare-to previous_year # Year-over-year`)
|
|
30
|
+
.option('--days <number>', 'Number of days to compare (default: 30)', '30')
|
|
31
|
+
.option('--compare-to <type>', 'Compare to: previous_period | previous_year', 'previous_period')
|
|
32
|
+
.option('--pretty', 'Output as table')
|
|
14
33
|
.action(async (options) => {
|
|
15
34
|
const cfg = getConfig();
|
|
16
35
|
if (!cfg.accessToken) {
|
|
@@ -80,10 +99,30 @@ export function createAnalyticsCommand() {
|
|
|
80
99
|
// analytics growth
|
|
81
100
|
analytics
|
|
82
101
|
.command('growth')
|
|
83
|
-
.description(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
102
|
+
.description(`Growth trend analysis.
|
|
103
|
+
|
|
104
|
+
View revenue and order growth rates by day/week/month.
|
|
105
|
+
|
|
106
|
+
Returns JSON:
|
|
107
|
+
{
|
|
108
|
+
"trends": [
|
|
109
|
+
{
|
|
110
|
+
"period": "2024-01-01",
|
|
111
|
+
"revenue": 5000,
|
|
112
|
+
"orders": 50,
|
|
113
|
+
"customers": 40,
|
|
114
|
+
"revenue_growth": 15.5 // Growth rate vs previous period (%), null for first
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
Examples:
|
|
120
|
+
bi-cli analytics growth # Daily, last 30 periods
|
|
121
|
+
bi-cli analytics growth --period weekly # Weekly
|
|
122
|
+
bi-cli analytics growth --period monthly --limit 12 # Monthly, last 12 months`)
|
|
123
|
+
.option('--period <type>', 'Period type: daily | weekly | monthly', 'daily')
|
|
124
|
+
.option('--limit <number>', 'Number of periods (default: 30)', '30')
|
|
125
|
+
.option('--pretty', 'Output as table')
|
|
87
126
|
.action(async (options) => {
|
|
88
127
|
const cfg = getConfig();
|
|
89
128
|
if (!cfg.accessToken) {
|
|
@@ -123,8 +162,25 @@ export function createAnalyticsCommand() {
|
|
|
123
162
|
// analytics cohort
|
|
124
163
|
analytics
|
|
125
164
|
.command('cohort')
|
|
126
|
-
.description(
|
|
127
|
-
|
|
165
|
+
.description(`Customer cohort analysis.
|
|
166
|
+
|
|
167
|
+
Group customers by first purchase month and analyze lifetime value (LTV).
|
|
168
|
+
|
|
169
|
+
Returns JSON:
|
|
170
|
+
{
|
|
171
|
+
"cohorts": [
|
|
172
|
+
{
|
|
173
|
+
"month": "2024-01",
|
|
174
|
+
"customers": 100, // New customers in this month
|
|
175
|
+
"avg_lifetime_value": 500, // Average customer lifetime value
|
|
176
|
+
"avg_orders": 2.5, // Average orders per customer
|
|
177
|
+
"total_revenue": 50000 // Total revenue from this cohort
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
Use case: Evaluate customer acquisition quality, optimize marketing strategy.`)
|
|
183
|
+
.option('--pretty', 'Output as table')
|
|
128
184
|
.action(async (options) => {
|
|
129
185
|
const cfg = getConfig();
|
|
130
186
|
if (!cfg.accessToken) {
|
|
@@ -162,9 +218,28 @@ export function createAnalyticsCommand() {
|
|
|
162
218
|
// analytics funnel
|
|
163
219
|
analytics
|
|
164
220
|
.command('funnel')
|
|
165
|
-
.description(
|
|
166
|
-
|
|
167
|
-
|
|
221
|
+
.description(`Order status funnel analysis.
|
|
222
|
+
|
|
223
|
+
Analyze conversion rates and drop-offs from order creation to delivery.
|
|
224
|
+
|
|
225
|
+
Returns JSON:
|
|
226
|
+
{
|
|
227
|
+
"total_orders": 1000,
|
|
228
|
+
"conversion_rate": 85.5, // Final completion rate (%)
|
|
229
|
+
"funnel": [
|
|
230
|
+
{ "stage": "pending", "count": 1000, "amount": 100000, "percentage": 100 },
|
|
231
|
+
{ "stage": "paid", "count": 950, "amount": 95000, "percentage": 95 },
|
|
232
|
+
{ "stage": "shipped", "count": 900, "amount": 90000, "percentage": 90 },
|
|
233
|
+
{ "stage": "delivered", "count": 855, "amount": 85500, "percentage": 85.5 }
|
|
234
|
+
],
|
|
235
|
+
"dropoffs": [
|
|
236
|
+
{ "status": "cancelled", "count": 50, "amount": 5000, "percentage": 5 }
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
Use case: Identify order drop-off points, optimize fulfillment process.`)
|
|
241
|
+
.option('--days <number>', 'Number of days (default: 30)', '30')
|
|
242
|
+
.option('--pretty', 'Output as table')
|
|
168
243
|
.action(async (options) => {
|
|
169
244
|
const cfg = getConfig();
|
|
170
245
|
if (!cfg.accessToken) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/commands/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAsEzF,MAAM,UAAU,sBAAsB;IACpC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/commands/analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,wBAAgB,iBAAiB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,wBAAgB,iBAAiB,IAAI,OAAO,CA4P3C"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -5,12 +5,20 @@ import chalk from 'chalk';
|
|
|
5
5
|
import { clearAuth, getConfig, saveTokens, saveUser, getConfigPath, ENV_CONFIG, } from '../config/index.js';
|
|
6
6
|
import { success, error, info } from '../utils/output.js';
|
|
7
7
|
export function createAuthCommand() {
|
|
8
|
-
const auth = new Command('auth').description(
|
|
8
|
+
const auth = new Command('auth').description(`Authentication commands.
|
|
9
|
+
|
|
10
|
+
You must login before using other commands. Tokens are saved to ~/.optima/token.json.`);
|
|
9
11
|
// auth login
|
|
10
12
|
auth
|
|
11
13
|
.command('login')
|
|
12
|
-
.description(
|
|
13
|
-
|
|
14
|
+
.description(`Login using OAuth 2.0 Device Flow.
|
|
15
|
+
|
|
16
|
+
Opens browser automatically for authorization. Token is saved after successful auth.
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
bi-cli auth login # Login to production (default)
|
|
20
|
+
bi-cli auth login --env stage # Login to staging environment`)
|
|
21
|
+
.option('--env <environment>', 'Environment: production | stage | development', 'production')
|
|
14
22
|
.action(async (options) => {
|
|
15
23
|
const env = options.env;
|
|
16
24
|
// Validate environment
|
|
@@ -138,7 +146,7 @@ export function createAuthCommand() {
|
|
|
138
146
|
// auth logout
|
|
139
147
|
auth
|
|
140
148
|
.command('logout')
|
|
141
|
-
.description('Logout and delete ~/.optima/token.json')
|
|
149
|
+
.description('Logout and delete local token file (~/.optima/token.json)')
|
|
142
150
|
.action(() => {
|
|
143
151
|
clearAuth();
|
|
144
152
|
success('Logged out successfully');
|
|
@@ -147,7 +155,7 @@ export function createAuthCommand() {
|
|
|
147
155
|
// auth whoami
|
|
148
156
|
auth
|
|
149
157
|
.command('whoami')
|
|
150
|
-
.description('Show current user
|
|
158
|
+
.description('Show current user info (email, role, merchant ID)')
|
|
151
159
|
.action(async () => {
|
|
152
160
|
const cfg = getConfig();
|
|
153
161
|
if (!cfg.accessToken) {
|
|
@@ -188,7 +196,7 @@ export function createAuthCommand() {
|
|
|
188
196
|
// auth status
|
|
189
197
|
auth
|
|
190
198
|
.command('status')
|
|
191
|
-
.description('Show authentication status')
|
|
199
|
+
.description('Show authentication status (environment, login state, config path)')
|
|
192
200
|
.action(() => {
|
|
193
201
|
const cfg = getConfig();
|
|
194
202
|
console.log(chalk.bold('\n Authentication Status:\n'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,UAAU,GAEX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AA0B1D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../src/commands/product.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyFpC,wBAAgB,oBAAoB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../src/commands/product.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyFpC,wBAAgB,oBAAoB,IAAI,OAAO,CAuS9C"}
|
package/dist/commands/product.js
CHANGED
|
@@ -3,14 +3,31 @@ import axios from 'axios';
|
|
|
3
3
|
import { getConfig } from '../config/index.js';
|
|
4
4
|
import { outputJson, outputPretty, error, OutputFormat, info } from '../utils/output.js';
|
|
5
5
|
export function createProductCommand() {
|
|
6
|
-
const product = new Command('product').description(
|
|
6
|
+
const product = new Command('product').description(`Product analytics.
|
|
7
|
+
|
|
8
|
+
Analyze product performance, price distribution, ABC classification.`);
|
|
7
9
|
// product best-sellers
|
|
8
10
|
product
|
|
9
11
|
.command('best-sellers')
|
|
10
|
-
.description(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
.description(`Get best selling products ranking.
|
|
13
|
+
|
|
14
|
+
Returns products sorted by revenue/quantity/orders with rank, revenue, units sold, revenue share.
|
|
15
|
+
|
|
16
|
+
Returns JSON:
|
|
17
|
+
{
|
|
18
|
+
"products": [
|
|
19
|
+
{ "rank": 1, "title": "Product Name", "revenue": 1000, "units_sold": 50, "orders": 30, "revenue_share": 15.5 }
|
|
20
|
+
],
|
|
21
|
+
"total_revenue": number
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
Examples:
|
|
25
|
+
bi-cli product best-sellers # Top 10 by revenue
|
|
26
|
+
bi-cli product best-sellers --limit 5 # Top 5
|
|
27
|
+
bi-cli product best-sellers --sort quantity # Sort by quantity`)
|
|
28
|
+
.option('--limit <number>', 'Number of products to return (default: 10)', '10')
|
|
29
|
+
.option('--sort <field>', 'Sort by: revenue | quantity | orders', 'revenue')
|
|
30
|
+
.option('--pretty', 'Output as table')
|
|
14
31
|
.action(async (options) => {
|
|
15
32
|
const cfg = getConfig();
|
|
16
33
|
if (!cfg.accessToken) {
|
|
@@ -51,8 +68,21 @@ export function createProductCommand() {
|
|
|
51
68
|
// product abc-analysis
|
|
52
69
|
product
|
|
53
70
|
.command('abc-analysis')
|
|
54
|
-
.description(
|
|
55
|
-
|
|
71
|
+
.description(`ABC inventory analysis (Pareto analysis).
|
|
72
|
+
|
|
73
|
+
Classifies products by revenue contribution:
|
|
74
|
+
- A: High-value products contributing 70% of revenue (typically ~20% of products)
|
|
75
|
+
- B: Medium-value products contributing 20% of revenue
|
|
76
|
+
- C: Low-value products contributing 10% of revenue
|
|
77
|
+
|
|
78
|
+
Use case: Identify core products, optimize inventory and purchasing strategy.
|
|
79
|
+
|
|
80
|
+
Returns JSON:
|
|
81
|
+
{
|
|
82
|
+
"summary": { "A": {...}, "B": {...}, "C": {...} },
|
|
83
|
+
"products": [ { "title": "Product Name", "category": "A", "revenue": number, ... } ]
|
|
84
|
+
}`)
|
|
85
|
+
.option('--pretty', 'Output as table')
|
|
56
86
|
.action(async (options) => {
|
|
57
87
|
const cfg = getConfig();
|
|
58
88
|
if (!cfg.accessToken) {
|
|
@@ -98,8 +128,18 @@ export function createProductCommand() {
|
|
|
98
128
|
// product price-analysis
|
|
99
129
|
product
|
|
100
130
|
.command('price-analysis')
|
|
101
|
-
.description(
|
|
102
|
-
|
|
131
|
+
.description(`Price range analysis.
|
|
132
|
+
|
|
133
|
+
Analyze product count, revenue, and sales by price ranges.
|
|
134
|
+
|
|
135
|
+
Returns JSON:
|
|
136
|
+
{
|
|
137
|
+
"price_ranges": [
|
|
138
|
+
{ "range": "¥0-50", "products": 10, "revenue": 5000, "units": 200, "revenue_share": 15.5 }
|
|
139
|
+
],
|
|
140
|
+
"totals": { "revenue": number, "units": number }
|
|
141
|
+
}`)
|
|
142
|
+
.option('--pretty', 'Output as table')
|
|
103
143
|
.action(async (options) => {
|
|
104
144
|
const cfg = getConfig();
|
|
105
145
|
if (!cfg.accessToken) {
|
|
@@ -139,10 +179,34 @@ export function createProductCommand() {
|
|
|
139
179
|
// product performance
|
|
140
180
|
product
|
|
141
181
|
.command('performance')
|
|
142
|
-
.description(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
182
|
+
.description(`Product performance metrics.
|
|
183
|
+
|
|
184
|
+
Get sales, inventory, and margin metrics for each product.
|
|
185
|
+
|
|
186
|
+
Returns JSON:
|
|
187
|
+
{
|
|
188
|
+
"products": [
|
|
189
|
+
{
|
|
190
|
+
"title": "Product Name",
|
|
191
|
+
"price": 99.00, // Selling price
|
|
192
|
+
"inventory": 50, // Current stock
|
|
193
|
+
"sales": { "units": 100, "revenue": 9900, "orders": 80 },
|
|
194
|
+
"metrics": {
|
|
195
|
+
"margin_percent": 30.5, // Profit margin (%)
|
|
196
|
+
"days_of_stock": 15, // Estimated days of stock
|
|
197
|
+
"velocity": 6.7 // Daily sales rate
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
Examples:
|
|
204
|
+
bi-cli product performance # Last 30 days, top 20 products
|
|
205
|
+
bi-cli product performance --days 7 # Last 7 days
|
|
206
|
+
bi-cli product performance --limit 50 # Top 50 products`)
|
|
207
|
+
.option('--days <number>', 'Number of days (default: 30)', '30')
|
|
208
|
+
.option('--limit <number>', 'Number of products (default: 20)', '20')
|
|
209
|
+
.option('--pretty', 'Output as table')
|
|
146
210
|
.action(async (options) => {
|
|
147
211
|
const cfg = getConfig();
|
|
148
212
|
if (!cfg.accessToken) {
|