拾光友人帐——Alpha 冲刺Day4
| 这个作业属于哪个课程 | 2601_FZU_SE 软件工程实践 |
|---|---|
| 这个作业要求在哪里 | 团队第四次作业——站立式会议+α 冲刺 |
| 这个作业的目标 | 记录认领归还与消息阶段的六人分工、代码签入、AI 协作和测试结果,串联申请、核验、归还、善意值与站内通知 |
| 其他参考文献 | 《构建之法》第 2 章、第 13 章;《阿里巴巴 Java 开发手册(终极版 v1.3.0)》 |
目录
- 一、阶段目标与总体进展
- 二、站会安排
- 讨论事项
- 三、六人分工、进展与困难
- 四、AI 技术员分工与协作
- 协作过程与任务衔接
- 归还确认与重复结算保护
- 会话参与者与已读归属
- 私信与通知共同写入
- 认领提交与服务端回读
- 私信发送失败保留输入
- 典型协作内容
- 协作体会
- 五、项目燃尽图
- 六、代表性提交与分工关联
- 功能整合进展
- 七、运行与测试
- 运行检查结果
- 问题定位与处理
- 认领与消息回归清单
- 八、阶段小结与后续安排
一、阶段目标与总体进展
D4 以“认领闭环与消息”为阶段目标,承接发布、浏览与详情能力,将用户找到物品后的后续操作接起来:从招领详情发起认领,填写私有核验信息,拾主查看收到的申请并核验交接,确认归还后更新物品状态、记录善意值,并向认领人产生站内通知。匿名会话为双方提供平台内沟通入口,避免直接公开联系方式。
本阶段的重点是让页面操作与业务结果一致。申请成功需要能在列表中重新查到;确认归还需要同时更新认领单、物品、积分流水、事件和通知;消息需要按接收者统计未读,读取后再标记已读。任何一个环节只改变页面而没有落库,都会造成重进后状态丢失,或出现“已归还但没有积分和通知”的不一致。
当前实现沿用原有 21 表和五态认领模型。提交申请进入“等待拾到者确认”,拾主核验并完成交接后调用确认接口,认领单进入 progress=5“已取回”,物品进入 status=3“已归还”,拾主善意值增加 10,认领人收到一条完成通知。中间进度仍保留在模型中,当前流程由确认接口一次推进到完成。
| D4 工作方向 | 六人协作安排 | 仓库成果与当前状态 |
|---|---|---|
| 主流程整合与契约 | 刘伟鑫协调接口、页面和运行环境 | 认领详情、收到的申请、消息与聊天入口进入共同主干,契约和验收记录同步更新 |
| 认领页面与详情入口 | 刘传浩实现交互,许煜煌交叉检查 | 真实申请、私有核验、取回方式、进度回读、拾主确认和匿名联系已接通 |
| 参与者与操作权限 | 许毅君复核身份边界,李明学配合构造请求 | 第三人不能查看核验信息、读取会话或代标已读;写入消息要求校园认证 |
| 归还事务与数据一致性 | 王永臻检查状态、流水、事件与幂等 | 完成归还同事务更新状态、增加善意值并写流水、Outbox 和通知,重复确认不重复计分 |
| 消息与连续回归 | 李明学负责接口和页面对接,许煜煌核对操作路径 | 通知与会话分页、私信发送、已读/未读及首页红点使用真实接口,完成隔离实库 HTTP 检查 |


计划中的“双向确认、取消”与当前契约仍有差异:现版由拾主核验后确认,尚无独立的双方签署状态和取消接口,页面也不提供取消按钮。完成通知目前写给认领人;拾主通过操作结果与进度回读确认完成。本阶段没有把这些差异记为已实现能力。
二、站会安排
| 项目 | 安排 |
|---|---|
| 计划日期 | 2026 年 10 月 26 日 |
| 计划时间 | 16:00—16:15,共 15 分钟 |
| 方式 | 线下会议 |
| 主持人 | 刘伟鑫 |
| 记录人 | 李明学 |
| 参与成员 | 刘伟鑫、刘传浩、许毅君、王永臻、李明学、许煜煌 |
| 会议重点 | 认领状态、核验权限、归还事务、匿名消息、未读口径与多账号回归 |

站会围绕同一条交接路径安排核对:认领人提交后,拾主从哪里看到申请;双方能看到哪些核验信息;归还完成后,状态、善意值和通知分别如何查询。页面侧提供入口和反馈,接口侧明确返回字段,数据侧核对写入结果,回归侧再使用不同身份复验。
讨论事项
- 状态语义先统一。 以当前 DDL 和接口为准,认领进度与物品状态分开表达,不能继续把旧页面中的
progress=3当作归还完成。 - 核验权限由服务端决定。 详情返回
canConfirm与viewerIsOwner,前端据此展示操作;服务端仍验证申请人与拾主身份,第三人访问必须拒绝。 - 一次归还对应一笔结算。 状态、善意值、流水、Outbox 和通知共同提交;顺序重复确认不再次加分,也不新增完成通知。
- 未读来源保持一致。 认领通知与私信通知统一进入
t_message,当前直接统计接收者的未读记录,已读操作限定本人范围。 - 区分自动化与页面验收。 H2、页面源码测试和真实 MySQL/Redis HTTP 检查分别说明覆盖范围,微信真机、完整视觉和更复杂并发继续列入后续检查。
三、六人分工、进展与困难
六人分工围绕“发起申请—权限核验—事务完成—消息回读”展开。刘伟鑫维护整合基线,刘传浩负责认领交互,许毅君负责身份与参与者边界,王永臻负责业务一致性,李明学负责消息及接口回归,许煜煌从多账号操作角度补充交叉检查。
| 成员 | D4 主责及工作安排 | 工作进展 | 问题或困难 | 工作体会与下一步 |
|---|---|---|---|---|
| 刘伟鑫 | 协调认领、详情与消息入口集成,维护联调环境和契约 | 最新认领事务与消息页面合入共同主干,补充接口字段及验收文档;隔离测试服务完成使用后关闭 | 计划、旧页面与最新接口对完成状态和确认方式的描述不一致 | 先统一当前有效规则,再同步页面与记录,继续跟踪双向确认、取消等计划差异;协助工作不另计点 |
| 刘传浩 | T16:认领申请、核验信息、进度与确认交互 | 填写理由、私有细节、取回方式和预约时间;提交期间锁定操作,失败保留输入;支持我的申请、收到的申请及匿名联系 | 重复点击、请求失败、身份切换及返回页面都可能造成状态误判 | 成功后回读真实详情和列表;取消未实现时不显示无效入口,继续补开发者工具连续操作 |
| 许毅君 | T18:本人认领限制、参与者授权和操作边界 | 非参与者无法读取私有核验或会话;仅拾主能确认;会话创建和发送检查校园认证,已读限定接收者 | 页面隐藏按钮无法阻止直接构造请求,匿名沟通也容易误传真实身份字段 | 从服务端身份与资源归属逐层检查,继续核对权限变化、旧会话及跨用户异常场景 |
| 王永臻 | T17:认领归还事务、善意流水、Outbox 与幂等 | 归还完成同步更新两类状态、善意值 +10、流水、事件和通知;同人同物品重复申请受唯一约束限制 | 多表写入需要共同回滚,顺序重试与并发竞争又是不同场景 | 用事务和唯一键保护一致性,复核顺序重放结果,后续继续扩展并发确认与事件消费测试 |
| 李明学 | T19:消息会话、通知、未读/已读接口及页面对接 | 接通会话复用、私信历史与发送、通知分页、已读统计及首页红点;补充消息集成和页面回归 | 未读来源分散会造成计数漂移,分页失败和过时响应会影响消息展示 | 统一从通知记录统计,限定接收者更新;保留失败页重试与请求序号保护,继续检查长会话和刷新体验 |
| 许煜煌 | T20:多账号认领、归还与消息交叉检查 | 使用认领人、拾主和第三人身份验证主流程、越权拒绝、重复确认及消息到达;整理可复测步骤 | 源码用例与真实微信操作之间仍有验证距离,自动化结果不能代替视觉和设备观察 | 按身份、操作、响应和数据库结果整理证据,继续补真机、异常网络和完整页面操作 |
本日按统一台账记账 29 点,刘伟鑫承担集成协调与联调协助,当天分配为 0 点。任务点数沿用原计划,不因补充测试、格式化和文档维护重复记账;各任务中未闭合的验收子项继续保留。
交接时重点核对可观察结果:页面上的“提交成功”应对应一条认领记录,“确认归还”应对应状态与积分流水,“新消息”应对应接收者的未读记录。发现差异后先确认请求身份、资源编号和实现版本,再判断属于接口、页面还是数据问题。
四、AI 技术员分工与协作
AI 技术员围绕契约比较、代码分析、异常用例和材料整理提供辅助。协作输入包括当前源码、21 表定义、两项 D4 提交、测试输出及接口文档。输出需要能够落到具体方法、请求或断言,功能完成情况以实际执行结果为依据。
| AI 角色 | 具体协作任务 | 主要输出 | 成员分工与审核重点 |
|---|---|---|---|
| AI 设计师 | 梳理申请人、拾主和第三人的操作路径,对照五态进度与页面按钮 | 状态与身份对应表、核验入口、通知目标及返回路径 | 刘伟鑫确认当前契约;刘传浩检查交互顺序;许毅君复核谁能看、谁能确认 |
| AI 程序员 | 分析事务边界、会话复用、未读统计、提交锁定和异步结果覆盖 | 接口衔接、参与者检查、消息事务、分页重试和页面状态处理 | 王永臻核对状态与数据写入;李明学检查消息请求;刘传浩检查输入保留和回读 |
| AI 测试员 | 将主流程拆成多身份、重复操作、非法参数和失败恢复场景 | H2 集成用例、页面源码测试、隔离实库 HTTP 脚本与清理步骤 | 许毅君审核越权断言;王永臻审核结算与通知数量;李明学执行回归;许煜煌核对操作含义 |
| AI 文档助手 | 对照计划、提交与测试证据,整理六人分工及当前差异 | 契约更新、验收记录、典型代码、提交关联与燃尽材料 | 刘伟鑫维护版本范围,各模块对应核对技术描述,许煜煌检查材料能否复测 |
协作过程与任务衔接
先比较契约,再接页面。 旧页面曾使用“三态、双方确认”的描述,最新后端按五态实现,由拾主核验后确认完成。AI 辅助列出字段与状态差异,页面改为读取 progressText、canConfirm 和 viewerIsOwner。未实现的取消不再保留可点击按钮,避免界面承诺与接口能力不一致。
把归还拆成一致性检查点。 AI 辅助沿认领单、物品、积分、流水、Outbox 和通知逐项追踪写入。王永臻重点检查事务与唯一约束,回归则对比首次确认和重复确认的最终结果。事件已写入 Outbox 只说明业务事件有持久化记录,不能由此推断后台消费、外部推送与失败重试已经全部完成。
从匿名展示追到服务端授权。 匿名昵称只能减少页面暴露,不能代替参与者检查。许毅君与李明学将会话列表、历史、发送和已读分别检查:即使知道会话编号,第三人也不能读取或修改;拾主主动联系的对象必须确实申请过该物品,不能任意指定用户。
按真实失败设计页面反馈。 AI 测试员使用可控异步响应模拟重复提交、旧列表晚返回、发送失败与追加失败。刘传浩核对输入是否保留,李明学核对重试页码与请求次数,许煜煌检查这些断言是否对应用户能够遇到的现象。测试重点从“方法被调用”推进到“失败后仍能继续操作”。
归还确认与重复结算保护
server/src/main/java/com/shiguang/claim/service/ClaimService.java 在确认接口中先验证拾主身份,再处理完成状态重放:
if (item.userId == null || item.userId != operatorId) {
throw ApiException.forbidden();
}
if (claim.progress != null && claim.progress == PROGRESS_PICKED_UP) {
return new ClaimProgress(PROGRESS_PICKED_UP, progressText(PROGRESS_PICKED_UP));
}
confirm 使用 @Transactional。通过状态校验后,它更新认领单和物品,再增加善意值、写流水、事件及通知;流水的认领唯一约束为重复结算提供另一层保护。已完成请求先返回当前结果,避免顺序重试再次增加积分。现有用例验证了重复确认;更复杂的并发场景仍需专门构造。
会话参与者与已读归属
server/src/main/java/com/shiguang/message/service/MessageService.java 对会话资源执行服务端检查:
private void requireParticipant(Conversation conversation, long userId) {
if (conversation == null) throw ApiException.notFound("会话不存在");
if (!Objects.equals(conversation.userAId, userId)
&& !Objects.equals(conversation.userBId, userId)) throw ApiException.forbidden();
}
已读更新同时限制接收者、未删除和未读状态:
UpdateWrapper<Message> update =
new UpdateWrapper<Message>()
.eq("recipient_id", userId)
.eq("deleted", 0)
.eq("is_read", 0);
会话已读在参与者验证后追加目标会话条件,单条通知已读先核对接收者。重复调用只影响仍未读的本人记录。李明学核对统计结果,许毅君以第三人身份验证访问拒绝,避免一个用户的读取操作改变另一用户的红点。
私信与通知共同写入
同一服务的 send 在事务中锁定会话,确认参与者、可写状态和对方账号后插入私信,再创建接收方通知。以下节选展示通知与会话的关联:
notification.recipientId = peerId;
notification.type = PRIVATE_TYPE;
notification.title = "收到一条匿名私信";
notification.summary = "有新的物品核验消息,点击查看";
notification.targetType = "conversation";
notification.targetId = conversation.id;
notification.isRead = 0;
notification.pushed = 0;
notification.deleted = 0;
notification.bizKey = "private:" + message.id + ":" + peerId;
messages.insert(notification);
通知摘要使用统一提示,私信正文通过受参与者权限保护的历史接口读取。未读数直接查询 t_message,使认领服务生成的完成通知也能进入相同统计。当前没有额外维护 Redis 未读计数副本,减少新旧写入路径不同步带来的计数差异。
认领提交与服务端回读
miniprogram/pages/claim/claim.js 在资格、核验信息和勾选确认通过后锁定提交,成功后读取真实详情:
this.setData({ submitting: true, error: '' });
return auth.ensureLogin().then(() => claimApi.submit({ itemId: this.data.itemId, ...form }))
.then(result => {
this.setData({ claimId: String(result.claimId || result.id) });
this.tip('认领申请已提交');
return this.loadDetail();
}).then(() => this.loadMyClaims(true))
.catch(e => this.setData({ error: e.message || '提交失败,请重试' }))
.then(() => this.setData({ submitting: false }));
提交失败保留理由和私有核验输入,错误直接显示在页面;提交成功后依赖服务端返回的业务编号与进度,不在客户端伪造完成状态。收到的申请使用 role=received 查询,并通过请求序号保护切换后的列表。
私信发送失败保留输入
miniprogram/pages/chat/chat.js 只在发送成功后清理对应输入;若等待期间用户又输入了新内容,不清除新内容:
return auth.ensureLogin().then(() => api.send(this.data.conversationId, { content }))
.then(() => {
if (this.data.content.trim() === content) this.setData({ content: '' });
return this.reload();
}).catch(e => this.setData({ error: e.message || '发送失败,请重试' }))
.then(() => this.setData({ sending: false }));
历史加载成功后再调用会话已读接口;已读失败单独提示,不把成功加载的历史清空。服务端按时间与 ID 倒序分页,页面反转单页后显示,加载更早消息时追加在现有消息前方。
典型协作内容
| 场景 | AI 辅助分析重点 | 人工核对与实际落点 |
|---|---|---|
| 旧进度值被当成完成 | 比较 DDL、后端常量和页面文案 | 页面使用五态返回值,完成认领为 5、物品归还为 3 |
| 拾主找不到认领入口 | 追踪详情、我的申请与物主视角 | 增加“收到的申请”,由本人发布物品关联查询 |
| 知道会话编号即可访问 | 分别检查历史、发送和已读路径 | 三条路径执行参与者验证,第三人请求拒绝 |
| 收到通知却没有未读提示 | 比较私信与认领通知写入源 | 统一从 t_message 按接收者统计,首页读取真实未读 |
| 私信失败后内容丢失 | 比较发送前清空与成功后清空 | 失败保留输入,发送期间防止重复点击 |
| 翻页失败后跳过记录 | 核对成功页码与失败页码 | 消息页保存失败页,重试仍请求该页并保留已有记录 |
协作体会
闭环功能需要跨页面、接口和多张表验证。AI 能帮助快速展开调用关系、识别旧契约和组织失败场景,但“已写代码”与“业务结果一致”之间还需要执行证据。把用户身份、操作前状态和操作后记录一并核对,比单看成功响应更容易发现遗漏。
本阶段也认识到,事务、幂等和通知消费是不同层面的工作。事务保证一组数据库写入共同成功,唯一约束限制重复记录,Outbox 保存待处理事件;完整的异步投递与外部推送仍需要后续消费者和重试验证。文档应准确描述当前做到哪一步。
五、项目燃尽图
本轮总计 162 点,六名成员各 27 点。D4 按统一台账记账 29 点,累计记账 93 点,当前剩余 69 点,与计划线同期剩余点数一致。上一阶段多剩余的 5 点差距已在本日台账中收敛。
| 成员 | 本人初始点数 | 本日记账点数 | 累计记账 | 当前剩余 |
|---|---|---|---|---|
| 刘伟鑫 | 27 | 0 | 13 | 14 |
| 刘传浩 | 27 | 4 | 20 | 7 |
| 许毅君 | 27 | 4 | 16 | 11 |
| 王永臻 | 27 | 9 | 18 | 9 |
| 李明学 | 27 | 7 | 12 | 15 |
| 许煜煌 | 27 | 5 | 14 | 13 |
| 合计 | 162 | 29 | 93 | 69 |

| 时间 | 初始 | 10/23 | 10/24 | 10/25 | 10/26 | 10/27 | 10/28 | 10/29 |
|---|---|---|---|---|---|---|---|---|
| 计划剩余点数 | 162 | 139 | 116 | 93 | 69 | 46 | 23 | 0 |
| 实际记账剩余 | 162 | 144 | 126 | 98 | 69 | — | — | — |
点数沿用统一任务表,表示任务组的记账进展。计划中的独立双向确认、取消、真机连续交互及部分并发异常尚未闭合,因此曲线追平计划不等于全部验收项目完成。后续优先补齐已有主流程的操作证据,再继续扩展新功能。
六、代表性提交与分工关联
| 成员 | 对应分工 | 代表性提交 | 提交内容 |
|---|---|---|---|
| 刘伟鑫 | 主流程整合、契约与验收材料 | 0037719 | 整合认领与匿名消息流程,同步接口契约及 D4 验收记录 |
| 刘传浩 | 认领页面、收到的申请与匿名联系 | 0037719 | 连接真实申请和进度,补齐核验、提交锁定、拾主确认及聊天入口 |
| 许毅君 | 核验参与者、确认权限与状态边界 | 67a4cd9 | 认领详情限定参与者,确认归还验证拾主身份,重复申请受约束保护 |
| 王永臻 | 归还事务、善意流水、事件与幂等 | 67a4cd9 | 完成认领及归还状态变更,同事务写善意值、流水、Outbox 和完成通知 |
| 李明学 | 消息接口、未读/已读及页面对接 | 0037719 | 实现匿名会话、历史发送、通知分页、归属校验与真实未读统计 |
| 许煜煌 | 多账号交叉检查、异常回归与验收材料 | 0037719 | 补充页面回归和隔离实库 HTTP 脚本,记录重复确认、越权拒绝及通知检查 |
功能整合进展
- 详情到认领形成真实入口。 招领单先检查当前可认领状态,寻物单通过匿名联系提供线索,避免进入错误表单。
- 申请与拾主视角衔接。 认领人可查看我的申请,拾主可查看收到的申请,核验与确认权限由后端返回并再次校验。
- 归还结果可核对。 状态、善意值、流水、事件和通知进入同一事务,测试对照首次操作与重复请求结果。
- 消息读取形成连续链路。 通知可以跳到认领、物品或会话,历史成功加载后标记已读,首页红点来自真实统计。
- 失败仍可继续操作。 申请和私信保留失败输入,分页支持原页重试,过时列表结果不覆盖当前筛选。
七、运行与测试
运行检查结果
本轮覆盖默认后端测试、页面源码回归,以及 MySQL 8 隔离库与 Redis 上的真实 HTTP 主流程。实库检查使用本机 3307 的 shiguang_c_d1_test、6379 的 Redis 和临时 8082 后端,身份为 local 模拟登录,会话使用随机测试前缀;不以这些结果替代真实微信登录或真机交互验收。
| 检查项 | 已有结果 | 验证范围 |
|---|---|---|
| 认领与重复申请 | 首次成功,同人同物品再次提交被拒绝,不新增第二条记录 | 真实 HTTP、H2 集成 |
| 收到的申请与核验 | 拾主能查询本人收到的申请,第三人读取私有核验被拒绝 | 真实 HTTP、H2 集成 |
| 归还与善意值 | 确认后物品状态为 3、认领进度为 5、拾主 +10;重复确认不重复计分 | 真实 HTTP、H2 集成 |
| 完成通知 | 认领人完成通知仅一条,可读取并重复标记已读 | 真实 HTTP、H2 集成 |
| 匿名会话与越权 | 双方复用同一会话,第三人读取或标记会话已读被拒绝 | 真实 HTTP、H2 集成 |
| 私信与内容限制 | 私信生成接收者未读;明确联系方式命中返回 40902,拒绝消息不落库 | 真实 HTTP、H2 集成;规则不覆盖所有隐晦表达 |
| 未认证与非法参数 | 未认证写入拒绝,非法会话参数返回 40001,超长消息和负数已读参数拒绝 | 新增消息集成用例 |
| 前端回归 | D1/D2 17 项、D3 13 项、D4 15 项,共 45 项通过 | 页面源码与可控异步响应,包含提交锁定、权限、分页、私信顺序和失败保留输入 |
| 后端回归 | 首轮全量 81 项,无失败,2 项外部存储条件检查跳过;补充边界后消息集成 6 项单独复测通过 | 默认 H2、测试会话及相关服务用例;增加用例后测试集合为 82 项 |
| 实库主流程 | 20 项 HTTP 检查全部通过,测试创建的数据已清理 | 独立 MySQL、Redis、模拟身份与临时后端 |
| 格式和数据一致性 | Java 格式、19 表实体与 Mapper、schema 一致性及 DDL 12 项检查通过;30 个小程序 JS、15 个 JSON 语法通过 | 静态检查与生成一致性;本次 37 个提交文件换行检查通过 |
测试结束后关闭临时后端与临时 MySQL,保留原 Redis 服务。清理仅针对脚本创建的用户、物品及关联业务记录,不清空团队库,不执行 Redis FLUSHDB。
问题定位与处理
确认方式和进度值存在旧描述。 旧接口封装曾按双方确认后 progress=3 解释完成,与当前后端和 DDL 不一致。页面及契约改为五态,确认由拾主执行并推进到 5;计划中的双向签署与取消继续保留为差异项,不增加无效操作。
拾主缺少查看申请的入口。 只有“我的申请”时,发布者无法从正常路径找到别人提交的核验信息。新增 role=received,查询仅关联本人发布且未删除的物品,列表不直接公开核验细节,进入详情后再执行参与者校验。
未读统计与业务通知可能脱节。 如果只在私信发送时维护另一个计数,认领事务新增的完成通知就可能遗漏。当前统一查询接收者的未读通知,标记已读时也使用相同归属条件,使消息页与首页共享数据来源。
匿名消息不能只靠页面隐藏身份。 会话历史、发送和已读分别增加参与者检查;创建会话限制联系人与物品关系。消息响应使用匿名昵称,新增消息相关 ID 以字符串返回,避免直接向页面传递不必要的个人资料。
异步失败需要保留上下文。 申请失败保留表单,发送失败保留正文;消息追加失败保留已有列表与失败页。可控测试复验重复点击、旧请求晚返回和错误后重试,避免仅依靠正常网络下的一次操作判断完成。
现有验收仍有边界。 聊天通过刷新或重新进入更新,尚无 WebSocket;站内信落库不等于微信订阅推送;联系方式识别为基础规则。当前未补 D4 真机及完整视觉截图,更复杂并发、失败注入和外部事件消费仍需后续验证。
认领与消息回归清单
| 类别 | 检查内容 | 判定方法 |
|---|---|---|
| 申请与资格 | 本人发布物品、不可认领状态、未登录、未认证、重复申请 | HTTP 状态、错误码与认领记录数对照 |
| 核验与授权 | 申请人、拾主、第三人查看详情和执行确认 | 返回字段、canConfirm 与服务端拒绝结果核对 |
| 归还与一致性 | 两类状态、+10、流水、Outbox、完成通知和重复确认 | 操作前后数据快照及关联记录核对 |
| 会话与私信 | 会话复用、任意联系人、第三人访问、只读状态、超长内容 | 参与者校验、唯一关系、响应与落库结果核对 |
| 通知与未读 | 接收者隔离、分类计数、单条/会话已读、重复已读 | t_message 与列表、首页红点结果对照 |
| 页面与恢复 | 重复提交、输入保留、列表切换、历史顺序、分页失败和重试 | 页面源码断言,后续补开发者工具与真机连续操作 |
| 后续验收 | 并发确认、事务失败注入、外部消费、隐晦联系方式及设备布局 | 专项测试、真实运行和页面观察分别记录 |
八、阶段小结与后续安排
D4 将“找到物品”继续推进到申请、核验、归还和消息回读。真实接口连接了认领与拾主视角,归还操作同步记录状态、善意值及通知,匿名会话提供平台内沟通入口。按台账本日记账 29 点,累计 93 点,剩余 69 点,与计划线一致。
本阶段的主要体会是,跨模块功能需要共享同一套状态与归属规则。前端反馈、数据库记录和消息统计相互对应,闭环才有可验证的结果。自动化已经覆盖主要正常路径与若干异常分支,后续仍要补设备操作、并发竞争和计划差异,避免点数推进快于验收证据。
- 刘伟鑫继续维护共同基线与接口契约,协调计划差异和新阶段接口依赖,组织主流程连续操作复测。
- 刘传浩补认领、返回、刷新和聊天的开发者工具检查,核对布局及错误恢复,再衔接匹配与个人中心页面。
- 许毅君继续复核跨用户访问、认证变化、旧会话与公开字段,避免新增入口扩大权限边界。
- 王永臻扩展归还并发与事务异常验证,检查事件消费依赖,继续推进匹配与善意值数据衔接。
- 李明学维护消息与未读回归,补长会话分页、重复已读和异常网络检查,核对后续概览接口的数据来源。
- 许煜煌补多账号真实页面与设备证据,记录重复申请、归还回读和通知跳转的连续操作,完善演示步骤。
相关推荐
蓝桥杯Day1冲刺:从A+B问题掌握竞赛编程基本功与避坑指南
在算法竞赛和编程能力提升中,扎实的基本功是构建一切复杂解决方案的基石。其核心原理在于通过标准化的输入输出处理、严谨的边界条件判断以及对时间与空间复杂度的初步分析,形成稳定可靠的代码框架。掌握这些基础能力的技术价值在于,它能有效避免在简单题目上因非技术性失误而丢分,从而将宝贵的精力集中于攻克算法难点。无论是应对多组数据测试、精确解析输入格式,还是严格匹配输出要求,这些场景都是竞赛编程和日常工程实践中频繁遇到的通用问题。本文以蓝桥杯等算法竞赛中常见的**A+B问题变体**和**日期计算模拟**为例,深入剖析如何
考研复试day28冲刺指南:四大主战场与避坑策略
在知识密集型选拔中,复试是对考生综合素养的二次考核,其本质是考察知识深度、逻辑表达与临场应变力的融合。从基础概念到输出表达,复习逻辑需由“输入”转向“输出”,强调知识内化后的有效呈现。掌握科学备考方法,能显著提升关键节点的表现力与稳定性。这一规律广泛应用于研究生入学面试、求职综合评估及各类半结构化考核场景。考研复试冲刺期如何高效分配精力?本文以“复试day28”为抓手,梳理简历材料、专业知识、英语能力、综合表现四大主战场的实操准备,并结合模拟面试与常见问题应对,帮助考生规避经典误区,稳健走好最后一程。
2022年计算机二级考试C语言程序设计冲刺题及答案
题库来源:优题宝公众号 2022年计算机二级考试C语言程序设计冲刺题及答案,由优题宝公众号根据最新计算机二级考试C语言程序设计大纲与历年计算机二级考试C语言程序设计真题汇总编写,包含计算机二级考试C语言程序设计常考重点题型与知识点,有助于考生复习备考计算机二级考试C语言程序设计,取得好成绩。 1、一个队列的入队序列是a,b,c,d,则出队序列是( A ) A.a,b,c,d B.a,c,b,d C.d,c,b,a D.a,c,b,d 2、设变量均已正确定义,若要通过;语句...
蓝桥杯赛前三天冲刺指南:心态调整、三日计划与实战技巧
算法竞赛是检验编程与逻辑思维能力的有效方式,其核心在于将基础数据结构与算法知识应用于解决复杂问题。理解搜索、动态规划、贪心等核心算法原理,是提升解题能力的关键。这些技术不仅能锻炼思维,更在软件开发、人工智能等领域有广泛应用。针对蓝桥杯这类赛事,高效的赛前冲刺策略至关重要。本文聚焦于赛前最后三天的黄金窗口,提供了一套从全真模拟、精准复习到状态调整的完整计划,并融入了**动态规划**和**代码模板**等高频考点与实用技巧,旨在帮助选手将已有知识体系转化为稳定的赛场得分能力,实现最佳临场发挥。
备战金九银十,软件测试,面试大复盘,9月初准备冲刺字节跳动
前言 软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作系统的使用、软件测试框架性的问题,测试环境搭建问题、当然还有一些自动化测试和性能测试的问题。测试工程师的面试题,基本上都是大同小异的,面试的核心主要在于框架模块(一到两年工作经验)。 今天这篇帖子主要讲解之前面试自己面试过程中或者周围人面试过程中经常被问到且比较经典的面试题,一家之言,如有异


