diff --git a/IFLOW.md b/IFLOW.md index cfecbfe..5471274 100644 --- a/IFLOW.md +++ b/IFLOW.md @@ -2,65 +2,93 @@ ## 项目概述 -这是一个基于Python的自动化幼儿园成长报告生成系统。该系统可以从Excel数据文件中读取幼儿信息,结合AI生成个性化评语,并将所有信息批量填充到PPT模板中,最终生成每个学生的个性化成长报告。系统还支持字体安装、图片替换、批量PDF转换等功能。 +这是一个基于Python的自动化幼儿园成长报告生成系统。该系统可以从Excel数据文件中读取幼儿信息,结合AI生成个性化评语,并将所有信息批量填充到PPT模板中,最终生成每个学生的个性化成长报告。系统支持双界面运行(命令行界面和图形界面),具备字体安装、图片替换、批量PDF转换、生肖计算等功能。 ## 技术栈 -- **Python 3.x**: 主要编程语言 +- **Python 3.13+**: 主要编程语言 - **python-pptx**: PPT文件处理 - **pandas**: Excel数据读取与处理 - **langchain**: AI模型集成 - **comtypes**: PowerPoint转PDF功能 - **rich**: 美化命令行界面 - **loguru**: 日志记录 -- **toml**: 配置文件解析 +- **tomli**: 配置文件解析 +- **tkinter**: 图形用户界面 ## 核心功能 -### 1. 生成模板 (📁 生成模板) - +### 1. 生成模板 (📁 生成图片路径) - 从Excel文件中读取学生姓名 - 为每个学生创建图片文件夹结构 +- 支持批量创建学生专属图片目录 ### 2. 生成评语 (🤖 生成评语) - -- 使用AI模型根据学生姓名、年龄组和表现特征生成个性化评语 +- 使用AI模型根据学生姓名、年龄组、性别和表现特征生成个性化评语 - 评语会自动写入Excel文件的对应列 - 支持跳过已有评语的记录以节省API调用 +- 采用"治愈系"三段式评语结构 ### 3. 生成报告 (📊 生成报告) - - 读取Excel数据和图片资源 - 将信息批量填充到PPT模板中 - 保持原有的文字格式和样式 - 替换文本占位符和图片占位符 +- 支持5页PPT模板的完整替换 ### 4. 格式转换 (📑 格式转换) - - 批量将生成的PPT文件转换为PDF格式 - 使用COM接口与PowerPoint进行交互 +- 支持跳过已存在的PDF文件 + +### 5. 生肖转化 (🐂 生肖转化) +- 根据学生生日自动计算生肖 +- 批量更新Excel中的生肖信息 +- 支持日期格式自动识别 + +### 6. 导出数据模板 (📦 导出数据模板) +- 生成标准化的数据模板ZIP包 +- 包含示例Excel文件和图片文件夹结构 +- 方便新用户快速上手 + +### 7. 初始化系统 (📤 初始化系统) +- 自动创建必要的目录结构 +- 安装所需字体文件 +- 配置系统环境 ## 主要文件结构 ``` growth_report/ -├── main.py # 主程序入口,包含所有核心功能 -├── config.toml # 项目配置文件 +├── main.py # 主程序入口(命令行界面) +├── UI.py # 图形用户界面入口 +├── config.env.toml # 项目配置文件 +├── pyproject.toml # 项目依赖配置 ├── config/ -│ └── config.py # 配置加载工具 +│ ├── config.py # 配置加载工具 +│ └── output/ # 配置输出目录 ├── utils/ -│ ├── agent_utils.py # AI评语生成工具 -│ ├── font_utils.py # 字体安装和检测工具 -│ ├── pptx_utils.py # PPT文本和图片替换工具 -│ ├── pef_utils.py # PPT转PDF工具 -└── data/ - ├── names.xlsx # 学生数据Excel文件 - └── images/ # 学生图片资源文件夹 +│ ├── 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/ # 旧版本文件备份 ``` ## 配置说明 -### config.toml +### config.env.toml - `paths`: 定义文件路径(模板、输出、Excel、图片、字体) - `class_info`: 班级信息(名称、教师名单) @@ -82,6 +110,7 @@ Excel文件应包含以下列(顺序必须与配置文件中一致): - 喜欢的游戏 - 喜欢吃的食物 - 评价 +- 表现特征(可选,用于AI评语生成) ### 图片文件结构 @@ -94,56 +123,75 @@ data/images/ ├── 2.jpg # 活动照片2 ``` +支持多种图片格式:.jpg, .jpeg, .png + ## AI评语生成 系统使用langchain框架与AI模型集成,根据以下信息生成评语: - 幼儿姓名 - 所在班级(年龄段) +- 性别 - 表现特征 -评语风格为"治愈系",采用三段式结构:亲切问候、具体描述优点、委婉期望与祝福。 +评语风格为"治愈系",采用三段式结构:亲切问候、具体描述优点、委婉期望与祝福。支持分龄侧重评价,针对不同年龄段有不同的评价重点。 ## 使用方法 ### 运行程序 +#### 命令行界面 ```bash python main.py ``` -### 依赖安装 - +#### 图形界面 ```bash -pip install -r requirements.txt +python UI.py ``` -或使用uv: +或直接运行批处理文件: +```bash +start_app.bat +``` +### 依赖安装 + +#### 使用uv(推荐) ```bash uv sync ``` +#### 使用pip +```bash +pip install -r requirements.txt +``` + ### 初始化设置 -1. 编辑`config.toml`配置文件 -2. 准备Excel数据文件 -3. 准备图片资源文件夹 +1. 编辑`config.env.toml`配置文件,设置API密钥和其他参数 +2. 准备Excel数据文件(按指定格式) +3. 准备图片资源文件夹(按指定结构) 4. 准备PPT模板文件 ## 系统特点 +- **双界面支持**: 提供命令行界面和图形界面两种操作方式 - **自动化流程**: 从数据到成品报告的全流程自动化 - **AI集成**: 智能生成个性化评语 - **格式保持**: 替换文本时保持原有格式 -- **用户友好**: 丰富的命令行界面和进度提示 +- **用户友好**: 丰富的命令行界面和图形界面,实时日志显示 - **批量处理**: 支持批量生成和转换 - **错误处理**: 完善的异常处理和日志记录 +- **生肖计算**: 自动根据生日计算生肖 +- **模板导出**: 支持导出标准数据模板 ## 开发约定 - 使用`loguru`进行日志记录 - 使用`rich`美化命令行输出 +- 使用`tkinter`构建图形界面 - 配置文件使用TOML格式 - 图片和文本替换使用占位符机制 -- 遵循Python代码规范 \ No newline at end of file +- 遵循Python代码规范 +- 使用uv进行依赖管理 \ No newline at end of file diff --git a/README.md b/README.md index 0cf7369..10c2666 100644 --- a/README.md +++ b/README.md @@ -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文件处理 - **pandas**: Excel数据读取与处理 - **langchain**: AI模型集成 - **comtypes**: PowerPoint转PDF功能 - **rich**: 美化命令行界面 - **loguru**: 日志记录 -- **toml**: 配置文件解析 +- **tkinter**: 图形用户界面 +- **tomli**: 配置文件解析 -## 核心功能 +## 📋 系统要求 -### 1. 生成模板 (📁 生成模板) +- Windows 10/11 (支持PowerPoint COM接口) +- Python 3.13 或更高版本 +- Microsoft PowerPoint (用于PDF转换功能) -- 从Excel文件中读取学生姓名 -- 为每个学生创建图片文件夹结构 +## 🚀 快速开始 -### 2. 生成评语 (🤖 生成评语) +### 1. 克隆项目 -- 使用AI模型根据学生姓名、年龄组和表现特征生成个性化评语 -- 评语会自动写入Excel文件的对应列 -- 支持跳过已有评语的记录以节省API调用 - -### 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/ # 学生图片资源文件夹 +```bash +git clone https://gitee.com/hanhanshibaobei/growthreport.git +cd growthreport ``` -## 配置说明 +### 2. 安装依赖 -### config.toml +#### 使用uv(推荐) +```bash +uv sync +``` -- `paths`: 定义文件路径(模板、输出、Excel、图片、字体) -- `class_info`: 班级信息(名称、教师名单) -- `defaults`: 默认设置(默认评语、年龄组) -- `excel`: Excel表配置(工作表名、列名顺序) -- `ai`: AI配置(API密钥、URL、模型、提示词) +#### 使用pip +```bash +pip install -r requirements.txt +``` + +### 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文件应包含以下列(顺序必须与配置文件中一致): -- 姓名 -- 英文名 -- 性别 -- 生日 -- 属相 -- 我的好朋友 -- 我的爱好 -- 喜欢的游戏 -- 喜欢吃的食物 -- 评价 +| 列名 | 说明 | 示例 | +|------|------|------| +| 姓名 | 学生姓名 | 张小明 | +| 英文名 | 英文昵称 | Tom | +| 性别 | 性别 | 男 | +| 生日 | 出生日期 | 2019-03-15 | +| 属相 | 生肖(自动计算) | 猪 | +| 我的好朋友 | 好朋友姓名 | 李小红 | +| 我的爱好 | 个人爱好 | 画画、唱歌 | +| 喜欢的游戏 | 喜欢的游戏 | 积木、捉迷藏 | +| 喜欢吃的食物 | 喜欢的食物 | 苹果、饼干 | +| 评价 | AI生成的评语 | 自动填充 | +| 表现特征 | 表现关键词(可选) | 活泼、聪明 | ### 图片文件结构 ``` data/images/ -├── 班级名称.jpg # 班级集体照片 -└── 学生姓名/ - ├── me_image.jpg # 学生个人照片 - ├── 1.jpg # 活动照片1 - ├── 2.jpg # 活动照片2 +├── K4D.jpg # 班级集体照片 +└── 张小明/ + ├── me_image.jpg # 学生个人照片 + ├── 1.jpg # 活动照片1 + └── 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模型集成,根据以下信息生成评语: - 幼儿姓名 - 所在班级(年龄段) +- 性别 - 表现特征 -评语风格为"治愈系",采用三段式结构:亲切问候、具体描述优点、委婉期望与祝福。 +评语风格为"治愈系",采用三段式结构: +1. **开头**: 亲切问候 + 总体印象 +2. **正文**: 具体描述孩子的进步和优点 +3. **结尾**: 委婉期望 + 新学期祝福 -## 使用方法 +支持分龄侧重评价: +- **小班 (3-4岁)**: 适应集体生活、情绪稳定性、基本生活自理能力 +- **中班 (4-5岁)**: 社交互动、分享与合作、动手能力、好奇心 +- **大班 (5-6岁)**: 学习习惯、逻辑思维、领导力、幼小衔接准备 -### 运行程序 +## 🔧 高级配置 -```bash -python main.py +### AI配置 + +在 `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 -pip install -r requirements.txt -``` +1. 在 `templates/` 目录放置PPT模板 +2. 使用占位符格式:`{{变量名}}` +3. 支持的占位符: + - `{{name}}`: 学生姓名 + - `{{class_name}}`: 班级名称 + - `{{comments}}`: 评语内容 + - 等等... -或使用uv: +## 🐛 常见问题 -```bash -uv sync -``` +### Q: PDF转换失败怎么办? +A: 请确保已安装Microsoft PowerPoint,并且没有其他程序占用PPT文件。 -### 初始化设置 +### Q: AI评语生成失败? +A: 检查API密钥配置是否正确,网络连接是否正常。 -1. 编辑`config.toml`配置文件 -2. 准备Excel数据文件 -3. 准备图片资源文件夹 -4. 准备PPT模板文件 +### Q: 字体显示异常? +A: 系统会自动安装所需字体,如仍有问题请手动安装 `fonts/` 目录下的字体文件。 -## 系统特点 +## 📄 许可证 -- **自动化流程**: 从数据到成品报告的全流程自动化 -- **AI集成**: 智能生成个性化评语 -- **格式保持**: 替换文本时保持原有格式 -- **用户友好**: 丰富的命令行界面和进度提示 -- **批量处理**: 支持批量生成和转换 -- **错误处理**: 完善的异常处理和日志记录 +本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 -## 开发约定 +## 🤝 贡献 -- 使用`loguru`进行日志记录 -- 使用`rich`美化命令行输出 -- 配置文件使用TOML格式 -- 图片和文本替换使用占位符机制 -- 遵循Python代码规范 \ No newline at end of file +欢迎提交 Issue 和 Pull Request! + +## 📞 联系方式 + +如有问题或建议,请通过以下方式联系: + +- 项目地址: https://gitee.com/hanhanshibaobei/growthreport.git +- 邮箱: your-email@example.com + +--- + +⭐ 如果这个项目对你有帮助,请给个星标支持一下! \ No newline at end of file diff --git a/UI.py b/UI.py index a793e10..043c78c 100644 --- a/UI.py +++ b/UI.py @@ -197,3 +197,7 @@ def applicationUI(): root = tk.Tk() app = ReportApp(root) root.mainloop() + + +if __name__ == "__main__": + applicationUI() \ No newline at end of file diff --git a/main.py b/main.py index e4fe42a..26e64ec 100644 --- a/main.py +++ b/main.py @@ -107,4 +107,4 @@ def application(): if __name__ == "__main__": - applicationUI() + application() diff --git a/start_app.bat b/start_app.bat index a8c402d..4b114e5 100644 --- a/start_app.bat +++ b/start_app.bat @@ -27,7 +27,7 @@ echo --------------------------------------------------- :: 这里的 gui_app.py 就是你刚才保存的那个带界面的 Python 文件名 :: 如果你的文件名不一样,请修改下面这一行 -uv run main.py +uv run UI.py :: 错误捕获 if %errorlevel% neq 0 (