赛博厨神——项目系统设计与数据库设计
| 这个作业属于哪个课程 | 2501_CS_SE_FZU |
|---|---|
| 这个作业要求在哪里 | 团队作业——概要设计和数据库设计 |
| 这个作业的目标 | 完成系统,数据库,类图、系统安全和权限设计,进行改进分析并展示团队绩效 |
| 其他参考文献 | 无 |
目录
- 1. 主要文件链接
- 1.1 GitCode团队仓库链接
- 1.2 食悟_系统设计说明书
- 1.3 食悟_数据库设计说明书
- 1.4 食悟_系统设计和数据库设计答辩PPT
- 2. 系统和数据库设计
- 2.1 体系结构设计
- 2.2 功能模块层次图
- 2.3 ER分析
- 2.3.1 ER图
- 2.3.2 核心实体及其关系
- 2.4 表结构设计
- 2.4.1 用户表
- 2.4.2 食谱表
- 2.4.3 步骤表
- 2.4.4 食材表
- 2.4.5 分类表
- 2.4.6 标签表
- 2.4.7 关联表
- 2.4.7.1 食谱-食材关联表
- 2.4.7.2 食谱-分类关联表
- 2.4.7.3 食谱-标签关联表
- 2.4.8 评论表
- 2.4.8.1 食谱评论表
- 2.4.8.2 帖子评论表
- 2.4.9 帖子表
- 2.4.10 点赞表
- 2.4.11 收藏表
- 2.4.12 关注关系表
- 2.4.13 消息通知表
- 2.4.14 邀请码表
- 2.4.15 步骤耗时记录表
- 2.4.16 草稿表
- 2.4.16.1 食谱草稿表
- 2.4.16.2 帖子草稿表
- 2.5 设计思路概述
- 2.5.1 系统设计思路
- 2.5.2 数据库设计思路
- 2.6 uml用况图
- 3. 类图、系统安全和权限设计
- 3.1 设计类图
- 3.2 系统安全和权限设计
- 3.2.1 密码加密
- 3.2.2 鉴权机制
- 3.2.3 权限控制
- 3.2.4 数据访问限制
- 3.3 设计思路概述
- 4. 改进分析
- 4.1 业务目标
- 4.2 用户需求
- 4.3 功能需求
- 4.4 用户体验
- 4.5 技术约束
- 4.6 需求完整性
- 4.7 资源可行性
- 4.8 风险分析
- 4.9 mvp范围
- 5. 团队绩效
- 5.1 工作流程
- 5.2 组员分工与贡献度
1. 主要文件链接
1.1 GitCode团队仓库链接
1.2 食悟_系统设计说明书
1.3 食悟_数据库设计说明书
1.4 食悟_系统设计和数据库设计答辩PPT
2. 系统和数据库设计
2.1 体系结构设计
食悟的体系结构设计:系统采用经典的 MVC 分层架构,具体情况如以下表格所示:
| 层级 | 职责 | 技术栈 |
|---|---|---|
| 表现层(Frontend) | 用户交互、界面展示、请求发起 | 前端框架(如 Vue/React)、Axios、HTML/CSS/JS |
| 业务逻辑层(Backend - Service Layer) | 核心业务处理、权限控制、事务管理 | Spring Boot 3.x + Java 17 + Spring Security + JWT |
| 数据持久层(Data Layer) | 数据存储、查询、索引、事务 | PostgreSQL 15+、JPA/Hibernate、JSONB 存储复杂结构 |
2.2 功能模块层次图
具体结构如下(因为图片太长分成了两个部分):


2.3 ER分析
2.3.1 ER图

2.3.2 核心实体及其关系
1.User(用户)
主键:id
属性:username, password_hash, email, avatar, invite_code, follow_count, fan_count, like_count, created_at, updated_at
关系:
1:N → Recipe(一个用户可发布多个食谱)
1:N → Post(一个用户可发多个帖子)
1:N → Comment(评论)
1:N → Like(点赞)
1:N → Favorite(收藏)
M:N → UserFollow(关注关系)
1:N → InviteCode(管理员生成邀请码)
2. Recipe(食谱)
主键:id
属性:title, description, cover_image, difficulty, difficulty_avg, servings, user_id, created_at, updated_at
关系:
N:1 ← User
1:N → Step(步骤)
M:N → Ingredient(通过中间表 recipe_ingredient)
M:N → Category(通过 recipe_category)
M:N → Tag(通过 recipe_tag)
1:N → RecipeComment
1:N → Favorite
3. Step(步骤)
主键:id
属性:recipe_id, step_order, description, method, recommended_duration, avg_duration, min_duration, max_duration, tips
关系:
N:1 ← Recipe
4. Ingredient(食材)
主键:id
属性:name, image_path, unit
关系:
M:N → Recipe(通过 recipe_ingredient)
5. Category(分类)
主键:id
属性:name
关系:
M:N → Recipe(通过 recipe_category)
6. Tag(标签)
主键:id
属性:name
关系:
M:N → Recipe(通过 recipe_tag)
7. Post(帖子)
主键:id
属性:user_id, recipe_id, content, created_at, updated_at
关系:
N:1 ← User
N:1 ← Recipe(可选关联)
1:N → PostComment
8. Comment(评论)→ 拆分为两个表更清晰
recipe_comment:食谱评论
post_comment:帖子评论
共同属性:id, user_id, content, parent_id(用于嵌套回复), root_id, reply_to_user_id, like_count, created_at
关系:
N:1 ← User
N:1 ← Recipe / Post
9. Like(点赞)
主键:id
属性:user_id, target_type('recipe', 'comment', 'post'), target_id, created_at
关系:
N:1 ← User
多态关联 → Recipe, Comment, Post
10. Favorite(收藏)
主键:id
属性:user_id, recipe_id, created_at
关系:
N:1 ← User
N:1 ← Recipe
唯一约束:(user_id, recipe_id) 防止重复收藏
11. UserFollow(关注关系)
主键:id(或复合主键 (follower_id, following_id))
属性:follower_id, following_id, created_at
关系:
自关联:User ↔ User
12. Message(消息通知)
主键:id
属性:user_id, from_user_id, type, reference_id, content, read_flag, created_at
关系:
N:1 ← User(接收者)
N:1 ← User(发送者)
13. InviteCode(邀请码)
主键:code(字符串唯一)
属性:creator_id, usage_limit, used_count, expires_at, created_at
关系:
N:1 ← User(创建者)
用户注册时校验并递增 used_count
14. StepTimeRecord(步骤耗时记录)
主键:id
属性:user_id, recipe_id, step_id, start_time, end_time, duration_seconds
关系:
N:1 ← User
N:1 ← Recipe
N:1 ← Step
15. Draft(草稿)
recipe_draft & post_draft 表,使用 JSONB 存储未发布的结构化内容
2.4 表结构设计
核心数据库表:
• 用户表:users
• 食谱表:recipe
• 步骤表:step
• 食材表:ingredient
• 食谱-食材关联表:recipe_ingredient
• 分类表:category
• 标签表:tag
• 食谱-分类表:recipe_category
• 食谱-标签表:recipe_tag
• 帖子表:post
• 帖子评论表:post_comment
• 帖子图片表:post_image
• 食谱评论表:recipe_comment
• 食谱评论点赞表:recipe_comment_like
• 收藏表:favorite
• 点赞表:likes
• 用户关注/粉丝表:user_follow
• 用户消息表:user_message
表之间存在外键关联,支持 ON DELETE CASCADE 操作。
所有表均含有 created_at、updated_at 时间戳字段,部分表含有 JSONB 字段用于存储复杂数据(如草稿信息)。
以下是详细信息:
2.4.1 用户表
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
uid VARCHAR(20) UNIQUE, -- 自动生成 Uxxx
username VARCHAR(50) UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
email VARCHAR(100),
avatar VARCHAR(255),
invite_code VARCHAR(20),
follow_count INT DEFAULT 0,
fan_count INT DEFAULT 0,
like_count INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
2.4.2 食谱表
CREATE TABLE recipes (
id BIGSERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
description TEXT,
cover_image VARCHAR(255),
difficulty INT DEFAULT 3 CHECK (difficulty BETWEEN 1 AND 5),
difficulty_avg DECIMAL(3,2) DEFAULT 0,
servings INT,
user_id BIGINT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
2.4.3 步骤表
CREATE TABLE steps (
id BIGSERIAL PRIMARY KEY,
recipe_id BIGINT NOT NULL,
step_order INT NOT NULL,
description TEXT NOT NULL,
method INT,
recommended_duration INT DEFAULT 0,
avg_duration INT DEFAULT 0,
min_duration INT DEFAULT 0,
max_duration INT DEFAULT 0,
tips TEXT,
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE CASCADE
);
2.4.4 食材表
CREATE TABLE ingredients (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
image_path VARCHAR(255),
unit VARCHAR(50)
);
2.4.5 分类表
CREATE TABLE categories (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(50) UNIQUE NOT NULL
);
2.4.6 标签表
CREATE TABLE tags (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(50) UNIQUE NOT NULL
);
2.4.7 关联表
2.4.7.1 食谱-食材关联表
CREATE TABLE recipe_ingredients (
recipe_id BIGINT NOT NULL,
ingredient_id BIGINT NOT NULL,
amount DECIMAL(10,2) NOT NULL,
PRIMARY KEY (recipe_id, ingredient_id),
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE CASCADE,
FOREIGN KEY (ingredient_id) REFERENCES ingredients(id) ON DELETE CASCADE
);
2.4.7.2 食谱-分类关联表
CREATE TABLE recipe_categories (
recipe_id BIGINT NOT NULL,
category_id BIGINT NOT NULL,
PRIMARY KEY (recipe_id, category_id),
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE CASCADE,
FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE CASCADE
);
2.4.7.3 食谱-标签关联表
CREATE TABLE recipe_tags (
recipe_id BIGINT NOT NULL,
tag_id BIGINT NOT NULL,
PRIMARY KEY (recipe_id, tag_id),
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
2.4.8 评论表
2.4.8.1 食谱评论表
CREATE TABLE recipe_comments (
id BIGSERIAL PRIMARY KEY,
recipe_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
content TEXT NOT NULL,
parent_id BIGINT,
root_id BIGINT,
reply_to_user_id BIGINT,
like_count INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (parent_id) REFERENCES recipe_comments(id) ON DELETE SET NULL,
FOREIGN KEY (root_id) REFERENCES recipe_comments(id) ON DELETE SET NULL,
FOREIGN KEY (reply_to_user_id) REFERENCES users(id) ON DELETE SET NULL
);
2.4.8.2 帖子评论表
CREATE TABLE post_comments (
id BIGSERIAL PRIMARY KEY,
post_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
content TEXT NOT NULL,
parent_id BIGINT,
root_id BIGINT,
reply_to_user_id BIGINT,
like_count INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (parent_id) REFERENCES post_comments(id) ON DELETE SET NULL,
FOREIGN KEY (root_id) REFERENCES post_comments(id) ON DELETE SET NULL,
FOREIGN KEY (reply_to_user_id) REFERENCES users(id) ON DELETE SET NULL
);
2.4.9 帖子表
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
recipe_id BIGINT,
content TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE SET NULL
);
2.4.10 点赞表
CREATE TABLE likes (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
target_type VARCHAR(20) NOT NULL CHECK (target_type IN ('recipe', 'recipe_comment', 'post', 'post_comment')),
target_id BIGINT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
UNIQUE (user_id, target_type, target_id) -- 防止重复点赞
);
2.4.11 收藏表
CREATE TABLE favorites (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
recipe_id BIGINT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE CASCADE,
UNIQUE (user_id, recipe_id) -- 防止重复收藏
);
2.4.12 关注关系表
CREATE TABLE user_follows (
follower_id BIGINT NOT NULL,
following_id BIGINT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
PRIMARY KEY (follower_id, following_id),
FOREIGN KEY (follower_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (following_id) REFERENCES users(id) ON DELETE CASCADE
);
2.4.13 消息通知表
CREATE TABLE messages (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
from_user_id BIGINT,
type VARCHAR(50) NOT NULL CHECK (type IN ('like', 'comment_reply', 'follow')),
reference_id BIGINT,
content TEXT,
read_flag BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (from_user_id) REFERENCES users(id) ON DELETE SET NULL
);
2.4.14 邀请码表
CREATE TABLE invite_codes (
code VARCHAR(32) PRIMARY KEY,
creator_id BIGINT NOT NULL,
usage_limit INTEGER DEFAULT 1,
used_count INTEGER DEFAULT 0,
expires_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE CASCADE
);
2.4.15 步骤耗时记录表
CREATE TABLE step_time_records (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
recipe_id BIGINT NOT NULL,
step_id BIGINT NOT NULL,
start_time TIMESTAMPTZ DEFAULT NOW(),
end_time TIMESTAMPTZ,
duration_seconds INT DEFAULT 0,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE CASCADE,
FOREIGN KEY (step_id) REFERENCES steps(id) ON DELETE CASCADE
);
2.4.16 草稿表
2.4.16.1 食谱草稿表
CREATE TABLE recipe_drafts (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
title VARCHAR(100),
description TEXT,
cover_image VARCHAR(255),
difficulty INT DEFAULT 3,
servings INT,
ingredients_json JSONB,
steps_json JSONB,
categories_json JSONB,
tags_json JSONB,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
2.4.16.2 帖子草稿表
CREATE TABLE post_drafts (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
recipe_id BIGINT,
content TEXT,
images_json JSONB,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE SET NULL
);
2.5 设计思路概述
2.5.1 系统设计思路
架构设计:采用三层架构(表现层、业务逻辑层、数据持久层)
表现层:负责用户交互与界面展示,前后端分离,前端通过 RESTful API 与后端通信。
业务逻辑层:基于 Spring Boot 3.x 构建,使用 Java 17,集成 Spring Security 和 JWT 实现用户认证与权限控制。
数据持久层:使用 PostgreSQL 数据库,支持事务、复杂查询和 JSONB 类型的半结构化数据存储。
功能模块化
用户模块(注册、登录、关注、消息)
食谱模块(创建、编辑、分类、标签、评论、点赞、收藏)
社区模块(帖子、评论、点赞)
推荐与统计模块(个性化推荐、步骤耗时统计)
安全与权限
密码加密:BCrypt
鉴权机制:JWT Token
权限控制:普通用户与管理员角色分离,用户只能操作自己的资源
2.5.2 数据库设计思路
数据库选型:PostgreSQL
支持复杂查询、事务、JSONB 类型,适合社交类应用的多变数据结构。
表结构设计:遵循第三范式(3NF)
核心表包括用户、食谱、步骤、食材、分类、标签、评论、点赞、收藏、帖子、草稿、消息等。
使用外键约束确保数据一致性,支持级联删除(ON DELETE CASCADE)。
所有表含 created_at、updated_at 时间戳字段,部分表使用 JSONB 存储复杂结构(如草稿)。
索引与性能优化
针对高频查询字段建立索引(如食谱ID、用户ID、评论父ID等)
使用视图汇总统计信息(如食谱步骤耗时总览)
数据完整性保障
使用触发器自动维护计数器(如点赞数、评论数、难度评分均值)
使用函数封装复杂逻辑(如生成UID、更新统计信息)
扩展性与维护性
支持未来分表分区(如按用户ID分区高频表)
使用 Flyway 等工具管理数据库版本迁移
定期备份、VACUUM、ANALYZE 等维护策略
2.6 uml用况图









3. 类图、系统安全和权限设计
3.1 设计类图


3.2 系统安全和权限设计
3.2.1 密码加密
所有用户密码在注册/修改时,强制使用 BCrypt 加密存储。
盐值由框架自动生成,不可逆
数据库字段:users.opassword_hash VARCHAR(255) NOT NULL
3.2.2 鉴权机制
用户登录成功后,服务器生成 JWT Token,包含:
sub(用户唯一标识,如 UID)
username
role(USER / ADMIN)
iat(签发时间)
exp(过期时间,默认7天)
客户端每次请求携带 Authorization: Bearer 头部。
使用 Spring Security + JWT Filter 实现无状态鉴权。
3.2.3 权限控制
使用RBAC(基于角色的访问控制)
具体情况如下:
| 角色 | 可执行操作 |
|---|---|
| 普通用户 | 注册、登录、发布食谱/帖子、评论、点赞、收藏、关注他人、查看公开内容 |
| 管理员 | 拥有全部权限,可管理用户、生成邀请码、审核内容、封禁账户、查看系统日志等 |
3.2.4 数据访问限制
核心原则:用户只能操作自己创建或拥有的资源
典型场景:
| 资源类型 | 访问规则 |
|---|---|
| 食谱(recipe) | 只允许创建者编辑/删除;其他人仅可浏览、评论、收藏 |
| 草稿(recipe_draft/post_draft) | 仅创建者可编辑/删除,其他用户不可见 |
| 评论(recipe_comment/post_comment) | 只允许作者删除自己的评论;回复他人评论需指定目标用户 |
| 收藏/点赞(favorite/likes) | 可自由切换状态,但数据归属明确(user_id 关联) |
| 用户信息(users) | 仅允许本人修改头像、邮箱、密码;管理员可重置密码或封禁账户 |
3.3 设计思路概述
本系统安全与权限设计遵循以下原则:
纵深防御:从认证 → 授权 → 数据访问 → 审计,层层设防。
最小权限:用户只能访问必要资源,数据库账号权限严格受限。
自动化审计:关键操作留痕,支持问题回溯与责任划分。
用户体验平衡:安全措施不影响正常使用(如Token自动刷新、无需频繁验证)。
可扩展性:权限模型支持未来扩展角色(如编辑、版主),审计模块可对接SIEM系统。
最终目标:构建一个安全可靠、权限清晰、操作可追溯的食谱社交平台,让用户放心分享美食,同时开发者可以安心迭代功能。
4. 改进分析
我们小组主要通过以下几个方面进行了总结以及改进分析:
4.1 业务目标
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| 业务目标 | 问题识别准确性 | 准确识别年轻群体外卖依赖和食谱技术壁垒问题 | 通过 | 保持当前问题分析方向 | 高 |
| 业务目标 | 目标用户覆盖度 | 仅覆盖3类基础用户,缺失家庭主妇、健身人群等 | 不完整 | 补充至少2个典型用户画像,完善用户群体覆盖 | 高 |
4.2 用户需求
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| 用户需求 | 烹饪小白需求 | 步骤详细、时间明确等需求分析完整真实 | 通过 | 保持当前需求分析,纳入核心功能 | 高 |
| 用户需求 | 特殊饮食需求 | 健身、素食等特殊饮食需求完全缺失 | 缺失 | 新增特殊饮食用户画像和对应功能 | 中 |
4.3 功能需求
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| 功能需求 | 降低烹饪门槛 | 详细步骤指导需求明确合理 | 通过 | 作为核心功能优先开发实现 | 高 |
| 功能需求 | 学习交流需求 | 社区功能需求存在但具体互动形式模糊 | 需细化 | 明确社区互动具体形式和功能模块设计 | 中 |
| 功能需求 | 内容创作需求 | 菜谱发布需求明确但用户激励机制缺失 | 需完善 | 制定用户创作激励方案和等级体系 | 中 |
4.4 用户体验
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| 用户体验 | 学习成本控制 | 新用户上手时间要求和使用引导需求缺失 | 未分析 | 补充新手引导流程设计 | 中 |
| 用户体验 | 情感化设计 | 成就感和愉悦感等情感需求完全缺失 | 未考虑 | 补充情感化设计需求和用户激励体系 | 低 |
4.5 技术约束
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| 技术约束 | 多端策略 | 移动端优先策略符合用户使用场景 | 通过 | 保持移动端优先的开发和推广策略 | 高 |
| 技术约束 | 图片依赖 | 大量图片使用可能影响加载速度和流量 | 需优化 | 制定图片压缩、缓存方案 | 中 |
4.6 需求完整性
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| 需求完整性 | 用户角色覆盖 | 重要用户群体缺失,覆盖不全面 | 部分覆盖 | 补充家庭主妇、健身人群等用户画像 | 高 |
| 需求完整性 | 业务规则定义 | 内容审核、用户等级等核心规则缺失 | 严重缺失 | 制定完整的业务规则和运营规范文档 | 高 |
| 需求完整性 | 数据需求分析 | 统计分析、个性化推荐等数据需求缺失 | 部分覆盖 | 补充数据统计分析和智能推荐需求 | 低 |
4.7 资源可行性
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| 资源可行性 | 开发人力资源 | 移动端和Web端并行开发资源紧张 | 资源紧张 | 优先开发移动端,Web端分期实施 | 高 |
| 资源可行性 | 内容审核资源 | 人工审核工作量大,运营成本压力大 | 资源不足 | 等待后续完善 | 高 |
4.8 风险分析
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| 风险分析 | 需求理解风险 | 需求理解偏差可能影响产品方向 | 高风险 | 进行多轮用户测试验证 | 高 |
| 风险分析 | 需求范围风险 | 需求范围过大影响开发成本和周期 | 高风险 | 控制需求范围 | 高 |
4.9 mvp范围
| 评审维度 | 评审内容 | 问题描述 | 评审结果 | 改进建议 | 优先级 |
|---|---|---|---|---|---|
| MVP范围(最基础需求) | 菜谱浏览搜索 | 核心功能 | 纳入MVP | 作为核心功能优先开发 | 高 |
| MVP范围 | 详细步骤展示 | 核心差异化功能 | 纳入MVP | 作为特色功能重点开发和优化 | 高 |
| MVP范围 | 用户注册登录 | 基础功能,开发成本低,必要性高 | 纳入MVP | 作为基础功能纳入首版开发 | 高 |
| MVP范围 | 社区互动功能 | 用户价值中等但开发复杂度高 | 排除MVP | 在基础功能稳定后考虑开发 | 中 |
| MVP范围 | 时间统计功能 | 特色功能但需求待验证,开发成本高 | 排除MVP | 需求验证后考虑后续版本实现 | 低 |
5. 团队绩效
5.1 工作流程
如图所示:

5.2 组员分工与贡献度
| 学号 | 姓名 | 工作内容 | 贡献度 |
|---|---|---|---|
| 102300102 | 肖窈 | 撰写博客随笔 | 9.95% |
| 102300101 | 许云湘 | 撰写博客随笔 | 9.95% |
| 222200334 | 季致涵 | 系统设计说明书后端,数据库部分撰写,以及数据库设计说明书撰写 | 10.16% |
| 222200402 | 王成桢 | 系统设计说明书与数据库设计说明书排版 | 10.06% |
| 102300204 | 黄子妍 | 系统设计说明书,数据库设计说明书整理攥写 | 9.95% |
| 102300105 | 郭晶晶 | 系统设计和数据库设计答辩PPT制作 | 10.16% |
| 102300108 | 陈茜蕾 | 系统设计和数据库设计答辩PPT制作 | 10.06% |
| 102300303 | 梁佳 | 参与系统设计以及数据库设计答辩PPT制作 | 9.95% |
| 102300304 | 林琬茗 | 答辩人(概要设计与数据库设计答辩) | 9.86% |
| 102300302 | 侯晴宇 | 填写并提交《系统设计和数据库设计评审表》 | 9.86% |
相关推荐
从注意力到行动 pdf Agent
从注意力到行动 pdf
同步电机与构网型变流器的频率稳定特性及多时间尺度交互机理研究(Simulink仿真实现)
内容概要:本文系统解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,重点围绕优先级规划算法展开,涵盖从地图解析、拓扑构建、路径规划、冲突消解到可视化呈现的全流程。文章提出四层架构设计:几何层负责地图解析与栅格化;拓扑层构建四邻域图与Petri网模型;调度层实现基于动态边权膨胀的优先级路径规划与时间同步冲突消解;呈现层完成动画与视频输出。核心创新包括动态边权膨胀机制避免硬封锁导致的虚假不可解、节点预留历史实现高效冲突查询、几何惩罚驱动的局部同步提升效率,以及Petri网双阶段优化支持解的存在性与最优性分离判断。框架兼顾实用性与可扩展性,适用于大规模智能体场景。; 适合人群:具备MATLAB编程基础,从事机器人、自动化、智能交通或路径规划相关研究的科研人员与研究生。; 使用场景及目标:① 学习并复现多机器人无冲突路径规划的经典与先进算法;② 掌握动态边权膨胀、时间同步、冲突消解等关键技术的工程实现;③ 借助模块化框架进行算法改进与性能优化,支撑仓储物流、无人机编队等应用场景的仿真研究。; 阅读建议:建议按文中所述的数据流顺序逐步阅读,重点关注各模块接口设计与算法取舍逻辑,结合提供的完整资源进行代码调试与实验验证,深入理解“空间规划-时间消解”分离的设计思想。
huashu-motion 让编码 Agent 直出商业宣传片-一个专门给 Claude Code、Codex 等工具使用的 Skill
huashu-motion 一个专门给 Claude Code、Codex 等工具使用的 Skill。它不跑黑盒视频生成模型,而是让 Agent 直接用代码绘制动画,成片就是一个网页。 项目最大的特色是“先写谱再拍片”,Agent 能写纯文本乐谱配合乐器采样在本地配乐,并精准对齐每帧音效。在浏览器里按 C 键点击画面就能直接留批注,Agent 会定位源码只改动那一处,也可以在右侧表单手动调参。 它还内置了从顶级发布片提炼的 20 种运动语言、自动化质检与并行渲染机制,小模型同样能做出高级感。
YOLO26算法校园作业场景锚目标检测+训练好的模型+103张数据集+pyqt可视化界面.zip
附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[锚(anchor)] · 训练集:90 张 · 验证集:9 张 · 测试集:4 张 · 总计:103 张 该数据集聚焦校园作业场景,通过精准标注手写文字中的锚元素,为教育场景下的文本识别与作业分析提供高质量数据支撑,助力教学评估与学生书写质量研究。该数据集训练集占比90%,验证集与测试集分别占9%和4%,符合目标检测任务数据划分的常规比例,训练集规模充足以保障模型学习能力,验证集与测试集合理分配用于模型性能评估,确保数据分布科学合理。该数据集标注工作严格遵循规范,所有锚元素的边界框标注精准,标注内容与... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.6351** mAP50-95 | 0.1958 Precision | 0.6436 Recall | 0.5714 train/box_loss | 1.6649 train/cls_loss | 1.3181 val/box_loss | 2.3156 val/cls_loss | 2.5145 【训练过程分析】 100 轮训练后 mAP50 仅 0.6351,模型收敛不充分。Loss 曲线前期下降后进入平台期,mAP 提升缓慢。mAP50-95 为 0.1958,定位精度同样偏低。 【模型性能评估】 Precision 0.643... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。
基于扩展卡尔曼滤波(EKF)的激光雷达与雷达异构传感器融合算法研究(Matlab代码实现)
内容概要:本文系统解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,聚焦于优先级规划算法的工程实现。该框架将求解过程划分为几何、拓扑、调度与呈现四个解耦层次,实现了从地图解析、四邻域拓扑与Petri网建模,到基于优先级启发式的路径规划、时间同步冲突消解,再到动画可视化的全流程闭环。其核心创新在于“空间规划-时间消解”分离的设计思想:通过动态边权膨胀策略取代传统硬封锁,允许后续智能体在必要时穿越先前路径,提升狭窄环境下的规划成功率;利用节点预留历史机制实现高效的冲突查询,并结合几何惩罚机制在规划阶段预测潜在冲突,显著提高时间同步效率。框架还支持Petri网整数规划求解路径,增强了算法的完备性与优化潜力,整体具备良好的可复现性、可扩展性与教学价值。; 适合人群:具备一定编程基础和机器人路径规划基础知识,从事相关科研或工程应用的研发人员,尤其是高校研究生及自动化、人工智能方向的技术人员。; 使用场景及目标:①应用于仓储物流、无人机编队、自动驾驶等多智能体协同场景中的路径规划问题;②为MAPF算法的教学、实验与性能评估提供可复现的MATLAB实现参考;③支持对优先级规划、冲突消解机制、Petri网建模等关键技术进行二次开发与优化验证。; 阅读建议:建议读者按照文中所述的数据流顺序逐步学习,重点关注各模块之间的接口设计与信息传递机制,结合提供的可视化工具调试与观察算法行为,深入理解“空间规划-时间消解”分离的设计思想,并可在实际应用中尝试调整惩罚权重、同步策略等参数以优化性能。


