一、本周工作

本周是项目后端主导联调阶段,核心目标是完成前后端接口全链路打通、数据一致性校验与功能闭环验证。结合分工,我聚焦亮点分析、错误高亮、个性化学习页面与后端接口的深度联调,解决跨端数据适配、状态同步、异常兜底三大核心问题,确保所有功能 100% 可用、数据精准一致,为后续前端优化筑牢基础。本周不再是单纯写页面,而是深度参与前后端协同,理解接口规范、数据流转逻辑,完成从 “页面实现” 到 “功能闭环” 的过渡。

二、核心工作进展

1. 亮点分析模块:全量接口联调,修复数据适配问题

本周核心是将亮点模块与后端 /api/essay/evaluate 评估接口完成全链路对接,解决静态数据转真实接口后的字段不匹配、格式不一致、空值兜底问题。

(1)接口字段适配与数据映射

后端返回亮点数据包含highlightType、startOffset、endOffset、content、explanation五个关键字段,我在前端统一数据映射逻辑,确保字段精准对应,避免渲染报错。核心映射逻辑如下:

function normalizeHighlight(raw: any): Highlight {
  return {
    id: raw.id || Date.now().toString(), // 生成唯一ID
    type: raw.highlightType || "vocab", // 默认词汇类亮点
    startOffset: Number(raw.startOffset) || 0, // 转数字兜底
    endOffset: Number(raw.endOffset) || 0,
    content: raw.content || "", // 空文本兜底
    explanation: raw.explanation || "暂无赏析说明"
  };
}

这段代码解决了后端字段大小写不一致、数值类型异常、空值缺失问题,保证前端渲染稳定性,避免因接口偶发异常导致页面崩溃。

(2)高亮渲染逻辑优化

联调中发现,后端返回的字符偏移量存在换行符、特殊字符计算偏差,导致亮点错位。我优化EssayViewer.vue渲染逻辑,新增偏移量校正,确保精准匹配 DOM 文本:

function correctOffset(textNodes: Text[], rawOffset: number): number {
  let corrected = rawOffset;
  textNodes.forEach(node => {
    const text = node.textContent || "";
    // 校正换行、制表符等特殊字符偏移
    corrected -= (text.match(/[\n\t]/g) || []).length;
  });
  return corrected;
}

通过校正,亮点标注精准匹配原文位置,与后端评估结果完全一致,实现 “后端判定、前端精准呈现” 的闭环。

2. 错误高亮系统:联调校验,保障数据一致性

重点完成错误高亮模块与后端错误数据接口联调,校验错误类型、位置、解释全链路一致性,同时修复多错误叠加时的渲染冲突问题。

(1)错误数据一致性校验

逐篇测试不同作文的错误返回结果,重点校验:

  • 语法、用词、句法、逻辑四类错误分类精准度
  • 错误位置偏移量无偏差
  • 错误解释、修改建议完整无缺失 联调中发现 2 处字段遗漏问题,同步反馈后端修复,确保前后端错误数据一致。
(2)多错误叠加渲染优化

同一位置存在多个错误时,原逻辑会出现高亮重叠、样式错乱。我优化渲染优先级,语法错误 > 用词错误 > 句法错误 > 逻辑错误,避免样式冲突:

.highlight--grammar { background: #ffebee; border-bottom: 2px solid #f44336; }
.highlight--vocab { background: #fff3e0; border-bottom: 2px solid #ff9800; }
.highlight--syntax { background: #e3f2fd; border-bottom: 2px solid #2196f3; }
.highlight--logic { background: #e8f5e9; border-bottom: 2px solid #4caf50; }

通过差异化样式 + 优先级控制,多错误叠加时清晰区分、互不遮挡,提升用户阅读体验。

3. 个性化学习页面:接口全通,完成闭环验证

完成 ProfilePage(个人画像)、NotebookPage(错题本)与后端/api/profile、/api/notebook接口全链路联调,实现数据实时同步、异常兜底、状态联动。

(1)个人画像数据联动

ProfilePage 对接后端用户画像接口,实时获取平均分、错误分布、学习路径数据,修复历史分数数组空值、错误占比计算偏差问题。核心数据请求逻辑:

async function fetchProfile() {
  profileLoading.value = true;
  errorMessage.value = "";
  try {
    const { data } = await http.get<ProfileResponse>("/api/profile");
    profile.value = data;
  } catch (error) {
    profile.value = null;
    errorMessage.value = normalizeHttpError(error, "获取画像失败");
  } finally {
    profileLoaded.value = true;
    profileLoading.value = false;
  }
}

新增异常兜底,网络中断、接口报错时友好提示,避免页面空白,保障联调稳定性。

(2)错题本全链路闭环

NotebookPage 完成错题列表查询、筛选、详情查看、标记已复习全接口联调,核心是状态实时同步:标记复习后,前端本地更新 + 后端同步,无需重新请求全量数据,提升响应速度。

async markReviewed(id: string) {
  this.reviewActionState = "submitting";
  this.errorMessage = "";
  try {
    await http.post(`/api/notebook/items/${id}/review`);
    // 本地更新状态,无需重请求
    this.items = updateReviewedItem(this.items, id);
    this.summary = buildSummary(this.items, this.summary);
    this.reviewActionState = "success";
  } catch (error) {
    this.reviewActionState = "error";
    this.errorMessage = normalizeHttpError(error, "标记复习失败");
  }
}

联调验证:新增作文→生成错误→加入错题本→标记复习→数据同步,全流程无卡顿、无数据不一致,功能闭环完成。

三、核心问题与解决方案

1. 接口超时 / 网络异常

问题:后端大模型评估耗时较长,前端请求超时,页面报错。

解决:复用http.ts全局请求配置,延长超时时间至 120 秒,新增网络状态监听,离线时提示恢复网络,避免用户困惑:

export const http = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL ?? "http://localhost:8000",
  timeout: 120000, // 适配大模型长耗时
  withCredentials: true
});

2. 数据格式不统一

问题:不同接口返回字段大小写、数据类型不一致,前端渲染报错。

解决:统一assessmentStore、notebookStore数据归一化函数,强制字段映射、类型转换、空值兜底,适配后端多格式返回,提升鲁棒性。

3. 状态同步延迟

问题:标记错题复习、更新画像后,页面数据不实时更新。

解决:使用 Pinia 状态管理,修改数据后同步更新 store 状态,依赖计算属性自动渲染,无需手动刷新,保证状态实时联动。

四、本周工作成果

  1. 亮点分析模块:接口全通、数据精准、渲染无错位,赏析完整
  2. 错误高亮系统:四类错误分类精准、位置无偏差、多错误叠加样式清晰
  3. 个性化学习页面:画像、错题本全接口联调,数据实时同步、功能闭环
  4. 异常兜底:超时、断网、接口报错均友好提示,无页面崩溃
  5. 数据一致性:所有模块前后端数据匹配,符合联调要求

五、本周感悟

本周参与前后端联调,真正理解接口规范、数据流转、异常兜底对系统稳定性的重要性。一个字段大小写、一个空值、一次超时,都可能导致整个功能瘫痪,严谨性是联调阶段的核心。同时,状态管理的价值在本周体现得十分重要。Pinia统一管理全局数据,避免组件间数据传递混乱,联调时快速定位数据问题,大幅提升协同效率。联调不仅是对接接口,更是理解整个系统的业务逻辑,为后续优化打下坚实基础。

Logo

一站式 AI 云服务平台

更多推荐