Files
nofx/web
Ember c64d4ff549 refactor(web): restructure AITradersPage into modular architecture (#1023)
* refactor(web): restructure AITradersPage into modular architecture
Refactored the massive 2652-line AITradersPage.tsx into a clean, modular architecture following React best practices.
**Changes:**
- Decomposed 2652-line component into 12 focused modules
- Introduced Zustand stores for config and modal state management
- Extracted all business logic into useTraderActions custom hook (633 lines)
- Created reusable section components (PageHeader, TradersGrid, etc.)
- Separated complex modal logic into dedicated components
- Added TraderConfig type, eliminated all any types
- Fixed critical bugs in configuredExchanges logic and getState() usage
**File Structure:**
- Main page reduced from 2652 → 234 lines (91% reduction)
- components/traders/: 7 UI components + 5 section components
- stores/: tradersConfigStore, tradersModalStore
- hooks/: useTraderActions (all business logic)
Co-Authored-By: tinkle-community <tinklefund@gmail.com>
* chore: ignore PR_DESCRIPTION.md
* fix(web): restore trader dashboard navigation functionality
Fixed missing navigation logic in refactored AITradersPage. The "查看" (View) button now correctly navigates to the trader dashboard.
**Root Cause:**
During refactoring, the `useNavigate` hook and default navigation logic were inadvertently omitted from the main page component.
**Changes:**
- Added `useNavigate` import from react-router-dom
- Implemented `handleTraderSelect` function with fallback navigation
- Restored original behavior: use `onTraderSelect` prop if provided, otherwise navigate to `/dashboard?trader=${traderId}`
**Testing:**
-  Click "查看" button navigates to trader dashboard
-  Query parameter correctly passed to dashboard
Co-Authored-By: tinkle-community <tinklefund@gmail.com>
* fix(web): correct type definitions for trader configuration
Fixed TypeScript build errors by using the correct `TraderConfigData` type instead of the incorrect `TraderConfig` type.
**Root Cause:**
During refactoring, a new `TraderConfig` type was incorrectly created that extended `CreateTraderRequest` (with fields like `name`, `ai_model_id`). However, the `TraderConfigModal` component and API responses actually use `TraderConfigData` (with fields like `trader_name`, `ai_model`).
**Changes:**
- Replaced all `TraderConfig` references with `TraderConfigData`:
  - stores/tradersModalStore.ts
  - hooks/useTraderActions.ts
  - lib/api.ts
- Removed incorrect `TraderConfig` type definition from types.ts
- Added null check for `editingTrader.trader_id` to satisfy TypeScript
**Build Status:**
-  TypeScript compilation: PASS
-  Vite production build: PASS
Co-Authored-By: tinkle-community <tinklefund@gmail.com>
---------
Co-authored-by: tinkle-community <tinklefund@gmail.com>
2025-11-15 22:21:09 -05:00
..
2025-10-30 20:51:22 +08:00
2025-11-02 21:44:53 +08:00
2025-10-31 03:42:01 +08:00

NOFX Web Dashboard

基于 Vite + React + TypeScript 的AI自动交易监控面板

技术栈

  • React 18 - UI框架
  • TypeScript - 类型安全
  • Vite - 构建工具
  • Tailwind CSS - 样式框架
  • SWR - 数据获取和缓存
  • Zustand - 状态管理
  • Recharts - 图表库

安装依赖

npm install

运行开发服务器

npm run dev

访问 http://localhost:3000

构建生产版本

npm run build

功能特性

实时监控

  • 系统状态 - 运行状态、AI提供商、周期数
  • 账户信息 - 净值、可用余额、总盈亏、保证金使用率
  • 持仓列表 - 实时价格、盈亏、杠杆、强平价
  • 决策日志 - 完整的AI思维链可展开、决策动作、执行结果

AI思维链分析

每个决策记录都包含完整的AI思考过程

  • 第一步:现有持仓分析(技术指标、盈亏评估)
  • 第二步:账户风险评估(保证金使用率、可用余额)
  • 第三步:新机会评估(候选币种筛选、技术形态分析)
  • 第四步:最终决策总结(平仓/开仓/持有决策)

点击 "💭 AI思维链分析" 即可展开查看完整分析过程!

自动刷新

  • 系统状态、账户、持仓每5秒刷新
  • 决策日志、统计每10秒刷新

API集成

前端通过Vite代理访问后端APIhttp://localhost:8080

API端点

  • GET /api/status - 系统状态
  • GET /api/account - 账户信息
  • GET /api/positions - 持仓列表
  • GET /api/decisions - 决策日志最近30条
  • GET /api/decisions/latest - 最新决策最近5条
  • GET /api/statistics - 统计信息

项目结构

web/
├── src/
│   ├── components/      # React组件待扩展
│   ├── lib/
│   │   └── api.ts      # API调用函数
│   ├── store/          # Zustand状态管理待扩展
│   ├── types/
│   │   └── index.ts    # TypeScript类型定义
│   ├── App.tsx         # 主应用组件
│   ├── main.tsx        # 入口文件
│   └── index.css       # 全局样式
├── index.html          # HTML模板
├── vite.config.ts      # Vite配置
├── tailwind.config.js  # Tailwind配置
├── tsconfig.json       # TypeScript配置
└── package.json        # 依赖配置

注意事项

  1. 确保后端API服务已启动默认端口8080
  2. Node.js版本要求>= 18.0.0
  3. 网络连接需要访问Binance API

开发计划

  • 添加图表展示(账户净值走势、盈亏曲线)
  • 添加决策详情页面完整的CoT分析
  • 添加手动交易控制
  • 添加参数配置页面
  • 添加通知和告警系统