gcx/docs/guides/02-Flutter管理后台App开发指南.md

288 lines
9.5 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.

# Genex Flutter 管理后台 App 开发指南
> 发行方管理控制台Issuer Console App
---
## 1. 产品定位
发行方管理后台App为企业/政府/机构提供**Web2体验**的券发行与管理工具。发行方无需了解区块链技术,发券 = 创建优惠活动,链上铸造在后台自动完成。
**核心设计原则**
- 发行方看到的是"创建优惠活动",不是"链上铸造NFT"
- 消费数据隔离:发行方仅可见汇总数据(兑付率、销量),不可见消费者个人信息
- AI Agent深度融合协助发券建议、定价优化、信用提升
---
## 2. 技术栈
| 技术 | 用途 |
|------|------|
| **Flutter 3.x** | 跨平台iOS/Android与Consumer App共享核心模块 |
| **Riverpod 2.x** | 状态管理 |
| **GoRouter** | 路由管理 |
| **Dio** | HTTP客户端 |
| **Freezed** | 不可变数据模型 |
| **fl_chart** | 数据可视化图表 |
| **qr_code_scanner** | 扫码核销 |
---
## 3. 项目结构
```
genex_issuer/
├── lib/
│ ├── main.dart
│ ├── app/
│ │ ├── router.dart # 发行方专用路由
│ │ └── theme/ # 企业端主题(区别于消费者端)
│ ├── core/ # 共享核心模块可从mono-repo引用
│ ├── features/
│ │ ├── auth/ # 企业注册/登录
│ │ ├── onboarding/ # 入驻审核流程
│ │ ├── coupon_management/ # 券管理(核心模块)
│ │ │ ├── create/ # 创建券(模板化发券)
│ │ │ ├── list/ # 券列表管理
│ │ │ ├── detail/ # 券详情/数据
│ │ │ └── recall/ # 券召回/下架
│ │ ├── redemption/ # 核销管理
│ │ ├── finance/ # 财务管理
│ │ ├── credit/ # 信用评级
│ │ ├── dashboard/ # 数据仪表盘
│ │ ├── ai_agent/ # AI Agent
│ │ └── settings/ # 设置
│ └── shared/ # 共享组件
├── test/
└── pubspec.yaml
```
---
## 4. 核心功能模块
### 4.1 企业入驻审核
```dart
// 入驻流程状态机
enum OnboardingStep {
companyInfo, // 企业基本信息
documents, // 营业执照/资质文件上传
contactPerson, // 联系人信息
review, // 等待平台审核
approved, // 审核通过
rejected, // 审核拒绝(可重新提交)
}
// 零保证金入驻:审核通过后给予初始低额度
@freezed
class IssuerProfile with _$IssuerProfile {
const factory IssuerProfile({
required String id,
required String companyName,
required String businessLicense,
required CreditRating creditRating, // 信用等级
required double issuanceQuota, // 发行额度
required IssuerTier tier, // 白银/黄金/铂金/钻石
required OnboardingStep onboardingStep,
}) = _IssuerProfile;
}
enum CreditRating { AAA, AA, A, BBB, BB }
enum IssuerTier { silver, gold, platinum, diamond }
```
### 4.2 模板化发券
> 发行方通过Web2界面创建券无需了解NFT/ERC标准。
```dart
// 券模板类型
enum CouponTemplate {
discount, // 折扣券
voucher, // 代金券
giftCard, // 礼品卡
storedValue, // 储值券
}
@freezed
class CreateCouponParams with _$CreateCouponParams {
const factory CreateCouponParams({
required CouponTemplate template,
required String name,
required double faceValue,
required DateTime expiryDate, // ≤12个月Utility Track强制
required int quantity, // 发行数量
double? issuePrice, // 发行价(通常折价)
bool? transferable, // 是否允许转让(默认可转让)
int? maxResaleCount, // 最大转售次数默认2-3次
bool? stackable, // 是否可叠加使用
double? minPurchaseAmount, // 最低消费金额
List<String>? allowedStoreIds, // 限定门店
String? description,
String? imageUrl,
}) = _CreateCouponParams;
}
```
```dart
// 发券流程
// 选择模板 → 填写信息 → 设定规则 → 预览 → 提交审核 → 审核通过 → 自动链上铸造+上架
class CreateCouponUseCase {
Future<Either<Failure, CouponDraft>> call(CreateCouponParams params) async {
// 前端校验
if (params.expiryDate.difference(DateTime.now()).inDays > 365) {
return Left(Failure.validation(
errors: {'expiryDate': 'Utility Track有效期不得超过12个月'},
));
}
return _repo.submitCouponDraft(params);
// 后端:审核通过 → 自动调用CouponFactory合约铸造发行方无感知
}
}
```
### 4.3 数据仪表盘
```dart
// 发行方数据概览
@freezed
class IssuerDashboard with _$IssuerDashboard {
const factory IssuerDashboard({
required int totalIssued, // 总发行量
required int totalRedeemed, // 总核销量
required double redemptionRate, // 兑付率
required double breakageRate, // Breakage率
required double totalRevenue, // 总销售收入
required double availableBalance, // 可提现余额
required CreditRating creditRating, // 信用等级
required double quotaUsed, // 已用额度
required double quotaTotal, // 总额度
}) = _IssuerDashboard;
}
```
### 4.4 财务管理
```dart
// 财务视图:法币展示,不暴露链上稳定币细节
@freezed
class FinanceOverview with _$FinanceOverview {
const factory FinanceOverview({
required double salesRevenue, // 销售收入
required double pendingSettlement, // 待结算
required double withdrawable, // 可提现
required double totalWithdrawn, // 已提现
required List<Transaction> recentTransactions,
}) = _FinanceOverview;
}
```
### 4.5 信用评级展示
```dart
// 四因子信用评分核销率35% + (1-Breakage率)25% + 市场存续20% + 用户满意度20%
class CreditScoreWidget extends StatelessWidget {
final CreditDetail credit;
@override
Widget build(BuildContext context) {
return Column(children: [
// 总分和等级
CreditScoreGauge(score: credit.totalScore, rating: credit.rating),
// 四因子明细
FactorBar(label: '核销率', value: credit.redemptionRate, weight: 0.35),
FactorBar(label: '沉淀控制', value: 1 - credit.breakageRate, weight: 0.25),
FactorBar(label: '市场存续', value: credit.tenureScore, weight: 0.20),
FactorBar(label: '用户满意度', value: credit.satisfaction, weight: 0.20),
]);
}
}
```
---
## 5. AI Agent 集成
### 5.1 发行方AI Agent场景
| 场景 | AI能力 | UI实现 |
|------|--------|--------|
| 发券建议 | 分析市场趋势,建议发券时间/面值/折扣/数量 | 发券中心顶部AI建议卡片 |
| 定价优化 | 三因子模型+AI定价引擎提供最优定价策略 | 创建券时AI推荐价格+对比分析 |
| 信用提升 | 分析信用评分各维度,给出改善建议 | 信用等级页面AI建议列表 |
| 销售分析 | 智能解读销售数据,发现异常和机会 | 数据中心AI洞察卡片 |
| 额度规划 | 预测额度消耗速度,建议补充计划 | 额度页面AI规划时间线 |
| 合规助手 | 提醒合规要求,辅助材料准备 | 入驻审核时AI检查清单 |
### 5.2 AI建议卡片组件
```dart
class AiSuggestionCard extends StatelessWidget {
final AiSuggestion suggestion;
final VoidCallback onAccept;
final VoidCallback onDismiss;
@override
Widget build(BuildContext context) {
return Card(
child: Column(children: [
Row(children: [
Icon(Icons.smart_toy, color: Colors.blue),
Text('AI建议', style: Theme.of(context).textTheme.titleSmall),
]),
Text(suggestion.content),
if (suggestion.actionable)
Row(children: [
TextButton(onPressed: onDismiss, child: Text('忽略')),
ElevatedButton(onPressed: onAccept, child: Text('采纳')),
]),
]),
);
}
}
```
---
## 6. 发行方分层激励展示
| 层级 | 月发行量 | 手续费率 | 增值服务 |
|------|---------|---------|---------|
| 白银 | < 100万 | 1.5% | 基础数据看板 |
| 黄金 | 100-500万 | 1.2% | 高级数据分析+推荐位 |
| 铂金 | 500-2000万 | 1.0% | 专属客服+定制报表 |
| 钻石 | > 2000万 | 0.8% | 定制开发+专属API+联合营销 |
> 新入驻发行方首月享黄金层级手续费(获客激励)。
---
## 7. 与Consumer App共享
| 共享模块 | 内容 |
|---------|------|
| `core/network/` | Dio配置、拦截器 |
| `core/storage/` | 本地存储封装 |
| `core/constants/` | 术语映射、API地址 |
| `shared/widgets/` | 通用UI组件 |
| `shared/models/` | Coupon、User等共享模型 |
通过Dart Package或Mono-repo方式实现代码共享。
---
## 8. 测试与发布
- 单元测试:发券参数校验、信用评分计算、额度校验
- Widget测试发券表单、仪表盘图表
- 集成测试:完整发券流程、核销流程
- 发布通道与Consumer App独立不同App ID不同签名
---
*文档版本: v1.0*
*基于: Genex 券交易平台 - 软件需求规格说明书 v4.1*
*技术栈: Flutter 3.x + Riverpod + Clean Architecture*