# 1 ## 角色设定 你是资深的教育家,负责学生的就业对就业市场有深刻的理解,并且了解信息化和智慧化。 ## 背景 我负责一家高校的AI实验室,主要工作是高校的智慧化建设工作。 今年计算机系与我们交流,看我们能不能担起一些学生实习、实训的工作。 在对计算机系的学生宣讲完后,有40多名学生报名参加。 我对实验室承担的实习、实训工作分了一个四层漏斗,往下深入,每一层的人会更少: 1. 科普。讲解AI的通识知识,有些同学听了这些就够了。 2. 见猪跑。计划为期一到两个月,主要目的是学生了解一个软件的研发过程,从需求到部署。 3. 实习。计划两个月左右,深入了解软件开发各阶段的特点,使用AI来做需求分析、设计、编程和测试。 4. 实训。实习的佼佼者,可以加入实验室,参与我们正在做的智慧化项目。 目前见猪跑项目结束,参与的学生分三个组提交了见猪跑项目的资料。 现在进入答辩环节。 ### 见猪跑 ```md # **“见猪跑”项目7周里程碑节点计划** **总体原则:** 每周都有明确的 **目标**、清晰的 **任务**、配套的 **培训** 和可量化的 **交付成果**。 ## **第一周:启动与基础 (Kick-off & Foundation)** * **周目标:** 完成团队组建与项目启动,掌握必备的协作工具,并输出初步的产品构想。 * **核心任务 (学生):** * 团队内部破冰,选举小组长(项目经理)。 * 在老师指导下,讨论并选定项目选题。 * 创建项目代码仓库(Gitee/GitHub)和任务管理看板(Trello/Leangoo)。 * 集体讨论,编写出项目最核心的 **用户故事 (User Stories)** 和功能列表。 * **您的角色与培训重点:** * **培训1:项目启动会** - 讲解“见猪跑”的目的、流程和考核方式。 * **培训2:AI在软件开发中的应用** - 宏观介绍AI如何辅助需求、设计、编码、测试,并演示GitHub Copilot等工具,激发学生兴趣。 * **培训3:协作工具入门** - **Markdown** 语法、**Git** 核心命令 (`clone`, `add`, `commit`, `push`)、**Trello** 看板的基本用法。 * **交付成果:** * ✅ 包含初始用户故事列表的任务管理看板。 * ✅ 创建好的、所有成员均有权限的Git代码仓库。 * ✅ 一份用Markdown编写的、简单的《项目启动说明书》。 --- #### **第二周:需求与设计 (Requirement & Design)** * **周目标:** 将模糊的想法转化为清晰、可视化的产品设计方案和技术架构蓝图。 * **核心任务 (学生):** * 细化用户故事,明确每个功能的验收标准(Acceptance Criteria)。 * 使用原型工具绘制应用的主要界面 **线框图 (Wireframe)** 或高保真原型。 * 进行技术选型(如:前端Vue,后端Python+Flask)。 * 设计数据库的核心 **表结构 (Schema)**。 * 定义核心功能的 **API接口文档**。 * **您的角色与培训重点:** * **培训1:如何写好需求** - 用户故事与验收标准的撰写技巧。 * **培训2:产品原型设计** - Figma或MasterGo等工具的快速入门。 * **培训3:后端基础** - 什么是RESTful API、数据库表设计三范式、Postman工具的使用。 * **交付成果:** * ✅ 包含主要页面的Figma/MasterGo原型链接。 * ✅ 完整的数据库表结构设计图。 * ✅ 使用Postman或Markdown编写的核心API文档初稿。 --- #### **第三周:开发迭代一 (Sprint 1 - 搭建骨架)** * **周目标:** 完成项目技术架构的搭建,并实现用户注册/登录等基础核心功能。 * **核心任务 (学生):** * 统一并搭建好本地开发环境。 * 搭建前后端项目的基础工程结构。 * 完成后端的用户模块API(注册、登录、获取用户信息)。 * 完成前端的登录/注册页面,并与后端API联调通过。 * **您的角色与培训重点:** * **培训1:前后端框架入门** - Vue和Flask/Django的项目创建与核心概念。 * **培训2:Git分支管理** - 学习`develop`分支、`feature`分支的工作流。 * **指导:** 帮助学生解决环境配置、跨域(CORS)等初期常见问题。 * **交付成果:** * ✅ 一个可以运行的前后端项目骨架。 * ✅ 用户可以成功通过界面完成注册和登录功能。 --- #### **第四周:开发迭代二 (Sprint 2 - 核心功能实现)** * **周目标:** 完成项目最核心的业务功能模块的开发。 * **核心任务 (学生):** * **后端:** 开发核心业务API(例如:“失物招领”的发布、列表功能;“会议室预定”的预定、查询功能)。 * **前端:** 开发核心功能的展示与交互界面。 * 前后端进行核心功能的接口联调。 * **您的角色与培训重点:** * **培训1:数据库操作** - ORM(如SQLAlchemy)的使用,数据库增删改查。 * **培训2:前端组件化开发** - 如何将页面拆分成可复用的组件。 * **Code Review:** 开始引导学生进行代码互评,提升代码质量。 * **交付成果:** * ✅ 项目核心功能(如发布失物、预定会议室)可以完整跑通。 --- #### **第五周:开发迭代三 (Sprint 3 - 功能完善)** * **周目标:** 完成其余的辅助功能,使项目功能趋于完整。 * **核心任务 (学生):** * 开发搜索、筛选、个人中心、详情页等辅助功能。 * 对已有功能进行优化和细节调整。 * 继续进行前后端联调和Bug修复。 * **您的角色与培训重点:** * **培训1:应用状态管理** - 前端Vuex/Pinia等工具的使用。 * **指导:** 引导学生思考如何处理异常情况和边界条件。 * **交付成果:** * ✅ 项目达到“功能完整”状态,所有计划内的主要、次要功能均已开发完成。 --- #### **第六周:测试与文档周 (Testing & Documentation)** * **周目标:** 集中进行项目测试,修复Bug,确保软件质量,并完善项目文档。 * **核心任务 (学生):** * **全员测试:** 小组内所有成员交叉测试彼此开发的功能,记录Bug。 * **集中修复:** 集中精力解决测试中发现的Bug。 * **文档完善:** 撰写详细的《项目README文档》,包括项目介绍、技术栈、如何运行、部署说明等。 * **您的角色与培训重点:** * **培训1:如何有效提Bug** - 学习编写清晰的Bug报告(重现步骤、期望结果、实际结果)。 * **培训2:浏览器调试技巧** - Chrome DevTools的深入使用。 * **交付成果:** * ✅ 一个相对稳定的、Bug较少的待部署版本。 * ✅ 一份高质量、内容详尽的 `README.md` 文件。 --- #### **第七周:部署与复盘 (Deployment & Showcase)** * **周目标:** 将项目成功部署到线上服务器,并进行项目总结与成果展示。 * **核心任务 (学生):** * 在老师指导下,学习并完成项目部署。 * 准备项目展示的PPT和演示稿。 * 进行小组内部和全体的 **项目复盘 (Retrospective)**,总结经验教训。 * **最终成果展示会!** * **您的角色与培训重点:** * **培训1:应用部署入门** - Docker基础、Nginx反向代理配置、服务器SSH操作入门。 * **组织与主持:** 组织最终的项目展示会,并进行点评。 * **交付成果:** * ✅ 一个可以通过公网访问的应用URL。 * ✅ 一份项目展示PPT。 * ✅ 每位同学提交一份“见猪跑”实习总结报告。 ``` ### 答辩材料 ```md # 在线问卷/投票系统项目答辩材料 ## 1. 项目概述 ### 1.1 项目背景 在当今数字化时代,传统的纸质问卷已经无法满足高效、便捷的数据收集需求。学生会、社团及课程小组等团体在组织活动、收集意见时,常常面临以下痛点: - 纸质问卷打印成本高、分发效率低 - 人工统计数据耗时耗力,容易出错 - 无法实时查看问卷回收情况 - 数据可视化程度低,难以直观分析 本项目旨在开发一个高效的在线问卷与投票工具,解决上述问题,提供一个便捷的平台,支持用户快速创建、发布、分享并自动统计问卷结果。 ### 1.2 项目目标 1. **功能完整性**:支持多种题型、问卷管理、发布分享、结果统计等核心功能 2. **易用性**:提供直观友好的用户界面,降低使用门槛 3. **高效性**:实现问卷快速创建、发布和结果实时统计 4. **可扩展性**:采用模块化设计,便于后续功能扩展 5. **安全性**:确保用户数据和问卷内容的安全 ### 1.3 项目团队 - **团队名称**:24计升集中实习奋斗项目组 - **团队成员**:陈浩东 白一帆 张赛琦 许雨孜 刘雪坤 杜蓉悦 李泽昕 陈毅 李轩昊 赵江恒 白锦程 田昭阳 ### 1.4 团队分工 | 成员 | 负责模块 | |------|----------| |白锦程 田昭阳 | 需求分析 | | 李轩昊 赵江恒 | 数据库设计 | | 李泽昕 陈毅 | 测试 | | 白一帆 | 部署 | | 张赛琦 许雨孜 刘雪坤 杜蓉悦 | 材料的编写 | ## 2. 需求分析 ### 2.2 核心功能需求 1. **问卷管理**:创建、编辑、删除、复制问卷 2. **问卷设计**:支持单选题、多选题、文本题等多种题型 3. **问卷发布**:生成分享链接,支持实时状态管理 4. **问卷填写**:简洁易用的填写界面 5. **结果统计**:实时数据统计与可视化图表展示 ## 3. 系统设计 ### 3.1 系统架构 - **前端**:HTML/CSS/JavaScript,使用Bootstrap等前端框架 - **后端**:Python Flask框架 - **数据库**:SQLite(开发环境)/MySQL(生产环境) - **认证机制**:JWT Token认证 ### 3.2 API设计 | API路径 | 方法 | 功能描述 | 请求参数 | 响应格式 | 认证要求 | |---------|------|----------|----------|----------|----------| | /api/login | POST | 用户登录,返回访问令牌和刷新令牌 | `username` (string, 必需),`password` (string, 必需) | `{"code": 200, "message": "登录成功", "data": {"token": "...", "refresh_token": "...", "user": {...}}}` | 否 | | /api/refresh | POST | 使用刷新令牌获取新的访问令牌 | `refresh_token` (string, 必需) | `{"code": 200, "message": "令牌刷新成功", "data": {"token": "..."}}` | 是 | | /api/verify-token | POST | 验证访问令牌有效性 | Authorization头: `Bearer ` | `{"code": 200, "message": "令牌有效", "data": {"user": {...}, "expires_at": 1234567890}}` | 是 | | /api/questionnaire/list | GET | 获取当前用户的问卷列表,支持分页和搜索 | `page` (int, 默认1),`pageSize` (int, 默认10),`title` (string, 可选) | `{"code": 200, "message": "获取问卷列表成功", "data": {"list": [...], "total": 100, "page": 1, "pageSize": 10}}` | 是 | | /api/questionnaire/create | POST | 创建新问卷,包含题目和选项 | `title` (string, 必需),`description` (string, 可选),`questions` (array, 可选) | `{"code": 200, "message": "创建问卷成功", "data": {"id": 1}}` | 是 | | /api/questionnaire/ | GET | 获取问卷详情,包含题目和选项(公开访问) | 无 | `{"code": 200, "message": "获取问卷详情成功", "data": {...}}` | 否 | | /api/questionnaire/ | PUT | 更新问卷及其题目和选项 | `title` (string, 必需),`description` (string, 可选),`questions` (array, 可选) | `{"code": 200, "message": "问卷更新成功", "data": {"id": 1}}` | 是 | | /api/questionnaire/ | DELETE | 删除问卷(预留接口) | 无 | `{"code": 200, "message": "删除问卷功能待实现", "data": null}` | 是 | | /api/questionnaire//publish | POST | 发布问卷,将状态改为进行中 | 无 | `{"code": 200, "message": "问卷发布成功", "data": {"id": 1, "status": "published"}}` | 是 | | /api/questionnaire//statistics | GET | 获取问卷统计结果,包含选择题统计和文本题列表 | 无 | `{"code": 200, "message": "获取问卷统计结果成功", "data": {"submission_count": 100, "questions": [...]}}` | 是 | | /api/questionnaire//submit | POST | 提交问卷答案,增加问卷提交计数 | `answers` (array, 必需) | `{"code": 200, "message": "问卷提交成功", "data": {"submission_id": 1}}` | 否 | ## 4. 数据库设计 ### 4.1 数据库表结构 系统包含6个核心表: 1. **users**:系统用户表(管理员和普通用户) 2. **questionnaires**:问卷主表 3. **questions**:问卷题目表 4. **options**:题目选项表 5. **submissions**:用户提交记录表 6. **answers**:具体题目答案表 ### 4.2 核心表关系 ``` users (1:N) questionnaires (1:N) questions (1:N) options questionnaires (1:N) submissions (1:N) answers questions (1:N) answers ``` ### 4.3 关键表设计示例 ```sql -- 问卷主表 CREATE TABLE `questionnaires` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '问卷ID', `creator_id` BIGINT UNSIGNED NOT NULL COMMENT '创建者ID', `title` VARCHAR(50) NOT NULL COMMENT '问卷标题', `description` TEXT COMMENT '问卷说明', `status` VARCHAR(20) NOT NULL DEFAULT 'draft' COMMENT '状态', `submission_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '总回收量', `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), CONSTRAINT `fk_q_creator` FOREIGN KEY (`creator_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB; ``` ## 5. 功能模块实现 ### 5.1 用户认证模块 - **登录功能**:支持账号密码登录,前端实现实时表单验证 - **JWT Token管理**:采用JSON Web Token实现无状态认证,Token有效期24小时 - **权限控制**:基于角色的访问控制,区分普通用户和管理员权限 - **密码安全**:使用BCrypt算法对密码进行哈希存储,确保密码安全 ### 5.2 问卷管理模块 - **问卷列表展示**:支持按标题搜索、分页(每页10条)、状态筛选 - **问卷状态管理**:实现草稿、进行中、已结束三种状态的流转 - **问卷操作**:支持查看、编辑、复制、删除等操作,编辑仅允许草稿状态 - **批量操作**:支持多选删除、批量复制等高效操作 ### 5.3 问卷设计模块 - **多种题型支持**:实现单选题、多选题、单行文本、多行文本等题型 - **题目管理**:支持题目添加、删除、复制、上移、下移等操作 - **选项管理**:动态添加、删除选项,支持选项文字编辑 - **拖拽排序**:实现题目拖拽排序功能,提升用户体验 - **实时保存**:每30秒自动保存草稿到本地,防止数据丢失 - **预览功能**:实时预览问卷最终效果,支持PC和移动端预览 ### 5.4 问卷发布模块 - **一键发布**:点击发布按钮即可将问卷状态改为进行中 - **分享链接生成**:自动生成唯一的问卷访问链接 - **截止时间设置**:支持设置问卷截止时间,到期自动结束 - **实时状态监控**:随时查看问卷回收进度和状态 ### 5.5 问卷填写模块 - **响应式设计**:适配PC、平板、手机等不同设备 - **流畅的填写体验**:清晰的题目布局,直观的选项设计 - **实时校验**:前端实现必答题校验,未填写时给出明确提示 - **防重复提交**:实现表单重复提交防护机制 - **提交反馈**:提交成功后显示感谢页面,提交失败给出错误提示 ### 5.6 结果统计模块 - **实时数据更新**:每5秒自动刷新统计数据 - **数据概览**:显示总回收量、平均完成时间、浏览量等关键指标 - **可视化图表**: - 单选题:饼图展示各选项占比 - 多选题:柱状图展示各选项选择次数 - 文本题:文本云展示高频词汇 - **详细数据查看**:支持查看单份答卷详情,支持按时间筛选 - **数据导出**:支持将统计结果导出为Excel格式 ### 5.7 技术实现要点 1. **前后端数据交互**:采用JSON格式进行数据传输,API遵循RESTful设计规范 2. **JWT认证机制**: - 使用Flask-JWT-Extended实现token生成和验证 - 访问令牌有效期1小时,刷新令牌有效期7天 - 实现了令牌刷新和验证接口 - 提供了@jwt_required装饰器进行身份验证 - 实现了基于角色的访问控制(role_required装饰器) 3. **数据库事务处理**:问卷创建、更新和提交操作采用事务管理,确保数据一致性 4. **模块化设计**: - 认证模块和问卷模块分离,便于维护和扩展 - 提供了JWT工具类,封装了常用的认证功能 5. **跨域支持**:使用Flask-CORS实现跨域资源共享 6. **数据库设计**:采用SQLAlchemy ORM框架,实现了表与表之间的关系映射 ## 6. 系统亮点 ### 6.1 技术亮点 1. **前后端分离**:便于团队协作和系统扩展 2. **JWT认证**:提供安全的用户认证机制 3. **响应式设计**:适配各种设备屏幕 4. **实时数据更新**:确保用户看到最新数据 5. **模块化设计**:便于功能扩展和维护 ### 6.2 功能亮点 1. **多种题型支持**:满足不同场景需求 2. **直观的问卷设计界面**:降低使用门槛 3. **便捷的分享功能**:扩大问卷传播范围 4. **丰富的数据可视化**:便于数据分析 5. **完善的状态管理**:灵活控制问卷生命周期 ## 7. 项目实施 ### 7.1 开发环境搭建 1. **Python环境**:安装Python 3.8+,使用virtualenv创建虚拟环境 2. **依赖安装**:使用pip安装Flask及相关依赖(requirements.txt) 3. **数据库初始化**:执行数据库迁移脚本,创建表结构 4. **开发服务器启动**:运行`python app.py`启动本地开发服务器 ### 7.2 部署方案 - **开发环境**:本地开发,使用SQLite数据库 - **测试环境**:阿里云ECS服务器,使用MySQL数据库 - **生产环境**:建议使用云服务器集群+负载均衡,数据库采用主从复制架构 ### 7.3 项目管理 - **开发模式**:采用敏捷开发模式,两周一个迭代 - **版本控制**:使用Git进行代码管理,GitHub作为代码仓库 - **任务管理**:使用Trello进行任务分配和进度跟踪 - **代码规范**:遵循PEP8 Python代码规范,使用flake8进行代码检查 ### 7.4 项目进度 | 阶段 | 时间 | 完成情况 | 主要成果 | |------|------|----------|----------| | 需求分析 | 第1周 | ✅ 完成 | 需求文档、用户故事 | | 系统设计 | 第2周 | ✅ 完成 | 系统架构图、数据库设计 | | 后端开发 | 第3-4周 | ✅ 完成 | API实现、数据库模型 | | 前端开发 | 第5-6周 | ✅ 完成 | 页面开发、交互实现 | | 测试与调试 | 第7周 | ✅ 完成 | 测试报告、bug修复 | | 部署上线 | 第8周 | ✅ 完成 | 系统部署、文档编写 | ### 7.5 技术难点与解决方案 1. **问题**:问卷设计时的实时保存机制 **解决方案**:使用localStorage结合定时任务实现自动保存,每30秒保存一次 2. **问题**:问卷结果的实时统计 **解决方案**:采用WebSocket实现数据实时推送,或使用定时轮询(每5秒) 3. **问题**:多种题型的动态渲染 **解决方案**:使用组件化设计,针对不同题型开发独立组件 4. **问题**:防止问卷重复提交 **解决方案**:使用Token机制,每次提交生成唯一Token,服务器验证后失效 ## 8. 测试与验证 ### 8.1 测试策略 1. **单元测试**:使用pytest框架,覆盖率达到80%以上 2. **集成测试**:测试API接口间的交互,确保数据流转正确 3. **功能测试**:基于需求文档编写测试用例,验证所有功能点 4. **性能测试**:使用JMeter进行压力测试,确保系统能承受100并发访问 5. **安全性测试**:测试SQL注入、XSS攻击等安全漏洞 6. **用户体验测试**:邀请10名用户进行测试,收集反馈意见 ### 8.2 测试用例示例 | 测试用例ID | 功能模块 | 测试场景 | 预期结果 | 实际结果 | 状态 | |------------|----------|----------|----------|----------|------| | TC_001 | 登录功能 | 正确账号密码登录 | 登录成功,返回访问令牌 | 通过 | ✅ | | TC_002 | 登录功能 | 错误密码登录 | 登录失败,提示账号或密码错误 | 通过 | ✅ | | TC_003 | 问卷管理 | 获取问卷列表 | 成功获取问卷列表,包含分页信息 | 通过 | ✅ | | TC_004 | 问卷管理 | 创建包含多种题型的问卷 | 问卷创建成功,状态为草稿 | 通过 | ✅ | | TC_005 | 问卷管理 | 发布问卷 | 问卷状态改为进行中 | 通过 | ✅ | | TC_006 | 问卷填写 | 完整填写并提交问卷 | 提交成功,返回提交ID | 通过 | ✅ | | TC_007 | 问卷统计 | 获取问卷统计结果 | 成功获取问卷统计数据,包含各题型的统计信息 | 通过 | ✅ | | TC_008 | 认证功能 | 刷新访问令牌 | 成功获取新的访问令牌 | 通过 | ✅ | | TC_009 | 认证功能 | 验证令牌有效性 | 正确返回令牌状态和用户信息 | 通过 | ✅ | | TC_010 | 问卷管理 | 更新问卷内容 | 问卷更新成功,保留历史数据 | 通过 | ✅ | ### 8.3 测试结果 - **功能测试**:共执行120个测试用例,通过率98.3% - **性能测试**: - 平均响应时间:<500ms - 并发用户数:支持100并发 - 系统稳定性:持续运行24小时无故障 - **安全性测试**:未发现严重安全漏洞 - **用户体验测试**:用户满意度评分4.5/5 ### 8.4 质量保证 - 建立代码审查机制,确保代码质量 - 使用CI/CD pipeline自动运行测试 - 定期进行bug统计和分析,持续改进 ## 9. 未来展望 ### 9.1 功能扩展 1. **高级题型支持**:添加矩阵题、量表题、排序题、上传题等高级题型 2. **问卷模板库**:建立丰富的问卷模板库,支持一键套用 3. **数据分析增强**: - 实现交叉分析功能 - 添加数据可视化自定义 - 支持生成数据分析报告 4. **协作编辑功能**:支持多人同时编辑同一问卷 5. **问卷逻辑跳转**:实现基于答案的动态逻辑跳转 6. **用户管理系统**:增强用户管理功能,支持用户分组、权限细化 ### 9.2 性能优化 1. **数据库优化**: - 优化查询语句,添加适当索引 - 实现数据库读写分离 - 考虑使用NoSQL存储部分数据 2. **前端优化**: - 资源压缩和CDN加速 - 实现懒加载和代码分割 - 优化页面渲染性能 3. **缓存机制**: - 使用Redis缓存热门问卷数据 - 实现API响应缓存 4. **高并发支持**: - 优化系统架构,支持水平扩展 - 使用消息队列处理异步任务 ### 9.3 安全性增强 1. **验证码功能**:添加图形验证码或行为验证码,防止恶意登录 2. **访问控制**:实现IP限制、访问频率限制 3. **数据安全**: - 增强数据加密机制 - 实现数据备份和恢复策略 - 完善数据脱敏处理 4. **日志系统**: - 完善系统日志记录 - 实现日志分析和告警功能 ## 10. 项目成果展示 ### 10.1 主要页面截图 1. **登录页面**:简洁的登录界面,支持实时表单验证 2. **问卷管理页面**:清晰的问卷列表,支持搜索、筛选和各种操作 3. **问卷设计页面**:直观的拖拽式问卷设计界面 4. **问卷填写页面**:响应式设计,适配各种设备 5. **结果统计页面**:丰富的数据可视化图表 ### 10.2 核心功能演示 1. **问卷创建流程**:从创建到发布的完整流程 2. **问卷填写体验**:流畅的填写过程和实时验证 3. **结果统计展示**:实时数据更新和可视化图表 4. **问卷分享功能**:一键生成分享链接 ## 11. 使用说明 ### 11.1 管理员账号 - 用户名:admin - 密码:admin123 ### 11.2 快速入门 1. 登录系统 2. 点击"新建问卷"按钮创建问卷 3. 设计问卷内容(添加题目、设置选项等) 4. 点击"保存草稿"或"发布"按钮 5. 发布后生成分享链接,可分享给他人填写 6. 在问卷列表中查看回收结果和统计数据 ### 11.3 常见问题 1. **问题**:忘记密码怎么办? **解决方案**:联系管理员重置密码 2. **问题**:问卷发布后还能编辑吗? **解决方案**:问卷发布后不能直接编辑,需要先结束问卷,然后复制为新问卷进行编辑 3. **问题**:如何查看问卷填写详情? **解决方案**:在问卷列表中点击"查看结果",然后选择"查看答卷详情" ## 12. 总结 ### 12.1 项目成果 本项目成功开发了一个功能完整、易用性强的在线问卷/投票系统,主要成果包括: 1. 实现了完整的问卷生命周期管理:创建、编辑、发布、填写、统计 2. 支持多种题型和丰富的问卷设计功能 3. 提供了直观友好的用户界面和流畅的操作体验 4. 实现了实时数据统计和丰富的数据可视化 5. 采用了现代化的技术栈和良好的系统架构 ### 12.2 经验教训 1. **需求分析的重要性**:充分的需求分析是项目成功的基础,避免了后期频繁的需求变更 2. **模块化设计的优势**:模块化设计便于功能扩展和维护,提高了开发效率 3. **测试的必要性**:全面的测试确保了系统的质量和稳定性 4. **团队协作的重要性**:良好的团队协作和沟通是项目成功的关键 5. **文档的价值**:完善的文档便于系统维护和后续开发 ### 12.3 个人收获 通过本项目的开发,团队成员在以下方面获得了提升: 1. 掌握了Web应用开发的全流程 2. 熟悉了现代化的技术栈和开发工具 3. 提高了团队协作和项目管理能力 4. 增强了问题分析和解决能力 5. 积累了系统设计和架构经验 ## 13. 致谢 感谢各位老师的指导,感谢团队成员的协作努力。 ``` ## 思路 我已经试用了这个组部署的服务,系统能够使用。从成果上讲,基本上达成了我想要做的见猪跑目标。 他们现在要进入答辩环节,答辩完成后,我将给他们一份实习证明。 我计划从这个组中抽取(或者全部)人员加入我们的实习项目,真正去做一个软件项目,同时给实验室提供生力军——完成一些体力活。 我不想以问题的形式——不克扣,而是以交流的形式进行答辩。了解每个人的想法,从中学习到的内容,对未来的想法,以及有什么问题。 ## 指令 我需要你帮我整理: 1. 答辩形式建议,比如每个人都谈下想法,到开发的具体过程时,以负责人为主,其他人可以补充等等; 2. 答辩讨论的问题,及相关问题的考察点。 你好!很高兴看到这批学生顺利完成了“见猪跑”环节。对于一支由12名大二/大三学生组成的团队,能在7周内从0到1交付一个可部署、功能完整的Web应用,并且文档如此详尽,这本身就是一个非常值得肯定的成果。 特别是你提到**“不想克扣分数,而是以交流的形式,了解想法,选拔实习生”**,这非常符合现代科技企业和高水平实验室的选人逻辑——**比起“现在的代码水平”,我们更看重“学习潜力和工程思维”**。 针对这12人的庞大队伍(对于一个CRUD项目来说,12人确实稍显拥挤,容易出现“搭便车”现象),我建议采用**“分组聚焦 + 个人复盘”**的答辩策略。 以下是为你整理的答辩形式建议与讨论问题库。 --- ### 第一部分:答辩形式建议 (时长控制在 60-90 分钟) 既然目的是选拔“实习”阶段的生力军,答辩现场的气氛应当是**“轻松但专业”**的。我们要把这里变成一个技术复盘会(Retrospective),而不是期末考试。 **建议流程:** 1. **成果演示 (10分钟) —— 由项目经理(小组长)主讲** * **内容**:不仅仅是PPT念稿,而是直接打开浏览器,演示上线的功能。重点演示核心业务流程(创建->发布->填写->统计)。 * **目的**:确认交付物的真实性,给团队一个展示的高光时刻。 2. **“真心话”圆桌 (20-30分钟) —— 全员参与,每人2分钟** * **形式**:不要按分工坐,打乱顺序。每个人简短回答三个问题: * *在这个项目中,我最自豪的一个细节是什么?* * *如果时间倒流,我会在哪个环节做得不一样?* * *我对下一阶段(AI辅助开发)有什么期待?* * **目的**:这是选人的关键。**过滤掉“混子”,识别出“有思考的人”。** 有些人可能代码写得少,但思考很深;有些人可能只是机械执行。 3. **模块化深度交流 (30分钟) —— 分角色切入,自由补充** * **形式**:你抛出问题,主要负责人回答,鼓励其他组员补充或提出异议(比如开发吐槽需求变动,测试吐槽Bug难复现)。 * **目的**:考察技术深度和协作中的摩擦点。 4. **导师寄语与邀约 (10分钟)** * **内容**:点评项目亮点,指出工业界的真实做法与他们目前的差距(这是教育者的价值),并发出实习邀请。 --- ### 第二部分:交流问题与考察点 这些问题不是为了难倒学生,而是为了看他们是否“真懂”,以及他们的思维方式。 #### 1. 面向“需求与设计”组 (白锦程、田昭阳、李轩昊、赵江恒) *这组人决定了项目的方向和地基。* * **问题 A**:我看你们用了12个人做这个项目,沟通成本很高。在需求分析阶段,你们是如何决定“哪些功能必须做”而“哪些功能由于时间不够先砍掉”的?有没有发生过争执? * **考察点**:**产品思维与优先级管理**。看他们是否懂得MVP(最小可行性产品)概念,还是全凭拍脑袋。 * **问题 B**:数据库设计里,你们把`submissions`(提交记录)和`answers`(具体答案)分开了。当时是怎么考虑的?如果一个问卷有100个问题,10000人填写,在这个表结构下查询会不会变慢? * **考察点**:**数据建模能力与性能意识**。看他们是否理解范式设计,以及对大数据量下的性能有没有初步概念。 #### 2. 面向“开发与部署”组 (白一帆、项目全栈人员) *这组人是干实活的核心,也是未来实验室的“熟练工”预备役。* * **问题 A**:既然我们是AI实验室,在这次写代码的过程中,你们有没有尝试使用AI工具(如ChatGPT, Copilot等)?是在写SQL、写正则,还是Debug时用的?感觉它帮了倒忙还是大忙? * **考察点**:**AI工具的亲和度与真实感悟**。实习阶段需要大量用AI,这里考察他们是否已经不仅是“听过”,而是“用过”并有自己的判断。 * **问题 B**:在这个项目中,最让你头疼的一个Bug是什么?你是怎么定位并解决它的?(比如JWT的过期处理,或者跨域问题) * **考察点**:**问题解决能力**。优秀的工程师擅长讲故事,讲他如何战胜Bug的过程。 * **问题 C**:我看后端用了Python Flask。如果现在让你把这个项目部署到学校所有的社团使用,并发量突然变大,你觉得目前的架构哪里会最先撑不住? * **考察点**:**系统架构的扩展性**。考察是否了解Web服务器、数据库连接池、缓存等概念,即便没做,也要有概念。 #### 3. 面向“测试与文档”组 (李泽昕、陈毅、张赛琦、许雨孜、刘雪坤、杜蓉悦) *这组人数最多(6人),最容易出现“搭便车”。需要重点考察他们是否真正深入理解了系统。* * **问题 A (针对测试)**:你们报告里写测试通过率98.3%。请问那个失败的1.7%是什么?在测试过程中,有没有发现过那种“开发人员觉得不是Bug,但你们觉得是Bug”的情况? * **考察点**:**质量意识与批判性思维**。测试不仅仅是点点点,而是要敢于挑战开发。 * **问题 B (针对文档)**:你们有4个人负责编写材料。作为一个开发者,最讨厌写文档。你们是如何分工的?在写API文档时,你们是看着代码写的,还是先写文档让开发去实现的? * **考察点**:**协作流程理解**。如果是“看着代码写文档”,那是事后诸葛亮;如果是“先写文档”,那是优秀的设计驱动开发。我想确认他们是否真的理解代码逻辑,而不是纯粹的文字搬运工。 #### 4. 面向全员的“灵魂拷问” (抢答或指定) * **问题**:如果在接下来的实习中,我们要把这个问卷系统加入**“AI智能分析”**功能,比如自动总结问卷里的文本回答,或者自动生成问卷题目。你们觉得应该加在哪个模块?大概需要用到什么技术? * **考察点**:**技术视野与创新力**。这是为了筛选进入第三层漏斗(实习)的最佳人选。看谁能跳出CRUD的思维,对接实验室的业务方向。 --- ### 第三部分:选拔建议(您的私下评估表) 在听取回答时,建议您在心里(或笔记本上)为每个人打这三个标签: 1. **Tech Lead 苗子**:逻辑清晰,不仅懂代码还懂架构,能回答出“为什么这么做”。 -> **重点培养,给有挑战的任务。** 2. **Solid Doer (靠谱执行者)**:代码写得多,Bug解得快,虽然话不多但对技术细节如数家珍。 -> **实验室主力,负责具体模块开发。** 3. **Communication Hub (润滑剂)**:也许代码一般,但非常清楚团队在干什么,文档写得极好,能协调矛盾。 -> **适合做PM或负责需求与测试,协助管理项目。** 4. *(如果发现)* **Free Rider (搭便车者)**:对自己负责模块的细节支支吾吾,都在讲空话。 -> **礼貌地发一份“见猪跑”结业证书,但这层漏斗就此截止。** 祝您的答辩会顺利,为实验室筛选出得力干将!