团队展示、选题报告与需求分析:课伴 StudyMate 小组作业协作助手
课伴 StudyMate:让小组作业从分工走到交付
| 作业所属课程 | 软件工程课程班级 |
|---|---|
| 作业要求 | 团队展示+选题报告+需求分析 |
| 作业的目标 | 将上一阶段的智能体嵌入具体应用,通过团队展示、真实需求调研和需求分析,说明应用为谁解决什么问题,以及怎样实现和验收。 |
| 团队名称 | 五等分的计科 |
| 团队成员学号-名字 | 3124007214-陈建志;3124004160-陈信儒;3124004184-肖琳瀚;3124004159-陈康泓;3124004050-陈憬乐 |
| 项目仓库 | DexJocelyn / StudyMateAgent |
本文介绍课伴的选题、需求与实现。小陈、小肖是功能演示成员;需求来源采用真实内部使用观察,AI模拟走查单独作为辅助测试记录。
一、团队展示
1. 队名介绍与成员职责
我们的队名是五等分的计科,寓意五个同样学习计科的同好友。大家有共同的专业背景与兴趣,希望在交流和协作中一起学习、一起进步,把各自的想法落实到课伴项目中。
我们围绕模型编排、工具与存储、网页交互、对话与语音、测试与文档五个方向安排协作。下面列出各成员的职责方向与本人希望承担的角色。
| 姓名 | 学号 | 本次职责方向 | 希望承担的角色 |
|---|---|---|---|
| 陈建志 | 3124007214 | 模型与工具编排、整体集成联调 | 模型集成与联调 |
| 陈信儒 | 3124004160 | 工具接口、数据库与日程规则 | 后端开发 |
| 肖琳瀚 | 3124004184 | 前端交互、结果呈现与使用体验 | 后端开发 |
| 陈康泓 | 3124004159 | 对话记忆、语音输入与设备体验 | 测试与文档 |
| 陈憬乐 | 3124004050 | 功能测试、验收记录与文档整理 | 前端开发 |
希望承担的角色表达个人学习与发展意向,与本次协作方向分别记录。
陈信儒(3124004160):性格理性沉稳,做事踏实,待人平和。擅长C语言和Python,兴趣爱好是打游戏、乒乓球和象棋。希望在小组中承担后端开发工作,也在继续学习相关技术。
肖琳瀚(3124004184):性格稳重踏实,擅长Java,兴趣爱好是切牌和打游戏。目前正在学习后端相关技术,希望在小组中承担后端开发工作。
陈憬乐(3124004050):性格活泼开朗、乐观向上,独立性强,能够自主完成任务,有责任心,愿意主动承担自己的责任。擅长C语言和Python,兴趣爱好是打羽毛球、听歌和打游戏。目前正在学习前端技术,希望在小组中承担前端开发工作。
陈建志(3124007214):做事认真细致,遇到问题愿意耐心尝试,也比较重视组员的意见。正在学习Python、FastAPI、模型API接入和前后端联调,兴趣爱好是看动漫、打游戏。希望负责模型集成与联调,也愿意参与测试和文档整理。
陈康泓(3124004159):性格比较乐观,目前正在学习数据库系统,兴趣爱好是读小说。希望在小组中负责测试和文档工作。
2. 团队成员头像合影

从左到右依次为陈信儒、肖琳瀚、陈建志、陈康泓、陈憬乐。图为五位成员头像组成的团队形象拼图。
3. 项目规划与愿景
课伴面向有课程小组作业的大学生。我们沿用上一阶段的任务、日程和对话能力,把应用整理成三个入口:帮小组分工、安排我的时间、检查作业。三者使用同一个项目的数据,检查发现的缺项可以继续成为任务。
我们希望课伴成为大学生小组作业中一个可靠的协作入口,让要求、分工、时间和提交材料都能被清楚记录。成员知道自己下一步要做什么,协调者能跟进进度;提交前可以回看依据、发现遗漏,再由人确认并补齐。它应减少来回核对的负担,同时把判断权留给使用者。
二、选题报告
1. 从上一版到这次应用
上一阶段,我们主要验证智能体能否理解自然语言、调用工具并保存任务。本阶段要回答一个更具体的问题:这些能力怎样帮助小组完成一次真实作业?
只把任务列出来还不够。成员接到任务后要知道什么时候做,提交前也要核对报告是否覆盖了老师的要求。因此,我们把分工、个人排程和材料检查接在一起,而不是单独增加一个文档问答框。
2. 目标用户与待验证的问题
目标用户是大学课程作业小组,重点关注两类使用场景:协调人整理要求并确认分工,组员安排本人任务;提交前,成员共同核对材料。
目前整理出三个问题假设:
- 要求散落在群聊和文档里,难以对应到负责人。
- 接到任务后,成员需要根据自己的空闲时间安排工作。
- 任务标记完成了,最终报告或展示材料仍可能漏掉要求。
这些需求在项目成员的实际使用与问题反馈中逐步形成,下面列出反馈来源及其如何影响设计。
3. 需求来源:项目成员的真实使用观察
我们采用开发过程中的内部使用观察收集需求:项目成员实际操作课伴,指出遇到的问题,再将问题转成可验证的功能改动。以下三条来自同一名项目成员U1的真实反馈,不是三位受访者,也不是正式访谈统计。收集时间为本次项目迭代期间,未保留各条独立访谈日期,因此不补写日期或人数。
| 来源与实际问题 | 用户需要什么 | 需求与设计调整 | 验证证据 |
|---|---|---|---|
| U1:任务开始后只能标记完成,希望有空再继续 | 工作中断后能保留原任务并恢复 | FR-03:增加暂停/继续,保留负责人和原截止日期 | 本文任务暂停截图p7-2 |
| U1:已有小陈和小肖,草案却全分给小陈 | 分工基于全组真实名单,不能把当前聊天者视为唯一负责人 | FR-02:预读成员名册,增加分工草案校验 | p6-2草案覆盖两人,p7-1实际保存 |
| U1:导出时间含T、时区和微秒,可读性差 | 计划和检查报告能直接读懂时间 | FR-09:统一为中文日期与北京时间 | p12-2导出示例和实际Markdown文件 |
此外,项目提交人转述:组员整体认可当前版本,但在各自电脑上部署时遇到一些问题。这说明除了网页功能,首次安装和启动体验也会影响使用。当前尚未收齐各台设备的配置、报错和逐人操作记录,因此不统一归因,也不据此宣称全部组员已完成所有功能验收或计算满意率。
我们将部署体验列为后续改进方向:让首次环境准备、依赖安装和失败提示更清楚,并评估自带运行环境的Windows便携包。现有演示包仍需要本机Python和首次安装依赖,免环境便携包尚未完成。AI模拟走查记录另列,不计入真实用户数量。
这类观察反映了实际成员在小组作业中的需求,但样本集中在本组,不能据此代表其他课程或所有学生。后续将继续找组外同学试用,记录其最近一次分工、时间协调和提交核对的经历,验证需求是否具有普遍性。
4. AI模拟用户走查(辅助验证)
我们使用另一智能体模拟首次使用者,实际操作分工、个人日程和作业检查,保留43张截图与操作日志。它没有图像输入,因此本轮主要评价操作流程、页面文字和执行结果,不作配色或整体视觉体验评价。
| 观察到的问题 | 核对后的理解 | 后续改进方向 |
|---|---|---|
| 时间安排入口生成的草案出现在聊天区,右侧仍显示无已保存日程 | 草案尚未采用时数据状态正确,但用户要跨区域寻找结果 | 在时间安排区提示待确认草案并提供查看入口 |
| 人工复核中的“人工确认”容易被理解为认可AI的缺项结论 | 系统实际将其当作该要求已满足,存在文案歧义 | 明确区分确认已满足与确认需补充,提前说明建任务条件 |
| 菜单叫“下载任务计划”,实际先在聊天中生成下载链接 | 独立点击链接成功下载,不能写成导出功能完全失效 | 明确生成与下载的后续动作,并提供清晰成功反馈 |
上表三项目前均为待实施的改进计划,尚未完成修改与复测。


报告中的部分故障判断需要修正:选择小林后刷新,独立复核可以恢复身份;正常从工作台进入检查作业,项目也能保持。日志中等待复核按钮的阶段,结果清单已存在,只是详情折叠。因此我们分别记录原始反馈和复核结论,尚未实施的改进也不会写成已经修复。
走查原始记录与独立复核清单另存为团队测试附件;本文列出主要结论,供后续复测。
这轮是AI模拟用户测试,不是真实学生访谈,不能据此推断学生群体的需求、满意度或产品效果。
5. 应用的主要亮点
我们的亮点是把“发现遗漏”接回“继续执行”:系统对照老师要求与已保存材料,给出可定位的文字依据或缺项;使用者人工复核,再确认负责人、耗时和截止时间,生成同项目中的补充任务。
这样,检查结果不止停留在一段建议里。任务卡和导出文件可以继续核对,成员也能跟进补充工作。实际价值仍需要通过真实试用验证,目前不宣称节省了多少时间或优于所有同类工具。
三、需求分析与实现思路
1. 项目标志与业务流程
课伴Logo由打开的书页和绿色勾选组成:书页代表课程、知识与学习过程;勾选代表核对要求、完成任务与交付确认。两者结合,表达课伴既帮助小组安排学习任务,也帮助检查提交材料的定位。深绿色希望传达稳妥、清晰的使用感受,浅色背景便于阅读。Logo已用于网站页头与PPT。

应用按“分工—个人安排—交付检查”推进,发现缺项时返回任务流程。

2. 功能描述与验收标准
| 功能 | 前端交互 | 后端处理与约束 | 验收标准 |
|---|---|---|---|
| 项目与成员 | 新建、切换、重命名和归档项目;选择当前聊天成员 | 按项目保存成员、任务、日程与材料;成员选择仅为视角切换 | 切换项目后显示对应数据;归档可恢复;成员视角不被描述为账号登录 |
| 帮小组分工 | 输入要求,查看任务标题、负责人、估时和截止时间;确认草案 | 读取真实成员名册,检查字段和负责人;采用后才创建正式任务 | 草案未确认时不新增正式任务;确认后刷新仍可找到任务 |
| 任务跟进 | 开始、暂停、继续、完成及明确转交任务 | 保存任务状态;暂停保留原负责人和截止时间 | 卡片状态与实际数据一致;暂停后出现继续入口 |
| 个人时间安排 | 查看“我的”任务,填写空闲时段,预览并保存日程 | 按最早截止优先安排;检查空闲范围、冲突、截止和工时覆盖 | 保存本人日程时保留其他成员安排;时段不足时提示缺口 |
| 检查作业 | 保存要求、上传材料,按状态筛选并展开依据 | 支持TXT、MD、DOCX正文;真实模型分析;后端核对引文与版本 | 引文能定位到提供的原文;区分有依据、待补充和待核实,不自动判分 |
| 人工复核与补充任务 | 保存人工判断和备注,确认负责人、估时与截止 | 人工标为需补充后才能建任务;检查来源版本并防重复创建 | 补充任务出现在同项目看板;材料变化后旧结果不能继续建任务 |
| 计划与报告导出 | 下载任务计划或自查报告 | 从已保存数据生成文件,使用易读的北京时间 | 导出内容与对应记录一致,人工备注保留 |
3. 前后端怎样分工
前端使用HTML、CSS和JavaScript,负责项目与成员选择、草案预览、操作状态和原文依据展示。Markdown回复经过渲染与清理,避免把大量标记符号直接显示给使用者。
后端使用FastAPI编排模型与工具。千问负责理解自然语言、形成建议和解释结果;16项MCP工具承担任务、日程、材料和外部查询等操作,SQLite保存业务数据。排程可行性、引文、版本和重复请求由程序检查,不能依赖模型一句“已完成”。

模型密钥保留在后端配置中。网页切换聊天成员不会自动切换模型,也不构成账号权限隔离。不同电脑各自运行时数据独立,共用模型密钥不等于共享项目数据库。
4. 需求思维导图

5. 数据关系与类图概要
项目关联成员、任务、日程和自查工作区。自查记录保留材料版本,通过任务关联记录连接补充任务,以便追溯来源。

上图便于快速理解业务闭环。进一步的分析类图包含属性、业务操作和关联基数,见文末软件需求规格说明书。需求文档已整理运行约束、前后端需求、数据字典、接口、异常流程、验收标准与追踪关系;本次展示和最终验收按相同需求基线核对。
四、一次完整的实操演示
本例使用“演示”项目和小陈、小肖两名演示成员。操作日期为2026年11月6日;日后复现时应把日期改成使用当天之后的有效时段。
以下图片为实际操作截图。双图用于对照步骤,查看细节时可打开原图。
1. 进入工作台
首页三个入口分别对应分工、个人时间安排与作业检查。先选项目,再选择当前聊天成员。

2. 从要求生成分工草案
小陈输入项目展示要求,指定每项30分钟、截止11月8日20:00,并要求先给草案。结果将五项工作分给两名成员:小陈3项、小肖2项。此时仍标记为待确认,尚未保存。


3. 确认保存,并暂停自己的任务
采用草案后,全组看板显示5项正式任务。小陈将“需求整理”开始并暂停,卡片显示“已暂停”和“继续任务”;原负责人、30分钟估时和截止时间保留。


4. 小肖安排自己的时间
切换为小肖,查看“我的”任务,两项任务各30分钟。小肖填写11月7日19:00—20:00的空闲时间,不需要先等其他成员填写。


生成的草案将模型与工具联调安排在19:00—19:30,测试记录整理安排在19:30—20:00。核对后确认,正式日程中出现对应安排。


5. 保存模拟要求和报告初稿
模拟要求包含目标用户与问题、技术方案、成员分工表、公开仓库链接四项。报告初稿已有问题与技术说明、仓库链接,但故意没有分工表。上传后展开正文,确认检查所依据的内容已保存。


6. 查看检查结果,人工确认缺项
本次真实检查得到:2项有文字依据、1项待补充、1项待核实。成员分工表待补充,仓库是否公开可访问留给人工核实。
展开分工表检查项后,可以看到要求原文和缺项说明。人工选择“需补充”,备注“报告初稿缺少成员分工表,需要补充小陈、小肖各自的具体任务”,然后保存复核。


7. 缺项变为任务,复核记录带入导出文件
确认由小陈负责、预计30分钟、截止11月8日20:00后,创建补充分工表任务。任务回到同一项目,小陈的任务从3项增至4项。下载的检查报告保留要求、缺项说明、人工复核和备注。


这次演示证明了操作链路可以连起来,不能据此宣称所有材料都能准确检查。补充任务完成后,仍需要上传修改后的材料并重新检查。
五、迭代记录与后续安排
| 日期 | 主要改动 | 目的与当前状态 |
|---|---|---|
| 2026年10月30日 | 增加要求与材料自查、原文引文和版本校验 | 让检查结论有材料依据 |
| 2026年11月1日 | 将自查整合回原项目,关联补充任务 | 让缺项回到已有任务流程 |
| 2026年11月5日 | 完善个人排程、项目管理、简洁结果列表和中文时间导出 | 提高使用与阅读的清晰度 |
| 2026年11月6日 | 修正团队分工时忽略其他成员的问题,完成本次案例实操与15张截图 | 实测草案覆盖小陈与小肖;截图和PPT已整理 |
| 2026年11月6日 | 收集AI模拟走查的43张截图及日志,独立复核关键结论 | 已形成草案提示、复核文案、下载引导三项改进计划,尚未实施 |
| 2026年11月7日 | 补齐五位成员的姓名、学号、个人介绍与角色意向 | 博客稿、成员页和讲者备注同步更新 |
| 2026年11月7日 | 整理内部真实使用观察、软件需求规格说明书及PNG图示 | 文档已形成,提交前继续全组审核 |
| 2026年11月8日 | 确认五等分的计科队名,加入成员头像合影、组名和Logo说明 | 头像合影不作为真人摄影;保留流程图、思维导图与类图 |
| 提交前 | 上传博客配图、核对需求与演练 | 头像合影是否替代首次合照需老师认可 |
| 后续开发与验收 | 最终对外访问、多人试用和设备兼容验证 | 待落实,不把本机入口描述为公开上线 |
六、当前能力边界与加分项
目前已接入千问真实模型,能够通过工具读写任务和日程、检查提供的正文并生成补充任务。联网搜索与天气属于辅助能力:搜索需要后端单独配置搜索服务,天气使用独立接口;它们不是材料检查的替代品。
本版暂不支持PDF、扫描图片或OCR,不自动批改和评分,也不会验证图片真实性、仓库链接是否可访问或程序实际运行效果。语音输入支持暂停、继续和停止,部分设备的手动停止朗读仍待复测。
老师明确列出的额外加分方向是智能体与硬件联动。我们目前没有完成这一项,不把普通浏览器麦克风输入自行认定为硬件加分。OCR可列为后续探索,但不是本版已实现能力,也不据此认定已经获得加分。
七、仓库、运行与检查入口
源码仓库:StudyMateAgent。2026年11月6日已更新main分支,代码基线为9d706a9,包含程序源码、运行说明和教学示例。
本机使用Python环境启动FastAPI后,在浏览器打开http://127.0.0.1:8000/。具体依赖、模型配置和启动方式以仓库README为准。模型与搜索密钥仅保存在运行主机的后端配置,不放进公开博客或源码。
对外运行状态: 当前提供源码与本机体验方式,正式对外访问地址尚未完成部署和跨设备验收。该项属于老师要求的最终上线工作,后续需补可供老师和助教检查的有效入口;本机地址和GitHub源码链接不替代上线。
本项目使用Codex辅助整理、实现和调试。团队成员负责需求与分工核对、实际试用、测试和提交内容审核。
附录:软件需求规格说明书
版本:1.0,2026年11月7日。适用范围:本次课程项目展示与需求基线,供全组审核。编制依据为老师给出的《软件需求规范》参考要求、项目真实使用反馈与当前实现。按引言、总体描述、具体需求、数据与接口、验收和追踪组织,不宣称已通过国家标准符合性审查。
1. 引言
1.1 目的与范围
为大学课程作业小组提供同一项目内的分工、个人日程和提交材料自查,明确输入、实际数据变化与验收条件。面向小组成员、课程老师、助教及维护者。本文区分当前实现与后续计划,不将AI建议视为评分或老师验收结论。
核心流程:保存作业要求 → 确认分工草案 → 执行任务与安排个人时间 → 对照材料检查 → 人工复核 → 建立补充任务 → 补充材料并重新检查。
1.2 术语
| 术语 | 定义 |
|---|---|
| 项目 | 成员、任务、日程、对话与自查材料的业务范围 |
| 当前成员 | 手动选择的聊天视角,不是身份认证或访问权限 |
| 草案 | 尚未写入正式任务或日程的待确认结果 |
| MCP工具 | 经stdio协议调用的真实业务与查询接口,共16项 |
| 材料版本 | 要求或材料变动时更新的版本,用于阻止采用过期分析 |
| 找到文字依据 | 材料存在可定位文字,不代表内容质量或要求已经合格 |
1.3 依据与相关资料
- 课程作业要求。
- 项目源码,公开源码基线提交
9d706a9。 backend/main.py、backend/review_api.py、backend/services/models.py、backend/services/tools.py、backend/services/review.py、backend/storage/db.py。- 本次博客中的内部使用观察、实际操作截图与辅助AI模拟走查;模拟身份不作为真实受访者。
2. 总体描述
2.1 用户与真实需求来源
协调成员希望将要求拆成明确任务;接到任务的成员希望按本人空闲时间安排;提交前成员希望定位材料中的依据与遗漏。现有真实证据来自开发期间的项目成员使用反馈:任务要能暂停、多成员分工不能全部归给当前聊天者、时间导出应易读。属于便利样本的内部使用观察,尚不能代表所有学生群体,也没有正式访谈人数、满意度或节省时长统计。
项目提交人另转述组员整体认可当前版本,但在各自电脑部署时遇到一些问题;尚未收集逐台配置与报错,不能推断具体原因或完成比例。首次安装和启动体验据此列入后续优化范围。
2.2 运行环境与约束
浏览器前端采用HTML/CSS/JavaScript;Python 3.11+运行FastAPI与官方MCP SDK,SQLite保存数据,千问通过兼容接口提供推理。首次源码运行需联网安装依赖;真实模型和可选搜索需有效密钥及额度。当前发布包没有自带Windows解释器;Windows兼容性以实机结果为准。
同一服务可共享同一数据库;各自电脑独立运行不自动同步。数据库使用WAL与事务,当前按单后端进程运行,不作为多实例横向扩展方案。正式公网访问仍需部署与跨设备验收。
2.3 业务流程与标志
项目标志与业务流程见本文第三部分。
3. 功能需求
| 编号 | 前端输入与呈现 | 后端规则与实际结果 | 验收条件 |
|---|---|---|---|
| FR-01 项目与成员 | 新建、切换、重命名、归档和恢复项目;选择聊天成员 | 数据按项目保存;有任务成员须先转交再移除;至少保留一名成员,不能归档最后一个活动项目 | 刷新恢复记录;切换不混入其他项目数据;不把成员选择当作登录 |
| FR-02 分工草案 | 输入要求、成员、估时、明确截止时间;显示草案 | 读取真实成员名册;校验任务字段与负责人;用户采用后才创建正式任务 | 草案阶段任务库不变;采用后有实际卡片且刷新保留;不凭空增加成员 |
| FR-03 任务跟进 | 查看我的/全组任务;开始、暂停、继续、完成及明确转交 | 状态为todo/doing/paused/done;暂停不改变负责人和截止日期,不自动计时 | 操作后状态与导出一致;转交前明确目标,不能因切换聊天视角自动转交 |
| FR-04 个人日程 | 填写自己的明确空闲时段,生成、核对并保存草案 | 最早截止优先;检查负责人、可用时段、重叠、截止与工时覆盖;个人保存只替换本人安排 | 保留其他成员安排;不足时给缺口,不保存伪造可行结果;旧版本草案拒绝覆盖 |
| FR-05 要求与材料 | 保存要求,手输或上传TXT/MD/DOCX,查看提取正文 | 要求最多12000字;材料最多8份、总计48000字;单份正文4—18000字;单文件512KiB;DOCX提取普通段落与表格正文 | 超限、不支持格式或无效正文明确失败;材料变更更新版本;不声称读取扫描图片 |
| FR-06 真实AI自查 | 开始检查,按状态筛选、展开要求与材料依据 | MCP读取当前项目文本;模型形成结构化结果;校验逐字引文、位置和版本后保存 | 区分evidence_found/missing/uncertain;没有模型配置时报错,不返回模拟通过;不编造引文 |
| FR-07 人工复核 | 保存判断与备注 | 状态为unreviewed/confirmed/needs_work;confirmed表示人工认为要求已满足,needs_work表示仍需补充 | 保存后重开可见;材料已过期时不得继续沿用旧分析;当前“人工确认”标签存在歧义,改名尚待实施 |
| FR-08 补充任务 | 在需补充项确认负责人、未来截止时间、预计耗时 | 事务内建立任务与检查项关联;同一分析项相同参数返回原任务,不同参数拒绝重复创建 | 出现在同一项目并可跳转;未复核、旧版本、未知负责人或过期时间不得写入;完成任务不等于材料通过 |
| FR-09 导出 | 生成并点击任务计划/自查报告下载链接 | 从已保存数据生成Markdown,采用易读的北京时间,保留人工备注和材料版本说明 | 文件内容与业务记录一致;旧分析导出带过期说明;菜单生成链接不等于浏览器已下载 |
| FR-10 对话与外部查询 | 按项目/成员对话;查看真实工具进度与来源 | 后端调用模型,MCP执行操作;搜索可选Tavily,天气使用独立接口 | 无有效实时数据时如实失败;工具进度不是内部思维链;外部问答不能绕过业务校验 |
| FR-11 语音与阅读 | 输入转写可编辑,暂停/继续/停止;支持朗读与Markdown排版 | 浏览器能力与权限决定可用性;回复渲染清理危险HTML | 语音输入控制的受控测试通过;部分设备手动停止朗读存在已知问题,不作为已完成的可靠性承诺 |
4. 数据与分析类图
下图为分析阶段的领域类图,包含主要属性、业务操作及关联基数。当前Python主要以服务函数和SQLite表实现,不将图中的分析类声称为代码中同名面向对象类。


| 实体/存储 | 关键字段与约束 |
|---|---|
| Project / projects | id主键、name、version;归档状态在project_archives,与项目一对一 |
| Member / members | id主键、project_id外键、name;一个成员归属一个项目 |
| Task / tasks | id、project_id、title(1—160)、description(最多4000)、assignee_id、deadline、estimated_minutes(1—10080)、status;一个任务有一个负责人 |
| Preference / preferences | (project_id,assignee_id)联合主键,windows保存起止时间列表;成员可尚未填写 |
| ScheduleBlock / schedule_blocks | id、project_id、task_id、assignee_id、start_at、end_at;任务可对应多个时间块 |
| Session / sessions | id、project_id、member_id、history、focus_id、draft、created_at;保存会话和待确认上下文 |
| ReviewWorkspace / review_workspaces | project_id主键、instructions、version;尚未使用自查的项目可以没有工作区行 |
| ReviewMaterial / review_materials | id、project_id、name、content;按项目保存已提取正文 |
| ReviewRun / review_runs | id、project_id、request_id、source_version、created_at、items、events、human_version;(project_id,request_id)唯一 |
| ReviewItem | 存在ReviewRun.items的JSON中,含要求引文、行号、建议、证据及人工判断,不是独立SQL表 |
| ReviewTaskLink / review_task_links | (run_id,item_index)联合主键、task_id、fingerprint;每个分析项至多创建一个关联任务 |
| Download / downloads | id、project_id、filename、content;下载校验所属项目,不使用任意路径访问 |
时间要求带时区、精确到分钟,内部规范为Asia/Shanghai;界面和导出显示中文时间,不向使用者展示内部任务编号作为主要名称。项目范围、成员归属等跨字段条件由业务服务检查,不能只依赖外键存在。
5. 外部接口与异常流程
| 接口 | 作用与关键输入 |
|---|---|
| GET/POST /api/projects | 列表/创建;name、members、request_id |
| PATCH /api/projects/ | 重命名或归档/恢复 |
| POST /api/sessions | 建立指定项目、成员的会话 |
| POST /api/chat/stream | project_id、session_id、member_id、request_id、message/action;返回真实处理进度与结果 |
| GET /api/projects/{id}/plan | 任务、成员、日程、可用时间与版本快照 |
| PUT /api/review/{id}/instructions | 保存老师要求text |
| POST /api/review/{id}/materials 或 /upload | 保存文字,或上传name与content_base64 |
| POST /api/review/{id}/analyze | request_id;读取材料并运行真实分析 |
| PATCH /api/review/{id}/human | run_id、index、status、note |
| POST /api/review/{id}/tasks | run_id、index、assignee_id、deadline、estimated_minutes |
| POST /api/review/{id}/export | run_id;生成自查Markdown下载链接 |
| GET /api/downloads/{file_id}?project_id=… | 下载当前项目生成的文件 |
错误流程:参数错误由校验层拒绝;业务错误返回可读说明。重复/冲突中的请求返回409,其他业务失败返回400。外部API鉴权失败、超时或额度不足不能写成操作成功;不展示密钥。材料在模型分析期间变化时,保存结果须再次核对版本。关闭页面后重新打开应从服务端读取已保存数据,未保存输入不保证跨设备恢复。
6. 非功能需求与验收方法
| 编号 | 要求 | 验证方式/边界 |
|---|---|---|
| NFR-01 一致性 | 写操作使用事务;重要请求带标识并检查重复 | 对照测试库中的任务数、版本与关联数,不只看模型回复 |
| NFR-02 机密配置 | 模型与搜索密钥位于后端环境配置;公共源码不含真实密钥、数据库和聊天 | 发布白名单与凭据扫描;组内私密演示包单独交接,不能公开 |
| NFR-03 可理解性 | 显示中文任务名称、状态与北京时间;区分草案、正式保存与人工判断 | 实操核对卡片/导出;下载反馈、草案定位和复核文案仍有待改进 |
| NFR-04 项目范围 | 页面链接与业务请求明确携带项目;成员历史分别保存 | 切换项目/成员及迟到响应回归测试;不等于细粒度授权已实现 |
| NFR-05 容错 | 无配置、外部失败、过期结果与不支持文件均明确提示 | 受控错误测试与页面实际检查,不预设模型必定成功 |
| NFR-06 兼容性 | 桌面浏览器可使用;源码在各系统创建自己的Python环境 | Mac已做实测;Windows、麦克风及不同网络仍需实机核对,不承诺统一耗时 |
当前没有真实并发压测、可用率或响应时限统计,不编造吞吐量、准确率或百分比指标。模型响应受网络与供应商影响。
7. 需求追踪与验收记录
| 需求 | 对应代码/测试 | 已有证据 |
|---|---|---|
| FR-01 | services/projects.py;test_project_management.py | 项目新增、归档/恢复回归测试 |
| FR-02/03 | agent/runner.py、services/tools.py;test_team_assignment.py、test_pause.py | 博客p6/p7实际截图 |
| FR-04 | services/tools.py;test_personal_schedule.py | 博客p8/p9个人排程截图 |
| FR-05/06/07/08 | services/review.py、review_api.py;test_review.py、test_review_ui.mjs | 博客p10—p12真实模型和人工复核流程 |
| FR-09 | exports/markdown.py、services/review.py;test_export_readability.py | 实际下载Markdown与导出截图 |
| FR-10/11 | mcp_client.py、services/weather.py/search.py、frontend/speech.js | 工具冒烟、外部联调与语音受控测试;不等同全部设备验收 |
2026年11月6日发布前执行210项Python测试、20项前端Node测试及16工具MCP冒烟,通过。自动测试使用临时库和受控供应商响应,不消耗真实模型额度;真实供应商验证另行记录。本文件编写没有再次调用模型,也没有新增功能测试结果。
需求思维导图见本文第三部分。
8. 迭代记录与后续范围
| 日期 | 变更 | 状态 |
|---|---|---|
| 2026-10-30 | 要求/材料自查,引文与版本校验 | 已实现 |
| 2026-11-01 | 自查整合到原项目,补充任务回流 | 已实现 |
| 2026-11-05 | 个人排程、项目管理、简洁结果、中文导出时间 | 已实现 |
| 2026-11-06 | 团队名册预读与分工校验,真实实操截图,源码发布 | 已实现并记录;AI走查三项建议尚未实施 |
| 2026-11-07 | 补齐五位个人介绍,整理需求基线、数据字典与验收追踪 | 文档已整理,待全组审核 |
| 后续 | 下载引导、草案位置与复核标签优化 | 待实施 |
| 后续 | 根据组员部署反馈完善首次安装提示,评估免环境便携包 | 待收集设备与报错,便携包未完成 |
| 最终验收前 | 正式访问入口、跨设备检查与多人试用 | 待落实,不以本地网页替代上线 |
本版明确排除:PDF/扫描图片OCR、自动评分、跨项目冲突、个人账号权限、硬件联动。它们不属于当前已实现功能,也不能计为已取得的加分。需求变更需同步修改本文、对应验收条件和团队迭代记录。

浙公网安备 33010602011771号