Skip to content

feat(inventory): 添加库存浏览与筛选 - #136

Open
yourmoln wants to merge 1 commit into
vrcm-team:newuifrom
yourmoln:codex/feat-inventory-browser
Open

feat(inventory): 添加库存浏览与筛选#136
yourmoln wants to merge 1 commit into
vrcm-team:newuifrom
yourmoln:codex/feat-inventory-browser

Conversation

@yourmoln

Copy link
Copy Markdown
Member

变更概述

  • 在个人抽屉增加库存入口,并新增跨平台全屏库存页面。
  • 接入当前登录账号的 /inventory 分页查询,支持物品类型、归档状态和四种服务端排序。
  • 完成加载、空列表、刷新、错误重试和加载更多状态;按有效物品 ID 去重,并以服务端返回行数推进偏移。
  • 在账号切换、登出及同账号令牌更新时隔离旧响应,避免跨会话数据覆盖。
  • 同步英语、日语、简体中文、繁体中文字符串,以及导航序列化和依赖注入注册。

验证

  • .\gradlew.bat :composeApp:compileKotlinDesktop :composeApp:desktopTest --tests "*InventoryApiTest" --tests "*InventoryPagingTest" --tests "*InventoryScreenModelTest" --tests "*AppRoutePanePolicyTest" --tests "*AppNavKeySerializationTest" --tests "*LocaleStringsStructureTest" --tests "*AuthServiceTest.sessionBoundRequestReturnsRefreshedSessionAfterSuccessfulRetry":通过。
  • 完整 .\gradlew.bat :composeApp:desktopTest 执行 819 项,818 项通过;1 项为现有测试隔离污染:收藏限额夹具返回数组 [],而 FavoriteLimits 解码需要对象,异常由 FavoriteApi.getFavoriteLimits 的后台协程产生,并以 UncaughtExceptionsBeforeTest 被归到随后启动的库存测试。库存定向测试独立执行通过,本 PR 未包含该无关修复。
  • git diff --check upstream/newui:通过。

实现假设清单

  • 查询省略 holderId,由服务端按当前认证账号返回库存,页面不会读取其他用户的库存。
  • 服务端可能增加未知字段,部分历史物品也可能缺少展示字段,因此响应模型忽略未知字段并为可选展示字段提供空值兼容。
  • 类型、归档状态和排序均由服务端筛选;筛选变化后从偏移 0 重建分页。
  • 页面仅提供只读浏览,不在本次改动中执行装备、消耗、删除或归档写操作。
  • 会话续期返回的令牌作为当前请求的有效上下文;同账号出现无关令牌替换时,活动请求结束后重新加载一次。

代码逻辑图

flowchart TD
    A[个人抽屉点击库存] --> B[打开库存页面]
    B --> C[库存状态模型观察账号会话]
    C --> D{当前会话是否有效}
    D -- 否 --> E[显示需要登录状态]
    D -- 是 --> F[按筛选和分页参数请求库存接口]
    F --> G{请求结果}
    G -- 成功 --> H[按有效物品 ID 去重并更新分页快照]
    G -- 初始失败 --> I[显示整页错误和重试]
    G -- 刷新失败 --> J[保留现有列表并显示刷新错误]
    G -- 加载更多失败 --> K[保留现有列表和偏移并提供重试]
    H --> L[展示数量和库存列表]
    L --> M{用户操作}
    M -- 滚动接近末尾 --> F
    M -- 刷新 --> N[从偏移 0 请求并在成功后重建分页]
    M -- 修改筛选 --> O[取消旧请求并重建请求代次]
    N --> F
    O --> F
    C -- 账号切换或登出 --> O
Loading

@yourmoln yourmoln changed the title feat: 添加库存浏览与筛选 feat(inventory): 添加库存浏览与筛选 Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant