状态管理、应用命令与刷新编排
本页聚焦 MyIP 前端的共享状态、应用级命令与刷新协调机制。当前已核实前端采用 Vue 3 与 Pinia;尚未取得命令分发和刷新编排的实现源码,因此本文明确区分已确认的架构背景与待核实的运行时行为。
证据范围说明:本轮已达到 6 次源码工具调用上限。已读取仓库根级开发说明,但未定位并读取本主题的核心实现。本文是一份受证据限制的参考页,不能替代具体 store、命令入口和刷新协调器的 API 文档。下文的“未核实”不代表仓库没有相关功能。
目的与范围
本主题的边界包括三个相互关联的问题:
- 状态管理:前端共享状态由谁持有,哪些操作能够修改状态,以及状态是否持久化。
- 应用命令:用户操作如何进入应用层,命令如何分发,以及调用方如何获知完成或失败。
- 刷新编排:一次刷新触发哪些任务,任务之间有无先后关系,以及重复刷新、失败和过期结果如何处理。
上述问题只有在读取实际实现后才能形成行为契约。当前证据只能确认技术栈,不能确认具体状态字段、命令名称或执行顺序。
IP 查询、网络连通性、DNS 泄漏检测等业务算法,以及 Express API 的鉴权与上游访问策略,不属于本页的展开范围。它们仅在与共享状态或刷新入口存在已核实联系时,才应纳入此页。项目将 Vue SPA 与 Express API 分为两个部分,见 AGENTS.md。
概述
仓库开发说明确认以下基础事实:
| 维度 | 已确认事实 | 对本主题的意义 |
|---|---|---|
| 前端框架 | Vue 3,采用 <script setup> | 状态消费和交互入口位于 Vue 前端范围内;具体组件尚未核实 |
| 状态管理技术 | Pinia | 可以确认项目使用 Pinia,但不能据此推断 store 的数量、名称和职责 |
| 路由 | vue-router,HTML5 history 模式 | 路由机制已确认;路由切换是否触发刷新尚未核实 |
| 国际化 | vue-i18n | 国际化技术已确认;语言切换与刷新之间的关系尚未核实 |
| 实现语言 | JavaScript;新文件使用 .js、.vue | 不应将未经读取的接口描述为 TypeScript 声明 |
| PWA | 仅安装清单,不使用 service worker,在线运行 | 不应将刷新编排解释为 service worker 的后台同步机制 |
架构
下图只表示仓库说明中明确列出的前端技术组成,不表示已经验证的命令调用链、数据流或初始化顺序。
Source: AGENTS.md
仓库将前端代码放在 frontend/,并说明 @ 别名指向该目录。这里能确认的是源码归属和模块定位背景,而不是某个 store 或事件总线的存在。依据:AGENTS.md。
状态管理:已知边界与缺失契约
Pinia 的采用不等于状态模型已经核实
项目技术栈明确包含 Pinia,但本轮没有取得 store 定义和消费者源码。因此不能给出以下结论:
- 哪些数据是全局状态,哪些仅存在于组件或 composable 中。
- 是否存在统一的 loading、error 或刷新状态。
- 状态修改通过 action、直接赋值还是其他封装完成。
- 是否使用 localStorage、sessionStorage 或其他持久化方式。
- 状态初始化、重置以及组件卸载之间的关系。
这些区别直接影响调试方式。例如,只有读取状态写入位置后,才能判断 UI 未更新是数据未写回、订阅关系不正确,还是旧请求覆盖了新结果。本页不将任何一种可能性表述为当前实现。
持久化与缓存
本轮未读取与本主题相关的存储实现,因而没有可列出的存储键、序列化格式、有效期或迁移策略。Pinia 被列入技术栈,本身不能证明状态已经持久化。
应用命令:不能与开发脚本混淆
仓库说明中存在名为 Commands 的章节,但其中列出的是 pnpm dev、pnpm build、pnpm test 等开发脚本,不是前端运行时的应用命令。
因此,不能使用该章节推断存在统一 command bus,也不能从开发脚本名称推导刷新、切换显示模式或打开面板等业务命令。依据:AGENTS.md。
当前尚未核实的应用命令契约包括:
| 契约项 | 当前证据状态 |
|---|---|
| 命令入口与调用方 | 未读取实际实现 |
| 命令名称、参数与校验 | 未读取实际实现 |
| 分发机制 | 无法判断是否使用直接调用、事件订阅或其他机制 |
| 返回值与完成通知 | 无法确认同步返回或 Promise 行为 |
| 订阅注册与注销 | 未读取生命周期实现 |
| 未知命令与执行失败 | 未读取错误处理实现 |
刷新编排:执行流程尚未核实
本轮没有足够证据绘制刷新时序图。尤其不能将“点击刷新 → 并行请求所有服务 → 更新全局状态”作为已实现流程;该流程中的每一步都需要调用位置和实现源码支持。
完整的刷新行为说明至少需要核实以下契约:
| 关注点 | 必须从实现中确认的内容 |
|---|---|
| 触发条件 | 手动操作、初始化、路由切换或定时任务中的哪些条件实际存在 |
| 任务范围 | 刷新影响哪些功能,哪些功能明确不参与 |
| 执行顺序 | 串行、并行以及前置依赖 |
| 重复触发 | 是否拒绝、合并、取消旧任务,或允许同时执行 |
| 结果提交 | 结果由哪个模块写入,是否检查请求版本或有效性 |
| 失败收敛 | 单任务失败是否中断其他任务,以及何时结束 loading |
| 生命周期 | 页面离开或组件卸载时如何处理未完成任务 |
以上是尚缺失的实现契约,不是对仓库当前行为的断言。
用法示例与 API 参考
No code example available。 本轮没有读取到本主题的实现源码,无法提供可核验的 store 用法、命令派发或刷新调用示例。为避免伪造,本页不提供猜测性的导入路径、事件名称或函数签名。
同样,当前无法列出真实 API 的参数类型、返回值与异常。项目要求使用 JavaScript,并不能据此推导任一运行时接口的具体形状。
配置、故障与并发边界
配置
本轮未核实刷新间隔、超时、重试次数、持久化开关或请求去重开关。这里不能填入常见默认值,也不能把 Express 上游访问策略直接当作前端刷新协调器的配置。
故障处理与一致性
尚无足够源码证据说明本主题是否具备以下机制:
try/finally清理忙碌状态。- 取消请求或忽略迟到响应。
- 单任务错误隔离。
- 自动重试、退避或熔断。
- 事件监听清理。
- 跨标签页状态同步。
因此,本文既不承诺这些保证已经存在,也不认定缺少这些保证。排查线上问题时,不应依据本文推断刷新具有幂等性、互斥性或最新结果优先语义。
性能与扩展
当前未取得刷新任务列表、请求计数或缓存命中逻辑,无法给出可靠的并发上限、请求开销和缓存效果分析。也没有核实可供扩展的命令注册接口或刷新任务注册接口。
能够确认的项目约束是:新增实现使用 JavaScript;新建文件需要说明用途;新增或重写的函数采用 const 箭头函数风格。它们是代码贡献约定,而非运行时扩展机制。依据:AGENTS.md。
测试与验证
项目使用 Node 内置测试运行器。仓库约定:无需真实网络即可执行的非视觉逻辑,包括可模拟输入的 composable、转换与校验逻辑,应随变更提交测试;UI 渲染、真实网络行为和浏览器 API 不在该约定的测试范围内。
开发说明列出 pnpm test 执行测试,pnpm check 执行测试与构建。本轮没有运行这些命令,也没有读取本主题的测试用例,所以不能宣称命令分发、刷新竞态或状态持久化已有测试覆盖。
相关链接
这两个入口由仓库开发说明明确列出。补齐本页时,应优先取得实际状态定义、应用命令入口、刷新协调实现及其调用方,再将本文的证据缺口替换为可验证的执行流程。