7 Commits
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
9d7a5a7266 |
fix(welcome): 修复欢迎页3个设计问题
1. Logo色与主色调不一致 — 品牌名"Genex"改用 ShaderMask 渐变 (#9B5CF6→#D946EF),与 logo icon 色系完全匹配 2. Logo到品牌名间距过大 — 24px → 12px,品牌名到slogan 8px → 6px 符合 8pt grid 美学标准(紧凑型视觉组 4-8-12px) 3. 缺少微信登录 — 新增 WeChat 社交登录按钮(绿色#07C160), 4语言i18n key: welcome.wechat Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
|
|
|
a92f00af25 |
feat(branding+fix): 中文品牌名、miniapp logo资源、编译错误修复
## 中文品牌名更新
- admin-app: 中文环境下 app_name → "企业券信",login_title/ai_welcome/settings_about 同步更新
- miniapp: 中文环境下 app_name → "券信",6处内联文本(share/activity/register/ai_chat等)同步更新
- genex-mobile: zh_cn + zh_tw 共12处 "Genex" → "券信"(login/register/aiChat/profile/aiFab)
- 英文/日文环境保持 "Genex" 不变
## miniapp logo 资源集成
- 新增 src/assets/images/ 目录:logo.png, logo_icon.png, logo_icon.svg, logo_full.svg
- login 页:CSS模拟logo(.logo-left/.logo-right) → <image src={logoIcon}>
- h5-share 页:💎 emoji → <img src={logoIcon}> (header + RegisterGuidePage)
- h5-activity 页:"G" 文字方块 → <image src={logoIcon}> (footer)
- h5-register 页:"G" 文字方块 → <image src={logoIcon}> (branding section)
## genex-mobile 编译错误修复
- wallet_coupons_page: EmptyState.noCoupons() + StatusTags.active/pending/expired/used() 添加 context 参数
- trading_page: StatusTags.onSale/completed/cancelled() 添加 context 参数
- message_page: EmptyState.noMessages() 添加 context 参数
- coupon_service: inner['total'] 添加 `as int?` 显式类型转换
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
|
|
3a57b0fd4d |
feat: 全平台API对齐 — 4个前端应用55+页面接入真实后端API
跨越 genex-mobile、admin-app、admin-web、miniapp 四个前端应用,
将所有页面从 mock 硬编码数据替换为真实后端 API 调用,
同时补建后端缺失的 27+ 个端点,实现前后端完整联通。
## 后端新增 (4个微服务, 27+端点)
### issuer-service — 5个新Controller, 19个新文件
- IssuerStatsController: GET /issuers/me/stats, /credit (发行商仪表盘统计+信用)
- IssuerFinanceController: GET/POST balance/stats/transactions/withdraw/reconciliation
- IssuerStoreController: CRUD /issuers/me/stores + /employees (门店+员工管理)
- RedemptionController: POST scan/manual/batch, GET history/today-stats (核销)
- CouponBatchController: POST issue/recall/price-adjust, GET operations (批量操作)
- CouponController扩展: GET /search, /:id/nearby-stores, /:id/similar
- 新实体: Employee, Redemption; Store 增加 level/parentId
- 新迁移: 032_create_stores_employees_redemptions.sql
### trading-service (Go)
- GET /api/v1/trades/my/orders — 用户订单列表(分页+状态筛选)
- POST /api/v1/trades/coupons/:id/transfer — 券转赠
### user-service
- GET/PUT /api/v1/users/me/settings — 用户偏好设置(语言/货币/通知)
### auth-service
- POST /api/v1/auth/send-sms-code — 发送短信验证码(Redis存储, 5分钟TTL)
- POST /api/v1/auth/login-phone — 手机号+验证码登录(自动注册)
### Kong 路由
- 新增5条路由: issuers/me, redemptions, coupons/batch, trades/my, trades/coupons
## genex-mobile (Flutter, 2页)
- HomePage: 接入 CouponApiService.getFeaturedCoupons() + getHoldingsSummary()
- WalletCouponsPage: 接入持仓列表API, 支持Tab状态筛选
- 修复 NotificationService/PushService 7+2个路径缺少 /api/v1/ 前缀
- 新增 CouponApiService, CouponModel, HoldingsSummaryModel
## admin-app (Flutter发行商控制台, 11页 + router + i18n)
- 修复 NotificationService 7个路径 + PushService 2个路径前缀
- 新增9个Service: auth, issuer, coupon, finance, credit, store, redemption, analytics, ai_chat
- 11页全部从 StatelessWidget→StatefulWidget, mock→API:
IssuerLoginPage(SMS登录), Dashboard(统计), CouponList(分页+筛选),
CreateCoupon(提交审核), CouponDetail(详情), Redemption(扫码/手动/批量核销),
Finance(余额/流水/对账), Credit(评分), StoreManagement(门店+员工),
AiAgent(真实AI对话), Settings(资料+登出)
- 所有页面添加 loading/error/pull-to-refresh 状态
## admin-web (Next.js 15管理后台, 24页)
- 新建API基础设施: api-client.ts(axios), auth-context.tsx, use-api.ts(react-query)
- providers.tsx 接入 QueryClientProvider + AuthProvider
- 24页全部替换 useState(mockArray) 为 useApi<T>('/api/v1/admin/...'):
Dashboard, Users, Issuers, Coupons, Trading, Risk, Finance, System,
Compliance(SAR/SEC/License/SOX/Tax/IPO), Analytics(User/Coupon/MM/Consumer),
Disputes, Chain, Reports, Merchant, Agent, Insurance
- 所有页面添加 TypeScript 接口, loading/error 状态, 'use client' 指令
- 状态比较改用原始API字符串(非t()翻译值)
## miniapp (Taro/React小程序, 20页)
- 新建API基础设施: config/index.ts, utils/request.ts(Taro.request封装), store/auth.ts
- 新增8个Service: auth, coupon, my-coupon, user, trading, wallet, notification, ai
- 20页全部替换硬编码数据为Service调用:
Home, Search, Detail, Purchase, PaymentSuccess,
MyCoupons, MyCouponDetail, Redeem, Transfer,
Profile, Orders, Messages, Wallet, Settings, KYC, AIChat,
Login, H5Share, H5Activity, H5Register
- 统一 useState+useEffect 数据获取模式, 错误处理, 加载状态
## 统计
- 新建文件: ~51个 (后端26 + 前端25)
- 修改文件: ~93个 (后端24 + 前端69)
- 新增后端端点: 27+
- 前端页面接入API: 55+ (genex-mobile 2 + admin-app 11 + admin-web 24 + miniapp 20)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
|
|
184a7d16db |
feat: 三端集成 App升级 + 内部推送 + FCM外部推送框架 (genex-mobile/admin-app/mobile)
从 rwadurian/frontend/mobile-app 移植升级系统和通知系统到 Genex 三个 Flutter 客户端, 适配目标项目轻量架构(ValueNotifier 替代 Riverpod,Dio HTTP 客户端,移除 screenutil)。 ## 新增核心模块 (每个 app 13 个 Dart 文件) ### 升级系统 (core/updater/) - UpdateService: 统一升级服务单例,支持 Google Play + 自建服务器双渠道 - VersionChecker: 版本检测器,调用 GET /api/app/version/check - DownloadManager: APK 下载管理,支持断点续传 + SHA256 校验 - ApkInstaller: APK 安装器 (Platform Channel) - AppMarketDetector: 应用市场来源检测 - SelfHostedUpdater: 自建服务器渠道更新对话框 (i18n 化) - GooglePlayUpdater: Google Play 应用内更新 ### 通知系统 (core/services/ + core/providers/) - NotificationService: 通知 + 公告 API 服务 - GET /notifications, /notifications/unread-count - PUT /notifications/:id/read - GET /announcements, /announcements/unread-count - PUT /announcements/:id/read, /announcements/read-all - NotificationBadgeManager: 未读徽章管理器 - ValueNotifier<int> 驱动 UI - 30秒定时自动刷新 + 前后台切换刷新 (WidgetsBindingObserver) ### FCM 推送框架 (core/push/) - PushService: Firebase 推送服务框架 - Firebase 代码注释保护,无配置文件时静默跳过 - 设备 token 注册 POST /device-tokens - 待 Firebase 配置文件就绪后取消注释即可启用 ### HTTP 客户端 (core/network/) - ApiClient: Dio 封装单例,baseUrl = https://api.gogenex.cn ## Android 原生配置 (每个 app) - AndroidManifest.xml: 添加 REQUEST_INSTALL_PACKAGES 权限 + FileProvider - res/xml/file_paths.xml: FileProvider 路径配置 - MainActivity.kt: APK 安装器 + 应用市场检测 MethodChannel ## UI 层改造 (每个 app) - main.dart: 异步启动,初始化 UpdateService/PushService/NotificationBadgeManager - MainShell: 消息 Tab 徽章改为 ValueListenableBuilder 动态未读数,进入后 3 秒检查更新 - SettingsPage: StatefulWidget 化,动态版本号 (PackageInfo),点击版本号手动检查更新 - MessagePage: 移除 mock 数据,接入 NotificationService API,4 Tab 分类 + 下拉刷新 + 标记已读 ## i18n 新增 (~35 keys/语言) - update.*: 25 个升级相关 keys - notification.*: 9 个通知相关 keys - genex-mobile: 4 语言 (zh_CN/zh_TW/en/ja) 分文件 - admin-app: 3 语言 (zh_CN/en_US/ja_JP) 内联单文件 - mobile: 4 语言 (zh_CN/zh_TW/en/ja) 分文件 ## 三端差异化配置 | App | MethodChannel 前缀 | applicationId | |-----|-------------------|---------------| | genex-mobile | cn.gogenex.consumer | cn.gogenex.consumer | | admin-app | cn.gogenex.issuer | cn.gogenex.issuer | | mobile | cn.gogenex.mobile | cn.gogenex.mobile | Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
|
|
|
4da8a373f2 |
refactor: 全项目清除MVP字样,统一为正式系统用语
## 变更范围:21个文件,覆盖全栈 ### SRS需求文档 (4个文件,20处修改) docs/券金融平台-软件需求规格.md (7处): - "MVP策略" → "运营策略"/"合规策略" - "MVP阶段GNX不上交易所" → "Phase 1阶段GNX不上交易所" - "MVP同步" → "同步发布" - "MVP阶段优先级" → "阶段优先级" - "Phase 1(MVP)" → "Phase 1(基础平台)" - "基础发行与交易(MVP,仅Utility Track)" → "基础发行与交易(仅Utility Track)" docs/券金融平台-需求规格综合评估报告.md (4处): - "MVP分期" → "阶段分期" - "MVP回避策略" → "合规回避策略" - "MVP仅Utility Track" → "Phase 1仅Utility Track" docs/闲券交易平台-架构开发需求.md (4处): - "MVP阶段只开放" → "当前阶段只开放" - "Phase 1(MVP)" → "Phase 1(基础平台)" - "基础平台(MVP,仅Utility Track)" → "基础平台(仅Utility Track)" docs/闲券平台-软件开发需求.md (5处): - "MVP阶段用户不接触" → "当前阶段用户不接触" - "MVP策略" → "运营策略" - "Phase 1(MVP)" → "Phase 1(基础平台)" - "Phase 1 — MVP" → "Phase 1 — 基础平台" ### 后端服务代码 (7个文件,13处修改) trading-service (Go): - admin_trade_handler.go: 3处 "for MVP"/"In MVP" 注释清除 - admin_mm_handler.go: 2处 "In MVP"/"for MVP" 注释清除 chain-indexer (Go): - admin_chain_handler.go: 1处 "for MVP" 注释清除 compliance-service (NestJS): - admin-compliance.service.ts: 3处 "(mock for MVP)" 注释清除 issuer-service (NestJS): - admin-issuer.service.ts: 1处 "For MVP" 注释清除 - admin-merchant.service.ts: 2处 "For MVP" 注释清除 notification-service (NestJS): - event-consumer.service.ts: 1处 "In MVP" 注释清除 ### 前端代码 (10个文件) mobile (5个文件): - i18n: en/zh_cn/zh_tw/ja 4语言 "MVP版本仅支持" → "当前仅支持" - i18n key: proMode.mvpNote → proMode.trackNote - pro_mode_page.dart: 更新key引用 genex-mobile (5个文件): - 同mobile,4语言+1页面引用全部更新 ### 验证结果 全项目grep (?i)\bMVP\b = 0 matches,彻底清除完毕 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
|
|
|
5bc1cbe4d8 |
feat: 完成全量国际化(i18n),支持简中/繁中/英文/日文四语言
## 概述
实现 Genex Mobile 全量国际化支持,覆盖全部 UI 字符串。
支持语言:简体中文(zh_CN)、繁体中文(zh_TW)、英文(en)、日文(ja)。
共计 720+ 翻译键值对,涉及 51 个文件。
## 新增文件
- lib/app/i18n/strings/zh_cn.dart — 简体中文翻译(基础语言)
- lib/app/i18n/strings/zh_tw.dart — 繁体中文翻译
- lib/app/i18n/strings/en.dart — 英文翻译
- lib/app/i18n/strings/ja.dart — 日文翻译
- lib/app/i18n/locale_manager.dart — 全局语言/货币状态管理器
## i18n 基础架构
- AppLocalizations: 基于 Map<String, String> 的翻译查找
- AppLocalizationsDelegate: Flutter 本地化委托集成
- context.t('key') 扩展方法:便捷取用翻译文本
- 回退链:缺失 key → zh_CN → key 本身
- LocaleManager: ValueNotifier<Locale?> 响应式语言切换
- 货币绑定:根据 locale 自动匹配货币符号(CNY/TWD/USD/JPY)
## 页面级国际化(46 个文件)
### 认证模块 (auth)
- welcome_page, login_page, register_page, forgot_password_page
### 券模块 (coupons)
- home_page, market_page, search_page, coupon_detail_page
- my_coupons_page, my_coupon_detail_page, wallet_coupons_page
- order_confirm_page, payment_page, payment_success_page
- redeem_qr_page, receive_coupon_sheet
### 交易模块 (trading)
- trading_page, trading_detail_page, sell_order_page, transfer_page
### 钱包模块 (wallet)
- wallet_page, deposit_page, withdraw_page, transaction_records_page
### 用户模块 (profile)
- profile_page, settings_page, kyc_page
- payment_management_page, pro_mode_page
### 消息模块 (message)
- message_page, message_detail_page
### 商户模块 (merchant)
- merchant_home_page, merchant_ai_assistant_page
### 发行方模块 (issuer)
- issuer_main_page
### AI 模块 (ai_agent)
- agent_chat_page, ai_fab
### 公共组件 (shared/widgets)
- coupon_card, price_tag, status_tag, empty_state
- ai_confirm_dialog, kyc_badge
### 应用层 (app)
- main.dart (本地化委托/Locale解析配置)
- main_shell.dart, app_localizations.dart, pubspec.yaml
## 技术处理
- Widget getter → method(BuildContext): 需要 context 的属性转为方法
- const 默认参数 → nullable: 无法在 const 中使用 context.t(),改为可空参数在 build() 中解析
- Mock 数据保留中文:示例/演示数据将来自 API,无需国际化
- 语言选择器原生显示:中文/English/日本語 等按各语言原生名称展示
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
|
|
b63414542b |
feat: Create genex-mobile app with coupon lifecycle management redesign
基于 frontend/mobile 创建全新的 genex-mobile 应用,重新设计为券的生命周期管理平台。 ## 底部导航重构 (5 tabs → 4 tabs) - 首页 / 交易 / 消息 / 我的 - 移除独立的"我的券"Tab,功能合并到首页券钱包中 - "市场"重命名为"交易",图标改为行情图标 ## 首页改造 ### 券钱包(替代原Banner轮播区域) - 紫色渐变卡片展示"我的钱包",含券数量统计(可使用/待核销/已过期) - 水平滚动的券迷你卡片列表,支持Tab筛选(全部/可使用/待核销/已过期) - 快捷操作栏:接收 / 转赠 / 出售 / 核销 - 接收功能:点击弹出底部Sheet,展示接收ID和接收二维码 - 对方可通过扫码或输入ID转赠券到钱包 - 接收ID支持一键复制 ### 分类网格重新设计(从商品品类改为省钱机制) - 原8个商品分类(餐饮/购物/娱乐/出行/生活/品牌/折扣/全部) - 改为6个省钱导向分类:限时抢购 / 新券首发 / 折扣排行 / 即将到期 / 比价 / 全部分类 - 3列×2行布局,每个入口强调"怎么省"而非"卖什么" ### 其他区域保持不变 - AI智能推荐卡片 - 精选好券列表 - AI FAB浮动按钮 ## 交易页(币安交易所风格) ### 一级市场(打新申购 / Launchpad风格) - 券发行卡片:品牌信息 / 发行价 / 面值 / 折扣 / 发行量 - 销售进度条和百分比 - 状态标签:即将开始(含倒计时)/ 申购中 / 已结束 ### 二级市场(交易所行情列表) - 交易对分类Tab:券/法币 | 券/数字货币 | 券/稳定币 | 收藏 - 行情列表:交易对名称 / 最新价格 / 24h涨跌幅(红绿色块) - 成交量和USD等价显示 - 支持的交易对示例:SBUX/USD, NIKE/BTC, AMZN/USDT 等 ### 交易对详情页(K线 + 盘口 + 下单) - 价格头部:当前价 / 24h涨跌 / OHLC数据(高/低/开盘/成交量) - K线图(含模拟蜡烛图渲染 + 成交量柱状图) - 时间周期选择器:1m / 5m / 15m / 1h / 4h / 1D / 1W - 交易深度:买卖盘口(Bid/Ask)带深度条可视化 - 下单表单:买入/卖出切换 / 限价单/市价单 / 价格数量输入 / 比例快选(25%/50%/75%/100%) - 当前委托和历史委托列表 - 底部买入/卖出快捷按钮 ## 券详情页增强 - 新增"附近可用门店"区域(LBS定位功能入口) - 展示附近门店列表:门店名 / 距离 / 营业状态 ## 技术细节 - 保持原有设计系统:紫色主色调 #6C5CE7 / Material 3 / 亮色模式 - Flutter analyze 零错误通过 - 所有新增页面使用 mock 数据,便于后续接入真实API Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |