我开源了一个“宝藏”开源项目

news2025/4/18 5:45:44

我开源了一个“宝藏”开源项目 - AI需求分析项目 | 适合交作业和学习

在这里插入图片描述

🚀 前言

大家好!最近在学习软件工程和大模型应用开发的过程中,我发现许多学生都遇到了需求分析AI的题目。把一份需求文档转化为用户故事、实体关系或数据库设计,对于初学者来说确实有些挑战。

于是我开发了一个基于AI的需求分析工具——AI需求分析师,希望能帮助正在学习软件工程或数据库设计的同学们:

  • 快速理解需求文档转换为技术设计的过程
  • 为课程作业提供灵感和参考
  • 学习现代前端框架和AI应用开发

项目已经开源在GitHub上(地址在文末),欢迎大家使用、学习和贡献!

欢迎大家Fork或是Star这个项目!

📋 项目介绍

AI需求分析师是一个完整的Web应用,基于现代前端框架Remix构建,集成了OpenAI API,能够智能分析需求文档,自动生成用户故事、需求实体和数据库设计。

项目特点:

  • 完整的用户系统:注册、登录、找回密码等功能
  • 💡 AI驱动分析:使用OpenAI API智能解析需求文档
  • 📊 三种分析结果:用户故事、实体分析、数据库设计
  • 🎨 美观的UI:基于TailwindCSS的现代界面设计
  • 📱 响应式设计:完美支持移动端和桌面端
  • 🔐 安全可靠:完善的错误处理和数据验证

技术栈

  • 前端框架:Remix - React框架,带有服务器端渲染
  • 样式方案:TailwindCSS - 实用优先的CSS框架
  • 数据库:Prisma + SQLite(可扩展至其他数据库)
  • 认证:自定义JWT会话认证系统
  • AI集成:OpenAI API(GPT-4)

🖼️ 效果展示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述
在这里插入图片描述

  1. 首页:展示应用介绍和主要功能
  2. 项目管理页:展示用户创建的所有项目
  3. 需求分析页:展示需求输入和分析结果
  4. 用户故事示例:AI生成的用户故事格式和内容
  5. 实体分析示例:AI识别的业务实体及关系
  6. 数据库设计示例:AI推荐的数据库模式设计

💻 如何使用

安装步骤

  1. 克隆仓库
git clone https://github.com/yourusername/ai-requirements-analyzer.git
cd ai-requirements-analyzer
  1. 安装依赖
npm install
  1. 设置环境变量
vim .env
# 编辑.env文件,添加必要的配置
  1. 初始化数据库
npx prisma migrate dev --name init
  1. 启动开发服务器
npm run dev
  1. 访问应用
http://localhost:5173

环境变量配置

项目需要以下环境变量:

# 数据库配置
DATABASE_URL="file:./dev.db"

# 会话安全密钥
SESSION_SECRET="your-super-secret-session-key"

# OpenAI API密钥
OPENAI_API_KEY="your-openai-api-key"

# 应用URL - 用于生成密码重置链接
APP_URL="http://localhost:5173"

# 邮件服务器配置
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_SECURE="false"
SMTP_USER="your-email@gmail.com"
SMTP_PASS="your-app-password"

💡 提示:如果你只是学习使用,不需要真实的邮件功能,可以使用Ethereal提供的测试服务,详见项目README。

🔍 核心功能详解

1. 用户故事生成

输入一份需求文档后,AI会自动解析并生成符合敏捷开发标准的用户故事,格式为:

作为一个[角色],我想要[功能],以便[好处]。

这对学习敏捷开发和用户故事编写的同学非常有帮助。AI会尝试识别所有可能的角色和功能点,确保复盖面广泛。

2. 需求实体分析

AI会识别需求文档中提到的所有业务实体,并分析它们的属性和关系。例如,对于一个学生管理系统,可能会识别出:

  • 学生(属性:学号、姓名、年龄…)
  • 课程(属性:课程ID、名称、学分…)
  • 关系:学生可以选修多门课程,一门课程可以被多个学生选修

这对于理解实体关系和学习领域建模的同学很有启发。

3. 数据库设计生成

基于实体分析,AI会自动生成数据库设计方案,包括:

  • 表结构定义
  • 字段类型和约束
  • 主键和外键关系
  • 索引建议

这对数据库课程的作业和设计很有帮助,可以作为一个参考或起点。

📚 学习价值

这个项目不仅是一个实用工具,更是一个学习平台,学生可以从中学习到:

  1. 现代前端开发

    • React和Remix框架的使用
    • TailwindCSS的实用优先CSS理念
    • 响应式设计和组件化开发
  2. 后端和数据库知识

    • Prisma ORM的使用
    • 数据库关系设计
    • RESTful API设计
  3. AI应用开发

    • 提示工程技术(Prompt Engineering)
    • 大语言模型集成方法
    • AI生成内容的处理和展示
  4. 软件工程实践

    • 需求分析方法论
    • 用户故事编写
    • 实体关系设计
    • 数据库模式设计

🛠️ 定制和学习建议

对CS/软件工程专业学生的建议

  1. 学习代码结构

    • 研究项目的文件结构和模块设计
    • 了解前后端数据流和状态管理
  2. 扩展功能

    • 添加导出功能(PDF、Word等)
    • 实现版本历史记录
    • 添加团队协作功能
  3. 改进AI提示词

    • 修改app/utils/openai.server.ts中的提示词
    • 尝试不同的格式和指令,比较效果
    • 研究如何更好地引导AI生成结构化内容

对数据库课程学生的建议

  1. 扩展数据库设计功能

    • 添加ER图生成
    • 支持SQL脚本导出
    • 添加不同数据库平台的特定语法支持
  2. 改进实体识别

    • 优化实体关系的识别算法
    • 添加对多对多关系的更好支持
    • 实现更复杂的数据完整性约束识别

对AI/ML专业学生的建议

  1. 优化模型使用

    • 尝试不同的温度和参数设置
    • 比较不同模型(GPT-3.5 vs GPT-4)的效果差异
    • 实现结果评估和反馈机制
  2. 添加本地模型支持

    • 集成开源模型如LLaMA(可以使用ollama)
    • 研究如何降低API成本
    • 实现混合提示策略

🤝 如何贡献

我非常欢迎同学们对这个项目进行贡献!无论是修复bug、添加新功能,还是改进文档,都是非常宝贵的。

贡献流程:

  1. Fork仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开Pull Request

📞 联系我

如果你有任何问题、建议或想法,欢迎通过以下方式联系我:

  • 邮箱:leo92816leo92816@gmail.com
  • GitHub:我的GitHub账号

⭐ 结语

希望这个工具能够帮助更多正在学习软件工程、数据库设计或AI应用开发的同学。技术是为了解决问题,而学习技术的过程中,动手实践永远是最好的老师。

如果这个项目对你有帮助,别忘了在GitHub上给它一个星星⭐,这是对我最大的鼓励!


🔗 项目地址:GitHub - AI需求分析师
🔗 部属地址:Vercel - 部属地址 (純前端)

感谢阅读!欢迎在评论区留言讨论,也欢迎分享给可能需要的同学!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SmolDocling:一种超紧凑的视觉语言模型,用于端到端多模态文档转换

paper地址:SmolDocling: An ultra-compact vision-language model for end-to-end multi-modal document conversion Huggingface地址:SmolDocling-256M-preview 代码对应的权重文件:SmolDocling-256M-preview权重文件 一、摘要 以下是文章摘要的总结: SmolDocling 是一…

理解CSS3 的 max/min-content及fit-content等width值

本文首发在我的个人博客: 理解CSS3 的 max/min-content及fit-content等width值https://www.brandhuang.com/article/1744253362074 width/height 的属性值 fit-content 这是一个 CSS3 属性,用来设置元素的宽度和高度,值为 fit-content&#…

关键路径任务延误,如何快速调整

快速识别延误原因、优化资源配置、实施任务并行、调整任务优先级是关键路径任务延误后快速调整的有效方式。其中,快速识别延误原因尤为重要,需要项目管理者及时发现影响关键路径任务延误的核心问题,通过系统性的分析,确保延误的具…

Elasticsearch 全面解析

Elasticsearch 全面解析 前言一、简介核心特性应用场景 二、核心原理与架构设计1. 倒排索引(Inverted Index)2. 分片与副本机制(Sharding & Replication)3. 节点角色与集群管理 三、核心特点1. 灵活的查询语言(Que…

linux入门四:Linux 编译器

一、C 语言编译器 GCC:开启编程之旅 1.1 GCC 安装:一站式工具链 GCC(GNU Compiler Collection)是 Linux 下最常用的 C/C 编译器,支持多种编程语言。安装命令(适用于 Debian/Ubuntu 系统)&…

springboot集成springcloud vault读值示例

接上三篇 Vault---机密信息管理工具安装及常用示例 Vault机密管理工具集群配置示例 vault签发根证书、中间证书、ca证书流程记录 项目里打算把所有密码都放到vault里管理,vault提供了springcloud vault用来在springboot里连接vault,启动加载vault里的值放…

edis 主从复制

Redis 主从复制是一种数据同步机制,主节点(Master)将数据复制到一个或多个从节点(Slave),从 而实现数据备份、读写分离和高可用性。 1、解决我们的日常一个单机故障,而衍生出来 主从架构 2、…

机器视觉+深度学习,让电子零部件表面缺陷检测效率大幅提升

在精密加工的3C电子行业中,一抹0.1毫米的油渍,一粒肉眼难辨的灰尘或将引发整机性能隐患。当制造业迈入微米级品质竞争时代,产品表面看似微不足道的脏污缺陷,正成为制约企业高质量发展的隐形枷锁。分布无规律的污渍斑点、形态各异的…

Java基础关键_035_Lambda 表达式

目 录 一、引例:TreeSet 排序 1.实现 Comparable 接口 2.比较器 3.匿名内部类 4.Lambda 表达式 5.Lambda 表达式和匿名内部类的区别 二、函数式编程 三、Lambda 表达式的使用 1.无返回值函数式接口 (1)无返回值无参数 (…

OPEX baota 2024.02.26

OPEX baota 2024.02.26 运维集成软件宝塔2024.02.26作废例子: 最重要的两个地方:上传文件 网站,重启应用服务器(tomcat) 其他很少用的

若依 前后端部署

后端:直接把代码从gitee上拉去到本地目录 (https://gitee.com/y_project/RuoYi-Vue ) 注意下redis连接时password改auth 后端启动成功 前端:运行前首先确保安装了node环境,随后执行: !!一定要用管理员权限…

LeetCode算法题(Go语言实现)_37

题目 给你一棵以 root 为根的二叉树,二叉树中的交错路径定义如下: 选择二叉树中 任意 节点和一个方向(左或者右)。 如果前进方向为右,那么移动到当前节点的的右子节点,否则移动到它的左子节点。 改变前进方…

使用 react-three-fiber 快速重构 Three.js 场景⚛️

不明白的知识先放在一边,激发兴趣是第一步,所以不必纠结代码的细节,相信我你很快就会爱上这种感觉!!! 今天,我们将更进一步,将上一篇中vite npm传统 Three.js 原生代码完整 重构为 …

RT-Thread 屏蔽在线软件包的方法

说明 可能大家对 RT-Thread 的 Kconfig 配置项,Scons 构建有些疑惑,其实 BSP 的 Kconfig 可以自由的配置,目录也可以自由的调整 RT-Thread BSP 默认都有在线软件包的配置项,如果你不需要在线软件包,也可以把这个配置项…

深入理解Java反射

反射(Reflection)是Java语言的一个强大特性,它允许程序在运行时动态地获取类的信息并操作类或对象的属性、方法和构造器。就是在获取运行时的java字节码文件,通过各种方法去创建对象,反射是Java被视为动态语言的关键特性之一。 反射其实就是…

Apipost自定义函数深度实战:灵活处理参数值秘籍

在开发过程中,为了更好地处理传递给接口的参数值,解决在调试过程中的数据处理问题,我们经常需要用到函数处理数据。 过去,我们通过预执行脚本来处理数据,先添加脚本,然后将处理后的结果再赋值给请求参数。…

对重大保险风险测试的算法理解

今天与同事聊到重大保险风险测试,借助下面链接的文章, 谈IFRS 17下的重大保险风险测试 - 知乎 谈一下对下图这个公式的理解。 尤其是当看到下面这段文字的解释时,感觉有些算法上的东西,需要再澄清一些。 首先,上面文…

如何白嫖Grok3 API? 如何使用Grok3 API调用实例?怎么使用Grok3模型?

前段时间,Grok3(想要体验Grok3的童鞋可以参考本文:Grok 上线角色扮演功能,教你课后作业手到擒来,Grok3使用次数限制?如何使用Grok3? Grok3国内支付手段如何订阅升级Premium - AI is all your need!&#x…

Fast网络速度测试工具

目录 网站简介 功能特点 测试过程 为什么使用Fast 如果网络速度不达标 网站简介 Fast是一个由Netflix提供的网络速度测试工具,主要用来测试用户的互联网下载速度。它以其简洁的界面和快速的测试过程而受到用户的欢迎。 功能特点 下载速度测试:这是…

ubuntu20.04在mid360部署direct_lidar_odometry(DLO)

editor:1034Robotics-yy time:2025.4.10 1.下载DLO,mid360需要的一些...: 1.1 在工作空间/src下 下载DLO: git clone https://github.com/vectr-ucla/direct_lidar_odometry 1.2 在工作空间/src下 下载livox_ros_driver2&…