A1、进度汇报(— 25/04/22)

本文档汇总了各成员在 2025 年 4 月 22 日前完成的工作。

知识学习/项目管理上的进度

魂兮归乡:

  • 基本确定项目分工,代入用户视角完成了需求分析和“交互驱动的网页设计”,绘制了若干 UI 布局草稿。
    图-A1.1_UI 草稿
  • 完成技术选型,基本确定项目的文件结构。
  • 扫除了之前对 CORS 和 Security 过滤器链的理解误区,掌握了注册表和钩子思想。
    图-A1.2_前后端分离下的 CORS
    图-A1.3_对 Security 过滤器链的理解
  • 发布了《一、项目伊始》《二、数据通讯(上)》。第一篇记录了项目灵感来源、以用户视角进行“交互驱动的网页设计”的过程、技术选型及依据、从粗到细逐步迭代分工并绘制依赖关系图的过程和项目文件的结构,第二篇记录了从零设计和实现数据通讯系统主干道的过程,包括海量信息。
  • 学习了 One API(Chat Completion)和 Web Client 发送异步请求的基础知识,初步讨论了一些潜在的 LLM 输出异常情况及应对方案。

dogdogw:

  • 复习了 Git 的基础知识,发布了《Git 学习笔记:从基础到分支管理的实践》,博客中重点介绍了 Git 的工作流程和常用指令(附带思维导图),并在最后动手练习了项目初始化、同步远程仓库和分支开发等内容。
    图-A1.4_Git 常用指令思维导图
  • 分析了任务所需的技术,复习了 Java、Springboot、Spring MVC 和 Spring Data JPA 的基础知识。
  • 因为诤略参谋项目的地基部分尚未完工,在与项目独立的小 demo 中走通了“项目管理”功能的流程。

w_x_yao:

贝格拉夫:

  • 复习整理了 Git 的基础知识,发布了《Git知识补充学习》,练习了一些 Git 的基础操作。
  • 学习了 token、temperature、提示词和 embedding 等 LLM 基础知识,发布了《LLM基础知识学习个人笔记》。写了小的 Python demo 做实验,发现 One API 的 DeepSeek-R1 不会像 DeepSeek 官方 API 一样把 CoT 写在 reasoning_content 中,而是把 CoT 同正式答案一并写在 content 中。
  • 从 OpenAI API 文档中学习了 Chat Completion API 的使用方法,发布了《阅读OpenAI官方文档学习LLM》

epiphany狂人:



主项目上的进度

注:

  • 灰底带删除线的是在上一次或更早的汇报中就已完成的任务;
  • 绿底带删除线的是在本次汇报中完成的任务;
  • 如果队员在上一次汇报后没有完成新任务,不展示对应成员的任务表。
    • “没有完成新任务”不等于“没有做新的事情”,队员依旧会学习相关知识、编写博客、构思实现方案、写小例子。

魂兮归乡:
表-A1.1

艺术

代码

详见《二、数据通讯(上)》《三、数据通讯(下)》

  • 设计和实现了 FieldBtnFormWrapper 组件,利用这三个组件可以极轻松地配置前端字段的校验规则、按钮与文本框的关联、按钮的禁用与否以及请求的发送和响应的解析。
  • 设计开发了前端全局弹窗系统,编写了 modal store、toast store 和 notification store,让 App.vue 中顶层组件 GlobalModalWrapperToastDrawerNotificationDrawer 根据对应 store 中的状态值响应式地渲染通知。三个 store 还对外提供 modal.opentoast.successtoast.error 等方法,队员可以通过调用这些方法极轻松地显示不同类型的提示消息(实际上他们只需要手动调用 modal.open)。
  • 基于 modal.open 编写了 Deletor 组件,会弹窗确认删除,简化后续各种删除功能的开发。
  • 设计并实现了业务状态码 BizCode 和统一响应格式 StdResponse,并实现了 MVC 层的全局异常处理器,保证后端发来的数据总是遵循 StdResponse 格式。同时设置了前端 axios 响应拦截器,基于统一格式自动解析 http 对象发出的请求对应的响应,根据 StdResponseuserVisibility 决定是否调用全局弹窗提示用户,根据 code 决定调用弹窗系统提供的哪一种方法(哪一种样式的 Toast)显示提示消息。基本可以说,消息提示被完全自动化了,队员开发时只需要声明式地定义一个 BizCode 值决定 userVisibility 和弹窗中显示的 msg 即可。
  • 编写了 CorsFilter,配置了 Security 过滤器链,规避了对 /api/×× 的跨域限制。
  • 实现了用户注册、登录、忘记密码、重置密码、修改用户名、退出登录和自动登录功能。其中注册、忘记密码和重置密码需要使用邮箱验证码,我们也完成了发送邮件相关的代码。
  • 编写了 user store,在前端持久化用户的基本信息(如 JWT 和邮箱等)以及配置信息(如是否启用自动登录),加载网页后立刻检查用户是否开启了自动登录,如果开启,立刻向后端发送自动登录请求,如果后端判断 JWT 有效,在收到成功响应后更新用户基本信息,并将用户从欢迎页路由到核心功能页。
  • 配置了 axios 请求拦截器,从 user store 中取出登录用户的 JWT,自动附加到每一个 http 对象发出的请求的请求头中。
  • 编写了 JWT 签发和验证等函数和 JwtAuthFilterJwtAuthFilter 会检查大部分路径上的请求携带的 JWT 的合法性,如果合法则将用户信息填入安全上下文,如果不合法就不填写安全上下文。之后 FilterSecurityInterceptor 发现安全上下文内为空时意识到 JWT 不合法,抛出异常,被特意配置了的 ExceptionTranslationFilter 使用我们自定义的入口点 CustomAuthenticationFilter/error 转发请求,我们为 /error 写了 RESTful API,这个 API 会抛出异常,就这样把 Security 中的异常转为了 MVC 层全局异常处理器可以统一处理的异常。
  • 为 JWT 设置了版本号机制以实现“立刻失效”,搭配退出登录、修改密码和忘记密码功能使用。
  • 开发了 BubbleEmptyTip 组件,队员只需要向组件传递内容字符串,不需要再关心样式。
  • 开发了 Search 组件,简化后续各种查询功能的开发。
  • 开发了 Switch 组件,用于启用/禁用各类配置。
  • 开发了 Wave 组件,充当加载指示器。
  • 为了避免 LLM 输出慢的问题开发了任务系统。开发了专用于后台任务的组件 TaskBtn,行为类似 Btn,但是点击后会向后端提交一个任务,后端发出异步请求并立刻生成一个 Task 实体类对象,将对象传回浏览器。前端使用 task store 记录这个 Task 实体类对象(内含反映任务完成情况的字段),并自动轮询这个任务的状态。后端利用 WebClient 发送异步请求,请求成功时调用成功回调处理响应、生成结果,更新对应任务的状态。TaskBtnwhenSucceed 钩子,轮询发现任务状态变为完成后拿着任务中的 resultId 调用 whenSucceed
  • 前端 task store 也会在任务完成时自动调用 notification.successnotification.error,自动弹出提示。成功提示带有一键路由功能。
  • 前端 task store 在网页加载时调用 init 向后端请求任务列表,以初始化任务面板。
  • 初步讨论了对 LLM 异常情况的处理。

任务系统核心逻辑示意图:
图-A1.9_任务系统核心逻辑示意图

诤略参谋数据通讯系统的完整图景:
图-A1.10_诤略参谋数据通讯系统完整图景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值