跳到内容

PC 页面预览

受众:开发者 摘要:PC 电脑端视图:门户 / 账号 / 用户中心 / CMS / Blog / Forum / Mall / 购物车 / 结算。

本页归档 PC 用户端工程接入说明、接口 contract、页面截图和页面清单。前端聚合构建、截图资源目录和通用规则见 前端工程

页面截图 / 页面清单

PC 完整页面完成后,桌面全屏截图统一放在 docs/zh-CN/assets/frontend/pc/,并在本节引用。截图必须覆盖完整浏览器视口;页面可滚动时优先提供 fullPage 全页长图,不提交局部组件或裁剪后的卡片截图。响应式差异明显时,可以同时补充移动端截图;需要登录态或后端数据的页面可使用联调环境生成截图,但文档必须说明当前后端/API 缺口。

本页所有页面所属端均为 PC。页面条目使用“页面名 + 截图 + 关键说明”的纵向写法,适合手机、平板和桌面阅读。

PC 用户端文案默认使用面向普通用户的状态语义:公开资料、通知详情、付费解锁、Passkey、微信绑定、支付方式和 Web3 支付参数等异步结果缺失时展示“待确认 / 暂未获取到 / 已加载 / 已同步”,不把“待返回 / 未返回 / 已返回”这类接口口径直接暴露给用户。

PC 首页

PC 首页
  • 路由路径/
  • 当前完成状态:已完成门户式首屏、频道导航、搜索入口、会员服务入口、公告和快捷服务降级展示
  • 需要主分支补齐的后端/API 事项:CMS 首页运营内容、公告、推荐文章、热门帖子和精选商品聚合 API
  • 后续可优化点:接入真实运营位、个性化推荐、热榜和首屏性能指标

登录

PC 登录页面
  • 路由路径/login
  • 当前完成状态:已完成账号密码、手机号验证码、邮箱验证码登录入口和注册 / 找回密码跳转;手机号验证码登录已提供国家 / 地区选择器并透传 countryCode / region;登录页会根据 Auth capabilities 展示图形、滑动、旋转或拖动验证码控件,校验通过后再提交原登录请求
  • 需要主分支补齐的后端/API 事项:OAuth / Telegram / Web3 等 PC 第三方登录展示元数据和回调体验可继续补齐
  • 后续可优化点:接入第三方登录按钮和登录失败分级提示

注册

PC 注册页面
  • 路由路径/register
  • 当前完成状态:已完成账号、昵称、邮箱、手机号、密码、确认密码、短信 / 邮箱验证码和注册提交入口,并接入 GET /api/v1/auth/capabilitiesregister.password.enabled 开关与 passwordPolicy 元数据;手机号注册已提供国家 / 地区选择器并透传 countryCode / region;后端关闭账号密码注册时,登录页隐藏创建账号入口,注册页禁用提交并显示暂未开放提示
  • 需要主分支补齐的后端/API 事项:无阻塞;可继续补齐密码策略、协议链接、风控验证码和注册频控提示元数据
  • 后续可优化点:接入协议确认、密码强度提示、验证码倒计时服务端频控和注册成功跳转

找回密码

PC 找回密码页面
  • 路由路径/forgot-password
  • 当前完成状态:已完成手机号 / 邮箱找回、验证码发送 / 校验、新密码确认和密码重置提交入口;手机号找回密码已提供国家 / 地区选择器并透传 countryCode / region
  • 需要主分支补齐的后端/API 事项:无阻塞;可继续补齐密码策略、风控验证码、重置频控和账号安全提示元数据
  • 后续可优化点:接入密码强度提示、验证码失败分级提示、重置成功自动跳转和安全通知联动

帮助中心

PC 帮助中心页面
  • 路由路径/help
  • 当前完成状态:已完成账号、内容、交易和通知常见问题静态帮助、分类筛选和入口聚合
  • 需要主分支补齐的后端/API 事项:帮助中心 CMS 分类、FAQ 搜索、客服入口和帮助内容发布 API
  • 后续可优化点:接入真实 FAQ 搜索、在线客服、问题反馈和热门问题统计

意见反馈

PC 意见反馈页面
  • 路由路径/feedback
  • 当前完成状态:已接入 Conversation 客服会话消息流;登录后反馈会发送到当前用户专属客服会话,并展示最近客服反馈消息、未读状态、刷新入口和会话详情跳转;未登录时只保存当前浏览器本机记录,不伪造后端提交成功
  • 需要主分支补齐的后端/API 事项:独立反馈工单状态机、附件上传凭证、处理进度和通知提醒后续由审批 / 工单底座统一扩展
  • 后续可优化点:接入附件凭证、独立工单详情、处理进度时间线和客服回复通知

服务条款

PC 服务条款页面
  • 路由路径/terms
  • 当前完成状态:已完成静态服务条款页面和页脚入口
  • 需要主分支补齐的后端/API 事项:条款版本、发布时间和 CMS / 法务内容 contract
  • 后续可优化点:接入版本记录、变更高亮、多语言和用户确认记录

隐私政策

PC 隐私政策页面
  • 路由路径/privacy
  • 当前完成状态:已完成静态隐私政策页面和页脚入口
  • 需要主分支补齐的后端/API 事项:隐私政策版本、发布时间、数据导出和注销流程 contract
  • 后续可优化点:接入隐私偏好、数据导出、账号注销和版本确认记录

全站搜索

PC 全站搜索页面
  • 路由路径/search
  • 当前完成状态:已完成全站搜索页、顶部搜索框跳转、范围切换和 CMS / Blog / Forum / Mall 聚合结果降级展示
  • 需要主分支补齐的后端/API 事项:Mall 搜索接口、服务端统一搜索聚合、热词、纠错和搜索统计 API
  • 后续可优化点:接入真实全站排序、热词推荐、搜索历史、分页和结果高亮

用户中心

PC 用户中心页面
  • 路由路径/account
  • 当前完成状态:已完成未登录提示、账号概览、未读消息、在线设备、资料状态、用户服务闭环卡片和资料、权限菜单、会话、通知、收藏、订单、地址、售后等服务宫格入口
  • 需要主分支补齐的后端/API 事项:交易统计、内容统计、权限摘要和售后摘要 API 仍需继续确认
  • 后续可优化点:登录后展示更细的订单状态摘要、最近内容、权限变更提醒和会员权益

资料设置

PC 资料设置页面
  • 路由路径/account/profile
  • 当前完成状态:已完成资料表单、头像上传、当前用户偏好、密码修改、手机 / 邮箱绑定和绑定状态展示;语言选择读取站点公开信息中的支持语言列表,默认覆盖简体中文 / 繁體中文 / English;手机号绑定已提供国家 / 地区选择器并透传 countryCode / region;接口不可用时保留本地降级
  • 需要主分支补齐的后端/API 事项:头像裁剪、文件存储配置和 profile / 当前用户头像同步语义可继续增强
  • 后续可优化点:接入头像裁剪、上传进度、绑定验证码频控提示和 profile / 当前用户头像同步提示

账号安全

PC 账号安全页面
  • 路由路径/account/security
  • 当前完成状态:已完成手机 / 邮箱绑定、登录会话、通知偏好、安全建议、当前用户角色 / 权限 / 菜单自助概览和权限详情入口
  • 需要主分支补齐的后端/API 事项:登录会话设备扩展字段、绑定状态字段、通知偏好字段字典和用户侧菜单策略仍需继续确认
  • 后续可优化点:接入风险设备、近期安全事件、账号保护建议、异常登录提醒和权限变更提示

权限菜单

PC 权限菜单页面
  • 路由路径/account/access
  • 当前完成状态:已完成当前用户角色、权限和菜单详情页,支持关键词搜索、权限类型筛选、菜单可见范围筛选和菜单树展示
  • 需要主分支补齐的后端/API 事项:用户侧菜单策略、权限类型字典、角色 / 权限变更通知和菜单可见范围语义仍需继续确认
  • 后续可优化点:接入权限变更历史、菜单来源说明、角色有效期和安全审计提醒

登录会话

PC 登录会话页面
  • 路由路径/account/sessions
  • 当前完成状态:已按 AuthSessionVO 展示当前设备、设备标识、创建时间和剩余有效期;按设备退出 / 踢下线遇到 operation-unsupported 时会停用对应按钮
  • 需要主分支补齐的后端/API 事项:IP、浏览器、系统、地理位置等扩展设备元信息;JWT 模式下会话生命周期操作是否支持由后端能力决定
  • 后续可优化点:接入真实设备名称、风险提示、最近活跃时间、当前设备保护和批量退出其他设备

消息通知

PC 消息通知页面
  • 路由路径/account/notifications
  • 当前完成状态:已完成未读 / 已读筛选、分类筛选、可见页选择、批量已读 / 未读、全部已读、详情面板和附件入口降级;分类筛选会按当前页消息的 messageTypetemplate、正式 module / event / targetRoute / targetType 字段、旧 attributes、跳转目标和正文线索归入平台、账号关系、会话、商城、内容互动和营销,不等待后端新增筛选参数;支持 ?id=?notificationId=?messageId= 直达站内信详情;已消费 WebSocket notification.message.creatednotification.message.readnotification.message.unreadnotification.messages.deleted 和未读数事件,通知中心会先在本地即时插入 / 更新 / 删除条目并同步未读数,再静默刷新接口校准,顶部实时 toast 可直达对应站内信;从 Mall 订单、支付结果和售后详情进入时会识别 scene=mallorderIdorderNoafterSaleIdtype 上下文,展示交易通知追踪卡片,并在后端暂未提供交易筛选接口时用前端匹配和本地兜底消息承接;通知卡片和详情面板已兼容解析 targetRoutetargetUrlactionUrljumpUrlroutetargetTypetargetIdbusinessTypeorderIdafterSaleIdconversationIdconversationMessageIdproductIdarticleIdtopicIdcontentId 等跳转线索,可识别时展示“去查看”站内业务入口;targetRoute 会从跨端语义路由映射到 PC 实际页面,例如 /mall/orders/{id}/account/orders/{id}/forum/topics/{id}/forum/{id}/blog/articles/{id}/blog/{id};会话通知如果携带消息编号,会跳转到 /account/conversations/{id}?messageId=...;用户关系站内信会识别 iam.user-relation.friend-requestedfriend-acceptedfriend-rejectedfollowed,跳转到好友中心对应分组处理,不把关系事件 attributes 中的内部用户编号直接拼进正文
  • 需要主分支补齐的后端/API 事项:通知实时事件、用户关系站内信和关系事件 attributes 已存在;通知附件访问路径、消息类型字典、批量请求体语义、稳定消息跳转字段、交易消息 scene/orderId/afterSaleId/messageType 筛选和交易事件可靠投递仍需主分支确认
  • 后续可优化点:接入后端分类筛选参数、跨页分类统计、批量分页选择、订单 / 售后一键定位、更多业务域语义路由映射、用户关系通知分类字典、通知声音 / 桌面提醒开关和后端统一跳转 target schema

会话消息

PC 会话消息页面
  • 路由路径/account/conversations
  • 当前完成状态:已接入当前用户会话列表、会话未读数、搜索、未读 / 私聊 / 群聊 / 客服聊天室 / 归档 / 已隐藏筛选、当前筛选未读会话批量已读、置顶优先排序、归档状态展示、会话隐藏 / 恢复显示、公开聊天室列表、创建聊天室、加入聊天室、聊天室推荐 / 已加入 / 有未读 / 最近活跃排序、已读状态同步、用户中心 / 顶部未读联动和 WebSocket conversation.message / conversation.message.deleted 事件静默刷新;创建公开聊天室已对齐主线 roomKey 可选公开短标识,公开房间卡片会展示 conversationKey 中的房间口令、推荐原因、未读数和活跃时间,支持复制口令、复制邀请链接,并可通过 ?roomKey= 预填房间筛选;会话隐藏使用 /api/v1/conversations/{id}/settingshidden 设置,已隐藏筛选会向当前用户会话列表追加 hidden=true 查询,接口不可用时继续展示本机隐藏记录降级;conversation.typing 输入状态只更新会话提示,不触发整页刷新或全局 toast;消息删除多端同步提示不再误报为新消息,也不直接展示内部会话编号;会话状态同步支持 WebSocket 在线时直发、不可用时 REST 接口兜底;顶部未读入口会带 tab=unread 跳转到未读筛选;发起私聊和创建群聊入口均进入好友中心选人,不让普通用户填写内部用户 ID;接口不可用或未登录时展示本地会话降级数据,搜索和筛选仍可在降级数据上生效
  • 需要主分支补齐的后端/API 事项:当前用户会话列表、隐藏会话查询、未读数、创建私聊 / 群聊 / 公开聊天室、会话隐藏设置、送达状态、已读状态、成员在线状态、输入状态和最近私聊 peerUser 快照接口已存在;仍需补齐跨设备恢复入口、群聊邀请权限、客服会话分配、多端状态可靠性语义和稳定通知跳转 target schema
  • 后续可优化点:接入用户名搜索、客服队列、会话分类、跨分页批量已读、跨设备隐藏记录恢复和附件上传进度

好友中心

PC 好友中心页面
  • 路由路径/account/friends
  • 当前完成状态:已接入 PC 好友中心真实关系列表和关系操作,承接好友、关注、粉丝、收到 / 发出的好友申请、拉黑用户、公开用户搜索、新的朋友、发起私聊、创建群聊、最近联系人和公开聊天室;页面读取 /api/v1/iam/users/me/friends/following/followers/friend-requests/**/blocked-users/api/v1/iam/users/public-search,并可在用户可理解资料卡上发起好友申请、同意 / 拒绝申请、关注 / 取消关注、删除好友、拉黑 / 解除拉黑和发起私聊,不让普通用户填写内部用户 ID;创建群聊可从好友、关注、粉丝、公开搜索结果和带 peerUser 快照的最近私聊联系人勾选成员,并调用 /api/v1/conversations/groups;最近联系人优先读取当前用户会话列表,公开聊天室读取 /api/v1/conversations/rooms,接口不可用时保留只读降级,不伪造搜索添加、关系写入或群聊创建成功;用户中心、会话中心和用户关系站内信已接入好友中心入口,通知跳转可通过 ?tab=received|friends|sent|followers&source=notification 切换分组,并在当前页包含对应用户时高亮联系人卡片
  • 需要主分支补齐的后端/API 事项:公开用户搜索、公开资料卡、当前用户视角关系状态、好友 / 关注 / 粉丝 / 拉黑 / 好友申请列表、关系写操作、最近私聊 peerUser 快照和群聊创建接口已存在;仍需补齐好友备注 / 分组、二维码 / 邀请码和群聊邀请权限等扩展能力
  • 后续可优化点:好友备注 / 分组、在线状态摘要、按好友分组选人、好友资料卡增强、通知分页定位和好友申请提醒分类

会话详情

PC 会话详情页面
  • 路由路径/account/conversations/preview
  • 当前完成状态:已接入会话详情、归档只读状态、成员列表、成员在线状态、群主从好友 / 最近私聊 / 公开用户搜索添加成员、消息列表、发送文本消息、图片 / 文件附件消息、纯附件消息、附件上传进度、附件预览 / 打开、回复消息、引用消息摘要与原文高亮定位、发送中 / 发送失败本地乐观状态、失败原因展示、失败消息重新发送 / 移除提示、当前已加载消息搜索、只看我的消息、本地输入草稿、加载更早消息、撤回自己消息、仅从我的记录删除单条消息和当前筛选所选消息、删除多端同步提示、送达状态、已读状态、成员 lastReadAt / lastReadMessageId 和消息 delivered/read/readCount/unreadCount 回执提示、新消息定位工具条、置顶、免打扰、离开会话、15 秒轻量轮询、WebSocket conversation.message / conversation.message.deleted 事件静默刷新、WebSocket conversation.typing 正在输入提示、WebSocket 状态直发与 REST 兜底和本机会话备注兜底;收到 conversation.message 时会优先使用事件中的 contentcontentTypeattachmentssender 快照即时插入当前时间线,再静默刷新接口校准;公开聊天室详情会展示房间口令并支持复制邀请链接;成员列表已兼容 member.user 快照展示昵称、账号和头像,缺少用户快照时以“会话成员 / 资料待返回”降级,不再把内部用户编号直接展示给普通用户;添加群聊成员会先整理当前用户好友和最近私聊联系人,再保留公开用户搜索、关系状态和候选选择,不要求普通用户填写内部用户 ID;消息列表已兼容 message.sender 快照展示发送人昵称并纳入当前消息搜索,回复卡片展示被引用消息的发送人和摘要,点击可清空筛选并高亮原文,原文未加载时提示继续加载更早消息,不直接展示内部消息编号;附件发送和展示兼容主线 attachments 正式字段,发送附件时展示上传百分比、文件大小进度、服务端确认状态和上传失败原因,正文为空时不再用文件名伪造消息正文,并保留旧 attributes.attachment 降级读取;发送接口失败时会把后端返回 message / statusMessage 提取为本地失败卡片原因,重试时清除旧失败说明;通知目标、公开个人主页和公开聊天室入口可进入对应会话;从通知进入时支持 ?messageId= / ?focusMessageId= 定位并高亮消息,如果目标消息不在当前第一页,会自动通过 beforeMessageId 最多加载 5 页更早历史再定位,仍找不到时保留友好提示和手动加载入口;预览路由不再请求无效后端 ID
  • 需要主分支补齐的后端/API 事项:会话成员、输入状态、送达状态、已读状态、公开用户搜索、好友 / 关注列表、公开聊天室列表 / 创建 / 加入接口、附件消息字段、纯附件消息、单条消息仅自己可见删除、批量删除、删除多端同步事件、beforeMessageId 更早消息分页和实时消息渲染字段已存在;会话设置接口支持 displayName 入参,但当前会话 VO 暂未返回 displayName,PC 端先用本地持久化兜底;仍需主分支补齐群聊邀请权限、客服分配、多端状态可靠性语义、通知跳转 target schema、按目标消息 ID 服务端直达定位能力和清空当前会话个人记录
  • 后续可优化点:客服状态、按好友分组添加成员、聊天室成员在线状态和聊天室推荐排序

通知偏好

PC 通知偏好页面
  • 路由路径/account/notification-preferences
  • 当前完成状态:已对齐主线通知偏好正式字段 databaseEnabledmailEnabledsmsEnabledwebsocketEnabledsystemEnabledaccountEnabledtodoEnabledblogEnabledforumEnabledmallEnabledmarketingEnabled,保留旧 emailEnabled / orderEnabled 响应兼容但保存时只提交正式字段;页面已完成投递策略摘要、站内信 / 邮件 / 短信 / 实时推送、系统 / 账号关系 / 待办 / 博客 / 社区 / 商城 / 营销分类、快捷预设、变更检测和保存入口;PC 本机实时提醒偏好支持顶部浮层、声音提醒、浏览器桌面通知授权、免打扰时段、试播提醒和本地持久化;实时推送关闭时会提示本机提醒只能保留本地设置
  • 需要主分支补齐的后端/API 事项:后端已按通知偏好过滤 database / websocket 和 account / mall 等分类投递;通知偏好字段字典、营销退订规则、多端同步语义,以及声音提醒、桌面提醒、免打扰时段等用户偏好保存字段仍需继续确认;当前 PC 先用浏览器本地持久化降级
  • 后续可优化点:接入更细的频道频率、通知声音方案、系统通知授权引导、跨设备同步、偏好变更审计提示和后端返回的可用渠道 / 可用分类元数据

我的内容

PC 我的内容页面
  • 路由路径/account/content
  • 当前完成状态:已完成 Blog 文章、文章评论、Forum 主题和回复聚合、关键词搜索、类型筛选、Blog 文章状态筛选、数量概览、Blog / Forum 编辑入口、文章 / 评论 / 主题 / 回复删除操作,并展示 Blog 推荐、草稿、审核、下线和处理说明
  • 需要主分支补齐的后端/API 事项:Blog 当前用户详情、审核记录和 updatedAt 冲突判断已补齐;Forum 回复所属主题、keyword 和分页语义已补齐
  • 后续可优化点:接入批量管理、服务端草稿版本、内容统计和高级筛选

草稿箱

PC 草稿箱页面
  • 路由路径/account/drafts
  • 当前完成状态:已完成当前浏览器 Blog / Forum 本地草稿、Blog 云端草稿列表、继续编辑、删除、来源区分和状态统计
  • 需要主分支补齐的后端/API 事项:Blog 当前用户草稿详情、审核原因、更新时间和跨设备冲突策略已补齐;Forum 云端草稿 API 仍需主分支补齐
  • 后续可优化点:接入草稿版本、自动合并、跨端冲突提示和发布后清理

我的收藏

PC 我的收藏页面
  • 路由路径/account/favorites
  • 当前完成状态:已完成 Blog / Forum / Mall 收藏聚合、关键词搜索、分类筛选、数量概览和三类收藏取消操作
  • 需要主分支补齐的后端/API 事项:跨模块 keyword / 分页 / 排序和收藏状态回显语义仍需确认
  • 后续可优化点:接入收藏分组、价格 / 回复状态变化提醒、批量取消收藏和高级搜索

浏览历史

PC 浏览历史页面
  • 路由路径/account/history
  • 当前完成状态:已完成 CMS / Blog / Forum / Mall 浏览历史记录、账号级同步、类型筛选和清空入口
  • 需要主分支补齐的后端/API 事项:用户行为统计、推荐训练数据和隐私策略 API
  • 后续可优化点:接入隐私开关、批量删除和推荐联动

个人主页

PC 个人主页页面
  • 路由路径/u/preview
  • 当前完成状态:已完成公开资料、当前用户视角关系状态、统计、Blog 作者文章、Forum 作者主题和公开动态聚合;公开动态已展示 Blog 已发布文章、Forum 公开主题、CMS 已发布内容和 Mall 已发布商品评价来源、动态发生时间和真实打开入口,缺少入口时展示不可打开状态,接口失败或无数据时展示真实错误和空态;公开资料头部展示用户名 / 公开主页标识,不再把内部用户 ID 当作普通用户可见文案;公开主页已接入好友申请、同意 / 拒绝、关注 / 取消关注、删除好友、拉黑 / 解除拉黑和私信入口,按钮会根据登录态、自己、好友、申请、关注和拉黑状态自动显隐,动作成功后刷新公开资料关系状态;各分区独立降级,不因单个接口失败回退整页
  • 需要主分支补齐的后端/API 事项:公开资料卡、关系状态、关系写操作和 direct conversation contract 已存在;仍需细化公开可见性、统计口径、好友备注 / 分组、二维码 / 邀请码、群聊邀请权限和好友申请通知触达 API
  • 后续可优化点:接入真实头像裁剪、好友资料卡增强、内容热度排序、时间线筛选、访客视角 SEO 和关系动作后的通知反馈

CMS 内容运营

PC CMS 内容运营页面
  • 路由路径/cms
  • 当前完成状态:已接入 CMS 页面、公告、内容块和专题公开列表 contract,接口不可用时展示本地降级内容
  • 需要主分支补齐的后端/API 事项:轮播图、导航、广告位与首页运营位的组合策略、真实 ID 预渲染清单或部署层 SPA fallback
  • 后续可优化点:接入真实频道导航、专题聚合、SEO 元信息和公告运营样式

CMS 内容详情

PC CMS 内容详情页面
  • 路由路径/cms/preview
  • 当前完成状态:已接入页面、公告、内容块和专题详情 contract,preview 静态路由保留本地降级内容
  • 需要主分支补齐的后端/API 事项:真实动态 ID 预渲染清单或部署层 SPA fallback;轮播图 / 导航 / 广告位详情语义
  • 后续可优化点:接入富文本渲染、SEO head、专题模板、分享卡片和公告详情样式

Blog 文章列表

PC Blog 文章列表页面
  • 路由路径/blog
  • 当前完成状态:已接入 Blog 文章列表、分类、标签、搜索、轻量分页和推荐文章过滤 contract,接口不可用时展示本地降级内容
  • 需要主分支补齐的后端/API 事项:热门榜、作者榜、总页数和首页聚合运营策略
  • 后续可优化点:接入标签筛选、完整服务端分页、文章封面、热榜和作者卡片

Blog 文章详情

PC Blog 文章详情页面
  • 路由路径/blog/preview
  • 当前完成状态:已接入文章详情路径、推荐 / 状态元信息、Markdown 内容预览、评论列表、评论提交 / 删除、点赞 / 取消点赞、收藏 / 取消收藏用户侧 contract,保留作者侧栏、作者公开主页入口、标签和分享阅读设置
  • 需要主分支补齐的后端/API 事项:互动状态回显、相关推荐、真实内容路径预渲染清单或部署层 SPA fallback
  • 后续可优化点:接入目录锚点、评论分页、相关推荐和互动状态

Blog 写文章

PC Blog 写文章页面
  • 路由路径/blog/write
  • 当前完成状态:已完成 PC 前端表单、Markdown / 富文本编辑器、自动本地草稿、Blog 云端草稿回填、发布 / 草稿状态、分类下拉、标签快捷选择、分享路径、片段插入、字数统计、发布预览、文章创建和 query 编辑提交
  • 需要主分支补齐的后端/API 事项:当前用户文件上传、Blog 封面上传、草稿详情、审核原因和 updatedAt 已补齐;作者权限回显和草稿详情可见性仍需联调
  • 后续可优化点:接入定时发布、草稿版本、预览分享和图片附件体验

Forum 主题列表

PC Forum 主题列表页面
  • 路由路径/forum
  • 当前完成状态:已接入 Forum 板块列表和主题列表只读接口,支持关键词、板块筛选和轻量分页,接口不可用时展示本地降级内容
  • 需要主分支补齐的后端/API 事项:热门主题、用户公开主题、总页数和服务端排序 API;互动状态回显见详情页缺口
  • 后续可优化点:接入更完整的板块导航、热榜、置顶 / 精华优先级、最后回复用户和完整分页体验

Forum 主题详情

PC Forum 主题详情页面
  • 路由路径/forum/preview
  • 当前完成状态:已接入 Forum 主题详情、Markdown 内容预览、回复列表、回帖提交、回复编辑、主题点赞 / 取消点赞、主题收藏 / 取消收藏、主题 / 回复举报原因、回复点赞 / 取消点赞、回复删除和回复举报,并支持主题 / 回复互动状态回显和按钮状态切换;主题作者和回复作者有公开作者编号时跳转公开主页,没有昵称时不再展示内部作者 ID
  • 需要主分支补齐的后端/API 事项:真实内容路径预渲染清单或部署层 SPA fallback、liked / favorited / reported / reportStatus 字段稳定 contract、版规校验、附件和通知联动仍需继续确认
  • 后续可优化点:接入真实回复分页、楼层定位、图片附件、引用回复、完整版规提示和通知联动

Forum 发起主题

PC Forum 发起主题页面
  • 路由路径/forum/write
  • 当前完成状态:已完成 PC 发帖 / 编辑表单、Markdown / 富文本编辑器、query 编辑模式、待编辑主题回填、自动本地草稿、板块必选、摘要、快捷话题标签、片段插入、基础统计和主题预览;话题标签会随 extraJson.topicTags 提交,便于主线后续稳定论坛话题 contract
  • 需要主分支补齐的后端/API 事项:版规校验、审核原因 / 状态、通知联动、图片附件上传和独立话题标签字段 / 聚合页仍需继续补齐
  • 后续可优化点:接入完整版规提示、图片附件、话题聚合页和发帖成功跳转

Mall 商品列表

PC Mall 商品列表页面
  • 路由路径/mall
  • 当前完成状态:已接入多级商品分类、商品列表、搜索筛选、价格区间、排序、分页和收藏写操作;分类筛选展示完整层级路径,选择父级分类时会展示该父级及全部子级商品;接口不可用时展示本地商品卡片降级
  • 需要主分支补齐的后端/API 事项:品牌筛选、促销标签、推荐、动态库存和价格策略 API 仍需继续确认
  • 后续可优化点:接入品牌筛选、促销标签、商品推荐、收藏状态回显和服务端总页数分页器

Mall 商品详情

PC Mall 商品详情页面
  • 路由路径/mall/preview
  • 当前完成状态:已接入商品详情字段映射,展示主图 / 相册、原价、价格、库存、销量、Markdown / 富文本详情预览、收藏 / 取消收藏、直购和购物车入口;购买区新增库存校验、价格锁定、运费 / 优惠、发票 / 售后交易确认卡片,库存不足或数量超过库存时前端先阻断提交
  • 需要主分支补齐的后端/API 事项:商品详情后台富文本编写入口、SKU、收藏状态、动态库存、促销、运费模板、发票能力、购物车写入批量语义和评价列表 API
  • 后续可优化点:接入真实 SKU 选择、收藏状态回显、促销优惠、运费模板、库存校验、发票策略和支付跳转

购物车

PC 购物车页面
  • 路由路径/mall/cart
  • 当前完成状态:已按主线 GET/POST/PUT/DELETE /api/v1/mall/cart/items 对齐购物车条目、数量调整、单项选中、单项移除、已选金额汇总和结算 cartItemIds 传参,并接入 PUT /api/v1/mall/cart/items/batch 批量全选 / 取消全选和 DELETE /api/v1/mall/cart/items 批量移除已选;购物车条目新增库存、价格和结算状态标签,结算摘要只带可结算项进入结算页,接口失败时展示本地降级
  • 需要主分支补齐的后端/API 事项:库存校验、价格变动、失效商品、运费优惠预估、结算项服务端复核和批量操作审计 / 幂等语义仍需继续确认
  • 后续可优化点:接入真实 SKU、促销、失效商品、价格变更提示、跨端购物车同步和批量操作二次确认

结算确认

PC 结算确认页面
  • 路由路径/mall/checkout
  • 当前完成状态:已按主线 addressId + cartItemIds + couponCode + idempotencyKey + remark 下单 DTO 对齐地址选择、默认地址、购物车商品摘要、优惠码、订单备注、交易保障说明、防重复提交和下单入口;商品直购通过先加入购物车再创建订单兼容;发票申请支持类型、抬头、企业税号和接收邮箱,订单创建成功后优先调用 POST /api/v1/mall/orders/{id}/invoice,接口异常时仍在备注中保留发票线索
  • 需要主分支补齐的后端/API 事项:直购专用下单 DTO、独立结算预估 / 运费模板明细、发票文件生成 / 下载权限、发票通知联动和真实支付跳转仍需继续联调
  • 后续可优化点:接入优惠券选择器、地址联动运费模板、支付方式选择、下单结果页、支付跳转和发票历史

支付结果

PC 支付结果页面
  • 路由路径/mall/payment-result
  • 当前完成状态:已接入支付回跳 query 解析、POST /api/v1/mall/orders/{id}/payment/sync 状态同步、订单详情降级刷新、处理中自动刷新倒计时、订单详情和继续逛逛入口,并新增订单详情、物流 / 发票、售后服务和交易通知后续引导卡片,交易通知可带支付结果、失败原因和订单上下文进入消息通知页;统一收银台会展示可用支付资产、应付金额、定价金额、汇率和 quote 有效期,切换支付资产或报价过期后需要刷新报价,提交支付时携带 quoteNopayAssetCode;支付失败、取消或处理中时优先读取 GET /api/v1/mall/payment-methods 展示用户可见支付方式、描述、Logo / 图标、推荐 / 默认 / 不可用状态,仅在后端标记 defaultSelected=true 且支持 PC 环境时自动选中,没有默认配置时保持未选择;重新支付调用 POST /api/v1/mall/orders/{id}/pay,提交用户选择的支付方式 code 和 PC 环境属性,回跳地址按相对部署目录生成;支付结果页会兼容读取回跳 query、MallPaymentIntent 根字段和 payload 中的二维码、收银台链接、支付单号、失败原因、有效期和渠道响应信息,并以支付请求信息卡片集中展示,未返回时显示友好占位
  • 需要主分支补齐的后端/API 事项:真实支付渠道二维码 / 支付页 URL、回跳参数、失败原因拆分、超时提示、支付通知可靠性、物流 / 发票事件和交易事件通知联动仍需继续联调
  • 后续可优化点:接入真实支付渠道轮询详情、失败原因标准枚举、收银台过期重开、支付完成通知、支付后履约事件跳转和交易通知跳转

我的评价

PC 我的评价页面
  • 路由路径/account/reviews
  • 当前完成状态:已完成评价列表、关键词搜索、状态筛选、平均评分、商家回复展示、订单选择器、订单商品选择器、评价提交和图片 URL contract;用户不再手动填写订单或商品内部标识
  • 需要主分支补齐的后端/API 事项:已评价状态、keyword、追评、图片、商家回复、审核状态和权限语义仍需主分支确认;订单商品评价已按已发货 / 已完成状态接入
  • 后续可优化点:接入可评价商品筛选、图片上传、追评、评价修改和审核原因

收货地址

PC 收货地址页面
  • 路由路径/account/addresses
  • 当前完成状态:已按主线地址 DTO 对齐 recipientNamedetail、默认地址、地址新增 / 编辑 / 删除和 PUT /api/v1/mall/addresses/{id}/default;接口成功返回空列表时展示真实空状态
  • 需要主分支补齐的后端/API 事项:省市区字典、地址字段更细校验、地址用户归属审计和权限语义仍需持续联调
  • 后续可优化点:接入省市区字典、地址识别、地址标签和风险提示

订单管理

PC 订单管理页面
  • 路由路径/account/orders
  • 当前完成状态:已按主线订单列表接口对齐状态码 10/20/90、订单号、金额、商品数量、创建时间和详情入口;待支付筛选使用后端 status,关键词保留客户端过滤;列表卡片新增履约、物流、发票、退款状态标签和“履约中 / 售后退款”概览
  • 需要主分支补齐的后端/API 事项:服务端 keyword 搜索、售后状态聚合、物流字段、发票字段、退款字段和更完整分页语义仍需主分支补齐
  • 后续可优化点:接入状态时间线、支付倒计时、取消原因、真实物流、发票下载、退款明细和高级筛选

订单详情

PC 订单详情页面
  • 路由路径/account/orders/preview
  • 当前完成状态:已按主线订单详情、发起支付、支付同步、取消订单、确认收货、用户侧订单时间线和售后基础接口对齐状态码、商品明细、根级收货地址、用户可见支付方式、支付流水、取消原因 / 时间、shippingStatus、物流公司 / 单号、发票申请 / 开票字段;订单状态优先读取 GET /api/v1/mall/orders/{id}/timeline 展示支付、物流、发票和售后节点,接口不可用时继续按订单详情字段合成五段式时间线;履约卡片展示物流、发票、退款和交易通知,交易通知可带 scene=mall、订单和支付上下文进入消息通知页,已发货订单可调用 POST /api/v1/mall/orders/{id}/receipt/confirm 确认收货;订单页新增售后与退款汇总,优先从 GET /api/v1/mall/me/after-sales 聚合当前订单售后单,接口不可用时使用订单时间线售后节点降级;交易凭证区展示支付凭证、发票文件、物流证明和退款凭证,URL 优先读取订单字段,其次兼容时间线 attributes 中的凭证链接;商品明细可直接进入评价页或带 orderId/orderItemId 进入完整售后页,售后页再通过 GET /api/v1/mall/orders/{id}/after-sale-items 下拉选择可申请商品,不再让用户手填订单明细标识;发起支付时读取 GET /api/v1/mall/payment-methods,按后端排序、enabledsupportedEnvironmentsdefaultSelected 生成支付方式下拉与卡片,不向普通用户暴露 gateway / provider 等内部对接命名;提交时仍兼容后端现有 gateway/provider 字段并附带 paymentMethod / paymentEnvironment=pc
  • 需要主分支补齐的后端/API 事项paymentReceiptUrllogisticsTraceUrldeliveryProofUrlrefundReceiptUrl 的稳定字段或时间线 attributes 输出、凭证 fileId / 下载权限 / 过期策略,真实支付渠道回跳语义、退款到账详情、物流轨迹节点、交易通知筛选和通知联动仍需主分支补齐 / 联调
  • 后续可优化点:接入真实物流轨迹、签收证明、发票 PDF 下载、支付凭证下载、退款到账证明、售后客服会话、时间线节点跳转和交易通知一键定位

售后服务

PC 售后服务页面
  • 路由路径/account/after-sales
  • 当前完成状态:已对齐主线售后申请、我的售后、详情和售后商品选择 contract,支持订单选择器、售后类型、订单商品选择、申请金额、凭证链接、证明文件上传、关键词搜索和状态筛选;从订单详情带入 orderId/orderItemId 后可加载订单商品快照并自动定位对应商品,订单明细标识和证明文件标识仅作为内部提交字段,不在用户侧展示或要求手动输入;售后列表新增退款、退货、退货物流和凭证数量状态标签
  • 需要主分支补齐的后端/API 事项:附件访问权限与生命周期、keyword 语义、真实退款 / 退货执行、后台处理流转、客服协商和通知联动仍需后续扩展
  • 后续可优化点:接入退款进度、退货物流节点、客服消息、撤销申请、订单状态过滤和售后通知跳转

售后详情

PC 售后详情页面
  • 路由路径/account/after-sales/preview
  • 当前完成状态:已对齐 MallAfterSaleVO,展示售后单号、订单明细、类型、金额、凭证链接 / 证明文件、凭证审核状态、退款状态、退货物流、处理备注、拒绝原因和六段式处理进度;处理进度区可带售后和订单上下文进入消息通知页;接口异常时继续展示本地降级数据
  • 需要主分支补齐的后端/API 事项:真实退款 / 退货执行、客服协商记录、凭证文件访问权限 / 过期策略、交易通知筛选和通知联动仍需后续扩展
  • 后续可优化点:接入售后客服会话、退款到账详情、物流轨迹节点、凭证文件在线预览和售后消息一键定位

工程与接入说明

PC 电脑端用户视图源码规划放在:

text
views/pc

当前采用 Nuxt 4 + Vue 3 + TypeScript。views/pc 不等同后台管理界面,不使用 vue-pure-admin 或 SoybeanAdmin;这些后台模板继续只用于后台管理端。PC 用户端面向普通用户、访客和会员,优先支撑 SEO、首屏性能、内容分享、静态生成和混合渲染。

本地预览:

bash
cd views/pc
pnpm install
pnpm dev

默认端口为 8860,开发环境通过 NUXT_PUBLIC_API_BASE_URL=/api 调用后端,并使用 NUXT_API_PROXY_TARGET=http://127.0.0.1:8080 做本地代理。生产构建不绑定固定 /pc/ base path;构建脚本会把 Nuxt 静态 HTML 中的资源和站内链接改写为相对路径,适合 Maven 复制到 public/pc 后再整体部署到任意 Nginx 站点目录或子目录。业务 API 不跟随页面子目录改写:默认 /api 会在浏览器端解析为当前 origin 下的绝对 URL,因此页面部署在 /pc//customer/portal/ 等目录时,请求仍访问站点根路径 /api/**;生产 Nginx 需要在同一站点根路径代理 /api/,并让 /api/ws 通过同一个 location 完成 WebSocket Upgrade;也可以把 NUXT_PUBLIC_API_BASE_URLNUXT_PUBLIC_WEBSOCKET_URL 配置为完整后端域名。PC 会话实时刷新默认连接 NUXT_PUBLIC_WEBSOCKET_URL=/api/ws,如 WebSocket 与 PC 静态站点不同域,可显式配置完整 ws:// / wss:// 地址。

views/pc/.env.example 提供本地配置起点,可复制为 .env 后按实际后端端口调整。

构建:

bash
cd views/pc
pnpm build

也可以通过 Maven 构建模块执行:

bash
./mvnw -pl spring-open-views/spring-open-view-pc package -DskipTests

spring-open-view-pc 会使用 spring-open-views/pom.xml 统一固定的 Node.js 24.16.0,并通过 Maven 插件默认下载 pnpm 11.0.0;本机直接执行前端命令时 pnpm 只要求 >=11。构建会执行 pnpm install --frozen-lockfilepnpm build,再把 Nuxt 静态产物 .output/public 复制到 public/pcpnpm build 会在 nuxt generate 后执行路径相对化脚本,覆盖 _nuxt、payload、站内链接、favicon、logo 和 i18n 消息资源,并自动运行 pnpm smoke:relative 检查固定根路径和固定 /pc/ 前缀,因此 public/pc 内部不要求部署在固定 /pc/ 前缀下。public/pc 是构建产物,不进入 Git。

Maven 构建后可用普通静态服务器预览:

bash
python3 -m http.server 4186 --directory public

然后访问 http://127.0.0.1:4186/pc/。基础 smoke 可检查 /pc//pc/login//pc/forgot-password//pc/search//pc/account/profile//pc/account/sessions//pc/account/notifications//pc/account/conversations//pc/account/conversations/preview//pc/account/notification-preferences//pc/account/content//pc/account/reviews//pc/account/addresses//pc/account/orders/preview//pc/account/after-sales//pc/account/after-sales/preview//pc/cms//pc/cms/preview//pc/blog/preview//pc/blog/write//pc/forum/write//pc/u/preview//pc/mall//pc/mall/preview//pc/mall/cart//pc/mall/checkout/ 和 Nuxt 静态资源路径是否返回 200。如果要模拟实际 Nginx 子目录部署,可把 public/pc 整体复制到更深目录后访问对应路径;页面应继续通过 ../_nuxt/*../../_nuxt/* 等相对路径加载资源。Nginx 根目录和子目录部署示例放在 views/pc/deploy/nginx-relative.conf;动态详情页或未预渲染 ID 刷新时,需要让对应 location 使用 try_files 回退到当前部署目录的 index.html

当前第一阶段已提供基础布局、首页、登录、注册、用户中心、个人主页公开聚合页、全站搜索页、帮助中心、账号资料 / 好友中心 / 会话 / 消息通知 / 通知偏好子页面,以及 CMS、Blog、Forum、Mall 入口页和详情页。PC 端界面按国内常见门户 / 内容站结构组织:顶部细条、品牌搜索区、频道导航、首页 Banner + 公告 + 频道卡片 + 内容分栏,登录 / 注册 / 找回密码使用左右分屏账号入口,CMS / Blog / Forum / Mall 入口和全站搜索使用列表主区 + 侧栏状态区,用户中心使用左侧账号摘要和右侧服务宫格。请求封装默认处理项目 Result<T>、Bearer token、本地 token 存储、Accept-LanguageX-Device: pc/api 基础路径,并在浏览器端把根相对 API base 转为当前 origin 下的绝对 URL,避免静态部署目录把请求拼成 /pc/api/**。客户端启动时会根据本地 token 尝试恢复当前用户;token 失效时自动清理本地登录态。PC 登录页读取外部身份 provider descriptor,支持 OAuth / 企业 OIDC 授权码、Telegram Login Widget、钱包签名、LDAP / AD 目录密码和 SAML 断言提示;通用外部凭证提交走 /api/v1/auth/identity/providers/{code}/login。PC 端会读取站点公开信息接口填充全局 head、默认布局品牌名 / Logo、页脚和首页主文案,接口不可用时使用本地默认站点信息。CMS 入口页和详情页已接入 CMS 第一阶段公开只读接口;Blog 列表、分类、标签和详情已接入 Blog 第一阶段公开只读接口;Forum 板块、主题列表、主题详情和回复列表已接入 Forum 第一阶段公开只读接口;Mall 商品分类、商品列表、商品详情和商品收藏接口已接入,入口页展示商品卡片、价格、库存、销量、收藏和分页,商品详情页识别主图、相册、原价、库存和销量字段;全站搜索页会聚合 CMS、Blog、Forum 和 Mall 用户侧 contract;会话页已接入当前用户会话和消息 contract,好友中心使用会话 / 公开聊天室 contract 做只读降级。接口暂不可用时继续展示本地降级数据,不影响静态首屏。

PC 登录页默认不显示样例账号按钮。仅当本地开发同时配置 NUXT_PUBLIC_ENABLE_SAMPLE_ACCOUNT=trueNUXT_PUBLIC_SAMPLE_ACCOUNT_USERNAMENUXT_PUBLIC_SAMPLE_ACCOUNT_PASSWORD 时才展示入口;该按钮只负责快速填表,不代表框架内置固定测试账号。使用前应先通过注册、安装后的后台创建用户或外部身份登录准备对应账号;生产环境不要开启。

当前 PC 视图的 API contract 入口:

text
POST /api/v1/auth/login
POST /api/v1/auth/logout
GET /api/v1/auth/me
GET /api/v1/auth/capabilities
POST /api/v1/auth/register
GET /api/v1/auth/sessions
POST /api/v1/auth/sessions/{device}/logout
POST /api/v1/auth/sessions/{device}/kickout
POST /api/v1/auth/verify/sms-codes
POST /api/v1/auth/verify/sms-codes/check
POST /api/v1/auth/login/sms
POST /api/v1/auth/verify/email-codes
POST /api/v1/auth/verify/email-codes/check
POST /api/v1/auth/login/email
POST /api/v1/auth/password/reset
GET /api/v1/auth/identity/providers
POST /api/v1/auth/oauth/{provider}/authorize
POST /api/v1/auth/oauth/{provider}/login
POST /api/v1/auth/identity/providers/{code}/login
POST /api/v1/auth/wallet/challenge
POST /api/v1/auth/wallet/login
GET /api/v1/site
GET /api/v1/iam/users/me/profile
PUT /api/v1/iam/users/me/profile
POST /api/v1/iam/users/me/avatar
PUT /api/v1/iam/users/me/username
PUT /api/v1/iam/users/me/password
GET /api/v1/iam/users/me/bindings
PUT /api/v1/iam/users/me/mobile
PUT /api/v1/iam/users/me/email
GET /api/v1/iam/users/me/roles
GET /api/v1/iam/users/me/permissions
GET /api/v1/iam/users/me/menus
GET /api/v1/iam/users/me/preferences
PUT /api/v1/iam/users/me/preferences
GET /api/v1/iam/users/{userId}/public-profile
GET /api/v1/iam/users/{userId}/activities?page=&size=
GET /api/v1/notifications/inbox?page=&size=
GET /api/v1/notifications/inbox/unread-count
GET /api/v1/notifications/inbox/{id}
GET /api/v1/notifications/inbox/{id}/attachments
PUT /api/v1/notifications/inbox/{id}/read
PUT /api/v1/notifications/inbox/{id}/unread
PUT /api/v1/notifications/inbox/read-batch
PUT /api/v1/notifications/inbox/unread-batch
PUT /api/v1/notifications/inbox/read-all
DELETE /api/v1/notifications/inbox/{id}
DELETE /api/v1/notifications/inbox
GET /api/v1/notifications/preferences
PUT /api/v1/notifications/preferences
GET /api/v1/conversations?page=&size=&keyword=&conversationType=&unreadOnly=
GET /api/v1/conversations/unread-count
POST /api/v1/conversations/direct
POST /api/v1/conversations/groups
GET /api/v1/conversations/rooms?page=&size=&keyword=
POST /api/v1/conversations/rooms
GET /api/v1/conversations/{id}
GET /api/v1/conversations/{id}/messages?page=&size=&beforeMessageId=
POST /api/v1/conversations/{id}/messages
GET /api/v1/conversations/{id}/members
POST /api/v1/conversations/{id}/join
POST /api/v1/conversations/{id}/members
DELETE /api/v1/conversations/{id}/members/{userId}
PUT /api/v1/conversations/{id}/settings
PUT /api/v1/conversations/{id}/messages/{messageId}/withdraw
DELETE /api/v1/conversations/{id}/messages/{messageId}
DELETE /api/v1/conversations/{id}/messages
POST /api/v1/conversations/{id}/typing
POST /api/v1/conversations/{id}/messages/ack-delivered
POST /api/v1/conversations/{id}/messages/ack-read
DELETE /api/v1/conversations/{id}
GET /api/v1/cms/channels?page=&size=&keyword=&parentId=&status=
GET /api/v1/cms/pages?page=&size=&keyword=&parentId=&status=
GET /api/v1/cms/pages/{id}
GET /api/v1/cms/announcements?page=&size=&keyword=&parentId=&status=
GET /api/v1/cms/announcements/{id}
GET /api/v1/cms/banners?page=&size=&keyword=&parentId=&status=
GET /api/v1/cms/navigations?page=&size=&keyword=&parentId=&status=
GET /api/v1/cms/blocks?page=&size=&keyword=&parentId=&status=
GET /api/v1/cms/blocks/{id}
GET /api/v1/cms/topics?page=&size=&keyword=&parentId=&status=
GET /api/v1/cms/topics/{id}
GET /api/v1/cms/promo-slots?page=&size=&keyword=&parentId=&status=
GET /api/v1/blog/categories
GET /api/v1/blog/tags
GET /api/v1/blog/articles?page=&size=&keyword=&categoryCode=&tagCode=
GET /api/v1/blog/articles/{id}
GET /api/v1/blog/articles/slug/{slug}
GET /api/v1/blog/authors/{userId}/articles?page=&size=
GET /api/v1/blog/categories/{code}/articles?page=&size=&keyword=
GET /api/v1/blog/tags/{code}/articles?page=&size=&keyword=
GET /api/v1/blog/authors/{userId}
POST /api/v1/blog/articles
GET /api/v1/blog/me/articles?page=&size=&status=
PUT /api/v1/blog/articles/{id}
DELETE /api/v1/blog/articles/{id}
POST /api/v1/blog/articles/{id}/likes
DELETE /api/v1/blog/articles/{id}/likes
POST /api/v1/blog/articles/{id}/favorites
DELETE /api/v1/blog/articles/{id}/favorites
POST /api/v1/blog/articles/{id}/comments
GET /api/v1/blog/me/favorites?page=&size=
GET /api/v1/forum/boards?page=&size=&keyword=&status=
GET /api/v1/forum/boards/{id}
GET /api/v1/forum/boards/{id}/topics?page=&size=&keyword=&status=
GET /api/v1/forum/topics?page=&size=&keyword=&boardId=&authorId=&status=
GET /api/v1/forum/topics/{id}
GET /api/v1/forum/topics/{id}/replies?page=&size=&authorId=&status=
POST /api/v1/forum/topics
PUT /api/v1/forum/topics/{id}
DELETE /api/v1/forum/topics/{id}
GET /api/v1/forum/me/topics?page=&size=
GET /api/v1/forum/me/replies?page=&size=
POST /api/v1/forum/topics/{id}/likes
DELETE /api/v1/forum/topics/{id}/likes
POST /api/v1/forum/topics/{id}/favorites
DELETE /api/v1/forum/topics/{id}/favorites
POST /api/v1/forum/topics/{id}/replies
PUT /api/v1/forum/replies/{id}
DELETE /api/v1/forum/replies/{id}
POST /api/v1/forum/replies/{id}/likes
DELETE /api/v1/forum/replies/{id}/likes
POST /api/v1/forum/topics/{id}/reports
POST /api/v1/forum/replies/{id}/reports
GET /api/v1/forum/me/favorites?page=&size=
GET /api/v1/mall/categories
GET /api/v1/mall/products?page=&size=&keyword=&categoryId=&minPrice=&maxPrice=&sort=
GET /api/v1/mall/products/{id}
POST /api/v1/mall/products/{id}/favorites
DELETE /api/v1/mall/products/{id}/favorites
GET /api/v1/mall/products/{id}/reviews?page=&size=
GET /api/v1/mall/me/favorites?page=&size=
GET /api/v1/mall/me/reviews?page=&size=
POST /api/v1/mall/reviews
POST /api/v1/mall/cart/items
GET /api/v1/mall/cart/items
PUT /api/v1/mall/cart/items/{id}
PUT /api/v1/mall/cart/items/batch
DELETE /api/v1/mall/cart/items/{id}
DELETE /api/v1/mall/cart/items
GET /api/v1/mall/addresses
POST /api/v1/mall/addresses
PUT /api/v1/mall/addresses/{id}
PUT /api/v1/mall/addresses/{id}/default
DELETE /api/v1/mall/addresses/{id}
POST /api/v1/mall/orders
GET /api/v1/mall/orders?page=&size=
GET /api/v1/mall/orders/{id}
GET /api/v1/mall/payment-methods
POST /api/v1/mall/orders/{id}/pay
POST /api/v1/mall/orders/{id}/payment/sync
POST /api/v1/mall/orders/{id}/cancel
POST /api/v1/mall/orders/{id}/receipt/confirm
GET /api/v1/mall/orders/{id}/after-sale-items
POST /api/v1/mall/orders/{id}/after-sales
GET /api/v1/mall/me/after-sales?page=&size=
GET /api/v1/mall/after-sales/{id}

其中 auth 登录、退出、当前用户、注册、公开能力和找回密码接口沿用统一账号体系;登录页已接入账号密码、手机号验证码和邮箱验证码三种模式,手机号验证码登录、手机号注册、手机号找回密码和当前用户手机号绑定均提供国家 / 地区选择器,并向后端透传 countryCode / region。验证码模式均发送 scene=login,登录提交对应标识、codescene=logindevice=pc,发送成功后按钮进入 60 秒本地倒计时。图形、滑动、旋转和拖动验证码由 GET /api/v1/auth/capabilities 控制展示,登录页先调用对应 challenge / check 接口完成挑战校验,再提交原登录请求;关闭验证码开关后页面不渲染控件也不拦截登录。注册入口读取 GET /api/v1/auth/capabilitiesregister.password.enabledpasswordPolicyusernameChangePolicy,后端明确关闭账号密码注册时,登录页隐藏创建账号入口,注册页禁用提交并展示暂未开放提示;能力接口不可用时保留本地注册入口并以后端提交结果为准。注册页展示当前密码策略、确认密码输入,并提交 confirmPassword 与后端策略校验对齐;找回密码页已接入 POST /api/v1/auth/password/reset。登录会话页已按 AuthSessionVO 对齐 devicedeviceIdcurrenttimeoutSecondscreateTime 字段;按设备退出 / 踢下线遇到 messages.auth.token.operation-unsupportedoperation-unsupported 或“不支持”类错误时,会停用对应按钮并展示能力边界提示。个人主页、资料设置、账号安全、权限菜单、消息通知和通知偏好均使用普通用户自助接口,不调用后台 IAM 管理接口承载用户端体验;用户名修改应接入 PUT /api/v1/iam/users/me/username 并展示服务端限额提示。CMS、Blog、Forum 用户侧接口已由主分支补齐,PC 端已接入列表、详情、筛选、公开聚合、内容创建 / 编辑 / 删除、Blog / Forum Markdown 编辑器、Blog 云端草稿列表和互动体验;Mall 已补齐商品分类、商品列表、商品详情、搜索筛选、商品收藏、商品评价、购物车、收货地址、下单、订单列表、订单详情、发起支付、支付状态同步、取消订单、售后申请和后台商品 / 分类管理,PC 商品、购物车、结算、地址、订单、支付结果和 Markdown / 富文本详情展示已对齐主线字段。

当前 PC 页面保留入口、contract、搜索筛选 UI、taxonomy contract、Blog / Forum / Mall 详情阅读布局、互动按钮、Blog 发文 / 编辑页、Blog 草稿箱、Forum 发帖 / 编辑页、我的内容聚合与 Blog / Forum 内容管理页、收藏聚合与 Blog / Forum / Mall 取消收藏页、商品评价页、购物车、结算页、收货地址管理页、订单管理页、订单详情页、支付结果页、售后服务页和友好降级状态,不在视图分支跨边界修改后端。Blog 写文章和 Forum 发帖页使用 md-editor-v3 提供 Markdown / 富文本编辑体验,图片和封面可复用当前用户 Storage / 附件接口;Blog、Forum 和 Mall 详情页会在客户端渲染 Markdown 内容,SSR 阶段保留纯文本降级。短链、活码和公开表单入口页只引导用户输入真实业务编码,不再提供固定 preview 编码快捷入口,避免把不存在的演示数据当成可用服务。静态构建会显式预渲染 /search/cms/preview/blog/preview/blog/write/forum/preview/forum/write/mall/preview/mall/cart/mall/checkout/mall/payment-result/account/access/account/notifications/account/notification-preferences/account/content/account/favorites/account/reviews/account/addresses/account/orders/account/orders/preview/account/after-sales/account/after-sales/preview;支付回跳和分享链接使用当前页面 URL,不绑定固定 /pc/ 前缀。

本轮 PC Mall 交易链路已按主线轻交易、支付、订单状态事件和售后基础接口校准:商品详情页展示库存校验、价格锁定、运费 / 优惠、发票 / 售后交易确认卡片,购物车使用 selectedunitPricecoverUrl 和数量更新返回值并补充库存、价格、结算状态标签;结算页使用 addressId + cartItemIds + couponCode + idempotencyKey + remark 创建订单,商品直购暂通过“先加入购物车再下单”兼容,发票申请优先调用 POST /api/v1/mall/orders/{id}/invoice,接口异常时继续在备注中保留申请线索;收货地址表单使用 recipientNamedetail 和独立默认地址接口;订单列表 / 详情按状态码 10/20/90、根级收货地址、用户可见支付方式、支付流水、取消原因和取消时间展示,列表与详情均补充履约、物流、发票、退款和交易通知降级展示;用户中心已补用户服务闭环入口,订单详情页优先读取 GET /api/v1/mall/orders/{id}/timeline 展示订单创建、发起支付、支付确认、物流、发票和售后节点,接口不可用时再基于订单字段合成五段式用户可见时间线,并新增确认收货、支付凭证、发票文件、物流证明、退款凭证卡片和按商品明细快速填入售后表单;订单详情和支付结果页均读取 GET /api/v1/mall/payment-methods 生成用户可见支付方式选择,遵循后端排序、enabledsupportedEnvironmentsdefaultSelected,没有默认配置时不自动选择第一项,接口不可用时使用本地降级方式;支付结果页优先调用 POST /api/v1/mall/orders/{id}/payment/sync 同步状态,失败 / 取消 / 处理中可调用 POST /api/v1/mall/orders/{id}/pay 重新发起支付,并兼容回跳 query、MallPaymentIntent 根字段和 payload 中的二维码、收银台链接、用户可见支付方式、支付单号、金额、失败原因、有效期和渠道响应信息,同时展示订单、物流 / 发票、售后和交易通知后续引导,交易通知可带订单和支付上下文进入消息通知页;售后服务页可继续联调 GET /api/v1/mall/orders/{id}/after-sale-itemsPOST /api/v1/mall/orders/{id}/after-salesGET /api/v1/mall/me/after-salesGET /api/v1/mall/after-sales/{id},申请页已补订单商品选择、可申请状态和已有售后提示,列表页已补退款、退货、物流和凭证状态标签。主线已补齐 SKU、价格锁定、优惠 / 运费、发票申请 / 开票、购物车批量更新、订单发货、确认收货、支付方式元数据、默认支付方式配置、订单时间线和售后后台处理第一阶段;剩余后端缺口集中在独立结算预估、地址联动运费模板、服务端订单关键词搜索、支付 / 物流 / 退款凭证 URL、订单详情退款摘要或售后聚合、凭证文件访问生命周期、真实支付渠道二维码 / 支付页 URL、回跳参数、真实退款 / 退货执行、交易通知筛选和通知联动。

推荐技术栈:

能力建议
框架Nuxt 4 + Vue 3 + TypeScript
状态Pinia
数据请求项目内封装 request / composables,统一处理 Result<T>、token、locale、traceId 和错误码
渲染首页、列表和详情优先 SSR / SSG / 混合渲染,强交互页面按需要使用客户端渲染
构建产物默认导出到 public/pc,产物已相对路径化,可整体复制到任意 Nginx 站点目录

第一阶段页面边界:

页面说明
首页CMS 运营内容、公告、轮播图、推荐文章、推荐帖子和推荐商品入口
登录 / 注册 / 找回密码复用用户端账号能力,覆盖账号密码、验证码入口和找回密码
用户中心资料设置、头像、昵称、简介、消息、会员、收藏和订单入口
Blog文章列表、文章详情、分类、标签、搜索、作者主页和发文入口
Forum板块、主题列表、主题详情、回复、发帖和举报入口
Mall商品列表、商品详情、搜索筛选、收藏、购物车、地址、订单和支付入口
帮助中心FAQ、协议、隐私政策和联系方式

PC 与 App 共用后端 API contract、登录态规则和业务模块边界,但不强制共用 UI 组件库。模块未启用时,PC 页面应隐藏入口或展示友好降级状态。

Released under the Apache License 2.0.