第二次软工作业

Agent说明文档(博客园随笔版)

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering24/
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering24/homework/15646
这个作业的目标 完成一个能说会做的agent
学号 3124004560 3124004553 3124004549 3124004594 3124004425 3124004591 3124004592 3124004548 3124004563

AI智能办公助理 - Agent 说明文档

📋 需求描述

项目背景

AI智能办公助理是一个基于自然语言交互的智能助手系统,旨在通过对话方式帮助用户完成日常办公任务。系统采用模块化设计,支持任务管理、文件操作、天气查询、数学计算等多种功能,为用户提供便捷的智能化办公体验。

核心需求

  1. 自然语言理解:用户可通过自然语言与系统进行交互,无需学习特定命令格式
  2. 多工具集成:整合多种实用工具(任务管理、文件操作、天气查询、计算器等)
  3. 对话历史管理:记录并展示用户的对话历史,支持上下文连续性
  4. 用户身份识别:支持登录用户和匿名用户,自动关联用户数据
  5. 可视化界面:提供美观的Web界面,支持快捷操作和实时反馈
  6. 可扩展架构:模块化设计便于新增功能和工具

目标用户

  • 需要高效管理日常任务的办公人员
  • 希望通过自然语言快速执行操作的普通用户
  • 需要集成多种工具的开发者和技术人员

🔄 业务流描述

整体业务流程

graph TB A[用户访问Web页面] --> B{是否已登录} B -->|是| C[获取登录用户ID] B -->|否| D[生成匿名用户ID] C --> E[输入自然语言消息] D --> E E --> F[前端发送POST请求到/agent/chat] F --> G[AgentController接收请求] G --> H[AgentService处理消息] H --> I[保存用户消息到数据库] I --> J[调用通义千问API获取AI回复] J --> K[检查是否需要执行工具] K --> L{是否匹配工具关键词} L -->|是| M[执行对应工具服务] L -->|否| N[直接返回AI回复] M --> O[合并AI回复和工具结果] N --> P[保存AI回复到数据库] O --> P P --> Q[返回最终响应给前端] Q --> R[前端展示回复内容] R --> S[刷新右侧对话历史面板]

工具调用流程

graph LR A[用户消息] --> B{关键词检测} B -->|包含任务相关词| C[TaskService] B -->|包含文件相关词| D[FileService] B -->|包含天气相关词| E[WeatherService] B -->|包含计算相关词| F[CalculatorService] C --> G[执行具体操作] D --> G E --> G F --> G G --> H[返回执行结果] H --> I[与AI回复合并]

数据持久化流程

graph TB A[用户发送消息] --> B[生成会话ID sessionId] B --> C[构建Conversation对象] C --> D[设置userId, role, content等字段] D --> E[调用ConversationMapper.insert] E --> F[保存到conversation表] F --> G[返回成功状态] H[查询对话历史] --> I[调用ConversationMapper.findRecentByUserId] I --> J[从数据库查询最近N条记录] J --> K[按时间正序排列] K --> L[返回给前端展示]

💻 实现说明

技术栈

后端技术

  • 框架: Spring Boot 3.2.4
  • JDK版本: Java 21
  • 构建工具: Maven
  • 数据库: MySQL 8.0 + MyBatis
  • AI接口: 阿里云通义千问 API (DashScope)
  • HTTP客户端: Spring WebFlux WebClient
  • JSON处理: Jackson
  • 其他: Lombok, JWT, Druid连接池

前端技术

  • 基础: HTML5, CSS3, JavaScript (原生)
  • 样式: 渐变背景、动画效果、响应式布局
  • 通信: Fetch API

项目结构

agent/
├── common/                          # 公共模块
│   └── src/main/java/com/clover/
│       ├── constant/                # 常量定义
│       ├── context/                 # 上下文管理(用户ID)
│       ├── exception/               # 异常定义
│       ├── json/                    # JSON配置
│       ├── properties/              # 配置属性
│       └── utils/                   # 工具类(JWT、验证码)
│
├── pojo/                            # 实体对象模块
│   └── src/main/java/com/clover/
│       ├── entity/                  # 实体类
│       │   ├── User.java           # 用户实体
│       │   ├── Task.java           # 任务实体
│       │   └── Conversation.java   # 对话实体
│       ├── dto/                     # 数据传输对象
│       ├── vo/                      # 视图对象
│       └── result/                  # 响应封装
│           ├── Result.java         # 统一响应
│           └── PageResult.java     # 分页响应
│
└── server/                          # 服务端模块
    └── src/main/java/com/clover/
        ├── controller/              # 控制器层
        │   ├── AgentController.java      # AI对话接口
        │   ├── UserController.java       # 用户管理
        │   ├── CaptchaController.java    # 验证码
        │   └── PageController.java       # 页面路由
        │
        ├── service/                 # 服务层
        │   ├── AgentService.java         # AI代理核心服务
        │   ├── TaskService.java          # 任务管理服务
        │   ├── FileService.java          # 文件操作服务
        │   ├── WeatherService.java       # 天气查询服务
        │   ├── CalculatorService.java    # 计算器服务
        │   └── UserService.java          # 用户服务
        │
        ├── mapper/                  # 数据访问层
        │   ├── UserMapper.java
        │   ├── TaskMapper.java
        │   └── ConversationMapper.java
        │
        ├── interceptor/             # 拦截器
        │   └── JwtTokenUserInterceptor.java  # JWT认证
        │
        ├── config/                  # 配置类
        │   ├── WebMvcConfiguration.java
        │   └── OssConfiguration.java
        │
        └── agentServerApplication.java  # 启动类

核心模块详解

1. AgentService - AI代理核心服务

职责:

  • 协调AI API调用和工具执行
  • 管理对话历史和会话
  • 保存对话记录到数据库

关键方法:

// 处理用户消息的主入口
public String handleMessage(String userId, String message)

// 调用通义千问API
private String callAIAPIService(List<Map<String, String>> messages)

// 检查并执行工具调用
private String checkAndExecuteTools(String message)

// 保存对话到数据库
private void saveConversationToDB(String userId, String sessionId, 
                                  String role, String content, 
                                  String messageType, String toolCalls)

工作流程:

  1. 接收用户消息和用户ID
  2. 获取或创建会话ID
  3. 初始化或加载对话历史
  4. 添加用户消息到历史记录
  5. 保存用户消息到数据库
  6. 调用通义千问API获取AI回复
  7. 检测消息中是否包含工具关键词
  8. 如果匹配,执行相应工具并获取结果
  9. 合并AI回复和工具执行结果
  10. 保存AI回复到数据库
  11. 限制历史长度(最多20条)
  12. 返回最终响应

系统提示词:

你是一个能说的AI办公助理,你可以:
1. 管理任务(创建、查询、删除、完成任务)
2. 文件操作(创建、读取、更新文件)
3. 查询天气信息
4. 执行数学计算
5. 回答一般问题

请用简洁友好的中文回复。当用户要求执行操作时,先确认理解,然后调用相应工具执行。

2. TaskService - 任务管理服务

功能:

  • 创建任务:解析用户消息中的任务描述
  • 查询任务:列出所有任务及状态
  • 完成任务:根据任务ID标记为已完成
  • 删除任务:根据任务ID删除任务

数据存储:
使用内存存储(ConcurrentHashMap),键为用户ID,值为任务列表

任务结构:

record Task(Long id, String description, boolean completed, 
            LocalDateTime createdAt, LocalDateTime dueDate)

关键词识别:

  • 创建:包含"创建"、"添加"、"新增"
  • 查询:包含"查询"、"查看"、"列表"
  • 完成:包含"完成"、"标记"
  • 删除:包含"删除"、"移除"

3. FileService - 文件操作服务

功能:

  • 创建文件:在agent-files目录下创建文本文件
  • 读取文件:读取指定文件的内容
  • 列出文件:显示目录下的所有文件及大小

文件存储:
本地文件系统 agent-files/ 目录

文件名提取逻辑:
从消息中提取"文件"、"名为"、"叫做"等关键词后的第一个词作为文件名

内容提取逻辑:
从消息中提取"内容"或"为"关键词后的所有内容作为文件内容

4. WeatherService - 天气查询服务

功能:

  • 查询城市天气信息
  • 提供出行建议
  • 支持模拟数据(无API Key时)

API配置:

  • 默认使用 OpenWeatherMap API
  • 可配置自定义API地址和密钥
  • 无API时返回模拟天气数据

天气条件:
晴、多云、阴、小雨、中雨、大雨、雪

出行建议生成:

  • 雨天 → "记得携带雨伞"
  • 温度 < 15°C → "天气较冷,注意保暖"
  • 温度 > 30°C → "注意防晒防暑"

5. CalculatorService - 计算器服务

功能:

  • 解析数学表达式
  • 支持加减乘除和括号运算
  • 遵循运算符优先级规则

表达式解析器:
采用递归下降解析器(Recursive Descent Parser)实现

优先级层次:

  1. 括号和一元运算符(最高)
  2. 乘除法(中等)
  3. 加减法(最低)

支持的表达式示例:

  • 125 * 8 + 50
  • (2 + 3) * 4
  • -5 + 10
  • 100 / 5 - 3

6. AgentController - REST API控制器

接口列表:

接口路径 方法 功能 参数
/agent/chat POST 发送聊天消息 userId, message
/agent/clear POST 清空对话历史 userId
/agent/history GET 获取对话历史 userId
/agent/recent-conversations GET 获取最近对话 userId, limit
/agent/health GET 健康检查

响应格式:

{
  "code": 1,        // 1表示成功,0表示失败
  "msg": "success", // 响应消息
  "data": {}        // 响应数据
}

数据库设计

conversation 表 - 对话记录表

CREATE TABLE `conversation` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` VARCHAR(64) NOT NULL COMMENT '用户ID',
  `session_id` VARCHAR(64) NOT NULL COMMENT '会话ID',
  `role` VARCHAR(20) NOT NULL COMMENT '角色: user/assistant/system',
  `content` TEXT NOT NULL COMMENT '消息内容',
  `message_type` VARCHAR(20) DEFAULT 'text' COMMENT '消息类型',
  `tool_calls` TEXT COMMENT '工具调用记录(JSON)',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  INDEX `idx_user_id` (`user_id`),
  INDEX `idx_session_id` (`session_id`),
  INDEX `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='对话记录表';

索引设计:

  • idx_user_id: 加速按用户查询对话
  • idx_session_id: 加速按会话查询
  • idx_created_at: 加速按时间排序

配置说明

application-dev.yml 关键配置

# 通义千问API配置
agent:
  api:
    key: your-dashscope-api-key      # 阿里云DashScope API Key
    url: https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation
    model: qwen-turbo                 # 模型名称

# 天气API配置(可选)
weather:
  api:
    key: your-weather-api-key
    url: https://api.openweathermap.org/data/2.5/weather

# 数据库配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/agent_db?useSSL=false&serverTimezone=Asia/Shanghai
    username: your-userName
    password: your-password

# 服务器端口
server:
  port: 8080

安全机制

  1. JWT认证: 通过JwtTokenUserInterceptor拦截器验证用户令牌
  2. 用户上下文: 使用BaseContext存储当前登录用户ID
  3. 跨域配置: 在WebMvcConfiguration中配置CORS允许跨域请求
  4. 输入验证: 对用户输入进行基本验证和清理

错误处理

全局异常处理器 (GlobalExceptionHandler):

  • 捕获所有未处理的异常
  • 返回统一的错误响应格式
  • 记录详细错误日志

API重试机制:

  • 通义千问API调用失败时自动重试2次
  • 每次重试间隔1秒
  • 区分客户端错误(4xx)和服务器错误(5xx)

🎯 使用示例(功能演示)

1. 任务管理功能

示例1:创建任务

用户输入:

创建任务:完成项目报告

系统响应:

✅ 任务已创建:
- ID: 1
- 描述: 完成项目报告
- 时间: 2024-01-15 10:30

后台执行:

  1. TaskService检测到"创建"关键词
  2. 提取任务描述"完成项目报告"
  3. 生成任务ID(自增)
  4. 创建Task对象并存入内存
  5. 返回格式化响应

示例2:查看任务列表

用户输入:

查看我的任务

系统响应:

📋 你的任务清单:

⏳ [1] 完成项目报告
⏳ [2] 学习新技术
✅ [3] 准备会议材料

总计: 3 个任务

示例3:完成任务

用户输入:

完成任务 1

系统响应:

✅ 任务 1 已标记为完成!

示例4:删除任务

用户输入:

删除任务 3

系统响应:

🗑️ 任务 3 已删除。

2. 天气查询功能

示例1:查询天气

用户输入:

北京天气怎么样?

系统响应:

🌤️ 北京天气
━━━━━━━━━━━━━━
天气: 晴
温度: 22.5°C
湿度: 45%
风速: 3.2 m/s
━━━━━━━━━━━━━━
💡 出行建议: 天气不错,适合出行!
更新时间: 2024-01-15 10:30

后台执行:

  1. WeatherService检测到"天气"关键词
  2. 提取城市名"北京"
  3. 调用天气API或返回模拟数据
  4. 根据天气条件生成出行建议
  5. 格式化返回结果

示例2:特殊天气建议

用户输入:

上海天气如何?

系统响应(雨天场景):

🌧️ 上海天气
━━━━━━━━━━━━━━
天气: 小雨
温度: 18.0°C
湿度: 75%
风速: 4.5 m/s
━━━━━━━━━━━━━━
💡 出行建议: 有降雨,建议携带雨具。

☂️ 记得携带雨伞
🧥 天气较凉,注意保暖

3. 数学计算功能

示例1:基本计算

用户输入:

计算 125 * 8 + 50

系统响应:

🔢 计算结果:

125 * 8 + 50 = 1050.00

后台执行:

  1. CalculatorService检测到"计算"关键词
  2. 提取表达式"125 * 8 + 50"
  3. 使用递归下降解析器计算
  4. 遵循运算符优先级(先乘后加)
  5. 返回格式化结果

示例2:带括号的复杂计算

用户输入:

计算 (2 + 3) * 4 - 10 / 2

系统响应:

🔢 计算结果:

(2 + 3) * 4 - 10 / 2 = 15.00

计算过程:

  1. 先计算括号内:2 + 3 = 5
  2. 再计算乘法:5 * 4 = 20
  3. 计算除法:10 / 2 = 5
  4. 最后减法:20 - 5 = 15

示例3:负数运算

用户输入:

计算 -5 + 10 * 2

系统响应:

🔢 计算结果:

-5 + 10 * 2 = 15.00

4. 文件操作功能

示例1:创建文件

用户输入:

创建文件 test.txt 内容为Hello World

系统响应:

📄 文件已创建:
- 文件名: test.txt
- 大小: 11 字节
- 路径: D:\code\java\agent\agent-files\test.txt

后台执行:

  1. FileService检测到"创建"和"文件"关键词
  2. 提取文件名"test.txt"
  3. 提取文件内容"Hello World"
  4. agent-files目录下创建文件
  5. 写入内容并返回文件信息

示例2:读取文件

用户输入:

读取文件 test.txt

系统响应:

📄 文件 test.txt 内容:

Hello World

示例3:列出所有文件

用户输入:

列出所有文件

系统响应:

📁 文件列表:

- test.txt (11 字节)
- notes.txt (256 字节)
- data.csv (1024 字节)

总计: 3 个文件

5. 综合对话示例

示例1:多轮对话

第一轮:

用户: 帮我创建一个任务
AI: 好的,请告诉我任务的具体内容是什么?

用户: 完成项目报告,明天截止
AI: ✅ 任务已创建:
    - ID: 1
    - 描述: 完成项目报告,明天截止
    - 时间: 2024-01-15 10:30

第二轮:

用户: 再创建一个学习任务
AI: ✅ 任务已创建:
    - ID: 2
    - 描述: 学习任务
    - 时间: 2024-01-15 10:31

第三轮:

用户: 查看我的任务
AI: 📋 你的任务清单:

    ⏳ [1] 完成项目报告,明天截止
    ⏳ [2] 学习任务
    
    总计: 2 个任务

示例2:混合功能调用

用户输入:

今天北京天气怎么样?另外帮我计算一下 25 * 4

系统响应:

我理解你想了解北京的天气情况,并且需要进行数学计算。

🌤️ 北京天气
━━━━━━━━━━━━━━
天气: 晴
温度: 22.5°C
湿度: 45%
风速: 3.2 m/s
━━━━━━━━━━━━━━
💡 出行建议: 天气不错,适合出行!

🔢 计算结果:

25 * 4 = 100.00

后台执行:

  1. AgentService调用通义千问API获取通用回复
  2. checkAndExecuteTools检测到"天气"关键词,调用WeatherService
  3. checkAndExecuteTools检测到数字和运算符,调用CalculatorService
  4. 合并AI回复、天气结果和计算结果
  5. 返回综合响应

6. Web界面操作示例

登录界面

打开浏览器访问:http://localhost:8080/login
image

访问主页

界面布局:
打开浏览器访问:http://localhost:8080/index
image
点击界面上按钮"任务管理" "天气出行" "文件管理"切换其他页面

快捷操作演示

  1. 点击"📋 创建任务"按钮

    • 自动填充:创建任务:完成作业
    • 点击发送
    • 左侧显示AI回复(任务创建成功)
    • 右侧自动刷新,显示刚创建的对话记录
  2. 点击"🌤️ 查询天气"按钮

    • 自动填充:北京天气怎么样?
    • 点击发送
    • 显示天气信息和出行建议
  3. 点击"🔢 计算器"按钮

    • 自动填充:计算 125 * 8 + 50
    • 点击发送
    • 显示计算结果

7. 专用页面功能演示

任务管理页面 (/task-manager)

访问: http://localhost:8080/task-manager

功能特点:

  • 左侧:AI对话区,用自然语言管理任务
  • 右侧:任务列表展示区,实时同步
  • 支持点击按钮完成任务/删除任务
  • 显示任务统计信息(总数、已完成、待完成)

操作流程:

  1. 在左侧输入:"创建任务:学习Java"
  2. 右侧立即显示新任务
  3. 点击任务旁的"完成"按钮
  4. 任务状态变为✅已完成
  5. 统计数据自动更新

天气出行页面 (/weather-planner)

访问: http://localhost:8080/weather-planner

功能特点:

  • 美观的天气展示界面(粉橙色渐变主题)
  • 快捷城市选择芯片(北京、上海、广州等)
  • 大号天气图标(动态浮动动画)
  • 详细数据网格(温度、湿度、风速、体感温度)
  • 智能出行建议和提示卡片

操作流程:

  1. 点击城市芯片"北京"
  2. 显示北京天气(大图标+详细数据)
  3. 自动生成出行建议
  4. 显示个性化提示(如"记得带伞")

文件管理页面 (/file-manager)

访问: http://localhost:8080/file-manager

功能特点:

  • 文件上传下载
  • 文件列表展示
  • 支持多种文件格式
  • 集成阿里云OSS存储(可选)

8. API调用示例

使用curl测试聊天接口

curl -X POST http://localhost:8080/agent/chat \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "test_user_001",
    "message": "创建任务:完成项目报告"
  }'

响应:

{
  "code": 1,
  "msg": "success",
  "data": "✅ 任务已创建:\n- ID: 1\n- 描述: 完成项目报告\n- 时间: 2024-01-15 10:30"
}

查询对话历史

curl http://localhost:8080/agent/recent-conversations?userId=test_user_001&limit=10

响应:

{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "id": 1,
      "role": "user",
      "content": "创建任务:完成项目报告",
      "createdAt": "2024-01-15T10:30:00"
    },
    {
      "id": 2,
      "role": "assistant",
      "content": "✅ 任务已创建:...",
      "createdAt": "2024-01-15T10:30:01"
    }
  ]
}

9. 实际应用场景

场景1:日常工作规划

用户:

帮我创建今天的任务清单:
1. 完成项目报告
2. 参加下午3点的会议
3. 回复客户邮件

AI助理:

好的,我已为你创建了3个任务:

✅ 任务已创建:
- ID: 1
- 描述: 完成项目报告
- 时间: 2024-01-15 09:00

✅ 任务已创建:
- ID: 2
- 描述: 参加下午3点的会议
- 时间: 2024-01-15 09:00

✅ 任务已创建:
- ID: 3
- 描述: 回复客户邮件
- 时间: 2024-01-15 09:00

祝你今天工作顺利!💪

场景2:出行准备

用户:

明天要去上海出差,那边天气怎么样?

AI助理:

让我帮你查询上海的天气情况。

🌤️ 上海天气
━━━━━━━━━━━━━━
天气: 多云
温度: 25.0°C
湿度: 60%
风速: 2.5 m/s
━━━━━━━━━━━━━━
💡 出行建议: 适宜出行。

根据你的行程安排,建议:
- 穿着舒适的商务休闲装
- 携带笔记本电脑和充电器
- 准备好会议资料

需要我帮你创建出差准备任务清单吗?

场景3:快速计算

用户:

我要计算这个月的开销:房租3500 + 餐饮1200 + 交通300 + 其他500

AI助理:

让我帮你计算一下总开销。

🔢 计算结果:

3500 + 1200 + 300 + 500 = 5500.00

你这个月的总开销为 5500 元。

需要我帮你创建一个记账任务来记录这些支出吗?

🔧 部署与运行

环境要求

  • JDK 21
  • Maven 3.6+
  • MySQL 8.0+
  • 现代浏览器(Chrome/Firefox/Edge)

启动步骤

  1. 配置数据库
# 创建数据库
mysql -u root -p
CREATE DATABASE agent_db CHARACTER SET utf8mb4;

# 导入初始化脚本
mysql -u root -p agent_db < server/src/main/resources/db/init.sql
  1. 配置API密钥
    编辑 server/src/main/resources/application-dev.yml
agent:
  api:
    key: sk-your-dashscope-api-key  # 替换为真实的API Key
  1. 编译项目
mvn clean install
  1. 启动应用
cd server
mvn spring-boot:run
  1. 访问应用
    打开浏览器访问:http://localhost:8080/index

📊 性能优化

已实现的优化

  1. 连接池: 使用Druid数据库连接池
  2. 并发安全: 使用ConcurrentHashMap存储会话数据
  3. 异步处理: WebClient非阻塞HTTP调用
  4. 索引优化: 数据库表添加合适索引
  5. 缓存策略: 内存缓存对话历史

可扩展优化方向

  1. Redis缓存: 缓存热点数据和会话
  2. 消息队列: 异步处理耗时操作
  3. CDN加速: 静态资源CDN分发
  4. 负载均衡: 多实例部署+负载均衡
  5. 数据库分片: 大数据量时分库分表

🚀 未来扩展

计划新增功能

  1. 语音交互: 支持语音输入和输出
  2. 图像识别: 上传图片进行OCR识别
  3. 日程管理: 集成日历和提醒功能
  4. 邮件助手: 自动撰写和发送邮件
  5. 数据分析: 生成统计报表和图表
  6. 多语言支持: 支持中英文切换
  7. 插件系统: 支持第三方工具插件
  8. 团队协作: 多人协作和任务分配

技术升级方向

  1. 向量数据库: 集成知识库和RAG检索
  2. 流式响应: SSE实现打字机效果
  3. WebSocket: 实时双向通信
  4. 微服务架构: 拆分为独立微服务
  5. 容器化部署: Docker + Kubernetes

📝 总结

AI智能办公助理是一个功能完整、架构清晰的智能对话系统。通过自然语言交互,用户可以轻松完成任务管理、文件操作、天气查询、数学计算等日常办公操作。系统采用模块化设计,易于扩展和维护,为后续功能迭代奠定了良好基础。

核心优势:

  • ✅ 自然语言交互,降低使用门槛
  • ✅ 多工具集成,一站式解决方案
  • ✅ 对话历史持久化,数据不丢失
  • ✅ 美观的Web界面,良好的用户体验
  • ✅ 模块化架构,易于扩展新功能

适用场景:

  • 个人工作效率提升
  • 团队任务协作管理
  • 智能办公助手原型
  • AI应用开发学习案例

文档版本: 1.0
更新日期: 2024-01-15
作者: 许龙 王同裕 罗航 詹金涛 刘宇航 刘聪 胡祖豪 罗嘉钦 唐钢湶
项目地址: https://github.com/Princcess-Dragon/Four-Leaf-Clover/tree/main/agent

小组分工

成员 分工 任务
许龙 全栈 设计本项目大纲以及实现
王同裕 后端 数据库设计
罗航 后端 pojo
詹金涛 后端 sever
刘宇航 后端 common
刘聪 前端 html,css
胡祖豪 前端 Javascript
罗嘉钦 测试 测试项目
唐钢湶 文员 文档,使用说明
posted @ 2026-04-17 00:06  Princess_Dragon  阅读(6)  评论(0)    收藏  举报