一个基于 CBDB(中国历代人物传记数据库)的历史人物查询与展示系统,结合 AI 技术为历史人物生成现代风格的传记和简历。
历史人物查询系统(History Boss)是一个综合性的历史人物信息平台,致力于以现代化的方式展示历史人物信息。系统基于 CBDB 数据库, 通过 FastAPI 后端和 React 前端,为用户提供历史人物的信息检索、可视化展示、以及基于 AI 生成的个性化内容。
- 历史人物检索:通过姓名、朝代、年份等多维度搜索历史人物
- 详细人物信息:展示历史人物的基本信息、生平事迹、社会关系、官职信息等
- 社会关系网络:可视化展示历史人物之间的社会关系网络
- 活动轨迹地图:在地图上展示历史人物的活动轨迹
- AI 生成内容:
- 传记生成:自动生成严谨的历史人物传记
- 现代简历:将历史人物以幽默创意的方式转化为现代职场人物的简历
- 管理后台:提供内容管理和发布功能
- 框架:React 18 + TypeScript 5
- UI 组件:Ant Design 5.0+
- 路由:React Router v6
- HTTP 客户端:Axios
- 地图组件:AMap (高德地图) 2.0
- 构建工具:Vite 4.0+
- 状态管理:React Context API
- 框架:FastAPI 0.110.0 (Python 3.9+)
- 数据库:SQLite (CBDB + boss.db)
- AI 生成:OpenAI API (GPT-4)
- HTTP 客户端:httpx 0.27.0
- 环境变量:python-dotenv 1.0.1
- Python 3.9+
- Node.js 16+
- 访问 CBDB 数据库的权限
- OpenAI API 密钥(用于 AI 内容生成)
git clone https://github.com/your-username/history-boss.git
cd history-bosscd backend
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑.env文件,填入您的OpenAI API密钥
# OPENAI_API_KEY=your_api_key_here
# 配置数据库
# 将 CBDB 数据库文件移至 data/data.db
# 创建 boss 数据库
sqlite3 data/boss.db < create_bossdb.sql
# 启动后端服务
python main.pycd frontend
npm install
npm run dev- 前端界面:http://localhost:5173
- 后端 API:http://localhost:8000
- 后台管理:http://localhost:5173/admin (初始登录无需密码)
- 首页:展示系统介绍、热门人物和最新生成的简历
- 搜索页:提供多条件人物搜索,支持按朝代、年份筛选
- 人物详情页:展示人物完整信息,包括基本资料、社会关系、官职信息等
- 社会关系网络:交互式可视化展示人物的社会关系网络
- 活动轨迹地图:在高德地图上展示人物一生的活动轨迹
- AI 传记页面:展示 AI 生成的传记内容
- AI 简历页面:以现代简历形式展示历史人物
- 仪表板:概览系统数据和使用统计
- AI 内容管理:可以按人物 ID 搜索并生成 AI 内容
- AI 内容生成:支持传记和简历两种类型的内容生成
- 内容审核与发布:审核 AI 生成的内容并发布到前台展示
GET /api/person/{id}- 获取人物详细信息GET /api/search- 搜索历史人物GET /api/dynasties- 获取朝代信息GET /api/person/{id}/activities- 获取活动轨迹
GET /api/person/{id}/ai-content- 获取已生成的 AI 内容POST /api/person/{id}/ai-content- 生成新的 AI 内容POST /api/person/{id}/ai-content/save- 保存并发布 AI 内容
GET /api/recommended-resumes- 获取推荐的 AI 简历
系统使用两个主要数据库:
包含历史人物的基本资料,包括:
- BIOG_MAIN: 人物基本信息
- ALTNAME_DATA: 人物别名信息
- KIN_DATA: 亲属关系
- ASSOC_DATA: 社会关系
- BIOG_ADDR_DATA: 地址信息
- POSTED_TO_OFFICE_DATA: 官职信息
- ENTRY_DATA: 入仕信息
- STATUS_DATA: 社会地位
- BIOG_TEXT_DATA: 著作信息
- DYNASTIES: 朝代信息
存储系统生成的内容和配置:
- ai_content_generations: AI 内容生成记录
- ai_biographies: AI 生成的传记内容
- ai_resumes: AI 生成的简历内容
- resume_templates: 简历模板配置
- ai_content: 旧版 AI 内容存储表(兼容用)
系统会根据历史人物的基本信息、生平事迹、社会关系等,生成一篇严谨的传记。传记内容特点:
- 使用严谨的史学笔法
- 按时间顺序展开叙述
- 突出历史贡献和重要事件
- 客观评价历史功过
系统会将历史人物的信息转化为幽默有趣的现代职场简历。简历内容特点:
- 将历史身份转化为现代职位(如皇帝 →CEO)
- 使用现代职场术语描述历史事件
- 包含有趣的历史梗和双关语
- 保持 JSON 格式,支持结构化展示
为了保护 API 密钥安全,系统使用环境变量进行配置。创建.env文件(参考.env.example),填入以下信息:
# API配置
OPENAI_API_KEY=your_api_key_here
OPENAI_API_BASE=https://api.oaipro.com
# 模型配置
MODEL_NAME=gpt-4-turbo
- 在
backend/main.py中添加新 API 端点 - 在
frontend/src/services/api.ts中添加 API 调用方法 - 创建新的前端组件
- 在
App.tsx中添加路由
- 更新
backend/main.py中的数据库操作函数 - 修改
frontend/src/types中的类型定义
- 修改
main.py中的build_prompt函数 - 调整提示词模板以获得不同风格的输出
- 适当调整参数 (temperature 等) 以控制创意水平
推荐使用 uvicorn 和 gunicorn 进行部署:
pip install gunicorn
gunicorn main:app -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 --workers 4构建静态文件并使用 Nginx 部署:
cd frontend
npm run build
# 将dist目录下的文件部署到Web服务器如果遇到 API 密钥无效的错误,请检查:
.env文件中的密钥是否正确- API 基础 URL 是否正确
- 密钥是否有足够的配额
如果遇到数据库问题,请尝试:
- 确认数据库文件路径正确
- 执行
create_bossdb.sql重新初始化 boss 数据库 - 检查文件权限是否正确
欢迎所有形式的贡献,包括功能请求、错误报告和代码提交。
- Fork 代码库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- CBDB 项目 - 提供历史人物数据库
- OpenAI - 提供 AI 生成技术
- FastAPI - 高性能 API 框架
- React & Ant Design - 前端框架与组件库
- 高德地图 - 提供地图服务
- 所有贡献者和测试用户
项目维护者 - youremail@example.com
项目链接: https://github.com/your-username/history-boss
- 添加环境变量支持,提高 API 密钥安全性
- 增强简历内容验证和错误处理
- 优化 AI 内容生成流程,改进提示词模板
- 修复了简历显示时的 JSON 解析问题
- 初始版本发布
- 基础人物搜索与显示功能
- AI 传记与简历生成功能
- 社会关系网络与活动轨迹地图