抽取钱包/充值入口组件, 用来在客户端里复用 #77

Merged
kdletters merged 16 commits from extract-wallet-entry-to-shared into master 2026-07-14 21:03:16 +08:00
Member
No description provided.
Member
  1. packages/shared/src/utils/format.ts:1 新增的工具函数没有从 shared 包入口导出,其他包很可能仍无法通过 @genarrative/shared 使用它
    新增文件:

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 导入,或删除 / 转发旧实现,避免双份逻辑漂移。

1. packages/shared/src/utils/format.ts:1 新增的工具函数没有从 shared 包入口导出,其他包很可能仍无法通过 @genarrative/shared 使用它 新增文件: 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 导入,或删除 / 转发旧实现,避免双份逻辑漂移。
Author
Member
  1. packages/shared/src/utils/format.ts:1 新增的工具函数没有从 shared 包入口导出,其他包很可能仍无法通过 @genarrative/shared 使用它
    新增文件:

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

> 1. packages/shared/src/utils/format.ts:1 新增的工具函数没有从 shared 包入口导出,其他包很可能仍无法通过 @genarrative/shared 使用它 > 新增文件: > > 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
Member

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,暂不建议合并。

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,暂不建议合并。
kdletters requested review from kdletters 2026-07-14 13:09:50 +08:00
Author
Member

update to master

update to master
Member

目标客户端仍无法获得组件样式。 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。

目标客户端仍无法获得组件样式。 [PlatformMudPointWalletEntry.tsx:37](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/99d76b25f9d77b079d7802a937cb0e12ea3ef447/packages/shared/src/components/PlatformMudPointWalletEntry.tsx#L37) 到组件末尾完全依赖 Tailwind utilities 和 --platform-* 主题变量。实际目标端 [vite.config.ts (line 41)](/data/dsk/ca/apps/ai-game-creator-shell/vite.config.ts:41) 仅启用 React plugin,[styles.css (line 1)](/data/dsk/ca/apps/ai-game-creator-shell/src/styles.css:1) 也没有 Tailwind、组件 class 或这些变量。相对路径导入可以编译,但会近乎裸 HTML 渲染。 packages/shared/src/theme.css 只能提供变量,而且目标端尚未导入或添加 platform-theme 包裹;它也不会生成 Tailwind utilities。需要让组件携带独立 CSS/CSS Module,或在关联的客户端 PR 中同时接入 Tailwind、theme CSS 并完成真实视觉 smoke。
kdletters changed target branch from master to codex/ai-game-creator-app 2026-07-14 21:01:14 +08:00
kdletters changed target branch from codex/ai-game-creator-app to master 2026-07-14 21:02:01 +08:00
kdletters added 15 commits 2026-07-14 21:02:01 +08:00
kdletters added 1 commit 2026-07-14 21:02:07 +08:00
kdletters approved these changes 2026-07-14 21:02:19 +08:00
Dismissed
kdletters approved these changes 2026-07-14 21:03:09 +08:00
kdletters merged commit 630fce1438 into master 2026-07-14 21:03:16 +08:00
kdletters deleted branch extract-wallet-entry-to-shared 2026-07-14 21:03:16 +08:00
Sign in to join this conversation.