Files
monisuo/CLAUDE.md
sion123 02099d2a6a docs: relocate skills system documentation and refactor asset page components
Move skills system documentation from bottom to top of CLAUDE.md for better organization. Refactor Flutter asset page by extracting UI components into separate files and updating import structure for improved modularity.
2026-04-05 22:38:56 +08:00

5.9 KiB
Raw Blame History

CLAUDE.md

本文件为 Claude Codeclaude.ai/code在处理本仓库中的代码时提供使用指引。始终用中文与用户沟通。

项目概述

模拟所 (Monisuo) — 虚拟货币模拟交易平台。全栈 monorepo三个子系统共用一个 MySQL 数据库。

技能系统

当处理任务时,先扫描 .agents/skills/ 目录下是否有相关技能。如果技能可能适用,先用 Read 工具读取对应的 SKILL.md,然后严格遵循其指引执行。技能优先级高于默认行为,但低于用户的显式指令。

构建与运行命令

Java 后端 (Maven, Java 8, Spring Boot 2.2.4)

mvn spring-boot:run                          # 开发服务,端口 5010
mvn compile                                  # 仅编译
mvn test                                     # 运行测试
mvn clean package -DskipTests                # 打包 JAR → target/monisuo-1.0.jar

Flutter 移动端/Web (flutter_monisuo/)

cd flutter_monisuo
flutter pub get                               # 安装依赖
flutter run -d chrome                         # 开发 (Web)
flutter run -d android                        # 开发 (Android)
flutter analyze                               # 代码检查
flutter test                                  # 运行测试
flutter build web --release --dart-define=ENV=prod    # 生产 Web 构建 → build/web/
flutter build apk --release --dart-define=ENV=prod    # 生产 APK 构建 → build/app/outputs/

通过 --dart-define=ENV=prod|dev 切换环境API 地址自动切换。

Vue 管理后台 (monisuo-admin/)

cd monisuo-admin
pnpm install                                  # 安装依赖(需 pnpm >=10, node >=22.15
pnpm dev                                      # Vite 开发服务
pnpm build                                    # 生产构建vue-tsc + vite→ dist/
pnpm lint / pnpm lint:fix                     # 代码检查,使用 @antfu/eslint-config

部署

deploy/build_local.sh                         # 本地构建 Flutter + Admin
deploy/deploy_server.sh                       # 完整服务器部署(前端同步 + Maven 构建 + JAR 重启)
deploy/deploy_server.sh frontend              # 仅部署前端
deploy/deploy_server.sh backend               # 仅部署后端

服务器:8.155.172.147,后端端口 5010。Flutter Web → /www/wwwroot/monisuo-h5/,管理后台 → /www/wwwroot/monisuo-admin/

架构

后端 (src/main/java/com/it/rattan/)

分层架构:Controller → Service → Mapper → Entity

  • JWT 认证:TokenFilter + UserContextThreadLocal。接口前缀/api/(用户端)、/admin/(管理端)。
  • 统一响应封装:Result<T>code/msg/dataPageResult 分页。
  • GlobalExceptionHandler 全局异常处理BCrypt 密码加密。
  • bean-searcher 动态查询构建,用于管理端列表接口。
  • 数据库MySQLmonisuoORM 用 MyBatis-Plus。建表脚本 sql/init.sql11 张表)。

Flutter 应用 (flutter_monisuo/lib/)

  • 状态管理ProviderChangeNotifierproviders/ 消费 data/services/,底层调用 core/network/DioClient
  • UIshadcn_ui + 自定义主题系统(core/theme/)。深色主题为主,颜色集中管理在 AppColorScheme
  • 数据流data/services/API 调用)→ providers/(状态)→ ui/pages/(视图)。
  • 页面auth、home、market、trade、asset、mine、orders、onboarding。

Vue 管理后台 (monisuo-admin/src/)

  • 路由:基于文件系统的路由,unplugin-vue-routerpages/ 目录)。路由层有鉴权守卫。
  • 状态管理Piniaauth、theme+ TanStack Vue Query服务端状态
  • HTTPAxixos 通过 composables/use-axios.ts 封装。Vite 代理 /apilocalhost:5010(去除前缀)。
  • UIshadcn-vue 组件在 components/ui/(自动注册,已排除 tsconfig
  • 自动导入Vue composables、stores、constants 通过 unplugin-auto-import 自动导入。
  • 代码检查ESLint 9 flat config + @antfu/eslint-config。Pre-commit 钩子通过 simple-git-hooks + lint-staged

核心业务领域

双账户体系:

  • 资金账户 (account_fund):与用户 1:1USDT 余额,用于充提。充值需管理员审批。
  • 交易账户 (account_trade):与用户 1:N每币种一个持有币种数量和加权平均成本价。
  • 资金流转:充值 → 资金账户 → 划转至交易账户(USDT) → 买卖币种。所有操作记录在 account_flow
  • 盈亏计算:(持仓数量 × 当前价格) - (持仓数量 × 平均成本价)
  • 详细流程图见 ACCOUNT_SYSTEM_DESIGN.md

数据库核心表

sys_usersys_admincoinprice_type: 1=实时, 2=管理定价)、account_fundaccount_trade(唯一索引 user_id+coin_code)、order_tradeorder_fund(充提订单,状态驱动的审批流)、account_flowsys_configuser_favoritecold_wallet

代码规范

Git 提交

Conventional Commits 格式:feat(module): 描述fix(module): 描述chore(scope): 描述。提交正文可用中文。

Flutter 代码规范

  • 遵循 Effective Dart 规范,提交前运行 flutter analyze
  • 使用 AppSpacingAppRadiusAppColorScheme 主题常量,禁止硬编码颜色。
  • 修改主题/UI 时不要改动业务逻辑/API/Provider 层。

Java 代码规范

  • 使用 Lombok 简化代码MyBatis-Plus LambdaUpdateWrapper 做更新操作。
  • 所有涉及资金变动的方法必须加 @Transactional(rollbackFor = Exception.class)
  • RESTful API 设计Swagger 文档springfox 2.9.2)。

管理后台代码规范

  • TypeScript strict 模式lint 规则强制 <script lang="ts">
  • shadcn-vue 组件自动管理,不要手动编辑 components/ui/
  • 用 TanStack Vue Query 做数据请求Pinia 仅用于客户端状态。