抽取钱包/充值入口组件, 用来在客户端里复用 #77
Reference in New Issue
Block a user
Delete Branch "extract-wallet-entry-to-shared"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
新增文件:
export function formatMudPointCount(value: number, compact = false) {
但 packages/shared/src/index.ts 当前只导出 contracts、http、llm 等模块,没有导出 ./utils/format。如果这次 push 的目标是把钱包入口相关的格式化逻辑移动到 shared,调用方通常会期望从 shared 包统一入口导入,例如:
import { formatMudPointCount } from '@genarrative/shared';
目前这会失败。仓库中旧实现仍存在于:
src/components/common/platformMudPointWalletModel.ts:1
src/components/common/PlatformMudPointWalletEntry.tsx:12
src/components/common/PlatformMudPointWalletEntry.test.tsx:8
也就是说,本次提交只是把同名函数 “加回” 到了 shared 目录,但没有把现有调用迁移过去,也没有暴露 shared 入口;后续重构很容易继续误用旧路径或在包边界外深路径导入。
建议至少补充:
// packages/shared/src/index.ts
export * from './utils/format';
并把钱包组件和测试从旧本地 model 改为 shared 导入,或删除 / 转发旧实现,避免双份逻辑漂移。
resolved
Findings
[P1] shared 根入口被浏览器资源污染。 index.ts:57 重导出组件,而组件静态导入 PNG。实测 Node/tsx 仅导入 formatMudPointCount 也会在 PNG 首行报 SyntaxError。应保持根入口为纯契约/工具,把 UI 放到独立 subpath 或 UI 包。
[P1] 声明的 Tauri 复用入口实际不可解析。 packages/shared/package.json:6 不是 workspace,也未声明运行依赖;PR 只给主站配置 alias。目标客户端解析 @genarrative/shared 实测为 ERR_MODULE_NOT_FOUND。若消费侧另有 PR,需要把它设为明确的合并前置。
[P1] 组件没有可移植的样式契约。 PlatformMudPointWalletEntry.tsx:37 完全依赖 Tailwind utilities 和主站 --platform-* 变量;AI Game Creator 的 Tauri 前端没有 Tailwind plugin,也没有这些变量,接入后会近乎裸 HTML。需要随包交付样式与主题契约,或同步补齐客户端构建配置。
[P2] 公开资产清单产生确定的 404。 asset-manifest.json:112 仍发布 /creation-home/topbar-wallet.png,但 PR 已移动该文件。生产构建只生成哈希资源。应保留稳定 public 副本,或同步更新清单、外部消费者及完整性测试。
[P2] 6 个改动文件新增 ESLint 错误。 shared 组件、测试、barrel 及三个主站消费者均触发 simple-import-sort;相同基线文件通过定向检查。需要在合并前整理 imports/exports。
规范与验证
仓库规范符合度不通过:现行文档将 packages/shared 定义为 DTO/公开契约边界,PR 未同步架构文档;当前 Tauri 方案也明确只承载 H5、不重写桌面业务 UI。PR 没有关联 Issue、PRD 或消费侧变更,建议先补清楚目标边界。
我在最新 origin/master + PR 77 合并态验证:类型检查、生产构建、编码检查、git diff --check 及相关组件测试通过;Node 根入口、资产清单完整性和定向 ESLint 均确认失败。结论是 Request changes,暂不建议合并。
update to master
目标客户端仍无法获得组件样式。 PlatformMudPointWalletEntry.tsx:37 到组件末尾完全依赖 Tailwind utilities 和 --platform-* 主题变量。实际目标端 vite.config.ts (line 41) 仅启用 React plugin,styles.css (line 1) 也没有 Tailwind、组件 class 或这些变量。相对路径导入可以编译,但会近乎裸 HTML 渲染。
packages/shared/src/theme.css 只能提供变量,而且目标端尚未导入或添加 platform-theme 包裹;它也不会生成 Tailwind utilities。需要让组件携带独立 CSS/CSS Module,或在关联的客户端 PR 中同时接入 Tailwind、theme CSS 并完成真实视觉 smoke。
import { formatMudPointCount } from '@genarrative/shared'style e6d0ccc243