From f800d1d6a52fbac53038daeecc9506285a341baf Mon Sep 17 00:00:00 2001 From: root Date: Tue, 7 Oct 2025 13:25:03 +0500 Subject: [PATCH] . --- .../parser/service/OpenAiChartService.java | 57 +++++++++++++++---- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/src/main/java/kz/konturai/parser/service/OpenAiChartService.java b/src/main/java/kz/konturai/parser/service/OpenAiChartService.java index 395e72f..6a2b4a1 100644 --- a/src/main/java/kz/konturai/parser/service/OpenAiChartService.java +++ b/src/main/java/kz/konturai/parser/service/OpenAiChartService.java @@ -132,19 +132,56 @@ public class OpenAiChartService { // прерывать цепочку вызовов } - private String buildChartDataPrompt(String learningsAsString) { + private String buildChartDataPromptRussian(String learningsAsString) { return "Ты — AI-аналитик данных. Внимательно проанализируй следующий текст. Найди в нём все наборы числовых данных, которые можно представить в виде простых диаграмм (столбчатых или круговых). Для КАЖДОГО найденного набора данных создай JSON-объект. Верни ТОЛЬКО JSON-массив этих объектов. Структура каждого объекта: {\\\"chartType\\\": \\\"bar\\\" или \\\"pie\\\", \\\"title\\\": \\\"Название диаграммы\\\", \\\"labels\\\": [\\\"Метка 1\\\"], \\\"data\\\": [число1]}. Если подходящих данных нет, верни пустой массив []. Текст для анализа:\n---\n" + learningsAsString + "\n---"; } - private String buildSvgPrompt(String json) { - return "Ты — эксперт по визуализации данных. На основе следующего JSON, сгенерируй полный и валидный SVG-код для диаграммы. " + - "SVG должен быть стильным и читаемым, с подписями на русском языке. \n" + - "ВАЖНЫЕ ПРАВИЛА:\n" + - "1. Все значения атрибутов width, height, x, y, r должны быть ПОЛОЖИТЕЛЬНЫМИ числами (>= 0).\n" + - "2. Не добавляй никаких комментариев или объяснений.\n" + - "3. Верни ТОЛЬКО SVG-код, начиная с тега и заканчивая .\n\n" + - "JSON с данными:\n---\n" + - json + "\n---"; + private String buildChartDataPrompt(String learningsAsString) { + return "You are an AI data analyst. Carefully analyze the following text. Find all sets of numerical data suitable for simple bar or pie charts. For EACH data set you find, create a JSON object." + + + " Return ONLY a JSON array of these objects. The structure of each object MUST STRICTLY be: " + + "{\"chartType\": \"bar\" or \"pie\", \"title\": \"Chart Title\", \"labels\": [\"Label 1\"], \"data\": [number1]}. " + + + "DO NOT omit any keys." + + "\n\n" + + "Example of a correct response:\n" + + "[{\"chartType\":\"bar\",\"title\":\"Growth by Year\",\"labels\":[\"2023\",\"2024\"],\"data\":[100,150]}]" + + + "\n\n" + + "If no suitable data is found, return an empty array [].\n\n" + + "Text to analyze:\n---\n" + + learningsAsString + "\n---"; } + + private String buildSvgPromptRussian(String json) { + return "Ты — эксперт по визуализации данных. На основе следующего JSON, сгенерируй полный и валидный SVG-код для диаграммы. " + + + "SVG должен быть стильным и читаемым, с подписями на русском языке. \n" + + "ВАЖНЫЕ ПРАВИЛА:\n" + + "1. Все значения атрибутов width, height, x, y, r должны быть ПОЛОЖИТЕЛЬНЫМИ числами (>= 0).\n" + + "2. Не добавляй никаких комментариев или объяснений.\n" + + "3. Верни ТОЛЬКО SVG-код, начиная с тега и заканчивая .\n\n" + + "JSON с данными:\n---\n" + + json + "\n---"; + } + + private String buildSvgPrompt(String json) { + return "You are a data visualization expert that generates clean, valid SVG code.\n" + + "Based on the following JSON, generate a complete and valid SVG code for a bar chart.\n\n" + + + "IMPORTANT RULES:\n" + + "1. The SVG coordinate system starts with (0,0) in the TOP-LEFT corner. The Y-axis points DOWN.\n" + + "2. Therefore, to draw a bar upwards from the bottom, the 'y' attribute of the must be calculated as (chart_height - bar_height), and the 'height' attribute must ALWAYS be a POSITIVE number.\n" + + + "3. All dimensional attributes (width, height, x, y, r) MUST be POSITIVE numbers (>= 0).\n" + + "4. The chart must be visually appealing, with appropriate padding, colors, and Russian labels.\n" + + "5. Double-check your final SVG code to ensure no height or width attributes are negative.\n" + + "6. Return ONLY the raw SVG code, starting with and ending with . Do not include any explanations or markdown.\n\n" + + + + "JSON data:\n---\n" + + json + "\n---"; + } + } \ No newline at end of file