Skip to content

Miracle-Lin02/InfoSynapse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InfoSynapse - 杭电学子智能学习与职业规划平台

Python Streamlit PostgreSQL Supabase LangChain ChromaDB License

专为杭州电子科技大学学子打造的一站式智能学习与职业规划平台,集成 AI 智能助手、LangChain 增强、RAG 知识库检索、实时通知系统、PostgreSQL 全量数据存储、图形化知识库管理,融入思政价值引领,提供企业级用户体验。

✨ 核心功能

🤖 AI 智能增强(LangChain 驱动)

  • 对话记忆:支持多轮对话,保持上下文理解,AI 可以引用之前的对话内容 🧠
  • 结构化提示:使用 LangChain 模板生成更准确的 AI 响应
  • 项目推荐:基于兴趣、技能和目标职业的智能项目推荐
  • 学习路径生成:自动生成个性化的阶段性学习路线
  • 职业分析:深度分析职业匹配度和发展前景
  • RAG 知识库检索:基于 Chroma 向量数据库的语义检索增强
  • 降级保护:自动回退机制确保服务稳定性

📚 RAG 知识库(Chroma 向量数据库)

  • 语义检索:基于 HuggingFace 多语言嵌入模型的语义搜索
  • 知识增强:AI 响应自动融入知识库上下文
  • 自动同步:从数据库或 JSON 知识库自动加载和更新向量索引
  • 数据库集成:支持从 PostgreSQL 数据库加载数据到 RAG 向量存储
  • 多语言支持:使用 paraphrase-multilingual-MiniLM-L12-v2 模型
  • 自动初始化:应用启动时自动加载知识库数据到 RAG,无需手动配置

🎓 校招职位展示

  • 职位列表:展示知识库中的校招职位信息
  • 分页浏览:每页 5 个职位,支持上一页/下一页/跳转
  • 公司筛选:按公司名称筛选职位
  • 关键词搜索:按职位名称和技能要求搜索
  • 国企优先:可选择优先展示国企/央企职位 🇨🇳
  • AI 联动:与 AI 职业推荐功能联动,统一偏好设置

📜 AI 对话历史

  • 对话记录:自动保存所有 AI 对话(职业咨询、页面助手等)
  • 历史查看:在个人主页查看历史咨询记录
  • 对话管理:支持删除单条对话或清空全部历史
  • 统计分析:显示对话统计(总数、分类数量)

🎯 个性化推荐

  • 收藏分析:基于收藏内容分析用户偏好
  • 智能关键词:自动生成个性化推荐关键词
  • 技能偏好:展示用户的技能偏好和职业倾向
  • AI 上下文:AI 提示词自动加入个性化上下文

🔔 智能提醒

  • 阶段提醒:根据学业阶段(大一-大四)生成针对性提醒
  • 课程推荐:推荐适合当前阶段的课程和实践机会
  • 求职准备:大三/大四自动提示实习和求职准备
  • 可配置:可配置提醒频率(每天/每周/两周)

📚 课程查询与推荐

  • 智能推荐:基于专业和兴趣的个性化课程匹配
  • 价值引领课程:标注 AI 伦理、网络安全法律等思政课程 🎓
  • 高级筛选:按专业、课程等级(本科/研究生)、类型(必修/选修/通识)、关键词快速筛选
  • 分页浏览:每页 20 门课程,流畅浏览体验
  • 学习路径:AI 生成的个性化学习计划
  • 评价系统:课程评价提交与审核机制

👨‍🏫 导师资源匹配

  • 导师搜索:按研究方向、职称、学院/院系搜索导师信息
  • 国家重大项目:筛选参与国家重大项目的导师 🇨🇳
  • 智能筛选:按职称(教授/副教授/讲师)、研究方向快速过滤
  • 分页浏览:每页 15 位导师,高效浏览
  • 学术诚信评价:新增学术诚信指导评分维度
  • 评价参考:查看学生对导师的真实评价
  • 智能推荐:基于兴趣的导师匹配建议

🏫 校内实践资源

  • 实践资源:竞赛、实验室、科研项目、社会实践机会聚合
  • 红色竞赛优先:标注并优先推荐公益/红色竞赛项目 💝
  • 高级筛选:按项目类型、参与要求、关键词筛选,公益项目优先
  • 分页浏览:每页 15 个项目,流畅体验
  • 匹配评分:智能评估实践机会与个人的匹配度
  • 社会价值加权:对具有社会价值的项目提高推荐权重

💼 职业规划助手

  • 职业推荐:基于兴趣和技能的职业方向推荐
  • 国家战略岗位:推荐芯片、航天、网络安全等重点领域 🇨🇳
  • 杭电校友案例:展示扎根重点领域的校友事迹 🌟
  • 职业诚信引导:提供简历诚信和职场合规提示
  • 学习路径:AI 生成针对目标职业的学习路线
  • 多轮对话:与职业助手深入探讨职业规划
  • 反馈统计:职业推荐效果跟踪

⭐ GitHub 开源项目

  • 随机推荐:基于兴趣标签的高星项目推荐
  • 国产开源项目:优先推荐国产技术和公益开源项目 🇨🇳
  • AI 推荐:智能分析匹配的学习项目
  • 项目管理:收藏和完成项目跟踪

🌐 社区讨论与互动

  • 话题交流:创建和参与技术讨论
  • 思政话题专区:设置价值引领类话题分类 🎓
  • 点赞投票系统:为话题和回复点赞/投票 👍
  • 实时通知:自动接收回复通知,及时互动
  • 经验分享:学习和求职经验交流平台

🔔 实时通知系统

  • 通知中心:侧边栏实时显示未读通知数量和最新消息
  • 回复通知:参与的话题有新回复时自动通知
  • 管理员公告:接收平台重要公告和系统通知
  • 标记已读:单个或批量标记通知为已读
  • 一键清空:清空所有通知,保持整洁
  • 智能去重:避免重复通知,提升体验

📊 综合推荐与搜索

  • 多维推荐:整合课程、实践、项目的综合推荐
  • 全局搜索:跨所有知识库快速搜索内容
  • 行动计划:AI 生成可执行的学习行动路线
  • 思政微任务:每周思政成长任务,完成可获得勋章 🏆

📋 个人活动中心

  • 收藏管理:管理收藏的课程、导师、实践项目
  • 收藏历史:查看最近收藏的内容
  • 个人档案:完善专业、技能、目标职业等个人信息

🔧 管理后台

  • 用户统计:实时查看注册用户数和平台活跃度
  • 评价审核:管理员审核待发布的评价内容
  • 📊 图形化知识库管理
    • 📚 课程管理 - 表格视图、按专业筛选、添加/编辑/删除、分页浏览
    • 👨‍🏫 导师管理 - 按院系筛选、国家项目标识、编辑功能、分页浏览
    • 🏫 校内实践管理 - 按类型筛选(竞赛/实验室/社团/项目)、编辑功能、分页浏览
    • 🎓 校友案例管理 - 按领域筛选(航天科技/乡村振兴等)、编辑功能
    • 💼 职位描述管理 - JD 的完整 CRUD 操作、按公司筛选
  • 批量数据导入:支持 Excel (.xlsx)、CSV、JSON 格式批量导入
  • 模板下载:一键下载各类型数据导入模板
  • 数据源状态:显示当前数据源(PostgreSQL 或 JSON)
  • 数据刷新:手动同步数据库最新数据
  • 📢 系统公告:向所有用户发送平台公告和通知

🗄️ PostgreSQL 数据库集成(完整数据存储)

所有数据都可以存储到 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+(可选,用于生产环境)

安装步骤

  1. 克隆仓库
git clone https://github.com/Miracle-Lin02/InfoSynapse.git
cd InfoSynapse
  1. 创建虚拟环境(推荐)
# Linux/Mac
python3 -m venv .venv
source .venv/bin/activate

# Windows
python -m venv .venv
.venv\Scripts\activate
  1. 安装依赖
pip install -r requirements.txt

注意:LangChain 和 ChromaDB 依赖较大,首次安装可能需要几分钟。如果只需要基础功能,可以先注释掉 requirements.txt 中的 LangChain 相关依赖。

  1. 配置环境变量(可选)

创建 .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"
  1. 启动应用
streamlit run infosynapse.py
  1. 访问应用

打开浏览器访问:http://localhost:8501

🗄️ PostgreSQL 数据库配置(可选)

默认情况下,平台使用 JSON 文件存储数据。如需使用 PostgreSQL 数据库以获得更好的并发性能和数据安全性,请按以下步骤配置:

方式一:使用 Streamlit Secrets(推荐)

.streamlit/secrets.toml 中配置数据库,应用启动时自动读取,无需额外 export:

# .streamlit/secrets.toml
DB_TYPE = "postgresql"
DATABASE_URL = "postgresql://postgres.[项目ID]:[密码]@aws-0-[区域].pooler.supabase.com:5432/postgres"

方式二:使用 Supabase(免费云数据库)

  1. 注册 Supabase 账号

  2. 创建项目

    • 点击 "New Project"
    • 设置项目名称和数据库密码(请记住密码)
    • 选择离你最近的区域
  3. 获取连接字符串

    • 进入项目 → Settings → Database
    • 在 Connection string 部分选择 Session pooler 模式(支持 IPv4)
    • 复制 URI 格式的连接字符串
    • [YOUR-PASSWORD] 替换为你的数据库密码
  4. 配置到 secrets.toml

# .streamlit/secrets.toml
DB_TYPE = "postgresql"
DATABASE_URL = "postgresql://postgres.[项目ID]:[密码]@aws-0-[区域].pooler.supabase.com:5432/postgres"
  1. 运行数据迁移
python scripts/migrate_to_postgresql.py

迁移脚本会自动迁移所有数据:

  • ✅ 知识库数据(课程、导师、实践、校友案例、JD)
  • ✅ 用户账户和用户档案
  • ✅ 社区帖子和回复
  • ✅ 职业反馈数据
  1. 启动应用
streamlit run infosynapse.py

方式三:使用环境变量

export DB_TYPE="postgresql"
export DATABASE_URL="postgresql://postgres.[项目ID]:[密码]@aws-0-[区域].pooler.supabase.com:5432/postgres"

方式四:使用本地 PostgreSQL

  1. 安装 PostgreSQL
# Ubuntu/Debian
sudo apt install postgresql postgresql-contrib

# macOS
brew install postgresql
  1. 创建数据库
sudo -u postgres createdb infosynapse
  1. 配置环境变量
export DB_TYPE="postgresql"
export DATABASE_URL="postgresql://postgres:password@localhost:5432/infosynapse"
  1. 运行迁移并启动
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. 注册账号:在左侧边栏完成用户注册
  2. 完善资料:在「个人主页」填写专业、技能、目标职业
  3. 设置兴趣:在左侧边栏选择 1-3 个兴趣标签
  4. 获取推荐:访问「职业推荐」获取职业方向和学习路径
  5. 制定计划:在「综合推荐」将资源加入学习计划
  6. 实践项目:在「GitHub 项目」选择实践项目

管理员功能

配置 ADMIN_PASS 后,在「管理(审核)」标签页登录,可以:

  • 📊 知识库管理:图形化界面管理所有知识库内容
    • 表格形式查看、筛选、搜索数据
    • 快速添加/删除课程、导师、实践资源、校友案例
    • 支持 Excel/CSV/JSON 批量导入数据
    • 下载数据导入模板
  • 📢 系统公告:向所有用户发送平台公告
  • 评价审核:审核待发布的课程和导师评价
  • 数据统计:查看用户注册数、审核日志等

RAG 知识库功能说明

问:为什么 AI 能读取数据库中的数据?

系统已集成 RAG(检索增强生成)功能:

  1. 自动加载:应用启动时,系统自动将知识库数据(课程、导师、实践、职位等)加载到 Chroma 向量数据库
  2. 语义检索:当 AI 助手回答问题时,会自动搜索相关的知识库内容
  3. 增强回答:AI 基于检索到的真实数据提供更准确、更具体的建议
  4. 数据库支持:无论数据存储在 JSON 文件还是 PostgreSQL 数据库,RAG 都能正常工作

查看 RAG 状态

  • 应用顶部会显示 "✅ RAG知识库已启用 (已加载 X 个文档)"
  • 如果未显示,请确保安装了 RAG 依赖:pip install chromadb sentence-transformers langchain langchain-community

示例回答

  • 用户问:"有哪些导师研究物联网?"
  • AI 会从向量库检索相关导师信息,并基于真实数据回答
  • AI:"根据知识库,何美霖导师专注物联网和边缘计算研究..."

🛠️ 开发指南

代码结构

  • 入口文件 (infosynapse.py):应用初始化、侧边栏、标签页路由
  • 共享模块 (shared/):可复用的工具函数和配置
  • 标签页 (tabs/):各功能模块的独立实现
  • 工具函数 (utils/):业务逻辑和算法实现
  • 脚本 (scripts/):数据迁移等工具脚本

添加新功能

  1. tabs/ 创建新模块
  2. 实现 render_xxx_tab() 函数
  3. infosynapse.py 导入并调用

数据库扩展

如需添加新的数据表:

  1. utils/database.pyPostgreSQLStore 类中添加表初始化和 CRUD 方法
  2. utils/knowledge_loader.py 中添加对应的加载和保存函数
  3. 运行迁移脚本更新数据库结构

代码规范

  • 遵循 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!

📧 联系方式


:本项目为杭州电子科技大学易班大赛作品,仅供学习交流使用。

About

该应用为杭州电子科技大学易班大赛-智能体AIGC应用演示版

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors