Skip to main content

futucli/cli/commands/
tier_m.rs

1//! Tier-M / mobile-driven clap argument structs split from commands.rs.
2
3use clap::Args;
4
5#[derive(Args)]
6pub struct CashLogArgs {
7    /// 账户 ID — 位置参数 (优先) 或 --acc-id 二选一
8    #[arg(index = 1, value_name = "ACC_ID")]
9    pub(crate) acc_id_pos: Option<u64>,
10
11    /// 账户 ID (named, 兼容老用法)
12    #[arg(long = "acc-id", conflicts_with = "acc_id_pos")]
13    pub(crate) acc_id: Option<u64>,
14
15    /// App 显示卡号:4 位末尾或 16 位完整卡号
16    #[arg(long = "card-num")]
17    pub(crate) card_num: Option<String>,
18
19    /// 环境: real / simulate (default real)
20    #[arg(long, default_value = "real")]
21    pub(crate) env: String,
22
23    /// 起始时间戳 (秒, epoch)
24    #[arg(long = "begin-time")]
25    pub(crate) begin_time: u64,
26
27    /// 结束时间戳 (秒, epoch)
28    #[arg(long = "end-time")]
29    pub(crate) end_time: u64,
30
31    /// 分页 cursor (字符串, 从上一页响应的 log_id 字段拿)
32    #[arg(long = "log-id-cursor")]
33    pub(crate) log_id_cursor: Option<String>,
34
35    /// 业务分类 ID 过滤 (从 biz-group 拿可用 id)
36    #[arg(long = "biz-group-id")]
37    pub(crate) biz_group_id: Option<u32>,
38
39    /// 业务子分类 ID 过滤 (从 biz-group 返回的 sub_groups 拿)
40    #[arg(long = "biz-sub-group-id")]
41    pub(crate) biz_sub_group_id: Option<u32>,
42
43    /// 现金流方向: 1=流入, 2=流出, 0/省略=全部
44    #[arg(long = "in-out")]
45    pub(crate) in_out: Option<u32>,
46
47    /// 币种过滤 (如 HKD / USD / JPY;可从 biz-group 的 currencies 拿)
48    #[arg(long)]
49    pub(crate) currency: Option<String>,
50
51    /// 股票代码过滤 (如 AAPL.US / 00700.HK)
52    #[arg(long)]
53    pub(crate) symbol: Option<String>,
54
55    /// backend stock_id 过滤 (有上游 stock_id 时使用)
56    #[arg(long = "stock-id")]
57    pub(crate) stock_id: Option<u64>,
58
59    /// 单页最大条数;省略时 daemon 使用移动端默认 50
60    #[arg(long = "max-cnt")]
61    pub(crate) max_cnt: Option<u32>,
62
63    /// 关键词模糊搜
64    #[arg(long)]
65    pub(crate) keyword: Option<String>,
66}
67
68#[derive(Args)]
69pub struct CashDetailArgs {
70    /// 账户 ID — 位置参数或 --acc-id 二选一
71    #[arg(index = 1, value_name = "ACC_ID")]
72    pub(crate) acc_id_pos: Option<u64>,
73
74    #[arg(long = "acc-id", conflicts_with = "acc_id_pos")]
75    pub(crate) acc_id: Option<u64>,
76
77    /// App 显示卡号:4 位末尾或 16 位完整卡号
78    #[arg(long = "card-num")]
79    pub(crate) card_num: Option<String>,
80
81    #[arg(long, default_value = "real")]
82    pub(crate) env: String,
83
84    /// log_id (字符串, 从 cash-log 响应的 log_id 字段拿)
85    #[arg(long = "log-id")]
86    pub(crate) log_id: String,
87}
88
89#[derive(Args)]
90pub struct BizGroupArgs {
91    /// 账户 ID — 位置参数或 --acc-id 二选一
92    #[arg(index = 1, value_name = "ACC_ID")]
93    pub(crate) acc_id_pos: Option<u64>,
94
95    #[arg(long = "acc-id", conflicts_with = "acc_id_pos")]
96    pub(crate) acc_id: Option<u64>,
97
98    /// App 显示卡号:4 位末尾或 16 位完整卡号
99    #[arg(long = "card-num")]
100    pub(crate) card_num: Option<String>,
101
102    #[arg(long, default_value = "real")]
103    pub(crate) env: String,
104}
105
106#[derive(Args)]
107pub struct MarginInfoArgs {
108    /// 账户 ID — 位置参数或 --acc-id 二选一 (v1.4.102 A3 alias)
109    #[arg(index = 1, value_name = "ACC_ID")]
110    pub(crate) acc_id_pos: Option<u64>,
111
112    #[arg(long = "acc-id", conflicts_with = "acc_id_pos")]
113    pub(crate) acc_id: Option<u64>,
114
115    /// App 显示卡号:4 位末尾或 16 位完整卡号
116    #[arg(long = "card-num")]
117    pub(crate) card_num: Option<String>,
118
119    #[arg(long, default_value = "real")]
120    pub(crate) env: String,
121
122    /// 市场: HK / US / CN_AH (mobile cmd 3101/3102/3107)
123    #[arg(long)]
124    pub(crate) market: String,
125}
126
127#[derive(Args)]
128pub struct AccountFlagArgs {
129    #[arg(long = "acc-id")]
130    pub(crate) acc_id: Option<u64>,
131
132    /// App 显示卡号:4 位末尾或 16 位完整卡号
133    #[arg(long = "card-num")]
134    pub(crate) card_num: Option<String>,
135
136    #[arg(long, default_value = "real")]
137    pub(crate) env: String,
138
139    /// 标志 id (常用值: 5/22/10/16/23/11/24/25/34/46)
140    #[arg(long = "flag-id")]
141    pub(crate) flag_id: u32,
142}
143
144#[derive(Args)]
145pub struct BondTotalAssetArgs {
146    #[arg(long = "acc-id")]
147    pub(crate) acc_id: Option<u64>,
148
149    /// App 显示卡号:4 位末尾或 16 位完整卡号
150    #[arg(long = "card-num")]
151    pub(crate) card_num: Option<String>,
152
153    #[arg(long, default_value = "real")]
154    pub(crate) env: String,
155
156    /// 市场: HK / US / SG (仅 3 市场有债券业务)
157    #[arg(long)]
158    pub(crate) market: String,
159}
160
161#[derive(Args)]
162pub struct BondSingleAssetArgs {
163    #[arg(long = "acc-id")]
164    pub(crate) acc_id: Option<u64>,
165
166    /// App 显示卡号:4 位末尾或 16 位完整卡号
167    #[arg(long = "card-num")]
168    pub(crate) card_num: Option<String>,
169
170    #[arg(long, default_value = "real")]
171    pub(crate) env: String,
172
173    #[arg(long)]
174    pub(crate) market: String,
175
176    /// 债券代码
177    #[arg(long)]
178    pub(crate) symbol: String,
179}
180
181#[derive(Args)]
182pub struct BondPositionListArgs {
183    #[arg(long = "acc-id")]
184    pub(crate) acc_id: Option<u64>,
185
186    /// App 显示卡号:4 位末尾或 16 位完整卡号
187    #[arg(long = "card-num")]
188    pub(crate) card_num: Option<String>,
189
190    #[arg(long, default_value = "real")]
191    pub(crate) env: String,
192
193    #[arg(long)]
194    pub(crate) market: String,
195}
196
197#[derive(Args)]
198pub struct BondAnswerStateArgs {
199    #[arg(long = "acc-id")]
200    pub(crate) acc_id: Option<u64>,
201
202    /// App 显示卡号:4 位末尾或 16 位完整卡号
203    #[arg(long = "card-num")]
204    pub(crate) card_num: Option<String>,
205
206    #[arg(long, default_value = "real")]
207    pub(crate) env: String,
208
209    #[arg(long)]
210    pub(crate) market: String,
211
212    /// 债券 symbol (类似 11000018)
213    #[arg(long)]
214    pub(crate) symbol: String,
215}
216
217#[derive(Args)]
218pub struct BondTradeReminderArgs {
219    #[arg(long = "acc-id")]
220    pub(crate) acc_id: Option<u64>,
221
222    /// App 显示卡号:4 位末尾或 16 位完整卡号
223    #[arg(long = "card-num")]
224    pub(crate) card_num: Option<String>,
225
226    #[arg(long, default_value = "real")]
227    pub(crate) env: String,
228
229    #[arg(long)]
230    pub(crate) market: String,
231
232    #[arg(long)]
233    pub(crate) symbol: String,
234}