木鸡SteadyGame——代码规范、冲刺任务与计划
木鸡SteadyGame——代码规范、冲刺任务与计划
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 202601 福大-软件工程实践-W班 |
| 这个作业要求在哪里 | 团队作业——站立式会议+α冲刺 |
| 这个作业的目标 | 把前几轮的需求分析、系统设计和数据库设计落成可运行的 Alpha 版本,建立团队代码规范、七天冲刺任务与计划,并说明 AI 技术员如何参与设计、开发和测试。 |
| 其他参考文献 | 《构建之法》;阿里巴巴 Java 开发手册终极版 v1.3.0;华为云 CodeArts Check 代码检查规则集;Vue 3 与 TypeScript 官方文档;OWASP 安全指南;MediaPipe Pose Landmarker 文档;OpenAPI 3.1 规范。 |
| 文档时点 | 本次七天冲刺启动前。本文记录团队计划、规范和任务安排,不代表 Day1 至 Day7 已经执行或完成。 |
一、项目与冲刺目标
木鸡 SteadyGame 是一个基于普通摄像头和浏览器端姿态识别的 Web 体感运动平台。首版包含三个玩法:平衡体感小球、手腕轨迹切水果、八段锦两式跟练。用户不需要专用体感设备,打开浏览器、授权摄像头、完成站位校准后,就能用身体动作控制游戏或跟练。
本次 Alpha 冲刺不继续扩写设计文档,目标是把设计变成可运行、可演示、可验收的版本。冲刺结束时应具备以下主链路:
打开大厅
→ 阅读摄像头用途与隐私说明
→ 授权摄像头并校准
→ 创建并开始训练轮次
→ 小球/切水果/八段锦两式
→ 暂停、恢复、退出与异常恢复
→ 唯一结算
→ 登录后明确同意保存
→ 个人历史、统计与导出
本文写于本次 Alpha 冲刺启动前,内容是团队已经商定的执行计划。团队计划按 Day1 至 Day7 推进:Day1 计划完成代码规范、上次答辩问题回应、八人分工、正式工程起步、契约冻结、数据库迁移、共享类型与端口、Issue 与分支准备;Day2 计划进入摄像头/姿态、三玩法固定输入、账号/CSRF/轮次基础;Day3 至 Day7 按后文计划继续推进。实际完成情况和证据将在对应日期结束后更新,不在计划阶段提前填写。
Day1 计划安排
Day1 计划以代码规范、答辩改进方案和八人分工为启动内容,同时建立可启动的正式工程、可执行的数据库迁移、共享类型/端口和 Issue/分支规范。燃尽图以 SGA-01 至 SGA-12 任务草案作为初始计划,暂估 87 SP;理想线只表示平均下降参考,D1 及之后的实际剩余点要等每日验收后按看板更新。本文不预填会议时间、参会人数或尚未产生的完成数据。

图片说明:本图是冲刺启动前的计划示意。图中只展示 87 SP 暂估、理想线和计划分工,实际会议时长、参会人数及剩余点均在冲刺开始后另行补充。

图片说明:可使用系统设计中的组件图或模块层次图,标出浏览器端摄像头、姿态识别、动作映射、游戏协调、业务后端、数据库和导出文件的位置。重点看模块边界,不需要堆满接口细节。
二、代码规范
2.1 规范来源与阅读说明
本文写作前已实际阅读《阿里巴巴 Java 开发手册》v1.3.0 PDF 终极版(阿里巴巴集团技术团队,2017-09-25,共 39 页)。该版本按编程规约、异常日志、单元测试、安全规约、MySQL 数据库、工程结构六个维度组织,条目分为【强制】【推荐】【参考】三类。
华为内部代码规范属于内部资料,公开渠道无法获得原文。团队实际参照的是华为云 CodeArts Check 的公开检查规则集;本文只描述可核对的规则方向,不冒充引用内部原文。如果课程下发了内部版本,团队再按文件条目补充。
团队的原则是:手册中的【强制】条目全部执行;【推荐】条目结合课程项目实际采用;与课程项目规模不适用的条款,在评审记录中说明取舍,不静默忽略。
2.2 命名、常量与格式
- 命名不能以下划线或美元符号开头、结尾;不使用拼音与英文混合,也不直接用中文命名。类名用 UpperCamelCase,方法、参数、成员变量和局部变量用 lowerCamelCase,常量用 UPPER_SNAKE_CASE。
- 不允许魔法值直接出现在代码中。时长、置信度、死区、目标数量、重试次数等参数必须定义为常量或集中配置,并标明单位。
- 大括号遵循手册约定:左大括号前不换行、左大括号后换行、右大括号前换行;if/for/while/do 即使只有一行也必须使用大括号。
- switch 的每个 case 必须通过 break/return 终止,必须包含 default;if/for/while/switch 等保留字与括号之间加空格。
- 类、类属性和类方法使用 Javadoc;注释解释约束、边界和原因,不重复代码字面意思。涉及隐私、幂等、归属和事务的代码必须写清前提与后果。
- 前端保持仓库现有格式:2 个空格缩进、单引号、无分号;组件、类和类型用 PascalCase,变量和函数用 camelCase,常量全大写加下划线。Java 后端以 Alibaba v1.3.0 与 CodeArts Check 规则为准。
2.3 分层与对象职责
Alibaba 手册的工程结构章节将应用分为开放接口层、Web 层、Service 层、Manager 层和 DAO 层。本项目按课程项目的规模做对应裁剪:
| 手册分层 | 本项目目录 | 职责 |
|---|---|---|
| Web 层 | server/.../web | 路由、参数、统一响应和异常入口 |
| Service 层 | server/.../application | 业务编排、事务边界、身份与归属校验 |
| Manager 层 | 按需合并到 Service | 通用能力下沉;项目规模较小时不单独建层 |
| DAO 层 | server/.../repository | 数据访问、归属条件、幂等与事务写入 |
| 领域对象 | server/.../domain | 会话、结果、规则、校验等核心对象 |
Controller 不承载计分和事务,Service 不直接拼 SQL,Repository 不接收未经校验的客户端身份字段。分层的目的,是让修改一个玩法或一个查询时,不会牵动整条链路。
2.4 集合、并发与异常日志
- 线程池不使用 Executors 创建,而使用 ThreadPoolExecutor 明确核心线程数、最大线程数、队列和拒绝策略;线程要有可识别的名称,便于排查。
- 遍历 Map 使用 entrySet;不在 foreach 中修改集合;需要去重和唯一性时优先使用 Set 或数据库唯一约束。
- 捕获具体异常,不吞异常;事务代码 catch 后如需回滚,必须手动标记回滚或重新抛出,不能留下半完成状态。
- 日志使用 SLF4J 门面,不使用 System.out;日志写请求号、资源 ID、模式和耗时,不写密码、Cookie、CSRF 令牌、原始视频或逐帧关键点。
2.5 单元测试
Alibaba 手册要求单元测试遵守 AIR 原则:Automatic(自动化)、Independent(独立)、Repeatable(可重复)。团队同时按 BCDE 原则设计用例:Border(边界)、Correct(正确)、Design(与设计一致)、Error(错误与异常)。
- 测试代码放在
src/test/java,不写在业务代码目录。 - 测试使用断言,不使用 System.out 做人肉验证;测试之间不共享可变状态,不依赖执行顺序。
- 核心业务、核心模块的增量代码必须通过单元测试;数据库测试使用自动回滚或明确的数据前缀,避免脏数据。
- 前端使用 Vitest 覆盖纯函数、状态机、碰撞和关键页面分支;后端使用 JUnit 5 覆盖校验、认证、保存和导出;接口联调用 Apifox 记录实际请求与响应。

图片说明:计划阶段可放代码规范文档、拟配置的检查项清单或工程目录规划;冲刺执行后再补实际配置、测试脚本和评审记录截图,不能提前写成“检查和评审已通过”。
2.6 安全与数据库规范
- 用户输入的 SQL 参数必须使用参数绑定或受控字段值,禁止拼接,防止 SQL 注入。
- 表单和 AJAX 写请求必须执行 CSRF 过滤;Cookie 设置 HttpOnly、SameSite,生产 HTTPS 下加 Secure。
- 密码使用专用加盐哈希,不存明文、不回显、不写日志;越权访问统一返回不泄露资源存在性的错误。
- 数据库表名、字段名使用小写字母或数字,表名用单数;主键、唯一索引、普通索引按
pk_、uk_、idx_命名。 - 业务上具有唯一特性的字段必须建唯一索引;高频查询按实际 SQL 设计组合索引,不凭感觉堆索引。
- 数据库结构通过版本化迁移管理,不在生产库手工改表;SQL 变更同步更新实体、接口、测试和回滚说明。
Alibaba 手册对互联网高并发场景建议不使用外键与级联,把外键关系放到应用层解决。课程项目需要同时展示数据完整性和归属校验,团队会在数据库约束与应用层校验之间做明确取舍,并在设计评审中记录原因,避免“数据库有约束、应用层却绕过”的两套规则。
2.7 前端与接口规范
- Vue 3 + TypeScript,页面使用 Composition API;组件只负责展示和交互,不把计分、碰撞、阶段判断塞进页面。
- 共享类型以 OpenAPI 生成的
src/shared/api/schema.ts为准,不在各页面复制接口字段;接口变更先改契约,再生成类型。 - 所有请求通过统一
ApiTransport和成员 API 文件,不在组件里手拼 URL、不重复解析统一响应信封。 - 摄像头画面、关键点和腕轨迹只在浏览器内存中处理;退出页面必须停止所有
MediaStreamTrack,模型和推理循环不能残留。 - 状态、错误、空数据和加载都用文字表达,不能只靠颜色;按钮和弹窗要支持键盘操作与可读标签。
2.8 Git、Issue 与评审
- 分支从集成分支拉出:
feature/<Issue号>-<简短描述>或fix/<Issue号>-<简短描述>,不直接向主分支推送。 - 提交说明写“改了什么、为什么改”,例如
feat(auth): add csrf guest context and login rotation;一个提交只解决一个可验收问题。 - Issue 写清目标、范围、依赖、验收步骤、提交/PR、评审人和结果证据;提交必须能关联到 Issue。
- 合并前至少一名其他成员交叉评审;修改共享类型、碰撞、校验或数据库迁移时,要通知所有调用方并补跑相关测试。
三、八人分工
| 成员 | 主要职责 | 本轮重点交付 |
|---|---|---|
| 林晨 | 项目范围、架构、GameCoordinator/GameFactory、轮次接口、CSRF 与退出、统一结果网关、导出任务创建与查询 | 轮次创建/查询/启动,生命周期流转,网关映射,导出任务 |
| 郑雯心 | 摄像头同意、CameraPort、PosePort、PoseProvider、输入异常与测试计划 | 真实摄像头启停与释放,授权/无设备/占用/模型错误处理 |
| 王婉怡 | CV 字典、MotionMapper、坐标映射、校准、质量风险 | 17 关节到 MotionInput 的映射与无效输入门控 |
| 林宇扬 | BalanceBallGame 全生命周期、小球结果接口 | 小球移动、目标、障碍、终点奖励、60 秒与冻结结果 |
| 林凯 | WatermelonSliceGame、共用 CollisionDetector、切水果结果接口 | 腕点轨迹、移动水果、相交、去重与计分 |
| 李想 | BaduanjinGame、StageMachine、八段锦结果接口 | 托天/单举两式四阶段、尝试记录、score=null |
| 孙田田 | 页面、CanvasRenderer、游戏目录、历史、统计、报告、排行榜与排名同意 | 页面四态、数据请求、界面验收和答辩素材 |
| 刘婷婷 | 注册登录、当前用户、保存、导出下载、ResultValidator、Repository 与数据库约束 | 身份/归属/事务/保存/下载,数据库迁移与验收矩阵 |
四、七天冲刺计划
| 天 | 当天重点 | 晚上可展示的验收物 | 主要责任 |
|---|---|---|---|
| Day1 | 契约冻结、正式工程、数据库迁移、共享类型/端口、Issue 与分支规范;同时完成代码规范、答辩回应和分工 | 工程可启动;数据库迁移可执行;共享类型和接口样例可用;规范与分工文档齐全 | 林晨、刘婷婷、全员 |
| Day2 | 摄像头到姿态输入;三玩法固定输入;账号/CSRF/轮次基础 | 真实相机链路和 MotionInput 调试;注册登录和创建/启动轮次;页面骨架 | 郑雯心、王婉怡、林晨、刘婷婷 |
| Day3 | 小球真实倾斜;共用碰撞;结果校验与保存 | 小球可被真实倾斜控制;三玩法结果入口可联调;保存事务跑通 | 林宇扬、林凯、李想、刘婷婷 |
| Day4 | 三玩法基本闭环;游客转存;统计/报告;异常补齐 | 三玩法都能生成正式结果;保存后历史出现;异常有恢复路径 | 全员 |
| Day5 | 历史、统计、报告、排行榜、导出到文件下载 | 公开选择与撤回;导出任务成功并能下载 CSV/PDF | 孙田田、林晨、刘婷婷 |
| Day6 | 全流程回归、浏览器/设备验证、候选版本 | 固定版本可部署;测试报告、演示脚本、PPT 初稿 | 全员 |
| Day7 | 集中验收、缺陷修复、回归、答辩排练 | 通过/失败/未执行清单;11 篇随笔集合;最终演示版本 | 全员 |
每日协作节奏
每天一次站会,按“昨天到现在做了什么、证据在哪里、遇到什么问题、下一次站会前做什么”逐人汇报。站会后开发,晚间留 30 至 60 分钟做联合冒烟、更新燃尽图和整理日报。
每天交接至少给出四样东西:已提交代码和提交号、输入输出样例、成功与失败运行方式、未完成边界和对应 Issue。固定样例只是开发工具,不能在博客里写成真实摄像头或真实后端已经通过。
五、AI 技术员
本次冲刺计划设置 AI 技术员,拟使用 Codex(GPT-5)辅助设计审查、代码实现、测试用例生成和文档整理。AI 不替代成员做最终判断,所有输出都要由成员复核、运行和取舍。
5.1 角色设置
| AI 角色 | 主要任务 | 人类负责人 |
|---|---|---|
| AI 设计师 | 分析需求、接口和模块边界,检查状态机与数据流,提出候选方案和风险 | 林晨、王婉怡 |
| AI 程序员 | 生成模块骨架、补边界分支、解释编译错误、给最小修复补丁 | 对应模块负责人 |
| AI 测试员 | 根据契约生成正常、异常、越权、边界用例,协助定位失败 | 孙田田、各模块负责人 |
文档整理作为 AI 设计师或 AI 程序员的辅助产出,由李想、林晨等成员人工定稿,不单独设置角色。
5.2 如何驱动 AI
团队采用“给上下文 → 要边界和测试 → 人工审查 → 实际运行 → 记录采用结果”的流程:
- 给目标与约束:说明模块、接口版本、输入输出、禁止事项和相关代码,不把整个仓库和敏感数据一次性丢给 AI。
- 要求可验证产出:不只让 AI 写代码,还要它列出触发条件、失败场景、测试断言和未确认的假设。
- 人工审查:成员检查是否符合设计、是否符合手册、是否存在安全或性能问题;不采纳的也要记录原因。
- 实际运行:编译、单元测试、接口请求或真机验证通过后,代码才进入提交;AI 生成的代码不能未经运行直接合并。
- 记录证据:日期、工具/模型、输入摘要、产出、采用与否、人工修改、测试结果和 Issue 都要留下记录。
提示词示例:
按冻结的暂停恢复契约,检查这段游戏状态机是否会出现跨暂停轨迹、重复结算或旧帧驱动;列出触发步骤、期望行为和最小测试断言,不假定未提供的函数存在。
为 ResultValidator 生成边界用例,覆盖分数上下界、时长越界、模式不一致和八段锦阶段乱序;每个用例给出前置条件、输入、期望错误码和断言,不要修改计分公式。
5.3 边界与记录
- 不上传密码、Cookie、CSRF 令牌、真实用户数据、原始摄像头画面或逐帧关键点。
- AI 不替代真实站会照片、真实代码提交和真实测试记录;没有发生的活动不能写成已完成。
- AI 输出中的事实、接口字段和命令必须人工核对;无法验证的内容标注“待确认”,不能直接写成结论。
- 每天单列 AI 技术员工作;没有使用 AI 就如实写“未使用”,不虚构贡献。
| 日期 | 任务 | AI 产出 | 人工处理 | 证据 |
|---|---|---|---|---|
| Day1 | 代码规范与答辩问题回应 | 整理命名、类型、异常、分支、评审规范,归纳答辩回应草稿 | 团队审核并定稿 | Day1 规范文档 / 会议记录 |
| Day2 | 认证与 CSRF 骨架 | 生成注册登录、游客上下文、CSRF 轮换和测试建议 | 成员复核并实际运行 | 测试报告 / 提交号 |
| Day3 | 结果校验与保存 | 生成校验器、保存事务和异常用例 | 成员补业务规则并回归 | 测试截图 / Issue |
上表是冲刺期间的 AI 使用计划,不代表这些产出已经发生。每天结束后,由负责人在当天随笔补充实际采用内容、人工修改和验证证据;未发生的活动保持空白,不提前填写完成状态。
六、协作机制与风险应对
| 风险 | 触发信号 | 应对 |
|---|---|---|
| 共享后端阻塞 | Day2 仍无可用身份/轮次链路 | 林晨与刘婷婷优先合并身份、Repository、轮次和 CSRF,其他成员先用固定样例 |
| 真实识别不稳定 | 弱光、遮挡、快速动作下频繁丢点 | 先拒判并提示恢复,不伪造识别成功;记录设备、光照和站位条件 |
| 三玩法同时铺开导致主链路不完整 | 小球闭环迟迟不能演示 | 优先小球 P0 和保存历史,切水果、八段锦保留固定输入演示,范围调整写入 Issue |
| 接口文档与实现不一致 | 前端字段、后端校验、Apifox 示例三者不同 | 以 OpenAPI 为基线,第一天冻结并同步类型、校验和样例 |
| 导出只有接口没有文件 | 任务状态成功但无法下载 | 创建任务、执行器、文件生成和鉴权下载必须在 Day5 共同打通 |
| 日报证据不足 | 当天没有站会照片、运行图、提交或测试 | 当天结束前补齐;缺什么就如实写缺什么,不补造、不复用照片 |

图片说明:计划阶段可放分支与 MR/PR 流程图;实际分支和评审截图在冲刺执行中补充,并且要能看到关联 Issue、评审人和检查结果。不要用空分支截图冒充评审记录。
七、参考
- 第一次作业:团队介绍
- 第二次作业:需求与原型
- 第三次作业:系统与数据库设计
- 本次作业:站立式会议+α冲刺
- 《SteadyGame Alpha 七天开发与协作计划》
- 《阿里巴巴 Java 开发手册》v1.3.0 PDF 终极版
- 华为云 CodeArts Check 代码检查规则集
- 《构建之法》
- Vue 3、TypeScript、MediaPipe Pose Landmarker、OpenAPI 3.1 官方文档
相关推荐
国央企创新负责人如何借助智能体技术推动内部技术成果转化?.docx
国央企创新负责人如何借助智能体技术推动内部技术成果转化?
演讲计时软件,会议计时软件
演讲计时软件,会议计时软件。目前只测试了win10。win7测试不通过。
【电力系统优化调度】计及源荷两侧不确定性的含风电电力系统低碳调度(Matlab代码实现)
内容概要:本文提出了一种针对含风电电力系统的低碳优化调度模型,充分考虑了电源侧(如风电出力波动)和负荷侧的双重不确定性,采用模型预测控制(MPC)方法实现滚动优化与实时反馈校正,有效提升了调度方案的鲁棒性与低碳性能。该模型结合现代优化算法与控制策略,构建了计及碳排放成本、机组组合、可再生能源消纳及系统安全约束的综合调度框架,能够在复杂不确定环境下实现电力系统经济、环保与可靠的协同运行; 适合人群:具备一定电力系统运行、优化理论基础及Matlab编程能力的研究生、科研人员,以及从事新能源并网、低碳调度与智能电网相关领域的工程技术人员; 使用场景及目标:①研究高比例可再生能源接入背景下电力系统低碳调度的有效策略;②利用MPC框架应对源荷双侧不确定性,提升调度决策的动态适应能力;③支撑学术论文复现、科研课题开发或实际工程项目的仿真验证与优化分析; 阅读建议:建议读者结合Matlab代码深入理解MPC的实现机制,重点关注不确定性建模、滚动时域优化与约束处理方法,通过调整参数和测试不同场景进行仿真验证,以掌握低碳调度模型的设计逻辑与工程应用要点。
通信行业基于MongoDB副本集与分片部署的5G信令数据基座构建:面向高吞吐写入与实时分析的安装优化方案
内容概要:本文系统阐述了MongoDB在通信行业的安装部署实践及其在5G、IoT和AI背景下的深度应用。文章从通信行业数据范式迁移出发,指出传统关系型数据库在应对信令数据、用户画像和设备遥测等半结构化、高并发写入场景下的局限性,强调MongoDB基于BSON文档模型的优势。重点介绍了副本集、分片集群及时序集合三种部署模式的选择依据与配置策略,涵盖操作系统选型、mongod.conf调优参数(如缓存大小、日志设置、绑定IP安全限制)、分片键设计原则以及集群部署顺序等关键技术细节。进一步展示了MongoDB在信令管道、用户画像、IoT遥测和网络分析等典型通信业务中的落地场景,并展望了MongoDB 8.0在时序性能、向量搜索与可查询加密等方面的发展趋势,推动部署架构向边缘-中心协同、安全合规与AI就绪演进。; 适合人群:通信行业后端开发、数据库运维工程师、系统架构师,以及关注NoSQL在高并发、大规模数据场景下应用的技术人员,具备一定数据库和分布式系统基础者更佳。; 使用场景及目标:①掌握面向通信负载的MongoDB副本集与分片集群部署方法;②理解时序集合在基站KPI、设备遥测等场景的优化价值;③构建支持高写入、低延迟、弹性扩展的5G信令与IoT数据基座;④规划符合安全合规与AI融合趋势的下一代数据架构。; 阅读建议:此资源聚焦生产级部署实践,建议结合实际通信业务场景进行配置验证与性能测试,重点关注分片策略、安全加固与版本特性适配,在部署初期即考虑可扩展性与安全性设计。
产业园区运营负责人如何提升园区内技术成果的转化效率和落地效果?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。


