@vint.tri/report_gen_mcp 1.7.31 → 1.7.33
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 +34 -154
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -20
- package/dist/tools/reportWizard.d.ts +17 -0
- package/dist/tools/reportWizard.d.ts.map +1 -0
- package/dist/tools/reportWizard.js +69 -0
- package/package.json +2 -1
- package/ULTIMATE_INSTRUCTIONS.md +0 -89
package/README.md
CHANGED
|
@@ -1,167 +1,47 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Генератор Отчетов (report_gen_mcp)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Этот инструмент позволяет создавать качественные, визуально насыщенные HTML-отчеты на основе простого текстового описания.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Основной инструмент: `create_report`
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Embed interactive charts (bar, line, pie, doughnut, radar, polarArea)
|
|
9
|
-
- Embed AI-generated images using Pollinations.ai
|
|
10
|
-
- Embed images from URLs
|
|
11
|
-
- Edit existing reports by adding, removing, or replacing content
|
|
12
|
-
- MCP server integration for use with Claude Desktop
|
|
7
|
+
Это единственный инструмент, который вам нужно использовать. Он берет на себя всю сложную работу по анализу текста, генерации диаграмм и подбору изображений.
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
### Параметры:
|
|
10
|
+
- `report_description` (string): **Обязательный.** Подробное текстовое описание того, какой отчет вы хотите получить. Включите в него все данные, которые должны быть отражены.
|
|
11
|
+
- `outputFile` (string): **Обязательный.** Имя файла для сохранения отчета (например, `my_report.html`).
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
npm run install-python-deps
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Or set up a Python virtual environment:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npm run setup-python
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Environment Variables
|
|
33
|
-
|
|
34
|
-
- `REPORTS_DIR`: Directory where reports will be generated (required for CLI and HTTP API modes)
|
|
35
|
-
- `CHUTES_API_TOKEN`: API token for Chutes AI services (required for image generation/editing)
|
|
36
|
-
- `IMG_SAVE_BASE_DIR`: Base directory for saving generated/edited images
|
|
37
|
-
|
|
38
|
-
## Usage
|
|
39
|
-
|
|
40
|
-
### CLI Mode
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
# Set the reports directory
|
|
44
|
-
export REPORTS_DIR=/path/to/reports
|
|
45
|
-
|
|
46
|
-
# Generate a report
|
|
47
|
-
report_gen_mcp generate --document report.md --elements '{"chart1":{"type":"bar","config":{"labels":["A","B","C"],"datasets":[{"label":"Dataset 1","data":[1,2,3]}]}}}'
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Programmatic Usage (Node.js)
|
|
51
|
-
|
|
52
|
-
```javascript
|
|
53
|
-
import { generateReport, generateImage } from '@vint.tri/report_gen_mcp';
|
|
13
|
+
### Как это работает:
|
|
14
|
+
1. Вы предоставляете текстовое описание.
|
|
15
|
+
2. Инструмент анализирует текст, находит ключевые данные и темы.
|
|
16
|
+
3. На основе анализа, он автоматически генерирует 1-3 диаграммы и 1-2 релевантных изображения.
|
|
17
|
+
4. Он создает полноценный HTML-отчет с вашим текстом и сгенерированными визуальными элементами.
|
|
18
|
+
5. Отчет сохраняется во временной директории, и вам возвращается путь к файлу.
|
|
54
19
|
|
|
55
|
-
|
|
56
|
-
const reportResult = await generateReport(
|
|
57
|
-
'# My Report\nThis is a sample report with a chart.\n[[chart:chart1]]',
|
|
58
|
-
{
|
|
59
|
-
chart1: {
|
|
60
|
-
type: 'bar',
|
|
61
|
-
config: {
|
|
62
|
-
labels: ['A', 'B', 'C'],
|
|
63
|
-
datasets: [{
|
|
64
|
-
label: 'Dataset 1',
|
|
65
|
-
data: [1, 2, 3]
|
|
66
|
-
}]
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
'/path/to/output/report.html'
|
|
71
|
-
);
|
|
20
|
+
---
|
|
72
21
|
|
|
73
|
-
|
|
74
|
-
const imageDataUri = await generateImage('A beautiful landscape', {
|
|
75
|
-
width: 512,
|
|
76
|
-
height: 512,
|
|
77
|
-
guidance_scale: 7.5
|
|
78
|
-
});
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### HTTP API Mode
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
# Start the server
|
|
85
|
-
report_gen_mcp start-server
|
|
86
|
-
|
|
87
|
-
# Generate a report via HTTP POST to http://localhost:3000/generate-report
|
|
88
|
-
curl -X POST http://localhost:3000/generate-report \
|
|
89
|
-
-H "Content-Type: application/json" \
|
|
90
|
-
-d '{
|
|
91
|
-
"document": "# My Report\nThis is a sample report with a chart.\n[[chart:chart1]]",
|
|
92
|
-
"elements": {
|
|
93
|
-
"chart1": {
|
|
94
|
-
"type": "bar",
|
|
95
|
-
"config": {
|
|
96
|
-
"labels": ["A", "B", "C"],
|
|
97
|
-
"datasets": [{
|
|
98
|
-
"label": "Dataset 1",
|
|
99
|
-
"data": [1, 2, 3]
|
|
100
|
-
}]
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}'
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### MCP Server Mode (for Claude Desktop)
|
|
22
|
+
### **Пример использования**
|
|
108
23
|
|
|
109
|
-
|
|
24
|
+
**Ваш запрос:**
|
|
25
|
+
"Сделай отчет о финансовых результатах Apple за 2024 год. Общий доход составил $391 млрд, а чистая прибыль — $99 млрд. Продажи по продуктам: iPhone - $216 млрд, Mac - $31 млрд, iPad - $27 млрд."
|
|
110
26
|
|
|
111
|
-
|
|
112
|
-
|
|
27
|
+
**Правильный вызов инструмента:**
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"method": "create_report",
|
|
31
|
+
"params": {
|
|
32
|
+
"report_description": "Финансовый отчет Apple за 2024 год. Общий доход составил $391 млрд, а чистая прибыль — $99 млрд. Продажи по продуктам: iPhone - $216 млрд, Mac - $31 млрд, iPad - $27 млрд.",
|
|
33
|
+
"outputFile": "apple_finance_2024.html"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
113
36
|
```
|
|
114
37
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
This tool includes advanced image generation and editing capabilities powered by Chutes AI:
|
|
123
|
-
|
|
124
|
-
### Generate Image
|
|
125
|
-
Create new images from text prompts with customizable parameters:
|
|
126
|
-
- Prompt (in English)
|
|
127
|
-
- Width and height (128-2048 pixels)
|
|
128
|
-
- Model selection
|
|
129
|
-
- Guidance scale
|
|
130
|
-
- Negative prompts
|
|
131
|
-
- Number of inference steps
|
|
132
|
-
- Seed for reproducibility
|
|
133
|
-
|
|
134
|
-
### Edit Image
|
|
135
|
-
Modify existing images based on text descriptions:
|
|
136
|
-
- Input image path
|
|
137
|
-
- Output image path
|
|
138
|
-
- Edit prompt (in English)
|
|
139
|
-
- Width and height (512-2048 pixels)
|
|
140
|
-
- CFG scale
|
|
141
|
-
- Negative prompts
|
|
142
|
-
- Number of inference steps
|
|
143
|
-
- Seed for reproducibility
|
|
144
|
-
|
|
145
|
-
## Report Elements
|
|
146
|
-
|
|
147
|
-
Reports can include various elements referenced in the Markdown document using placeholders like `[[chart:id]]` or `[[image:id]]`.
|
|
148
|
-
|
|
149
|
-
### Charts
|
|
150
|
-
- Bar charts
|
|
151
|
-
- Line charts
|
|
152
|
-
- Pie charts
|
|
153
|
-
- Doughnut charts
|
|
154
|
-
- Radar charts
|
|
155
|
-
- Polar area charts
|
|
156
|
-
|
|
157
|
-
### Images
|
|
158
|
-
- AI-generated images (Pollinations.ai)
|
|
159
|
-
- Images from URLs
|
|
160
|
-
|
|
161
|
-
## Examples
|
|
162
|
-
|
|
163
|
-
See the test files in the repository for examples of how to use all features.
|
|
38
|
+
**Результат:**
|
|
39
|
+
Инструмент вернет вам путь к готовому HTML-файлу, который будет содержать:
|
|
40
|
+
- Ваш текст.
|
|
41
|
+
- Диаграмму, сравнивающую общий доход и чистую прибыль.
|
|
42
|
+
- Круговую диаграмму с разбивкой продаж по продуктам.
|
|
43
|
+
- Релевантное изображение на тему технологий или Apple.
|
|
164
44
|
|
|
165
|
-
|
|
45
|
+
---
|
|
166
46
|
|
|
167
|
-
|
|
47
|
+
**КЛЮЧЕВОЕ ПРАВИЛО:** Просто опишите, что вы хотите видеть в отчете, и передайте это описание в `create_report`. Не пытайтесь самостоятельно формировать сложные структуры данных.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA+HA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBjD"}
|
package/dist/index.js
CHANGED
|
@@ -6,9 +6,9 @@ import path from 'path';
|
|
|
6
6
|
import fs from 'fs-extra';
|
|
7
7
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
8
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
9
|
-
import { z } from 'zod';
|
|
10
9
|
import { pathToFileURL } from 'url';
|
|
11
10
|
import { ImageGenerator } from './mcp/imageGenerationServer.js';
|
|
11
|
+
import { reportWizardTool } from './tools/reportWizard.js';
|
|
12
12
|
const isStdioMode = process.argv.length === 2;
|
|
13
13
|
let reportsDir = undefined;
|
|
14
14
|
if (!isStdioMode) {
|
|
@@ -73,30 +73,16 @@ program
|
|
|
73
73
|
console.log(JSON.stringify(comprehensiveResult, null, 2));
|
|
74
74
|
});
|
|
75
75
|
if (isStdioMode) {
|
|
76
|
-
const mcpServer = new McpServer({ name: "report_gen_mcp", version: "1.7.
|
|
77
|
-
mcpServer.registerTool(
|
|
78
|
-
description:
|
|
79
|
-
inputSchema:
|
|
80
|
-
document: z.string().describe("Markdown document with placeholders"),
|
|
81
|
-
elements: z.any().describe("A JSON object or a stringified JSON object of elements"),
|
|
82
|
-
outputFile: z.string().optional().describe("Output HTML file name"),
|
|
83
|
-
tempDirectory: z.string().optional().describe("Temporary directory for file storage"),
|
|
84
|
-
},
|
|
76
|
+
const mcpServer = new McpServer({ name: "report_gen_mcp", version: "1.7.33" });
|
|
77
|
+
mcpServer.registerTool(reportWizardTool.name, {
|
|
78
|
+
description: reportWizardTool.description,
|
|
79
|
+
inputSchema: reportWizardTool.inputSchema,
|
|
85
80
|
}, async (params) => {
|
|
86
81
|
let processedParams = params;
|
|
87
82
|
if (params.arguments && typeof params.arguments === 'object') {
|
|
88
83
|
processedParams = params.arguments;
|
|
89
84
|
}
|
|
90
|
-
|
|
91
|
-
try {
|
|
92
|
-
if (typeof elements === 'string') {
|
|
93
|
-
elements = JSON.parse(elements);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch (e) {
|
|
97
|
-
throw new Error('Invalid JSON format for "elements" parameter.');
|
|
98
|
-
}
|
|
99
|
-
const result = await generateReport(document, elements, outputFile, tempDirectory);
|
|
85
|
+
const result = await reportWizardTool.execute(processedParams);
|
|
100
86
|
const fileUrl = pathToFileURL(result.filePath).href;
|
|
101
87
|
const fileContent = await fs.readFile(result.filePath, 'utf8');
|
|
102
88
|
return {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const reportWizardTool: {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: {
|
|
6
|
+
report_description: z.ZodString;
|
|
7
|
+
outputFile: z.ZodString;
|
|
8
|
+
};
|
|
9
|
+
execute: ({ report_description, outputFile }: {
|
|
10
|
+
report_description: string;
|
|
11
|
+
outputFile: string;
|
|
12
|
+
}) => Promise<{
|
|
13
|
+
success: boolean;
|
|
14
|
+
filePath: string;
|
|
15
|
+
}>;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=reportWizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportWizard.d.ts","sourceRoot":"","sources":["../../src/tools/reportWizard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8DxB,eAAO,MAAM,gBAAgB;;;;;;;kDAOyB;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;;;;CAIvG,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { generateReport } from '../utils/reportGenerator.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
// Эта функция будет извлекать данные из текста и генерировать элементы
|
|
4
|
+
async function designReportFromDescription(description) {
|
|
5
|
+
const elements = {};
|
|
6
|
+
let newDocument = description;
|
|
7
|
+
// Извлечение данных по продуктам
|
|
8
|
+
const productMatches = [...description.matchAll(/-\s*\*\*(.*?)\*\*: \$([\d,.]+) (млрд|миллиарда)/gi)];
|
|
9
|
+
if (productMatches.length > 0) {
|
|
10
|
+
const labels = productMatches.map(match => match[1]);
|
|
11
|
+
const data = productMatches.map(match => parseFloat(match[2].replace(/,/g, '')));
|
|
12
|
+
elements['product_sales_chart'] = {
|
|
13
|
+
type: 'doughnut',
|
|
14
|
+
config: {
|
|
15
|
+
labels,
|
|
16
|
+
datasets: [{
|
|
17
|
+
label: 'Выручка по продуктам (млрд $)',
|
|
18
|
+
data,
|
|
19
|
+
backgroundColor: ['#5A9E6F', '#E67E22', '#F1C40F', '#3498DB', '#9B59B6']
|
|
20
|
+
}]
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
newDocument += '\n\n## Диаграмма: Продажи по продуктам\n\n[[chart:product_sales_chart]]';
|
|
24
|
+
}
|
|
25
|
+
// Извлечение данных по регионам
|
|
26
|
+
const regionMatches = [...description.matchAll(/Выручка в (.*?)\s*в 2024.*? \$([\d,.]+) (млрд|миллиарда)/gi)];
|
|
27
|
+
if (regionMatches.length > 0) {
|
|
28
|
+
const labels = regionMatches.map(match => match[1]);
|
|
29
|
+
const data = regionMatches.map(match => parseFloat(match[2].replace(/,/g, '')));
|
|
30
|
+
elements['region_sales_chart'] = {
|
|
31
|
+
type: 'bar',
|
|
32
|
+
config: {
|
|
33
|
+
labels,
|
|
34
|
+
datasets: [{
|
|
35
|
+
label: 'Выручка по регионам (млрд $)',
|
|
36
|
+
data,
|
|
37
|
+
backgroundColor: ['#2ECC71', '#3498DB', '#E74C3C', '#F1C40F', '#9B59B6']
|
|
38
|
+
}]
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
newDocument += '\n\n## Диаграмма: Выручка по регионам\n\n[[chart:region_sales_chart]]';
|
|
42
|
+
}
|
|
43
|
+
// Пример: добавляем изображение на основе контекста
|
|
44
|
+
let imagePrompt = "business report and data analysis";
|
|
45
|
+
if (/apple/i.test(description)) {
|
|
46
|
+
imagePrompt = "futuristic design representing apple inc innovation";
|
|
47
|
+
}
|
|
48
|
+
else if (/tesla/i.test(description)) {
|
|
49
|
+
imagePrompt = "electric cars and modern technology";
|
|
50
|
+
}
|
|
51
|
+
elements['context_image'] = {
|
|
52
|
+
type: 'pollinations',
|
|
53
|
+
config: { prompt: imagePrompt }
|
|
54
|
+
};
|
|
55
|
+
newDocument += '\n\n## Иллюстрация\n\n[[image:context_image]]';
|
|
56
|
+
return { document: newDocument, elements };
|
|
57
|
+
}
|
|
58
|
+
export const reportWizardTool = {
|
|
59
|
+
name: "create_report",
|
|
60
|
+
description: "Designs and generates a complete, visually rich HTML report from a simple text description.",
|
|
61
|
+
inputSchema: {
|
|
62
|
+
report_description: z.string().describe("A text description of the desired report (e.g., 'an apple financial report for 2024')."),
|
|
63
|
+
outputFile: z.string().describe("The desired output HTML file name (e.g., 'report.html').")
|
|
64
|
+
},
|
|
65
|
+
execute: async ({ report_description, outputFile }) => {
|
|
66
|
+
const { document, elements } = await designReportFromDescription(report_description);
|
|
67
|
+
return await generateReport(document, elements, outputFile);
|
|
68
|
+
}
|
|
69
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vint.tri/report_gen_mcp",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.33",
|
|
4
4
|
"description": "CLI tool for generating HTML reports with embedded charts and images",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"fs-extra": "^11.2.0",
|
|
25
25
|
"jsdom": "^26.1.0",
|
|
26
26
|
"marked": "^14.1.2",
|
|
27
|
+
"openai": "^4.52.7",
|
|
27
28
|
"zod": "^3.23.8"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
package/ULTIMATE_INSTRUCTIONS.md
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Главная инструкция по работе с инструментом report_gen_mcp v1.9.0
|
|
2
|
-
|
|
3
|
-
**ЦЕЛЬ:** Генерация качественных, визуально насыщенных HTML-отчетов по запросу пользователя.
|
|
4
|
-
|
|
5
|
-
**КЛЮЧЕВОЕ ПРАВИЛО:** При любом запросе, связанном с отчетами, диаграммами или графиками, вы **обязаны** использовать инструмент `report_gen_mcp`. Не пытайтесь отвечать текстом или генерировать отчеты самостоятельно.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
### **АЛГОРИТМ ДЕЙСТВИЙ**
|
|
10
|
-
|
|
11
|
-
**Шаг 1: Проанализируй текст отчета**
|
|
12
|
-
- Внимательно изучи текст, предоставленный пользователем. Найди в нем ключевые данные: цифры, категории, продукты, регионы.
|
|
13
|
-
|
|
14
|
-
**Шаг 2: Спланируй визуальные элементы (`elements`)**
|
|
15
|
-
- На основе найденных данных, придумай **2-3 диаграммы**, которые наглядно представят эту информацию.
|
|
16
|
-
- Придумай **1-2 промпта** для изображений, которые будут соответствовать теме отчета.
|
|
17
|
-
- **Обязательно** создай плейсхолдеры для каждого элемента в тексте отчета, например `[[chart:sales_by_product]]` или `[[image:cover_image]]`.
|
|
18
|
-
|
|
19
|
-
**Шаг 3: Сформируй `elements` ПРАВИЛЬНО (КРИТИЧЕСКИ ВАЖНО!)**
|
|
20
|
-
- `elements` — это **ОБЪЕКТ**, где ключи — это названия плейсхолдеров.
|
|
21
|
-
- **Для диаграмм:**
|
|
22
|
-
- `labels`, `data`, `backgroundColor`, `borderColor` — **ВСЕГДА МАССИВЫ**.
|
|
23
|
-
- **Для изображений:**
|
|
24
|
-
- Используй `type: "pollinations"` и `config: { prompt: "..." }`.
|
|
25
|
-
|
|
26
|
-
**Шаг 4: Вызови инструмент**
|
|
27
|
-
- Передай в `generate-report` три параметра: `document`, `elements` и `outputFile`.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
### **Разбор реального примера (Отчет Apple)**
|
|
32
|
-
|
|
33
|
-
Вот как нужно было обработать отчет про Apple, чтобы избежать ошибок:
|
|
34
|
-
|
|
35
|
-
**Исходный текст:**
|
|
36
|
-
*Финансовый отчет Apple за 2024 год... iPhone: $216,4 млрд... Mac: $31,04 млрд... iPad: $26,89 млрд... Услуги: $92,3 млрд...*
|
|
37
|
-
|
|
38
|
-
**ПРАВИЛЬНЫЙ ХОД МЫСЛЕЙ:**
|
|
39
|
-
|
|
40
|
-
1. "Ага, в тексте есть разбивка выручки по продуктам. Это отличные данные для круговой диаграммы (`pie`)."
|
|
41
|
-
2. "Также есть данные по выручке в разных регионах (Америка, Европа, Китай). Сделаю столбчатую диаграмму (`bar`)."
|
|
42
|
-
3. "Для обложки сгенерирую изображение с логотипом Apple."
|
|
43
|
-
4. "Теперь я создам плейсхолдеры в тексте: `[[chart:product_sales]]`, `[[chart:region_sales]]`, `[[image:apple_logo]]`."
|
|
44
|
-
5. "Наконец, я соберу объект `elements`, где ключами будут эти плейсхолдеры, а значениями — правильно отформатированные конфигурации."
|
|
45
|
-
|
|
46
|
-
### **ИДЕАЛЬНЫЙ ВЫЗОВ ДЛЯ ОТЧЕТА APPLE**
|
|
47
|
-
|
|
48
|
-
```json
|
|
49
|
-
{
|
|
50
|
-
"method": "generate-report",
|
|
51
|
-
"params": {
|
|
52
|
-
"outputFile": "apple_financial_report_2024.html",
|
|
53
|
-
"document": "# Финансовый отчет Apple за 2024 год\n\n[[image:apple_logo]]\n\n## Разбивка по продуктам\n\n[[chart:product_sales]]\n\n## Выручка по регионам\n\n[[chart:region_sales]]\n\n...",
|
|
54
|
-
"elements": {
|
|
55
|
-
"apple_logo": {
|
|
56
|
-
"type": "pollinations",
|
|
57
|
-
"config": {
|
|
58
|
-
"prompt": "Apple logo on a futuristic blue background"
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
"product_sales": {
|
|
62
|
-
"type": "pie",
|
|
63
|
-
"config": {
|
|
64
|
-
"labels": ["iPhone", "Mac", "iPad", "Услуги"],
|
|
65
|
-
"datasets": [{
|
|
66
|
-
"data": [216.4, 31.04, 26.89, 92.3],
|
|
67
|
-
"backgroundColor": ["#5A9E6F", "#E67E22", "#F1C40F", "#3498DB"]
|
|
68
|
-
}],
|
|
69
|
-
"options": { "title": "Выручка по продуктам (млрд $)" }
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
"region_sales": {
|
|
73
|
-
"type": "bar",
|
|
74
|
-
"config": {
|
|
75
|
-
"labels": ["Америка", "Европа", "Китай", "Япония", "Азия (ост.)"],
|
|
76
|
-
"datasets": [{
|
|
77
|
-
"label": "Выручка по регионам (млрд $)",
|
|
78
|
-
"data": [193.8, 113.8, 85.1, 31.0, 67.4],
|
|
79
|
-
"backgroundColor": ["#2ECC71", "#3498DB", "#E74C3C", "#F1C40F", "#9B59B6"]
|
|
80
|
-
}],
|
|
81
|
-
"options": { "title": "Региональная выручка" }
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Следуй этому примеру, и все будет работать идеально.
|