fix:修改技术文档,修复一些BUG

This commit is contained in:
2025-12-11 11:24:42 +08:00
parent f437842a81
commit 4a5672ee62
5 changed files with 261 additions and 127 deletions

100
IFLOW.md
View File

@@ -2,65 +2,93 @@
## 项目概述 ## 项目概述
这是一个基于Python的自动化幼儿园成长报告生成系统。该系统可以从Excel数据文件中读取幼儿信息结合AI生成个性化评语并将所有信息批量填充到PPT模板中最终生成每个学生的个性化成长报告。系统支持字体安装、图片替换、批量PDF转换等功能。 这是一个基于Python的自动化幼儿园成长报告生成系统。该系统可以从Excel数据文件中读取幼儿信息结合AI生成个性化评语并将所有信息批量填充到PPT模板中最终生成每个学生的个性化成长报告。系统支持双界面运行(命令行界面和图形界面),具备字体安装、图片替换、批量PDF转换、生肖计算等功能。
## 技术栈 ## 技术栈
- **Python 3.x**: 主要编程语言 - **Python 3.13+**: 主要编程语言
- **python-pptx**: PPT文件处理 - **python-pptx**: PPT文件处理
- **pandas**: Excel数据读取与处理 - **pandas**: Excel数据读取与处理
- **langchain**: AI模型集成 - **langchain**: AI模型集成
- **comtypes**: PowerPoint转PDF功能 - **comtypes**: PowerPoint转PDF功能
- **rich**: 美化命令行界面 - **rich**: 美化命令行界面
- **loguru**: 日志记录 - **loguru**: 日志记录
- **toml**: 配置文件解析 - **tomli**: 配置文件解析
- **tkinter**: 图形用户界面
## 核心功能 ## 核心功能
### 1. 生成模板 (📁 生成模板) ### 1. 生成模板 (📁 生成图片路径)
- 从Excel文件中读取学生姓名 - 从Excel文件中读取学生姓名
- 为每个学生创建图片文件夹结构 - 为每个学生创建图片文件夹结构
- 支持批量创建学生专属图片目录
### 2. 生成评语 (🤖 生成评语) ### 2. 生成评语 (🤖 生成评语)
- 使用AI模型根据学生姓名、年龄组、性别和表现特征生成个性化评语
- 使用AI模型根据学生姓名、年龄组和表现特征生成个性化评语
- 评语会自动写入Excel文件的对应列 - 评语会自动写入Excel文件的对应列
- 支持跳过已有评语的记录以节省API调用 - 支持跳过已有评语的记录以节省API调用
- 采用"治愈系"三段式评语结构
### 3. 生成报告 (📊 生成报告) ### 3. 生成报告 (📊 生成报告)
- 读取Excel数据和图片资源 - 读取Excel数据和图片资源
- 将信息批量填充到PPT模板中 - 将信息批量填充到PPT模板中
- 保持原有的文字格式和样式 - 保持原有的文字格式和样式
- 替换文本占位符和图片占位符 - 替换文本占位符和图片占位符
- 支持5页PPT模板的完整替换
### 4. 格式转换 (📑 格式转换) ### 4. 格式转换 (📑 格式转换)
- 批量将生成的PPT文件转换为PDF格式 - 批量将生成的PPT文件转换为PDF格式
- 使用COM接口与PowerPoint进行交互 - 使用COM接口与PowerPoint进行交互
- 支持跳过已存在的PDF文件
### 5. 生肖转化 (🐂 生肖转化)
- 根据学生生日自动计算生肖
- 批量更新Excel中的生肖信息
- 支持日期格式自动识别
### 6. 导出数据模板 (📦 导出数据模板)
- 生成标准化的数据模板ZIP包
- 包含示例Excel文件和图片文件夹结构
- 方便新用户快速上手
### 7. 初始化系统 (📤 初始化系统)
- 自动创建必要的目录结构
- 安装所需字体文件
- 配置系统环境
## 主要文件结构 ## 主要文件结构
``` ```
growth_report/ growth_report/
├── main.py # 主程序入口,包含所有核心功能 ├── main.py # 主程序入口(命令行界面)
├── config.toml # 项目配置文件 ├── UI.py # 图形用户界面入口
├── config.env.toml # 项目配置文件
├── pyproject.toml # 项目依赖配置
├── config/ ├── config/
── config.py # 配置加载工具 ── config.py # 配置加载工具
│ └── output/ # 配置输出目录
├── utils/ ├── utils/
│ ├── agent_utils.py # AI评语生成工具 │ ├── agent_utils.py # AI评语生成工具
│ ├── file_utils.py # 文件操作工具
│ ├── font_utils.py # 字体安装和检测工具 │ ├── font_utils.py # 字体安装和检测工具
│ ├── generate_utils.py # 核心生成功能
│ ├── growt_utils.py # PPT模板替换工具
│ ├── image_utils.py # 图片处理工具
│ ├── pdf_utils.py # PDF转换工具
│ ├── pptx_utils.py # PPT文本和图片替换工具 │ ├── pptx_utils.py # PPT文本和图片替换工具
── pef_utils.py # PPT转PDF工具 ── zodiac_utils.py # 生肖计算工具
── data/ ── data/
├── names.xlsx # 学生数据Excel文件 ├── names.xlsx # 学生数据Excel文件
└── images/ # 学生图片资源文件夹 └── images/ # 学生图片资源文件夹
├── fonts/ # 字体文件目录
├── templates/ # PPT模板文件
├── output/ # 生成的报告输出目录
└── old/ # 旧版本文件备份
``` ```
## 配置说明 ## 配置说明
### config.toml ### config.env.toml
- `paths`: 定义文件路径模板、输出、Excel、图片、字体 - `paths`: 定义文件路径模板、输出、Excel、图片、字体
- `class_info`: 班级信息(名称、教师名单) - `class_info`: 班级信息(名称、教师名单)
@@ -82,6 +110,7 @@ Excel文件应包含以下列顺序必须与配置文件中一致
- 喜欢的游戏 - 喜欢的游戏
- 喜欢吃的食物 - 喜欢吃的食物
- 评价 - 评价
- 表现特征可选用于AI评语生成
### 图片文件结构 ### 图片文件结构
@@ -94,56 +123,75 @@ data/images/
├── 2.jpg # 活动照片2 ├── 2.jpg # 活动照片2
``` ```
支持多种图片格式:.jpg, .jpeg, .png
## AI评语生成 ## AI评语生成
系统使用langchain框架与AI模型集成根据以下信息生成评语 系统使用langchain框架与AI模型集成根据以下信息生成评语
- 幼儿姓名 - 幼儿姓名
- 所在班级(年龄段) - 所在班级(年龄段)
- 性别
- 表现特征 - 表现特征
评语风格为"治愈系",采用三段式结构:亲切问候、具体描述优点、委婉期望与祝福。 评语风格为"治愈系",采用三段式结构:亲切问候、具体描述优点、委婉期望与祝福。支持分龄侧重评价,针对不同年龄段有不同的评价重点。
## 使用方法 ## 使用方法
### 运行程序 ### 运行程序
#### 命令行界面
```bash ```bash
python main.py python main.py
``` ```
### 依赖安装 #### 图形界面
```bash ```bash
pip install -r requirements.txt python UI.py
``` ```
使用uv 直接运行批处理文件
```bash
start_app.bat
```
### 依赖安装
#### 使用uv推荐
```bash ```bash
uv sync uv sync
``` ```
#### 使用pip
```bash
pip install -r requirements.txt
```
### 初始化设置 ### 初始化设置
1. 编辑`config.toml`配置文件 1. 编辑`config.env.toml`配置文件设置API密钥和其他参数
2. 准备Excel数据文件 2. 准备Excel数据文件(按指定格式)
3. 准备图片资源文件夹 3. 准备图片资源文件夹(按指定结构)
4. 准备PPT模板文件 4. 准备PPT模板文件
## 系统特点 ## 系统特点
- **双界面支持**: 提供命令行界面和图形界面两种操作方式
- **自动化流程**: 从数据到成品报告的全流程自动化 - **自动化流程**: 从数据到成品报告的全流程自动化
- **AI集成**: 智能生成个性化评语 - **AI集成**: 智能生成个性化评语
- **格式保持**: 替换文本时保持原有格式 - **格式保持**: 替换文本时保持原有格式
- **用户友好**: 丰富的命令行界面和进度提 - **用户友好**: 丰富的命令行界面和图形界面,实时日志显
- **批量处理**: 支持批量生成和转换 - **批量处理**: 支持批量生成和转换
- **错误处理**: 完善的异常处理和日志记录 - **错误处理**: 完善的异常处理和日志记录
- **生肖计算**: 自动根据生日计算生肖
- **模板导出**: 支持导出标准数据模板
## 开发约定 ## 开发约定
- 使用`loguru`进行日志记录 - 使用`loguru`进行日志记录
- 使用`rich`美化命令行输出 - 使用`rich`美化命令行输出
- 使用`tkinter`构建图形界面
- 配置文件使用TOML格式 - 配置文件使用TOML格式
- 图片和文本替换使用占位符机制 - 图片和文本替换使用占位符机制
- 遵循Python代码规范 - 遵循Python代码规范
- 使用uv进行依赖管理

268
README.md
View File

@@ -1,149 +1,231 @@
# 幼儿园成长报告生成系统 # 幼儿园成长报告生成系统
[![Python Version](https://img.shields.io/badge/python-3.13+-blue.svg)](https://python.org)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
## 项目概述 ## 项目概述
基于Python的自动化尚城幼儿园学期成长报告生成系统。该系统可以从Excel数据文件中读取幼儿信息结合AI生成个性化评语并将所有信息批量填充到PPT模板中最终生成每个学生的个性化成长报告。系统支持字体安装、图片替换、批量PDF转换功能。 基于Python的自动化幼儿园学期成长报告生成系统。该系统可以从Excel数据文件中读取幼儿信息结合AI生成个性化评语并将所有信息批量填充到PPT模板中最终生成每个学生的个性化成长报告。系统支持双界面操作(命令行界面和图形界面),具备字体安装、图片替换、批量PDF转换、生肖计算、模板导出等完整功能。
## 技术栈 ## ✨ 主要特性
- **Python 3.x**: 主要编程语言 - 🚀 **一键生成**: 从Excel数据到完整报告的自动化流程
- 🤖 **AI评语**: 智能生成个性化、治愈系风格的幼儿评语
- 🖼️ **图文并茂**: 支持个人照片、活动照片、班级合影的自动替换
- 📄 **格式转换**: 批量PPT转PDF便于分发和存档
- 🎨 **双界面**: 提供命令行界面和图形界面,满足不同用户需求
- 🐲 **生肖计算**: 根据生日自动计算生肖信息
- 📦 **模板导出**: 生成标准化数据模板,快速上手
## 🛠️ 技术栈
- **Python 3.13+**: 主要编程语言
- **python-pptx**: PPT文件处理 - **python-pptx**: PPT文件处理
- **pandas**: Excel数据读取与处理 - **pandas**: Excel数据读取与处理
- **langchain**: AI模型集成 - **langchain**: AI模型集成
- **comtypes**: PowerPoint转PDF功能 - **comtypes**: PowerPoint转PDF功能
- **rich**: 美化命令行界面 - **rich**: 美化命令行界面
- **loguru**: 日志记录 - **loguru**: 日志记录
- **toml**: 配置文件解析 - **tkinter**: 图形用户界面
- **tomli**: 配置文件解析
## 核心功能 ## 📋 系统要求
### 1. 生成模板 (📁 生成模板) - Windows 10/11 (支持PowerPoint COM接口)
- Python 3.13 或更高版本
- Microsoft PowerPoint (用于PDF转换功能)
- 从Excel文件中读取学生姓名 ## 🚀 快速开始
- 为每个学生创建图片文件夹结构
### 2. 生成评语 (🤖 生成评语) ### 1. 克隆项目
- 使用AI模型根据学生姓名、年龄组和表现特征生成个性化评语 ```bash
- 评语会自动写入Excel文件的对应列 git clone https://gitee.com/hanhanshibaobei/growthreport.git
- 支持跳过已有评语的记录以节省API调用 cd growthreport
### 3. 生成报告 (📊 生成报告)
- 读取Excel数据和图片资源
- 将信息批量填充到PPT模板中
- 保持原有的文字格式和样式
- 替换文本占位符和图片占位符
### 4. 格式转换 (📑 格式转换)
- 批量将生成的PPT文件转换为PDF格式
- 使用COM接口与PowerPoint进行交互
## 主要文件结构
```
growth_report/
├── main.py # 主程序入口,包含所有核心功能
├── config.toml # 项目配置文件
├── config/
│ └── config.py # 配置加载工具
├── utils/
│ ├── agent_utils.py # AI评语生成工具
│ ├── font_utils.py # 字体安装和检测工具
│ ├── pptx_utils.py # PPT文本和图片替换工具
│ ├── pef_utils.py # PPT转PDF工具
└── data/
├── names.xlsx # 学生数据Excel文件
└── images/ # 学生图片资源文件夹
``` ```
## 配置说明 ### 2. 安装依赖
### config.toml #### 使用uv推荐
```bash
uv sync
```
- `paths`: 定义文件路径模板、输出、Excel、图片、字体 #### 使用pip
- `class_info`: 班级信息(名称、教师名单) ```bash
- `defaults`: 默认设置(默认评语、年龄组) pip install -r requirements.txt
- `excel`: Excel表配置工作表名、列名顺序 ```
- `ai`: AI配置API密钥、URL、模型、提示词
### 3. 配置系统
编辑 `config.env.toml` 文件,设置以下信息:
- AI API密钥和配置
- 班级信息和教师名单
- 文件路径配置
### 4. 运行程序
#### 图形界面(推荐)
```bash
python UI.py
```
或直接运行:
```bash
start_app.bat
```
#### 命令行界面
```bash
python main.py
```
## 📖 使用指南
### 功能模块
1. **📁 生成图片路径**: 为每个学生创建图片文件夹结构
2. **🤖 生成评语**: 使用AI生成个性化评语
3. **📊 生成报告**: 批量生成PPT成长报告
4. **📑 格式转换**: 将PPT转换为PDF
5. **🐂 生肖转化**: 根据生日计算生肖
6. **📦 导出数据模板**: 生成标准化模板
7. **📤 初始化系统**: 配置系统环境
### Excel数据格式 ### Excel数据格式
Excel文件应包含以下列顺序必须与配置文件中一致 Excel文件应包含以下列顺序必须与配置文件中一致
- 姓名 | 列名 | 说明 | 示例 |
- 英文名 |------|------|------|
- 性别 | 姓名 | 学生姓名 | 张小明 |
- 生日 | 英文名 | 英文昵称 | Tom |
- 属相 | 性别 | 性别 | 男 |
- 我的好朋友 | 生日 | 出生日期 | 2019-03-15 |
- 我的爱好 | 属相 | 生肖(自动计算) | 猪 |
- 喜欢的游戏 | 我的好朋友 | 好朋友姓名 | 李小红 |
- 喜欢吃的食物 | 我的爱好 | 个人爱好 | 画画、唱歌 |
- 评价 | 喜欢的游戏 | 喜欢的游戏 | 积木、捉迷藏 |
| 喜欢吃的食物 | 喜欢的食物 | 苹果、饼干 |
| 评价 | AI生成的评语 | 自动填充 |
| 表现特征 | 表现关键词(可选) | 活泼、聪明 |
### 图片文件结构 ### 图片文件结构
``` ```
data/images/ data/images/
├── 班级名称.jpg # 班级集体照片 ├── K4D.jpg # 班级集体照片
└── 学生姓名/ └── 张小明/
├── me_image.jpg # 学生个人照片 ├── me_image.jpg # 学生个人照片
├── 1.jpg # 活动照片1 ├── 1.jpg # 活动照片1
── 2.jpg # 活动照片2 ── 2.jpg # 活动照片2
``` ```
## AI评语生成 支持多种图片格式:.jpg, .jpeg, .png
## 📁 项目结构
```
growth_report/
├── main.py # 主程序入口(命令行界面)
├── UI.py # 图形用户界面入口
├── config.env.toml # 项目配置文件
├── pyproject.toml # 项目依赖配置
├── start_app.bat # 启动脚本
├── config/
│ ├── config.py # 配置加载工具
│ └── output/ # 配置输出目录
├── utils/
│ ├── agent_utils.py # AI评语生成工具
│ ├── file_utils.py # 文件操作工具
│ ├── font_utils.py # 字体安装和检测工具
│ ├── generate_utils.py # 核心生成功能
│ ├── growt_utils.py # PPT模板替换工具
│ ├── image_utils.py # 图片处理工具
│ ├── pdf_utils.py # PDF转换工具
│ ├── pptx_utils.py # PPT文本和图片替换工具
│ └── zodiac_utils.py # 生肖计算工具
├── data/
│ ├── names.xlsx # 学生数据Excel文件
│ └── images/ # 学生图片资源文件夹
├── fonts/ # 字体文件目录
├── templates/ # PPT模板文件
├── output/ # 生成的报告输出目录
└── old/ # 旧版本文件备份
```
## 🤖 AI评语生成
系统使用langchain框架与AI模型集成根据以下信息生成评语 系统使用langchain框架与AI模型集成根据以下信息生成评语
- 幼儿姓名 - 幼儿姓名
- 所在班级(年龄段) - 所在班级(年龄段)
- 性别
- 表现特征 - 表现特征
评语风格为"治愈系",采用三段式结构:亲切问候、具体描述优点、委婉期望与祝福。 评语风格为"治愈系",采用三段式结构:
1. **开头**: 亲切问候 + 总体印象
2. **正文**: 具体描述孩子的进步和优点
3. **结尾**: 委婉期望 + 新学期祝福
## 使用方法 支持分龄侧重评价:
- **小班 (3-4岁)**: 适应集体生活、情绪稳定性、基本生活自理能力
- **中班 (4-5岁)**: 社交互动、分享与合作、动手能力、好奇心
- **大班 (5-6岁)**: 学习习惯、逻辑思维、领导力、幼小衔接准备
### 运行程序 ## 🔧 高级配置
```bash ### AI配置
python main.py
`config.env.toml` 中配置AI模型
```toml
[ai]
api_key = "your-api-key"
api_url = "https://api.openai.com/v1"
model = "gpt-3.5-turbo"
prompt = """
你的评语风格是"治愈系"的,能让家长读完后感到欣慰...
"""
``` ```
### 依赖安装 ### 自定义PPT模板
```bash 1.`templates/` 目录放置PPT模板
pip install -r requirements.txt 2. 使用占位符格式:`{{变量名}}`
``` 3. 支持的占位符:
- `{{name}}`: 学生姓名
- `{{class_name}}`: 班级名称
- `{{comments}}`: 评语内容
- 等等...
或使用uv ## 🐛 常见问题
```bash ### Q: PDF转换失败怎么办
uv sync A: 请确保已安装Microsoft PowerPoint并且没有其他程序占用PPT文件。
```
### 初始化设置 ### Q: AI评语生成失败
A: 检查API密钥配置是否正确网络连接是否正常。
1. 编辑`config.toml`配置文件 ### Q: 字体显示异常?
2. 准备Excel数据文件 A: 系统会自动安装所需字体,如仍有问题请手动安装 `fonts/` 目录下的字体文件
3. 准备图片资源文件夹
4. 准备PPT模板文件
## 系统特点 ## 📄 许可证
- **自动化流程**: 从数据到成品报告的全流程自动化 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
- **AI集成**: 智能生成个性化评语
- **格式保持**: 替换文本时保持原有格式
- **用户友好**: 丰富的命令行界面和进度提示
- **批量处理**: 支持批量生成和转换
- **错误处理**: 完善的异常处理和日志记录
## 开发约定 ## 🤝 贡献
- 使用`loguru`进行日志记录 欢迎提交 Issue 和 Pull Request
- 使用`rich`美化命令行输出
- 配置文件使用TOML格 ## 📞 联系方
- 图片和文本替换使用占位符机制
- 遵循Python代码规范 如有问题或建议,请通过以下方式联系:
- 项目地址: https://gitee.com/hanhanshibaobei/growthreport.git
- 邮箱: your-email@example.com
---
⭐ 如果这个项目对你有帮助,请给个星标支持一下!

4
UI.py
View File

@@ -197,3 +197,7 @@ def applicationUI():
root = tk.Tk() root = tk.Tk()
app = ReportApp(root) app = ReportApp(root)
root.mainloop() root.mainloop()
if __name__ == "__main__":
applicationUI()

View File

@@ -107,4 +107,4 @@ def application():
if __name__ == "__main__": if __name__ == "__main__":
applicationUI() application()

View File

@@ -27,7 +27,7 @@ echo ---------------------------------------------------
:: 这里的 gui_app.py 就是你刚才保存的那个带界面的 Python 文件名 :: 这里的 gui_app.py 就是你刚才保存的那个带界面的 Python 文件名
:: 如果你的文件名不一样,请修改下面这一行 :: 如果你的文件名不一样,请修改下面这一行
uv run main.py uv run UI.py
:: 错误捕获 :: 错误捕获
if %errorlevel% neq 0 ( if %errorlevel% neq 0 (