|
|
|
@ -1,6 +1,5 @@
|
|
|
|
|
package com.dsideal.base.AI.Generator;
|
|
|
|
|
|
|
|
|
|
import com.dsideal.base.Util.CallDeepSeek;
|
|
|
|
|
import java.io.FileWriter;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
@ -8,67 +7,51 @@ import java.nio.charset.StandardCharsets;
|
|
|
|
|
public class HtmlGenerator {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生成HTML格式的总结报告
|
|
|
|
|
* @param analysisResult AI分析结果
|
|
|
|
|
* 构建HTML提示词
|
|
|
|
|
*/
|
|
|
|
|
public static String buildHtmlPrompt(String dataContent, String regionName) {
|
|
|
|
|
return String.format(
|
|
|
|
|
"请根据以下数据内容,生成一个完整的HTML格式报告。要求:\n\n" +
|
|
|
|
|
"1. 生成完整的HTML文档结构(包含<!DOCTYPE html>、<html>、<head>、<body>等标签)\n" +
|
|
|
|
|
"2. 使用现代化的CSS样式,包含响应式设计\n" +
|
|
|
|
|
"3. 必须包含以下类型的图表(使用Chart.js库):\n" +
|
|
|
|
|
" - 人口分布饼图\n" +
|
|
|
|
|
" - 教育资源对比柱状图\n" +
|
|
|
|
|
" - 综合指标雷达图\n" +
|
|
|
|
|
" - 发展趋势线图\n" +
|
|
|
|
|
"4. 图表数据要根据数据内容合理推算和展示\n" +
|
|
|
|
|
"5. 报告标题为:《%s人口变化趋势对基础教育的影响分析报告》\n" +
|
|
|
|
|
"6. 包含报告摘要、详细分析、图表展示、结论建议等章节\n" +
|
|
|
|
|
"7. 样式要美观专业,适合作为正式报告展示\n" +
|
|
|
|
|
"8. 直接输出完整的HTML代码,不要用markdown包装\n\n" +
|
|
|
|
|
"数据内容:\n%s\n\n" +
|
|
|
|
|
"请生成完整的HTML代码:",
|
|
|
|
|
regionName, dataContent
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存HTML内容到文件
|
|
|
|
|
* @param htmlContent HTML内容
|
|
|
|
|
* @param outputPath 输出文件路径
|
|
|
|
|
* @param regionName 地区名称
|
|
|
|
|
* @return 生成的HTML文件路径
|
|
|
|
|
*/
|
|
|
|
|
public void generateHtmlReport(String analysisResult, String outputPath, String regionName) {
|
|
|
|
|
public void saveHtmlContent(String htmlContent, String outputPath) {
|
|
|
|
|
try {
|
|
|
|
|
// 构建DeepSeek提示词,要求生成包含图表的HTML报告
|
|
|
|
|
String prompt = buildHtmlPrompt(analysisResult, regionName);
|
|
|
|
|
|
|
|
|
|
System.out.println("正在调用DeepSeek生成HTML报告...");
|
|
|
|
|
|
|
|
|
|
// 调用DeepSeek API生成HTML内容
|
|
|
|
|
String htmlContent = CallDeepSeek.callDeepSeek(prompt);
|
|
|
|
|
|
|
|
|
|
if (htmlContent == null || htmlContent.trim().isEmpty()) {
|
|
|
|
|
System.err.println("DeepSeek生成HTML内容失败");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 清理HTML内容(移除可能的markdown标记)
|
|
|
|
|
// 清理HTML内容
|
|
|
|
|
htmlContent = cleanHtmlContent(htmlContent);
|
|
|
|
|
|
|
|
|
|
// 保存HTML文件
|
|
|
|
|
try (FileWriter writer = new FileWriter(outputPath, StandardCharsets.UTF_8)) {
|
|
|
|
|
writer.write(htmlContent);
|
|
|
|
|
}
|
|
|
|
|
System.out.println("HTML报告生成成功: " + outputPath);
|
|
|
|
|
System.out.println("HTML文件保存成功: " + outputPath);
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
System.err.println("保存HTML文件时出错: " + e.getMessage());
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
System.err.println("生成HTML报告时出错: " + e.getMessage());
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
throw new RuntimeException("保存HTML文件失败", e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构建DeepSeek提示词
|
|
|
|
|
*/
|
|
|
|
|
private static String buildHtmlPrompt(String analysisResult, String regionName) {
|
|
|
|
|
return String.format(
|
|
|
|
|
"请根据以下数据分析结果,生成一个完整的HTML格式报告。要求:\n\n" +
|
|
|
|
|
"1. 生成完整的HTML文档结构(包含<!DOCTYPE html>、<html>、<head>、<body>等标签)\n" +
|
|
|
|
|
"2. 使用现代化的CSS样式,包含响应式设计\n" +
|
|
|
|
|
"3. 必须包含以下类型的图表(使用Chart.js库):\n" +
|
|
|
|
|
" - 人口分布饼图\n" +
|
|
|
|
|
" - 教育资源对比柱状图\n" +
|
|
|
|
|
" - 综合指标雷达图\n" +
|
|
|
|
|
" - 发展趋势线图\n" +
|
|
|
|
|
"4. 图表数据要根据分析内容合理推算和展示\n" +
|
|
|
|
|
"5. 报告标题为:《%s人口变化趋势对基础教育的影响分析报告》\n" +
|
|
|
|
|
"6. 包含报告摘要、详细分析、图表展示、结论建议等章节\n" +
|
|
|
|
|
"7. 样式要美观专业,适合作为正式报告展示\n" +
|
|
|
|
|
"8. 直接输出完整的HTML代码,不要用markdown包装\n\n" +
|
|
|
|
|
"数据分析结果:\n%s\n\n" +
|
|
|
|
|
"请生成完整的HTML代码:",
|
|
|
|
|
regionName, analysisResult
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 清理HTML内容
|
|
|
|
|
*/
|
|
|
|
|