Files
growth_report/IFLOW.md
2025-12-21 23:17:35 +08:00

235 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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