diff --git a/WebRoot/ai.html b/WebRoot/ai.html index f7ebef63..c126dbd4 100644 --- a/WebRoot/ai.html +++ b/WebRoot/ai.html @@ -104,9 +104,10 @@ background-color: #f8f9fa; font-family: 'Courier New', monospace; font-size: 14px; - line-height: 1.4; - white-space: pre-wrap; + line-height: 1.6; + white-space: pre-line; word-wrap: break-word; + overflow-wrap: break-word; } .download-section { @@ -502,41 +503,91 @@ function processTextBuffer() { const dataArea = document.getElementById('dataArea'); - // 检查缓冲区中是否包含完整的句子或段落 - const sentences = textBuffer.match(/[^。!?\n]*[。!?\n]/g); - - if (sentences) { - // 显示完整的句子 - sentences.forEach(sentence => { - if (sentence.trim()) { - dataArea.textContent += sentence.trim() + '\n'; + // 首先处理明确的换行符 + if (textBuffer.includes('\n')) { + const lines = textBuffer.split('\n'); + const completedLines = lines.slice(0, -1); + const remainingText = lines[lines.length - 1]; + + completedLines.forEach(line => { + if (line.trim()) { + dataArea.innerHTML += line + '
'; + } else { + dataArea.innerHTML += '
'; } }); - // 从缓冲区中移除已显示的句子 - const processedText = sentences.join(''); - textBuffer = textBuffer.substring(processedText.length); - } else { - // 如果缓冲区太长但没有句号,按长度分割显示 - if (textBuffer.length > 100) { - // 寻找合适的分割点(空格、逗号等) - let splitIndex = textBuffer.lastIndexOf(' ', 80); - if (splitIndex === -1) { - splitIndex = textBuffer.lastIndexOf(',', 80); - } - if (splitIndex === -1) { - splitIndex = textBuffer.lastIndexOf('、', 80); - } - if (splitIndex === -1) { - splitIndex = 80; // 强制分割 + textBuffer = remainingText; + } + + // 简化表格处理:只处理完整的表格行 + if (textBuffer.includes('|')) { + // 检测并处理完整的表格行(至少包含两个|符号) + const tableRowRegex = /\|[^|]*\|[^|]*\|/; + if (tableRowRegex.test(textBuffer)) { + // 查找表格行的起始位置 + const match = textBuffer.match(tableRowRegex); + if (match) { + const beforeTable = textBuffer.substring(0, match.index); + const tableRow = match[0]; + const afterTable = textBuffer.substring(match.index + match[0].length); + + // 输出表格前的内容 + if (beforeTable.trim()) { + dataArea.innerHTML += beforeTable.trim() + '
'; + } + + // 输出表格行 + const cleanTableRow = tableRow.replace(/\|/g, ' | ').replace(/\s+/g, ' ').trim(); + dataArea.innerHTML += cleanTableRow + '
'; + + // 更新缓冲区 + textBuffer = afterTable; } - - const textToShow = textBuffer.substring(0, splitIndex + 1); - if (textToShow.trim()) { - dataArea.textContent += textToShow.trim() + '\n'; + } + } + + // 处理标题(只在标题前添加换行) + if (textBuffer.includes('#')) { + textBuffer = textBuffer.replace(/(#{1,6}\s*[^#\n]+)/g, '
$1'); + } + + // 处理列表项(简化处理) + if (textBuffer.includes('- ')) { + textBuffer = textBuffer.replace(/([^\n])(-\s+)/g, '$1
$2'); + } + + // 如果缓冲区有内容且包含
标签,立即输出 + if (textBuffer.includes('
')) { + const parts = textBuffer.split('
'); + for (let i = 0; i < parts.length - 1; i++) { + if (parts[i].trim()) { + dataArea.innerHTML += parts[i].trim() + '
'; + } else { + dataArea.innerHTML += '
'; } - textBuffer = textBuffer.substring(splitIndex + 1); } + textBuffer = parts[parts.length - 1]; + } + + // 处理过长的普通文本 + if (textBuffer.length > 200) { + let splitIndex = textBuffer.lastIndexOf(' ', 150); + if (splitIndex === -1) { + splitIndex = textBuffer.lastIndexOf(',', 150); + } + if (splitIndex === -1) { + splitIndex = textBuffer.lastIndexOf('、', 150); + } + if (splitIndex === -1) { + splitIndex = 150; + } + + const textToShow = textBuffer.substring(0, splitIndex + 1); + if (textToShow.trim()) { + dataArea.innerHTML += textToShow + '
'; + } + textBuffer = textBuffer.substring(splitIndex + 1); } } @@ -581,7 +632,7 @@ function clearData() { const dataArea = document.getElementById('dataArea'); - dataArea.textContent = '等待数据...'; + dataArea.innerHTML = '等待数据...'; textBuffer = ''; // 清空文本缓冲区 downloadUrls = []; updateDownloadLinks(); diff --git a/WebRoot/upload/怒江州与昆明市_教育分析报告_20250615_115808.docx b/WebRoot/upload/怒江州与昆明市_教育分析报告_20250615_115808.docx new file mode 100644 index 00000000..1f3fb429 Binary files /dev/null and b/WebRoot/upload/怒江州与昆明市_教育分析报告_20250615_115808.docx differ diff --git a/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_114831.html b/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_114831.html new file mode 100644 index 00000000..5a9e973c --- /dev/null +++ b/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_114831.html @@ -0,0 +1,758 @@ + + + + + + 怒江州与昭通市人口变化趋势对基础教育的影响分析报告 + + + + +
+

怒江州与昭通市人口变化趋势对基础教育的影响分析报告

+

云南省教育资源配置发展预测数据对比分析

+
+ +
+

报告摘要

+

本报告基于怒江州与昭通市2012-2035年的人口变化趋势数据,分析了两地城乡人口结构变化、学生数量变化以及教职工需求变化对基础教育资源配置的影响。报告显示,两地人口均呈现下降趋势,但城乡人口结构变化存在差异,这对基础教育资源配置提出了新的挑战和要求。

+
+ +
+

一、总人口变化趋势

+

怒江州总人口在2012-2019年呈平稳增长趋势,2019年达到顶峰55.7万人后开始下降,预计2035年将下降至48.4万人。昭通市总人口在2012-2019年持续大幅增长,2020年后迅速下降,预计2035年将减少至393.6万人。

+ +
+ +
+
+ +
+

二、城乡人口变化趋势

+

怒江州城镇人口数量呈缓慢增长趋势,乡村人口数量显著减少。昭通市乡村人口明显下降,城镇人口呈现稳步增长趋势,但2026年后城乡人口均呈现下降趋势。

+ +
+ +
+ +
+ +
+
+ +
+

三、学生数量变化趋势

+

怒江州各学段学生数量总体呈下降趋势,城区学生数量略有增长,镇区和乡村学生数量明显减少。昭通市各学段学生数量也呈现明显下降趋势,城区相对稳定,乡村下降显著。

+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+

四、教职工需求变化趋势

+

怒江州基础教育教职工数总体需求保持平缓,但存在区域性、结构性、学科性短缺。昭通市基础教育教职工数总体需求呈现减少趋势,各学段教职工需求均有不同程度减少。

+ +
+ +
+ +
+ +
+
+ +
+

五、学校占地面积需求对比

+

怒江州基础教育学校占地面积总量需求略有下降,各学段占地面积总体满足需求。昭通市基础教育学校占地面积总量需求逐步减少,各学段占地面积需求均有不同程度减少。

+ +
+ +
+
+ +
+

六、结论与建议

+

1. 两地人口均呈现下降趋势,但城乡结构变化不同,怒江州城镇化进程相对缓慢,昭通市城镇化进程较快。

+

2. 学生数量总体下降,但城区学生数量相对稳定或略有增长,乡村学生数量明显减少,需调整教育资源城乡配置。

+

3. 教职工需求怒江州保持平稳,昭通市明显减少,但两地均存在结构性短缺问题,需优化教师队伍结构。

+

4. 学校占地面积需求总体减少,为教育资源整合提供了空间,可考虑合并乡村小型学校,提高城区学校资源利用效率。

+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_115051.docx b/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_115051.docx new file mode 100644 index 00000000..88c045d6 Binary files /dev/null and b/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_115051.docx differ diff --git a/WebRoot/upload/怒江州与迪庆州_教育分析报告_20250615_115706.docx b/WebRoot/upload/怒江州与迪庆州_教育分析报告_20250615_115706.docx new file mode 100644 index 00000000..ae863839 Binary files /dev/null and b/WebRoot/upload/怒江州与迪庆州_教育分析报告_20250615_115706.docx differ diff --git a/WebRoot/upload/文山州与怒江州_教育分析报告_20250615_115552.docx b/WebRoot/upload/文山州与怒江州_教育分析报告_20250615_115552.docx new file mode 100644 index 00000000..82d374b5 Binary files /dev/null and b/WebRoot/upload/文山州与怒江州_教育分析报告_20250615_115552.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_114421.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_114421.docx new file mode 100644 index 00000000..cc74c8d2 Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_114421.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115240.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115240.docx new file mode 100644 index 00000000..ed5ea33e Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115240.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115345.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115345.docx new file mode 100644 index 00000000..253209bd Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115345.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120033.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120033.docx new file mode 100644 index 00000000..a4ee2d22 Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120033.docx differ