专为杭州电子科技大学学子打造的一站式智能学习与职业规划平台,集成 AI 智能助手、LangChain 增强、RAG 知识库检索、实时通知系统、PostgreSQL 全量数据存储、图形化知识库管理,融入思政价值引领,提供企业级用户体验。
- 对话记忆:支持多轮对话,保持上下文理解,AI 可以引用之前的对话内容 🧠
- 结构化提示:使用 LangChain 模板生成更准确的 AI 响应
- 项目推荐:基于兴趣、技能和目标职业的智能项目推荐
- 学习路径生成:自动生成个性化的阶段性学习路线
- 职业分析:深度分析职业匹配度和发展前景
- RAG 知识库检索:基于 Chroma 向量数据库的语义检索增强
- 降级保护:自动回退机制确保服务稳定性
- 语义检索:基于 HuggingFace 多语言嵌入模型的语义搜索
- 知识增强:AI 响应自动融入知识库上下文
- 自动同步:从数据库或 JSON 知识库自动加载和更新向量索引
- 数据库集成:支持从 PostgreSQL 数据库加载数据到 RAG 向量存储
- 多语言支持:使用
paraphrase-multilingual-MiniLM-L12-v2模型 - 自动初始化:应用启动时自动加载知识库数据到 RAG,无需手动配置
- 职位列表:展示知识库中的校招职位信息
- 分页浏览:每页 5 个职位,支持上一页/下一页/跳转
- 公司筛选:按公司名称筛选职位
- 关键词搜索:按职位名称和技能要求搜索
- 国企优先:可选择优先展示国企/央企职位 🇨🇳
- AI 联动:与 AI 职业推荐功能联动,统一偏好设置
- 对话记录:自动保存所有 AI 对话(职业咨询、页面助手等)
- 历史查看:在个人主页查看历史咨询记录
- 对话管理:支持删除单条对话或清空全部历史
- 统计分析:显示对话统计(总数、分类数量)
- 收藏分析:基于收藏内容分析用户偏好
- 智能关键词:自动生成个性化推荐关键词
- 技能偏好:展示用户的技能偏好和职业倾向
- AI 上下文:AI 提示词自动加入个性化上下文
- 阶段提醒:根据学业阶段(大一-大四)生成针对性提醒
- 课程推荐:推荐适合当前阶段的课程和实践机会
- 求职准备:大三/大四自动提示实习和求职准备
- 可配置:可配置提醒频率(每天/每周/两周)
- 智能推荐:基于专业和兴趣的个性化课程匹配
- 价值引领课程:标注 AI 伦理、网络安全法律等思政课程 🎓
- 高级筛选:按专业、课程等级(本科/研究生)、类型(必修/选修/通识)、关键词快速筛选
- 分页浏览:每页 20 门课程,流畅浏览体验
- 学习路径:AI 生成的个性化学习计划
- 评价系统:课程评价提交与审核机制
- 导师搜索:按研究方向、职称、学院/院系搜索导师信息
- 国家重大项目:筛选参与国家重大项目的导师 🇨🇳
- 智能筛选:按职称(教授/副教授/讲师)、研究方向快速过滤
- 分页浏览:每页 15 位导师,高效浏览
- 学术诚信评价:新增学术诚信指导评分维度
- 评价参考:查看学生对导师的真实评价
- 智能推荐:基于兴趣的导师匹配建议
- 实践资源:竞赛、实验室、科研项目、社会实践机会聚合
- 红色竞赛优先:标注并优先推荐公益/红色竞赛项目 💝
- 高级筛选:按项目类型、参与要求、关键词筛选,公益项目优先
- 分页浏览:每页 15 个项目,流畅体验
- 匹配评分:智能评估实践机会与个人的匹配度
- 社会价值加权:对具有社会价值的项目提高推荐权重
- 职业推荐:基于兴趣和技能的职业方向推荐
- 国家战略岗位:推荐芯片、航天、网络安全等重点领域 🇨🇳
- 杭电校友案例:展示扎根重点领域的校友事迹 🌟
- 职业诚信引导:提供简历诚信和职场合规提示
- 学习路径:AI 生成针对目标职业的学习路线
- 多轮对话:与职业助手深入探讨职业规划
- 反馈统计:职业推荐效果跟踪
- 随机推荐:基于兴趣标签的高星项目推荐
- 国产开源项目:优先推荐国产技术和公益开源项目 🇨🇳
- AI 推荐:智能分析匹配的学习项目
- 项目管理:收藏和完成项目跟踪
- 话题交流:创建和参与技术讨论
- 思政话题专区:设置价值引领类话题分类 🎓
- 点赞投票系统:为话题和回复点赞/投票 👍
- 实时通知:自动接收回复通知,及时互动
- 经验分享:学习和求职经验交流平台
- 通知中心:侧边栏实时显示未读通知数量和最新消息
- 回复通知:参与的话题有新回复时自动通知
- 管理员公告:接收平台重要公告和系统通知
- 标记已读:单个或批量标记通知为已读
- 一键清空:清空所有通知,保持整洁
- 智能去重:避免重复通知,提升体验
- 多维推荐:整合课程、实践、项目的综合推荐
- 全局搜索:跨所有知识库快速搜索内容
- 行动计划:AI 生成可执行的学习行动路线
- 思政微任务:每周思政成长任务,完成可获得勋章 🏆
- 收藏管理:管理收藏的课程、导师、实践项目
- 收藏历史:查看最近收藏的内容
- 个人档案:完善专业、技能、目标职业等个人信息
- 用户统计:实时查看注册用户数和平台活跃度
- 评价审核:管理员审核待发布的评价内容
- 📊 图形化知识库管理:
- 📚 课程管理 - 表格视图、按专业筛选、添加/编辑/删除、分页浏览
- 👨🏫 导师管理 - 按院系筛选、国家项目标识、编辑功能、分页浏览
- 🏫 校内实践管理 - 按类型筛选(竞赛/实验室/社团/项目)、编辑功能、分页浏览
- 🎓 校友案例管理 - 按领域筛选(航天科技/乡村振兴等)、编辑功能
- 💼 职位描述管理 - JD 的完整 CRUD 操作、按公司筛选
- 批量数据导入:支持 Excel (.xlsx)、CSV、JSON 格式批量导入
- 模板下载:一键下载各类型数据导入模板
- 数据源状态:显示当前数据源(PostgreSQL 或 JSON)
- 数据刷新:手动同步数据库最新数据
- 📢 系统公告:向所有用户发送平台公告和通知
所有数据都可以存储到 PostgreSQL 数据库中,实现网站与数据库的完全同步!
| 表名 | 存储内容 | 说明 |
|---|---|---|
courses |
课程数据 | 按专业分类的课程信息 |
advisors |
导师数据 | 导师信息和研究方向 |
practices |
校内实践数据 | 竞赛、实验室、科研项目等 |
alumni |
校友案例 | 杭电校友成功案例 |
jds |
职位描述 | 校招职位信息 |
users |
用户账户 | 用户名、密码、角色等 |
user_profiles |
用户档案 | 专业、技能、兴趣、学习计划等 |
community_threads |
社区帖子 | 讨论主题 |
community_posts |
帖子回复 | 回复内容和点赞 |
notifications |
用户通知 | 回复通知、系统公告等 |
user_activity |
浏览历史和收藏 | 用户行为记录 |
ai_conversations |
AI 对话历史 | 用户与 AI 的聊天记录 |
career_feedback |
职业反馈 | 职业推荐的点赞/点踩 |
user_feedback |
用户反馈 | 课程/导师评价等 |
reminder_config |
提醒配置 | 智能提醒设置 |
- 双向同步:网站操作实时更新数据库,数据库修改可刷新到网站
- 用户发帖 → 写入数据库 ✅
- 管理员删帖 → 从数据库删除 ✅
- 点赞/收藏 → 更新数据库 ✅
- AI 对话 → 存储到数据库 ✅
- 用户注册 → 写入数据库 ✅
- 一键迁移:运行
python scripts/migrate_to_postgresql.py迁移所有数据 - 向后兼容:默认使用 JSON 文件存储,无需配置即可运行
- 智能缓存:使用
@st.cache_data缓存知识库加载,5-10x 速度提升 - 分页加载:所有列表支持分页(课程 20 条/页,导师和实践 15 条/页)
- 页面导航:上一页/下一页按钮 + 当前页码指示
- 自动重置:筛选条件变更时自动回到第一页
- 内存优化:恒定内存占用,支持大规模数据集
- 即时响应:筛选操作亚秒级响应
- 高级筛选:所有知识库标签页支持 4 列筛选界面
- 智能推荐:基于用户兴趣和行为的个性化内容推荐
- 收藏功能:一键收藏感兴趣的内容
- 推荐解释:为每个推荐提供详细的匹配理由
- 响应式设计:适配桌面和移动设备
本平台紧扣"高校学习+求职"核心场景,将思政元素自然融入功能模块:
- 职业价值观引导:优先推荐国企、基层、国家战略领域岗位
- 科研报国情怀:展示国家重大项目参与导师,引导学生关注"卡脖子"技术
- 学术诚信培养:在导师评价中新增学术诚信指导评分项
- 社会责任担当:标注红色竞赛、公益项目,加入社会价值权重
- 开源创新精神:推荐国产技术替代和公益开源项目
- 思政成长体系:每周思政微任务+勋章激励机制
- 💡 杭电校友扎根重点领域典型案例
- 🎓 杭电思政名师课程资源
- 🏫 杭电校内思政相关竞赛和活动
重构后的模块化架构,清晰的职责分离:
InfoSynapse/
├── infosynapse.py # 主入口:初始化、侧边栏、路由
├── shared/ # 共享工具模块
│ ├── config.py # 配置常量(路径、权重)
│ ├── profiles.py # 用户档案管理
│ └── ai_helpers.py # AI 助手渲染函数(含对话记忆)
├── tabs/ # 标签页模块
│ ├── profile.py # 个人主页(AI历史/个性化推荐/智能提醒)
│ ├── courses.py # 课程与评价
│ ├── advisors.py # 导师匹配
│ ├── practice.py # 校内实践
│ ├── career.py # 职业规划(校招职位展示)
│ ├── github_tab.py # GitHub 项目
│ ├── community.py # 社区讨论(分页)
│ ├── mixed.py # 综合推荐
│ └── admin.py # 管理后台(知识库CRUD+系统公告)
├── utils/ # 工具函数
│ ├── knowledge_loader.py # 知识库加载与 CRUD(支持数据库)
│ ├── database.py # PostgreSQL 数据库抽象层(完整数据存储)
│ ├── langchain_agent.py # LangChain Agent 实现
│ ├── rag_knowledge_base.py # RAG 知识库(Chroma向量数据库)
│ ├── ai_history.py # AI 对话历史管理(支持数据库)
│ ├── personalized_recommend.py # 个性化推荐算法
│ ├── smart_reminder.py # 智能提醒系统
│ ├── recommend.py # 推荐算法
│ ├── auth.py # 用户认证(支持数据库)
│ ├── community.py # 社区功能(支持数据库)
│ ├── notifications.py # 通知系统(支持数据库)
│ ├── user_activity.py # 用户活动记录(支持数据库)
│ └── notify.py # 通知服务
├── scripts/ # 脚本工具
│ └── migrate_to_postgresql.py # JSON → PostgreSQL 迁移脚本
└── data/ # 数据存储(JSON 模式)
├── hdu_knowledge_base.json # 知识库
├── user_profiles.json # 用户档案
└── career_feedback.json # 反馈数据
- Python 3.8+
- pip 或 conda
- PostgreSQL 15+(可选,用于生产环境)
- 克隆仓库
git clone https://github.com/Miracle-Lin02/InfoSynapse.git
cd InfoSynapse- 创建虚拟环境(推荐)
# Linux/Mac
python3 -m venv .venv
source .venv/bin/activate
# Windows
python -m venv .venv
.venv\Scripts\activate- 安装依赖
pip install -r requirements.txt注意:LangChain 和 ChromaDB 依赖较大,首次安装可能需要几分钟。如果只需要基础功能,可以先注释掉
requirements.txt中的 LangChain 相关依赖。
- 配置环境变量(可选)
创建 .streamlit/secrets.toml 文件:
mkdir -p .streamlit
cat > .streamlit/secrets.toml << EOF
DEEPSEEK_API_KEY = "sk-your-api-key-here"
DEEPSEEK_TIMEOUT = "120" # API 超时时间(秒),可根据网络情况调整
GITHUB_TOKEN = "ghp_your-github-token"
ADMIN_PASS = "your-admin-password"
EOF
chmod 600 .streamlit/secrets.toml或使用环境变量:
export DEEPSEEK_API_KEY="sk-your-api-key-here"
export DEEPSEEK_TIMEOUT="120" # API 超时时间(秒),可根据网络情况调整
export GITHUB_TOKEN="ghp_your-github-token"
export ADMIN_PASS="your-admin-password"- 启动应用
streamlit run infosynapse.py- 访问应用
打开浏览器访问:http://localhost:8501
默认情况下,平台使用 JSON 文件存储数据。如需使用 PostgreSQL 数据库以获得更好的并发性能和数据安全性,请按以下步骤配置:
在 .streamlit/secrets.toml 中配置数据库,应用启动时自动读取,无需额外 export:
# .streamlit/secrets.toml
DB_TYPE = "postgresql"
DATABASE_URL = "postgresql://postgres.[项目ID]:[密码]@aws-0-[区域].pooler.supabase.com:5432/postgres"-
注册 Supabase 账号
- 访问 https://supabase.com 并注册(支持 GitHub 登录)
-
创建项目
- 点击 "New Project"
- 设置项目名称和数据库密码(请记住密码)
- 选择离你最近的区域
-
获取连接字符串
- 进入项目 → Settings → Database
- 在 Connection string 部分选择 Session pooler 模式(支持 IPv4)
- 复制 URI 格式的连接字符串
- 将
[YOUR-PASSWORD]替换为你的数据库密码
-
配置到 secrets.toml
# .streamlit/secrets.toml
DB_TYPE = "postgresql"
DATABASE_URL = "postgresql://postgres.[项目ID]:[密码]@aws-0-[区域].pooler.supabase.com:5432/postgres"- 运行数据迁移
python scripts/migrate_to_postgresql.py迁移脚本会自动迁移所有数据:
- ✅ 知识库数据(课程、导师、实践、校友案例、JD)
- ✅ 用户账户和用户档案
- ✅ 社区帖子和回复
- ✅ 职业反馈数据
- 启动应用
streamlit run infosynapse.pyexport DB_TYPE="postgresql"
export DATABASE_URL="postgresql://postgres.[项目ID]:[密码]@aws-0-[区域].pooler.supabase.com:5432/postgres"- 安装 PostgreSQL
# Ubuntu/Debian
sudo apt install postgresql postgresql-contrib
# macOS
brew install postgresql- 创建数据库
sudo -u postgres createdb infosynapse- 配置环境变量
export DB_TYPE="postgresql"
export DATABASE_URL="postgresql://postgres:password@localhost:5432/infosynapse"- 运行迁移并启动
python scripts/migrate_to_postgresql.py
streamlit run infosynapse.py无需任何配置即可运行基础功能。
| 配置项 | 说明 | 获取方式 |
|---|---|---|
DEEPSEEK_API_KEY |
AI 功能所需,不配置则使用本地示例回答 | DeepSeek 官网 |
DEEPSEEK_TIMEOUT |
DeepSeek API 超时时间(秒),默认 120 | 自定义数值,如 180 |
GITHUB_TOKEN |
GitHub 项目推荐功能,提高 API 限额 | GitHub Settings |
ADMIN_PASS |
管理员审核功能,不配置则无法使用管理后台 | 自定义密码 |
DB_TYPE |
数据存储模式,设为 postgresql 启用数据库 |
postgresql 或不设置 |
DATABASE_URL |
PostgreSQL 连接字符串 | 见上方数据库配置 |
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
.streamlit/secrets.toml |
持久化、不易泄露 | 需要手动管理文件 | 本地开发 |
| 环境变量 | 灵活、易于 CI/CD | 临时、需要每次设置 | 测试、部署 |
| 云平台 Secret | 安全、统一管理 | 需要平台支持 | 生产环境 |
- 注册账号:在左侧边栏完成用户注册
- 完善资料:在「个人主页」填写专业、技能、目标职业
- 设置兴趣:在左侧边栏选择 1-3 个兴趣标签
- 获取推荐:访问「职业推荐」获取职业方向和学习路径
- 制定计划:在「综合推荐」将资源加入学习计划
- 实践项目:在「GitHub 项目」选择实践项目
配置 ADMIN_PASS 后,在「管理(审核)」标签页登录,可以:
- 📊 知识库管理:图形化界面管理所有知识库内容
- 表格形式查看、筛选、搜索数据
- 快速添加/删除课程、导师、实践资源、校友案例
- 支持 Excel/CSV/JSON 批量导入数据
- 下载数据导入模板
- 📢 系统公告:向所有用户发送平台公告
- 评价审核:审核待发布的课程和导师评价
- 数据统计:查看用户注册数、审核日志等
问:为什么 AI 能读取数据库中的数据?
系统已集成 RAG(检索增强生成)功能:
- 自动加载:应用启动时,系统自动将知识库数据(课程、导师、实践、职位等)加载到 Chroma 向量数据库
- 语义检索:当 AI 助手回答问题时,会自动搜索相关的知识库内容
- 增强回答:AI 基于检索到的真实数据提供更准确、更具体的建议
- 数据库支持:无论数据存储在 JSON 文件还是 PostgreSQL 数据库,RAG 都能正常工作
查看 RAG 状态:
- 应用顶部会显示 "✅ RAG知识库已启用 (已加载 X 个文档)"
- 如果未显示,请确保安装了 RAG 依赖:
pip install chromadb sentence-transformers langchain langchain-community
示例回答:
- 用户问:"有哪些导师研究物联网?"
- AI 会从向量库检索相关导师信息,并基于真实数据回答
- AI:"根据知识库,何美霖导师专注物联网和边缘计算研究..."
- 入口文件 (
infosynapse.py):应用初始化、侧边栏、标签页路由 - 共享模块 (
shared/):可复用的工具函数和配置 - 标签页 (
tabs/):各功能模块的独立实现 - 工具函数 (
utils/):业务逻辑和算法实现 - 脚本 (
scripts/):数据迁移等工具脚本
- 在
tabs/创建新模块 - 实现
render_xxx_tab()函数 - 在
infosynapse.py导入并调用
如需添加新的数据表:
- 在
utils/database.py的PostgreSQLStore类中添加表初始化和 CRUD 方法 - 在
utils/knowledge_loader.py中添加对应的加载和保存函数 - 运行迁移脚本更新数据库结构
- 遵循 PEP 8 编码风格
- 使用类型提示增强代码可读性
- 为公共函数添加文档字符串
- Streamlit widget 使用唯一的 key 避免冲突
Q: DeepSeek API 返回 401/403
- 检查 API Key 是否正确
- 确认账户余额充足
- 检查 IP 白名单设置
Q: GitHub API 限额不足
- 配置
GITHUB_TOKEN提高限额(未认证:60/小时,已认证:5000/小时)
Q: PostgreSQL 连接失败
- 检查
DATABASE_URL格式是否正确 - 如使用 Supabase,确保选择了 Session pooler 模式(支持 IPv4)
- 检查密码中的特殊字符是否需要 URL 编码
Q: 应用启动失败
- 确认 Python 版本 3.8+
- 检查所有依赖是否安装
- 查看终端错误日志
Q: 数据文件不存在
- 应用首次运行会自动创建
data/目录 - 知识库文件
hdu_knowledge_base.json需要手动创建或使用示例数据
⚠️ 切勿提交.streamlit/secrets.toml到 Git(已在.gitignore)⚠️ 切勿公开 数据库连接字符串和 API 密钥- 🔐 生产环境使用平台 Secret 管理(K8s Secret、AWS Secrets Manager 等)
- 🛡️ 定期轮换 API Keys 和管理员密码
- 📊 审计日志:管理员操作会记录到
moderation_log
-
数据库集成(PostgreSQL)✅ 已完成 -
图形化知识库管理界面✅ 已完成 -
AI 对话历史✅ 已完成 -
个性化推荐系统✅ 已完成 -
智能提醒系统✅ 已完成 -
LangChain 集成✅ 已完成 -
RAG 知识库检索✅ 已完成 -
校招职位展示✅ 已完成 -
知识库编辑功能✅ 已完成 -
用户数据存储到数据库✅ 已完成 -
社区帖子存储到数据库✅ 已完成 -
全量数据 PostgreSQL 存储✅ 已完成 - RESTful API 接口
- 用户权限细分(普通用户/审核员/管理员)
- 更多 AI 模型支持(GPT、Claude、通义千问)
- 移动端适配
- 数据可视化增强
- 自动化测试覆盖
- Docker 部署支持
本项目采用 MIT 许可证 - 详见 LICENSE 文件
欢迎提交 Issue 和 Pull Request!
- 项目仓库:https://github.com/Miracle-Lin02/InfoSynapse
- Issue 反馈:https://github.com/Miracle-Lin02/InfoSynapse/issues
注:本项目为杭州电子科技大学易班大赛作品,仅供学习交流使用。