落山基唬人队-beta冲刺

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13559
这个作业的目标 冲刺计划与冲刺总结
学号 102301418 102301223 102301224 102301409 102301416 102301419 102301514 102301515 102301516 102301436 102301412 102301432

[团队名称] - Beta冲刺博客

目录


Alpha冲刺后的问题与解决方案

问题1:前端页面样式

问题描述:
前面的alpha冲刺着重实现了前端功能,而样式还需要进行美化,并且原本的css文件不好进行迭代升级,遂丢弃改用原子型css

探索思路:

  1. 丢弃原来的css
  2. 采用tailwindcss,其优点众多如开发效率高,一致性强,灵活与可定制

解决过程:

<body class="flex min-h-screen bg-gray-50">
        <!-- 左侧导航栏 -->
        <div class="sidebar w-60 bg-white border-r border-gray-200 fixed h-screen flex flex-col shadow-sm">
          <div class="logo-container p-5 border-b border-gray-100">
            <div class="logo flex items-center gap-2.5 text-xl font-bold text-blue-600">
              <span>你好!小办同学</span>
            </div>
          </div>

          <ul class="nav-links py-4 space-y-1" id="navLinks">

优化后的代码总量不仅减少,界面风格也符合现代审美
image


问题2:核心功能不稳定

问题描述:
核心功能任务生成与匹配总是前端渲染报错,排查后发现是大模型输出格式不一致导致的,我们遂重新编写了功能模块,添加了更多的约束,并在dify平台添加了输出json提示词,最后效果很稳定

探索思路:

  1. 重构代码逻辑,添加更多约束
  2. 调用大模型时加入相应的系统提示词

解决过程:
dify设置
image
代码

@app.route('/api/task_generate', methods=['POST'])
def task_generate():
    try:
        # 获取请求数据
        request_data = request.get_json()
        if not request_data:
            return standard_response(False, message="请求数据为空")

        text = request_data.get('text')
        user_id = request_data.get('user_id')

        if not text or not user_id:
            return standard_response(False, message="缺少必要参数: text或user_id")

        # 连接数据库
        conn = get_db_connection('my_database')
        if not conn:
            return standard_response(False, message="数据库连接失败")

        cursor = conn.cursor(dictionary=True)

        # 查询member表,获取指定user_id下的所有成员
        query = "SELECT name, tech_stack FROM member WHERE user_id = %s"
        cursor.execute(query, (user_id,))
        members = cursor.fetchall()

        # 处理tech_stack字段(JSON类型)
        member_list = []
        for member in members:
            tech_stack = member['tech_stack']
            # 如果tech_stack是字符串,尝试解析为JSON
            if isinstance(tech_stack, str):
                try:
                    tech_stack = json.loads(tech_stack)
                except json.JSONDecodeError:
                    tech_stack = {}

            member_list.append({
                'name': member['name'],
                'tech_stack': tech_stack
            })

        # 关闭数据库连接
        cursor.close()
        conn.close()

        text+="最终直接输出json即可"
        res = my_dify_api.call_for_task_generate(text,json.dumps(member_list, ensure_ascii=False, indent=2))
        res = json.loads(res)
        # print(res)
        if type(res) == dict:
            res = res['tasks']

        res = json.dumps(res, ensure_ascii=False, indent=2)
        response_data = {
            'result': res
        }
        print(response_data)
        return standard_response(True, data = response_data)

    except Exception as e:
        return standard_response(False, message=f"服务器错误: {str(e)}")

最后完美解决了问题,再也没有因此报错过


项目特色功能展示

功能1:团队管理中枢模块

功能描述:
可以记录团队成员的绩效评分,技术栈,工作量,协作互评,联动任务生成与匹配功能,且未来可以与更多新功能联动

展示截图:
e7069ea3f2195a73267b591889a96ef9
随时对团队数据进行更新
f279d250b3090be92c105b91d554a8cf
fbb1b6bace99af3a9c791bc516bf2d04


功能2:任务分解与匹配

功能描述:
能根据团队成员的特点、用户的项目需求输入等进行任务的智能生成并匹配到成员,未来可有更多的对于成员信息的维度作为输入,也可在前端增添任务卡片拖拽更新等实用功能

展示截图:
用户需求输入
d754ff31456d9b4e8c03abe953cafab4
生成相应的任务匹配卡片
f2d6d72237ac857b782f8228ed9f3c49


关键模块自动化单元测试

测试模块1:团队管理中枢

测试目的:
测试前端卡片的渲染,保证运行不出错即可

测试代码示例:

// === 测试 1:渲染功能 ===
console.log('\n🧪 测试 renderMembers 渲染...');
window.renderMembers(testMembers);

const cards = document.querySelectorAll('.member-card');
assert(cards.length === 2, '应渲染 2 个成员卡片');

const firstCard = cards[0];
assert(firstCard.getAttribute('data-id') === '1', '第一个卡片 data-id 应为 1');
assert(firstCard.querySelector('.member-name').textContent.includes('张三'), '应显示姓名 张三');
assert(firstCard.querySelector('.member-tech').textContent === 'React, Node.js', '技术栈应正确');

// === 测试 2:空状态 ===
console.log('\n🧪 测试空成员列表...');
window.renderMembers([]);
const emptyEl = document.querySelector('.member-empty');
assert(emptyEl !== null, '空状态应显示提示元素');
assert(emptyEl.textContent.includes('暂无团队成员'), '空状态文本应正确');

// === 测试 3:性能测试 ===
console.log('\n⏱️ 测试渲染性能(100 成员)...');
const largeMembers = Array.from({ length: 100 }, (_, i) => ({
  id: i + 1,
  name: `成员${i + 1}`,
  tech_stack: ['JS'],
  quality_score: 80,
  workload_score: 50,
  collaboration_score: 70,
  completion_score: 0
}));

const start = Date.now();
window.renderMembers(largeMembers);
const duration = Date.now() - start;

console.log(`  渲染 100 个成员耗时: ${duration} ms`);
if (duration > 200) {
  console.warn('⚠️ 性能警告:渲染超过 200ms,但未中断测试');
} else {
  console.log('✅ 性能达标(< 200ms)');
}

测试结果截图:
baeb9a4f01ab5fb93ff1336474666f09


测试模块2:任务生成与匹配模块

测试目的:
这个模块主要在于时间性能上,不能太久,也不能太快保证质量

测试代码示例:

async function runTests() {
  console.log('🚀 开始自动接口单元测试\n');

  const times = [];
  const globalStart = Date.now();

  for (let i = 1; i <= TEST_ROUNDS; i++) {
    console.log(`▶ 第 ${i} 次测试`);
    try {
      const t = await runSingleTest(i);
      times.push(t);
      console.log(`   ✅ 通过,用时 ${t.toFixed(2)} ms\n`);
    } catch (err) {
      console.error(`   ❌ 失败:${err.message}`);
      process.exit(1);
    }

    // 防止压垮后端
    await new Promise(r => setTimeout(r, 500));
  }

  const totalTime = Date.now() - globalStart;

  // ====== 性能统计 ======
  const avg = times.reduce((a, b) => a + b, 0) / times.length;
  const max = Math.max(...times);
  const min = Math.min(...times);

  console.log('📊 测试完成(2 分钟限制内)');
  console.log('--------------------------------');
  console.log(`测试次数: ${TEST_ROUNDS}`);
  console.log(`总耗时: ${totalTime} ms`);
  console.log(`平均响应时间: ${avg.toFixed(2)} ms`);
  console.log(`最小响应时间: ${min.toFixed(2)} ms`);
  console.log(`最大响应时间: ${max.toFixed(2)} ms`);
}

测试结果截图:
可以看到生成结果在15秒左右
803f11443c661ea363f0aed5c165857e


团队协作记录概览

任务内容 负责人
自动单元测试的编写与保障 薛刚
前端界面开发与交互优化(含对话气泡、加载状态等) 汤健
前端合并会议模块的优化 姚敏聪
前端任务分解模块的优化(含状态管理、依赖可视化) 许敬豪
前端模块优化、边界案例修复及系统集成测试 杨子贤
项目界面设计、交互逻辑优化及用户体验提升 洪淳衔
后端待办事项与会议处理模块的稳定性优化 阮佳誉
团队整体沟通协作、进度同步与问题攻坚支持 周宇烨, 廖云峻
项目全流程跟进、整体交付与产品化视角优化 章鸿晨, 于昊成
软件工程规范流程与开发实践的总结梳理 杨智鈜

成员心得体会

薛刚

本次任务我主要进行了自动单元测试的编写,我认识到了当进行功能重构时,完整的测试套件的重要性,能立刻发现功能的缺失或出错,也能节省大量手动调试的时间,所以对于单元测试一定要聚焦于关键功能的正确实现以及相关性能的测试,这次的工作让我对于测试这一软件工程流程有了更清晰的认识,收获颇丰。

周宇烨

Beta冲刺让我深刻体会到团队协作的核心价值,沟通同步与高效配合是推进项目的关键。面对突发问题,我们快速迭代、合力攻坚,不仅提升了问题解决能力,更懂得了灵活调整与抗压担当。这段经历让我明白,软件工程既要严谨规划,也要在实践中持续优化,每一次磨合都是成长,为后续学习与开发积累了宝贵经验。

汤健

本次beta冲刺中我负责前端界面开发,让我切实体会到理论与实践的碰撞。从对话气泡的交互逻辑到加载状态的视觉反馈,每一处细节都关乎用户体验。团队协作里的需求对接、bug排查,也让我明白前端开发不只是实现界面,更是衔接用户与后端服务的关键桥梁,收获满满。

姚敏聪

在本次 Beta 冲刺中,我负责前端合并会议模块的开发工作。从需求梳理到功能实现,我不仅深化了对前端组件化开发的理解,还熟练掌握了会议数据的合并逻辑与状态管理技巧。同时,我也意识到前端开发并非孤立的工作,与后端的高效沟通、对用户需求的精准把控,都是保障模块功能稳定上线的关键。这次开发不仅提升了我的技术能力,更培养了我面对问题时的分析和解决能力,为后续复杂模块的开发积累了宝贵经验。

阮佳誉

在本次Beta冲刺中,我深刻体验到从“功能实现”到“产品交付”的转变。我不仅专注于后端待办事项与会议处理模块的稳定性优化,更参与了产品发布会的筹备与演练。这次冲刺让我明白,优秀的软件不仅需要扎实的代码,更需要清晰的展示与用户视角的思考。我学会了如何将技术语言转化为商业价值。这次经历,让我从一个开发者向一个更全面的产品贡献者迈进了一步。

杨智鈜

这次Beta让我对软件项目的开发过程有了更加清楚的认识,我深刻体会到团队协作与规范流程的重要性。每一个环节都紧密相连,离不开有效的沟通和严谨的思考。这次经历将书本上的理论知识转化为切实的经验,也为后续的学习和项目开发奠定了根基,令我受益匪浅。

章鸿晨

这次Beta冲刺让我认识到软件工程不仅是编写代码,更是持续沟通、迭代和交付的过程。我从一个关注局部功能的开发者,逐渐成长为关注用户体验、项目进度和团队协作的工程参与者。这份经历也让我更明确未来在技术与产品的交叉领域中,需要持续培养系统思维和用户共情能力。

杨子贤

在beta冲刺阶段,我专注于前端模块的优化与系统集成测试。通过修复边界案例和提升交互流畅性,我深刻体会到稳定与细节是产品成熟的关键。同时,持续记录开发日常的Vlog也让我能从外部视角审视团队进度。这一阶段是对前期工作的淬炼,让我对“完成”与“完善”有了更清晰的认识。

许敬豪

在本次Beta冲刺中,我负责前端任务分解模块的开发。通过将复杂需求转化为清晰可维护的组件,我深化了对状态管理与数据流处理的理解,并掌握了任务依赖可视化等关键技术。这次经历让我认识到,前端不仅是界面实现,更是业务逻辑与用户体验的桥梁。与后端的协作也让我更注重接口设计与数据准确性。此次开发提升了我的实战能力,也强化了产品思维与协作意识,为后续工作积累了宝贵经验。

洪淳衔

此次 beta 冲刺让我在设计落地和用户体验优化上实现了显著成长。我负责项目的界面设计和交互逻辑优化,初期因过度追求视觉效果,部分设计方案在移动端适配和开发实现上存在困难。通过与前端开发同学密切协作,学习了 HTML/CSS 的基础逻辑,调整了设计细节(如简化复杂动画、优化布局适配),确保设计方案既能满足用户审美,又能高效落地。同时,在用户内测阶段,我通过分析用户行为数据和反馈,优化了按钮位置、色彩搭配和页面跳转逻辑,使用户操作路径更简洁。这次冲刺让我明白,UI/UX 设计不是孤立的创作,而是需要结合技术实现、用户习惯和业务需求的系统性工作,也提升了我的跨团队协作和问题解决能力。

于昊成

Beta冲刺让我们从“能运行”走向“能使用”。我们深刻体会到使用体验和代码质量的重要性。通过不断优化,团队协作也从简单的代码合并升级为深度联调和思维融合。这次经历是理论到实践的桥梁,教会我们权衡取舍,不断打磨产品,收获远超代码本身。对我今后开发实践积累了宝贵的经验。

廖云峻

Beta 冲刺的实践过程,让我对团队协作的核心价值有了更为深刻的体悟 —— 及时的沟通同步与默契的高效配合,正是驱动项目稳步推进的关键动力。项目推进中遭遇突发问题时,我们以快速迭代的思路合力攻坚,这不仅显著提升了团队整体的问题解决能力,更让我真切领悟到灵活调整策略、主动抗压担当的实践意义。
这段宝贵的经历也让我深刻认识到,软件工程绝非一成不变的固化流程:既需要前期严谨的规划设计作为根基,更要在实践落地中根据实际场景持续优化迭代。而团队协作中的每一次磨合、每一次调整,都是不可或缺的成长契机,不仅锤炼了我的实战能力,更为后续的学习探索与开发工作,积累了极具参考价值的实践经验。


本次项目代码GitHub仓库链接

https://github.com/xuezong691/fzuteam_lakers/tree/main/第四次团队作业


posted @ 2025-12-23 09:55  xuezong691  阅读(0)  评论(0)    收藏  举报