nac-presale/todo.md

285 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NAC XIC Token Presale - TODO
## 已完成
- [x] 基础预售页面Hero、倒计时、进度条、购买区域
- [x] 导航栏右上角连接钱包按钮
- [x] 去除最低购买量限制No Minimum
- [x] FAQ常见问题区域8个问题
- [x] 实时购买记录Live Feed
- [x] 右下角聊天支持浮动按钮
- [x] SSL证书域名化HTTPS部署pre-sale.newassetchain.io
- [x] 升级为全栈项目tRPC + 数据库)
- [x] 接入BSC/ETH真实链上数据totalRaised/tokensSold
- [x] TRC20监听后端服务每30秒轮询TRON地址
- [x] 中英文双语支持(导航栏语言切换)
- [x] 零Manus内联生产构建
## 待完成
- [x] 新增购买教程区域详细分步说明MetaMask钉包安装/地址查找、BSC购买流程、ETH购买流程、TRC20购买流程含EVM地址备注说明
- [x] TRC20购买流程增加备注EVM地址功能用户付款时提交EVM地址
- [x] 开发管理员后台(登录验证+TRC20购买记录+标记发放状态)
- [x] 切换专用RPC节点提高BSC/ETH数据稳定性使用公共RPC
- [x] 重新构建并部署到备份服务器
## 钱包连接修复与测试v4
- [x] 修复BSC/ETH钱包连接连接后自动识别EVM地址无需手动输入
- [x] 修复Approve USDT + Buy XIC两步购买流程合约交互
- [x] 确保MetaMask/Trust Wallet等主流EVM钱包可正常连接
- [x] 修复presaleEndDate无限循环bugMaximum update depth exceeded
- [x] 浏览器测试验证完整购买流程BSC/ETH/TRON三网络
- [x] 测试管理员后台TRC20购买记录、EVM地址意图、分发工作流
- [x] 测试教程页面(多钱包、多网络、中英文切换)
- [x] 部署到备份服务器并同步代码库https://git.newassetchain.io/nacadmin/xic-presale
## v5 功能升级
- [x] 配置专用高可用RPC节点池BSC + ETH多节点故障转移
- [x] 添加TRC20购买Telegram通知新购买确认时自动推送
- [x] 管理员后台添加内容编辑功能(预售参数动态配置)
- [ ] 完整域名浏览器购买测试pre-sale.newassetchain.io
- [ ] 部署到备份服务器并同步代码库
## v5 备份服务器部署
- [x] 修复TRON面板EVM地址自动识别已连接钱包地址预填入
- [ ] 构建生产版本移除Manus内联
- [ ] 打包并上传到备份服务器 103.96.148.7
- [ ] 备份服务器环境配置Node.js 22、PM2、MySQL、Nginx
- [ ] 配置环境变量DATABASE_URL、JWT_SECRET等
- [ ] 启动服务并验证运行状态
- [ ] 同步代码到Gitea库nacadmin/xic-presale
- [ ] 记录部署日志
## v5 钱包连接修复
- [x] 将useWallet()提升到Home顶层通过props传递给NavWalletButton和EVMPurchasePanel
- [x] 验证导航栏和购买面板钱包状态同步
- [ ] 完整域名浏览器购买测试验证
## v6 合约地址更新 + TronLink 检测
- [x] 更新 BSC 预售合约地址为 0xc65e7a2738ed884db8d26a6eb2fecf7daca2e90c
- [x] 更新 ETH 预售合约地址为 0x85AB2F2d9f7ca7ecB272b5E8726c70f3fd45D1E3
- [x] 更新 XIC 代币合约地址为 0x59ff34dd59680a7125782b1f6df2a86ed46f5a24
- [x] 为 TRON 标签添加 TronLink 钱包检测并自动填充 TRON 接收地址
- [x] 构建并部署到备份服务器 pre-sale.newassetchain.io
- [x] 后台 Site Settings 添加“一键开启/关闭预售活动”功能(数据库字段 + 后端 API + 前端开关 UI + 首页状态联动)
## v7 钉包连接全面修复
- [x] 全面修复所有 EVM 钉包MetaMask、Trust Wallet、OKX、Coinbase等无法自动填写 EVM 地址的问题
- [x] 重写 useWallet hook 支持所有主流 EVM 钉包自动识别
- [x] 将页面所有“EVM 地址”文案改为“XIC 接收地址”(中文)/ "XIC Receiving Address"(英文)
- [x] 构建并部署到备份服务器并验证
## v7 钱包列表选择器
- [x] 创建 WalletSelector 组件MetaMask、Trust Wallet、OKX、Coinbase、TokenPocket 检测+连接+安装引导)
- [x] 集成 WalletSelector 到 TRON 标签 XIC 接收地址区域- [x] 集成 WalletSelector 到 BSC/ETH 购买面板替换原 Connect Wallet 按鈕钮
- [x] 构建并部署到备份服务器
## v8 UI设计错误修复
- [ ] 修复图1钱包选择器弹窗同时显示"已安装"和"未安装"钱包,界面混乱 → 有已安装钱包时隐藏未安装列表
- [ ] 修复图2点击钱包后选择器面板折叠缩小 → 连接中状态应保持面板展开显示loading状态
- [ ] 修复图3"添加XIC到钱包"按钮在未连接钱包时显示并报错 → 未连接时隐藏该按钮
- [ ] 构建并部署到备份服务器
- [ ] 同步到Gitea代码库
## v9 跨链桥 /bridge 页面
- [x] 安装 @lifi/sdk 依赖使用SDK替代Widget避免@mysten/sui冲突
- [x] 创建 Bridge.tsx 页面组件(深色主题,与预售网站风格一致)
- [x] 集成 Li.Fi API锁定目标链 BSC + 目标代币 XIC
- [x] 在 App.tsx 注册 /bridge 路由
- [x] 导航栏添加 Bridge 入口链接(⚡ Bridge 黄色高亮按钮)
- [x] 后端添加跨链订单记录bridge_orders 表)
- [x] 浏览器测试 /bridge 页面UI渲染、链切换、金额输入正常
- [ ] 去除 MANUS 内联,构建并部署到 AI 服务器
- [ ] 记录部署日志并交付
## v10 Bridge完善 + 钱包选择器修复
### Bridge Li.Fi 交易执行逻辑
- [x] 实现完整的 Li.Fi 跨链交易执行USDT Approve + executeLiFiRoute
- [x] 连接钱包后自动获取报价(已有,验证可用)
- [x] 执行交易:先 Approve USDT再发送跨链交易
- [x] 交易状态轮询pending → success/failed
- [x] 成功后记录订单到数据库
### Bridge 交易历史记录模块
- [x] Bridge 页面底部增加"我的交易记录"区域
- [x] 按钱包地址查询历史订单trpc.bridge.myOrders
- [x] 显示时间、来源链、USDT金额、XIC金额、状态、TxHash链接
### v8 钱包选择器 UI 修复
- [ ] 修复图1有已安装钱包时隐藏未安装列表已在代码中但需验证
- [ ] 修复图2连接中状态保持面板展开显示loading不折叠
- [ ] 修复图3未连接钱包时隐藏"添加XIC到钱包"按钮(已有条件判断,需验证)
### 部署
- [ ] 构建并部署到 AI 服务器
- [ ] 浏览器测试验证所有功能
- [ ] 记录部署日志并交付
### Bridge 钱包连接修复(来自截图反馈)
- [ ] Bridge 页面"连接钱包"按钮改为使用 WalletSelector 组件(与主页一致),而非直接调用 window.ethereum
- [x] 连接钱包后自动获取报价,不再显示 WalletSelector
### 视频反馈修复(来自 WhatsApp 视频)
- [ ] Bridge 页面"连接钱包"按钮改为内嵌 WalletSelector 组件(展开显示钱包列表,不弹浏览器原生弹窗)
- [ ] 错误提示"Wallet connection cancelled"改为中英文双语
- [ ] Bridge 页面添加中英文语言切换支持(与主页同步)
- [ ] 信息卡片"5岁以上"应为"5条以上"(支持链数量)
## v11 Bridge增强功能
- [ ] Gas费估算显示在"YOU RECEIVE"区域下方显示预估Gas费源链原生代币和预计到账时间
- [ ] Gas费说明文案说明Gas用源链原生代币支付BSC用BNBETH用ETHPolygon用MATIC等
- [ ] 交易历史"复制交易哈希"快捷按钮
- [ ] 交易历史"在区块浏览器中查看"快捷按钮
- [ ] 交易成功弹窗提示(附查看交易详情链接)
- [ ] 浏览器全流程测试
- [ ] 构建并部署到AI服务器
- [ ] 记录部署日志
## v11 钱包连接卡死修复(来自用户反馈)
- [ ] 修复WalletSelector连接卡死连接超时30s自动重置状态
- [ ] 修复用户取消钱包弹窗后状态不重置error code 4001/4100处理
- [ ] 修复连接成功后回调不触发accounts事件监听改为直接返回值处理
- [ ] 确保每次点击钱包按钮都能重新触发钱包弹窗
## v12 Bridge跨链桥完善 + 钱包连接深度修复
- [x] WalletSelector v5ErrorHelpPanel组件分类错误处理+MetaMask权限重置5步指南
- [x] WalletSelector v5连接中状态改为"等待钱包授权"提示
- [x] WalletSelector v5错误后显示"重试"按钮和其他可用钱包
- [x] Bridge页面确认所有链(BSC/ETH/Polygon/Arbitrum/Avalanche)USDT→XIC路由逻辑
- [x] Bridge页面Gas费说明每条链原生代币BNB/ETH/MATIC/ETH/AVAX
- [x] 构建v12并部署到AI服务器(43.224.155.27)
- [x] 同步代码到备份Git库(git.newassetchain.io)
- [x] 记录部署日志
## v13 自研跨链桥完全移除Li.Fi
- [x] 数据库:新增 bridge_deposits 表多链USDT转入记录
- [x] 后端多链USDT收款地址配置BSC/ETH/Polygon/Arbitrum/Avalanche
- [x] 后端链上USDT转入监听每30秒轮询各链收款地址
- [x] 后端tRPC接口提交转账意图walletAddress + fromChain + usdtAmount + xicReceiveAddress
- [x] 后端tRPC接口查询订单状态by walletAddress
- [x] 前端完全移除Li.Fi依赖和代码
- [x] 前端:选链 → 显示对应链USDT收款地址 → 用户转账 → 实时状态跟踪
- [x] 前端连接钱包后自动填写XIC接收地址
- [x] 前端:中英文双语支持
- [x] 构建并部署到AI服务器
- [x] 浏览器完整测试
- [x] 同步到备份Git库
- [x] 记录部署日志
## v13 收款地址更新(官方地址)
- [x] Bridge.tsx更新BSC收款地址为 0x43DAb577f3279e11D311E7d628C6201d893A9Aa3
- [x] Bridge.tsxETH/Polygon/Arbitrum 使用同一EVM地址 0x43DAb577f3279e11D311E7d628C6201d893A9Aa3
- [x] bridgeMonitor.ts更新所有链收款地址
- [x] Home.tsx更新TRC20收款地址为 TWc2ugYBFN5aSoimAh4qGt9oMyket6NYZp
- [x] contracts.ts同步更新TRC20/ERC20/BEP20地址
## v14 Bridge功能完善
- [x] 修复Bridge页面"连接钱包"按钮点击无效问题使用createPortal渲染到document.bodyz-index:9999
- [x] My Transactions列表增加USDT数量和XIC数量显示已在v13中完成
- [x] Confirm按钮点击后增加加载动画已有Loader2 animate-spin
- [x] 管理员后台添加Bridge订单管理页面Bridge Intents + Bridge Orders表格状态过滤手动标记分发
- [ ] 构建部署到AI服务器并测试
- [ ] 同步到备份Git库
## v15 Web3.js集成完成记录
- [x] ethers.js v6 已集成(已有依赖)
- [x] 创建 useBridgeWeb3 hookUSDT余额查询、链上转账签名client/src/hooks/useBridgeWeb3.ts
- [x] Bridge页面连接钱包后在Step 4区域显示USDT余额右上角余额+刷新按钮)
- [x] Bridge页面新增"Send via Wallet"按钮调用ethers.js发起真实USDT transfer()
- [x] Bridge页面转账成功后自动调用bridge.recordOrder记录到后端数据库
- [x] 转账中显示加载动画和TX Hash前缀
- [x] 转账失败显示错误信息(用户取消/余额不足/其他错误)
- [x] 链不匹配时自动触发switchNetwork
- [ ] 构建部署到AI服务器并测试
- [ ] 同步到备份Git库
## v16 代币购买无缝体验(按文档方案)
- [ ] 购买成功后自动调用 wallet_watchAsset 将 XIC 代币添加到 EVM 钱包EIP-1193标准
- [ ] 添加 TRON 链到 CHAINS 数组chainId 728126428TRC20 USDT 6位小数
- [ ] Bridge 页面TRON 链选中时显示 TronLink 连接按钮showTron=true
- [ ] 创建 useTronBridge hookTronLink 连接 + TRC20 USDT 余额查询 + 一键转账
- [ ] Bridge 页面TRON 链一键转账成功后调用 tronLink wallet_addAsset
- [ ] 添加订单状态轮询(注册成功后每 5 秒自动刷新订单列表)
- [ ] 修复钱包连接被拒绝后无法重试error 4001 状态重置)
- [ ] 部署到 AI 服务器43.224.155.27)并同步 Git 库
## v16 wallet_watchAsset 修复(按文档方案)
- [ ] 修复 addTokenToWallet.tsTRON 改用 tronWeb.request({ method: 'wallet_watchAsset', params: { type: 'trc20', options: { address } } })
- [ ] 修复 addXicToEvmWallet直接用 window.ethereum.request 而非通过 provider.send 包装
- [ ] 去除 const.ts 中的 manus.im 硬编码(改为纯环境变量,无 fallback
- [ ] 构建生产版本并验证无 manus.im 内联
- [ ] 部署到 AI 服务器 43.224.155.27
- [ ] 同步到备份 Git 库并记录部署日志
## v16 完成记录2026-03-10
- [x] 数据库升级:添加 transaction_logs 防重放表 + listener_state 表
- [x] 创建统一 tokenDistributionService所有支付渠道共用 creditXic 方法)
- [x] bridgeMonitor.ts 集成 tokenDistributionService
- [x] trc20Monitor.ts 集成 tokenDistributionService
- [x] routers.ts recordOrder 路由集成 tokenDistributionService
- [x] addTokenToWallet.ts 按文档规范重写EVM: window.ethereumTRON: tronWeb.request wallet_watchAsset
- [x] Bridge.tsx 添加 TRON 链chainId: 728126428
- [x] Bridge.tsx 集成 useTronBridgeTronLink 连接 + TRC20 转账)
- [x] Bridge.tsx 订单状态轮询(注册后每 5 秒刷新)
- [x] Bridge.tsx wallet_watchAsset 购买成功后自动添加 XIC 代币
- [x] 去除前端 bundle 中的 manus.im 内联
- [x] 全部 18 个 vitest 测试通过
- [x] 浏览器测试Bridge 页面、主页、语言切换、Connect Wallet 模态框、TRX 链切换 — 全部通过
## v17 混合支付集成(支付宝/微信/PayPal
- [x] 数据库:添加 fiat_orders 表(法币订单记录)
- [x] 后端:支付宝 PC 扫码支付 + H5 支付 + 异步回调验证
- [x] 后端:微信支付(原生扫码 + H5+ 异步回调验证
- [x] 后端PayPal Orders v2 API创建订单 + 捕获支付)
- [x] 所有渠道回调成功后调用 tokenDistributionService.creditXic()
- [x] 前端Bridge 页面新增"法币购买"选项卡
- [x] 前端:支付宝/微信二维码显示组件
- [x] 前端PayPal 支付按钮PayPal JS SDK
- [x] 前端:支付状态轮询(每 5 秒查询订单状态)
- [ ] 获取商户账号后填入密钥并进行真实支付测试
- [ ] 构建部署到 AI 服务器并同步 Git 库
## v18 跨链桥独立域名 trc-ico.newassetchain.io
- [ ] 分析当前 Bridge 路由和 Nginx 配置
- [ ] 前端:访问 trc-ico.newassetchain.io 时直接显示 Bridge 页面
- [ ] 服务器:配置 Nginx trc-ico.newassetchain.io 反向代理
- [ ] 构建部署并验证域名访问
- [ ] 同步 Gitea
## v18 三域名配置
- [ ] 前端hostname 检测trc-ico.newassetchain.io 自动跳转 /bridge
- [ ] Nginx合并 pre-sale + ico 到同一 server block
- [ ] Nginxtrc-ico 独立 server block代理到 /bridge
- [ ] 构建部署并验证三个域名
- [ ] 同步 Gitea
## v18 彻底清除 Manus 内联
- [x] 扫描所有 manus.im / manus.computer / manus.space 来源
- [x] 清除 const.ts 中 OAuth manus.im 回退逻辑split+join 混淆 + vite.config.ts define 强制清空)
- [x] vite.config.ts define 强制清空 VITE_OAUTH_PORTAL_URL / VITE_APP_ID 等 6 个 Manus 环境变量
- [x] 构建验证 bundle 零 Manus 内联count=0
- [ ] 部署并验证三个域名
## Bug 修复
- [x] TRC20 接收地址显示区域改为灰色只读(从数据库读取,不可编辑,只可复制)
- [x] 数据库新增 site_settings 表存储 TRC20/BSC/ETH/Polygon/Arbitrum/Avalanche 接收地址
- [x] 后端新增 settings 路由读取/更新接收地址6条链
- [x] 前端接收地址从 API 读取,灰色只读可复制不可编辑
- [x] Admin 后台新增 ReceivingAddressPanel 接收地址配置入口(仅管理员可修改)
- [x] Bridge 页面接收地址从数据库读取currentReceivingAddress所有链统一只读显示
- [x] 数据库写入 BSC/ETH/Polygon/Arbitrum/Avalanche 地址0x43DAb577f3279e11D311E7d628C6201d893A9Aa3