Files
aitsc/模板初始化完整文档.md
2025-10-07 00:58:53 +08:00

334 lines
8.5 KiB
Markdown
Raw Permalink 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.
# 模板初始化完整文档
## 📋 概述
本文档详细记录了Flask提示词大师项目中模板数据的初始化过程包括问题分析、解决方案和实施结果。
## 🎯 项目背景
### 数据库配置
- **主数据库**: MySQL 8.0
- **本地数据库**: localhost:3306 (pro_db)
- **腾讯云数据库**: gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936 (pro_db)
- **缓存数据库**: Redis 7-alpine
### 模板数据源
- **文件位置**: `src/flask_prompt_master/promptsTemplates.py`
- **模板总数**: 176个
- **数据格式**: Python字典列表包含完整的提示词模板信息
## 🔍 问题分析
### 初始问题
1. **模块导入错误**: 原始脚本存在Flask模块依赖问题
2. **数据不完整**: 腾讯云数据库中只有2条记录而源文件有176个模板
3. **初始化逻辑**: 脚本检测到已有数据后跳过插入,导致数据不完整
### 根本原因
- 脚本的智能检测机制过于保守
- 缺少强制插入选项
- 模块路径配置问题
## 🛠️ 解决方案
### 方案一:修复原始脚本
**文件**: `src/flask_prompt_master/promptsTemplates.py`
**改进内容**:
```python
# 添加路径配置
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
# 支持多数据库类型
def init_db(database_type='local'):
if database_type == 'tencent':
# 腾讯云数据库配置
conn = pymysql.connect(
host='gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com',
port=24936,
user='root',
password='!Rjb12191',
database='pro_db',
charset='utf8mb4'
)
else:
# 本地数据库配置
conn = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='pro_db',
charset='utf8mb4'
)
```
### 方案二:独立初始化脚本
**文件**: `init_tencent_db.py`
**特点**:
- 独立运行不依赖Flask应用
- 支持交互式选择数据库类型
- 完善的错误处理和日志记录
### 方案三:直接插入脚本(最终方案)
**文件**: `direct_insert_templates.py`
**核心功能**:
```python
def extract_templates_from_file():
"""直接从文件提取模板数据"""
with open('src/flask_prompt_master/promptsTemplates.py', 'r', encoding='utf-8') as f:
content = f.read()
# 使用正则表达式提取templates列表
start_pattern = r'templates\s*=\s*\['
# ... 解析逻辑
templates = eval(templates_str)
return templates
def insert_templates_to_tencent():
"""插入模板数据到腾讯云数据库"""
# 清空现有数据
cursor.execute("TRUNCATE TABLE prompt_template")
# 批量插入所有模板
for template in templates:
cursor.execute(sql, (
template.get('name', ''),
template.get('description', ''),
template.get('category', ''),
template.get('industry', ''),
template.get('profession', ''),
template.get('sub_category', ''),
template.get('system_prompt', ''),
template.get('is_default', False)
))
```
## 🚀 执行过程
### 1. 问题诊断
```bash
# 检查模板数量
python -c "from src.flask_prompt_master.promptsTemplates import templates; print(f'模板总数: {len(templates)}')"
# 结果: 167个模板通过文件分析
# 检查数据库状态
# 发现腾讯云数据库中只有2条记录
```
### 2. 脚本开发
- 创建了3个不同的解决方案
- 最终选择直接插入脚本作为最佳方案
- 实现了完整的错误处理和进度显示
### 3. 数据插入
```bash
python direct_insert_templates.py
```
**执行结果**:
```
============================================================
🔄 直接插入模板数据工具
============================================================
⚠️ 警告:此操作将清空现有的所有模板数据!
是否继续?(y/N): y
🚀 开始插入模板数据到腾讯云数据库...
🔗 连接到腾讯云数据库...
✅ 数据库连接成功
📖 正在读取模板文件...
✅ 成功提取 176 个模板
🗑️ 清空现有模板数据...
✅ 现有数据已清空
📝 开始插入所有模板数据...
📈 已插入 20/176 个模板...
📈 已插入 40/176 个模板...
...
📈 已插入 160/176 个模板...
==================================================
🎉 模板数据插入完成!
✅ 成功插入: 176 个模板
📊 总计模板: 176 个
==================================================
🔍 数据库中的模板总数: 176
```
## 📊 最终结果
### 数据统计
- **总模板数**: 176个
- **插入成功率**: 100%
- **数据完整性**: 验证通过
### 分类分布
| 分类 | 数量 | 占比 |
|------|------|------|
| 架构设计 | 37个 | 21.0% |
| 设计创意 | 25个 | 14.2% |
| 公务员考试 | 15个 | 8.5% |
| 测试开发 | 10个 | 5.7% |
| 全栈开发 | 10个 | 5.7% |
| 技术研发 | 10个 | 5.7% |
| 产品管理 | 10个 | 5.7% |
| 前端开发 | 9个 | 5.1% |
| 法律咨询 | 5个 | 2.8% |
| 教育培训 | 4个 | 2.3% |
| 其他 | 41个 | 23.3% |
### 数据验证
```sql
-- 验证插入结果
SELECT COUNT(*) FROM prompt_template;
-- 结果: 176
-- 查看前5个模板
SELECT id, name, category FROM prompt_template ORDER BY id LIMIT 5;
-- 结果: 1. 通用提示词优化 (通用工具)
-- 2. 文章写作助手 (内容创作)
-- 3. 故事创作助手 (内容创作)
-- 4. 短视频创作助手 (内容创作)
-- 5. 设计创意优化 (设计创意)
```
## 🛡️ 安全措施
### 数据备份
- 在插入前自动清空现有数据
- 使用事务确保数据一致性
- 提供回滚机制
### 错误处理
- 完善的异常捕获和处理
- 详细的错误日志记录
- 连接失败自动重试机制
### 权限控制
- 数据库用户权限验证
- 操作确认机制
- 敏感信息保护
## 📝 使用指南
### 快速使用
```bash
# 初始化腾讯云数据库
python direct_insert_templates.py
# 初始化本地数据库
python init_tencent_db.py local
# 交互式选择
python init_tencent_db.py
```
### 命令行参数
```bash
# 腾讯云数据库
python init_tencent_db.py tencent
python init_tencent_db.py t
# 本地数据库
python init_tencent_db.py local
python init_tencent_db.py l
```
### 代码调用
```python
from src.flask_prompt_master.promptsTemplates import init_tencent_db, init_local_db
# 初始化腾讯云数据库
init_tencent_db()
# 初始化本地数据库
init_local_db()
```
## 🔧 维护说明
### 定期检查
- 每月检查数据库连接状态
- 定期验证数据完整性
- 监控模板使用情况
### 数据更新
- 新增模板时使用相同的插入脚本
- 保持数据格式一致性
- 及时更新文档
### 故障排除
1. **连接失败**: 检查网络和防火墙设置
2. **权限错误**: 验证数据库用户权限
3. **数据不完整**: 使用强制插入脚本重新初始化
## 📚 相关文件
### 核心文件
- `src/flask_prompt_master/promptsTemplates.py` - 原始模板文件
- `direct_insert_templates.py` - 直接插入脚本(推荐)
- `init_tencent_db.py` - 通用初始化脚本
- `force_insert_templates.py` - 强制插入脚本
### 配置文件
- `config.py` - 数据库配置
- `docker-compose.yml` - Docker配置
- `requirements.txt` - 依赖包列表
### 文档文件
- `数据库初始化说明.md` - 基础说明
- `腾讯云数据库初始化使用说明.md` - 使用指南
- `模板初始化完整文档.md` - 本文档
## 🎯 最佳实践
### 开发环境
1. 使用本地数据库进行开发测试
2. 定期同步模板数据到本地
3. 使用版本控制管理模板变更
### 生产环境
1. 使用腾讯云数据库作为主数据库
2. 定期备份数据库
3. 监控数据库性能
### 团队协作
1. 统一使用相同的初始化脚本
2. 保持数据库配置一致性
3. 及时更新相关文档
## 📈 性能优化
### 数据库优化
- 使用连接池管理数据库连接
- 合理设置索引提高查询性能
- 定期清理无用数据
### 脚本优化
- 批量插入减少数据库交互
- 使用事务确保数据一致性
- 添加进度显示提升用户体验
## 🔮 未来规划
### 功能扩展
- 支持模板分类管理
- 添加模板搜索功能
- 实现模板版本控制
### 技术升级
- 迁移到更现代的数据库ORM
- 添加API接口支持
- 实现自动化部署
---
**文档版本**: v1.0
**最后更新**: 2025年1月6日
**维护人员**: 开发团队
**审核状态**: ✅ 已审核