diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/a-Vue3项目/vue3-typescript-stye.md b/a-Vue3项目/vue3-typescript-stye.md index 0912c9d..2af6d71 100644 --- a/a-Vue3项目/vue3-typescript-stye.md +++ b/a-Vue3项目/vue3-typescript-stye.md @@ -1,6 +1,6 @@ **背景 (Context):** -你是一名资深前端架构师,负责为一个 mission-critical 的企业级SaaS应用搭建前端框架和制定开发规范。该项目要求极高的代码质量、无缝的用户体验(跨设备、跨主题)以及长期的可维护性。 +你是一名资深前端架构师,负责搭建前端框架和制定开发规范。该项目要求极高的代码质量、无缝的用户体验(跨设备、跨主题)以及长期的可维护性。 **核心指令 (Core Directive):** diff --git a/b-需求转换专业设计/转换的prompt.md b/b-需求转换专业设计/转换的prompt.md index b588fd6..041b597 100644 --- a/b-需求转换专业设计/转换的prompt.md +++ b/b-需求转换专业设计/转换的prompt.md @@ -1,4 +1,4 @@ -你是一名经验丰富的系统架构师。你的任务是接收一个初步的、可能不完整或不严谨的需求设计,并将其转化为一份专业的、结构严谨、技术上可行的详细设计方案。这份方案最终将被格式化为一段高质量的Prompt,可以直接输入给AI(例如,一个编码助手或另一个架构设计AI),以生成代码、详细的架构图或进一步的实现细节。 +你是一名经验丰富的前端系统架构师。你的任务是接收一个初步的、可能不完整或不严谨的需求设计,并将其转化为一份专业的、结构严谨、技术上可行的详细设计方案。这份方案最终将被格式化为一段高质量的Prompt,可以直接输入给AI(例如,一个编码助手或另一个架构设计AI),以生成代码、详细的架构图或进一步的实现细节。 这个转化的过程将严格遵循几个核心优化方向: @@ -10,4 +10,7 @@ - 优化设计方案: 提出更高效、可扩展、更具鲁棒性的技术选型和架构模式。 -- 语言专业化: 使用业界标准的术语和概念来描述架构组件、数据流和设计决策。 \ No newline at end of file +- 语言专业化: 使用业界标准的术语和概念来描述架构组件、数据流和设计决策。 + + +请你遵守前端项目的风格vue3-typescript-stye.md,针对mask_binance_account.md的初始设计文稿,给出专业性的优化设计,回答内容必须是中文 \ No newline at end of file diff --git a/c-ProjectTonyStack/1-原始设计/1-页面/mask_binance_account.md b/c-ProjectTonyStack/1-原始设计/1-页面/mask_binance_account.md new file mode 100644 index 0000000..f04767e --- /dev/null +++ b/c-ProjectTonyStack/1-原始设计/1-页面/mask_binance_account.md @@ -0,0 +1,133 @@ +# 页面地址 [BinanceAccountView.vue](TonyMask/src/pages/BinanceAccountView.vue) + +# 页面设计 + +- 需要在 Header 右侧显示当前 用户名(加粗,加大显示) + - 从已登录信息中获取当前用户名 + +# 页面功能 + +## 接口信息 + +- 接口地址 GET /api/binance/account/info +- 接口返回的结构体 + +```go +// Account define account info +type Account struct { + MakerCommission int64 `json:"makerCommission"` + TakerCommission int64 `json:"takerCommission"` + BuyerCommission int64 `json:"buyerCommission"` + SellerCommission int64 `json:"sellerCommission"` + CommissionRates CommissionRates `json:"commissionRates"` + CanTrade bool `json:"canTrade"` + CanWithdraw bool `json:"canWithdraw"` + CanDeposit bool `json:"canDeposit"` + UpdateTime uint64 `json:"updateTime"` + AccountType string `json:"accountType"` + Balances []Balance `json:"balances"` + Permissions []string `json:"permissions"` + UID int64 `json:"uid"` +} + +type CommissionRates struct { + Maker string `json:"maker"` + Taker string `json:"taker"` + Buyer string `json:"buyer"` + Seller string `json:"seller"` +} + +// Balance define user balance of your account +type Balance struct { + Asset string `json:"asset"` + Free string `json:"free"` + Locked string `json:"locked"` +} +``` + +## 账户支持的交易对信息 + +### 账户支持的交易对模块 + +- 查看状态 + - 使用隐藏的输入框,包含胶囊按钮状交易对信息 + - 输入框隐藏,不可见 + - +- 账户支持的交易对信息,通过如下接口获取 + - 接口地址 GET /api/binance/account/symbols/get +- 胶囊按钮状显示每一个支持的交易对信息 + - 包含 交易对图标 简称 + - 图标信息通过[CryptoIcon.vue](TonyMask/src/components/CryptoIcon.vue)获取 +- 右侧有编辑按钮,点击编辑之后进入编辑模式 + - 隐藏输入框出现 + - 胶囊按钮出现删除按键 + - 右侧编辑按键变为保存按键 + +### 添加账户支持加密货币 + +- 账户支持的交易对模块进入编辑模式后 +- 空白侧支持点击 +- 点击之后,可以使用[CurrencySelector.vue](/TonyMask/src/components/CurrencySelector.vue)进行交易对选择 + - 选择之后,立即调用添加接口 + - 接口地址 POST /api/binance/account/symbols/add +- 当点击保存按钮之后,退出编辑模式 + +### 删除账户支持的加密货币 + +- 账户支持的交易对模块进入编辑模式后 +- 可以通过胶囊按钮的删除键进行删除 + - 点击删除按键后,立刻调用删除接口 + - 接口地址 POST /api/binance/account/symbols/delete +- 当点击保存按钮之后,退出编辑模式 + +## 账户信息模块 +- 使用矩形长条状展示账户信息 + - 账户UID + - 账户类型 + - 能否交易 + - 能否提款 + - 能够充值 + - 交易手续费 + - 账户权限 + +## 资产详情模块 + +- 使用表格的形式展示当前用户的资产信息 + +### 表格设计 + +- 表格头从左到右依次展示 + + - 文字输入框-筛选功能-快速根据币种简称 币种名称筛选到币种 + - 刷新按钮 + - 用于刷新调用币种实时价格 + - 汇总计算-当前账户总资产-累加每一行的资产总计 + - 加粗显示 + +- 表格内容展示 + + - 统一采用四舍五入保存两位小数 + - 统一不显示单位 + +- 按照如下的顺序展示列信息 + - 币种图标 + - 不显示表头 + - 币种大写名称 + - 表头显示名称 + - 币种实时价格 + - 表头显示实时价格 + - 币种总数量 + - 表头显示总数量 + - 币种可使用数量 + - 表头显示可使用数量 + - 币种冻结数量 + - 表头显示冻结数量 + - 币种总计 + - 表头显示币种总计 + - 该行币种总数量与币种的实时价格相乘的结果 + +### 币种实时价格列展示 + +- 使用 symbols 参数,将 account_info 接口中的所有币种,一次查询 +- 查询币种的实时价格 接口地址为 POST /api/binance/market/ticker/price +- 具体函数为 [binance_market_handler.go](TonyCryptoOctopus\handler\binance_market_handler.go)中的 GetPriceTickerHandler 方法 diff --git a/c-ProjectTonyStack/1-原始设计/1-页面/mask_binance_order.md b/c-ProjectTonyStack/1-原始设计/1-页面/mask_binance_order.md new file mode 100644 index 0000000..d6bde72 --- /dev/null +++ b/c-ProjectTonyStack/1-原始设计/1-页面/mask_binance_order.md @@ -0,0 +1,46 @@ + + +# 页面地址 [BinanceOrder.vue](TonyMask/src/pages/BinanceOrder.vue) +- 页面在侧边栏的名称为 交易订单 +- 在主内容区的页面Header部分 靠右侧显示 交易订单 +- 展示特定交易对,特定查询条件下的订单情况 + + +# 页面设计 +## 订单查询栏 +- 接口参数为 [binance_order_handler.go](TonyCryptoOctopus\handler\binance_order_handler.go) 中的MyTradesRequest + - 接口参数说明: 前端不呈现limit,固定为1000 + - 忽略OrderID和FromID,不需要此参数 + - 默认起始时间为 2025-01-01 08:00:00 + - 新增固定时间段,最近三个月,最近一个月,最近一年,最近三年,当点击查询时候,根据当前时间作为endTime推算起始时间 + - 取消固定时间选择之后,恢复到默认时间 + +### 币种选择器 +- 使用通用组件中的CurrencySelector +- 根据页面样式,合理调整大小 + +### 订单接口数据 +- 接口地址 /api/binance/order/trades/save 查询 +- 具体接口为 [binance_order_handler.go](TonyCryptoOctopus\handler\binance_order_handler.go)中的GetMyTradesHandler + +### 文件保存地址栏 +- 需要显示返回接口中的的message字段内容 +- message字段的内容是本地保存的订单数据文件地址 +- 点击查询之后,在订单查询栏最下面出现 +- 居中显示 + +## 订单展示区 + +### 时间区域展示 +- 根据订单的cst_time,展示时间轴 + - 每笔订单在时间轴上是一个小点,点击可以筛选到该笔订单 +- 时间轴可以划取范围,通过时间段筛选订单 +- 时间轴的范围自动根据最早和最晚交易时间进行修改 +- 时间轴的间距需要根据时间跨度,自动设置,便于美观 + +### 订单列表区 +- 支持按照时间顺序排序,支持倒序或者正序排列 +- 可以筛选卖出和买入方向的订单 +- 设置分页展示 + - 分页默认大小为20 + - 分页的可选大小为20 50 100 diff --git a/c-ProjectTonyStack/1-原始设计/mask_login_page.md b/c-ProjectTonyStack/1-原始设计/1-页面/mask_login_page.md similarity index 100% rename from c-ProjectTonyStack/1-原始设计/mask_login_page.md rename to c-ProjectTonyStack/1-原始设计/1-页面/mask_login_page.md diff --git a/c-ProjectTonyStack/1-原始设计/mask_profit-loss.md b/c-ProjectTonyStack/1-原始设计/1-页面/mask_profit-loss.md similarity index 100% rename from c-ProjectTonyStack/1-原始设计/mask_profit-loss.md rename to c-ProjectTonyStack/1-原始设计/1-页面/mask_profit-loss.md diff --git a/c-ProjectTonyStack/1-原始设计/mask_single-pnl.md b/c-ProjectTonyStack/1-原始设计/1-页面/mask_single-pnl.md similarity index 58% rename from c-ProjectTonyStack/1-原始设计/mask_single-pnl.md rename to c-ProjectTonyStack/1-原始设计/1-页面/mask_single-pnl.md index 79453a7..5721b3a 100644 --- a/c-ProjectTonyStack/1-原始设计/mask_single-pnl.md +++ b/c-ProjectTonyStack/1-原始设计/1-页面/mask_single-pnl.md @@ -1,22 +1,20 @@ - - # 单一币种盈亏分析大屏 [SingleProfitAndLoss.vue](TonyMask/src/pages/SingleProfitAndLoss.vue) ## 数据接口及格式 -- 数据接口 /api/profit-loss/single -- 数据格式 [profit_and_loss.go](TonyProfitLoss/models/profit_and_loss.go) +- 数据接口 POST /api/profit-loss/single +- 数据返回格式 [profit_and_loss.go](TonyProfitLoss/models/profit_and_loss.go) - 数据统一不显示单位,不显示美元标识符 ## 页面设计 -- 页面要求 设计的较为好看 -- 对于重点内容有突出显示 ## 头部 -- 未选择币种时候,显示币种输入框, -- 点击币种输入框,可以调用[cryptoIconData.ts](TonyMask/src/components/Icons/cryptoIconData.ts)中的findCoinByName方法,查询获取到任意支持的币种 -- 选择币种之后,币种输入框消失.显示币种图标,币种全名称,币种简介.使用选择体包裹币种,右侧显示 X 取消选择,点击之后,重新显示币种输入框 -- 右侧显示计算按钮,点击开始计算 +- 显示文字 单一币种盈亏分析 +- 靠右显示 + +### 币种选择器 +- 使用通用组件中的CurrencySelector +- 根据页面样式,合理调整大小 ## 单一币种盈亏分析展示 - 使用绿色代表盈亏大于0,红色代表盈亏小于0 diff --git a/c-ProjectTonyStack/1-原始设计/mask_crypto_icon.md b/c-ProjectTonyStack/1-原始设计/2-组件/mask_crypto_icon.md similarity index 51% rename from c-ProjectTonyStack/1-原始设计/mask_crypto_icon.md rename to c-ProjectTonyStack/1-原始设计/2-组件/mask_crypto_icon.md index 6535a97..9a7f58c 100644 --- a/c-ProjectTonyStack/1-原始设计/mask_crypto_icon.md +++ b/c-ProjectTonyStack/1-原始设计/2-组件/mask_crypto_icon.md @@ -1,15 +1,17 @@ # 前端图标模组 +- 此模组作为前端项目的公共模组,可以供其他页面使用 ## 样式说明 - 图标只需要满足明亮模式 - 图标的大小是可以调整的 - 图标应该采用svg的格式 - ## 图标管理 ### 图标获取 -- 加密货币的图标,从[TradingView所有加密货币](https://cn.tradingview.com/markets/cryptocurrencies/prices-all/)爬取 +- 通过从[TradingView所有加密货币](https://cn.tradingview.com/markets/cryptocurrencies/prices-all/) 或者从稳定、公开的加密货币API(例如 CoinGecko 或 CoinMarketCap 的免费API)通过手动执行,获取前1000名加密货币的数据。 +- 按照市值排序,获取排名前一千的加密货币 +- 加密货币的全称 和 简称同样从此页面获取 ### 图标存储 - 常见加密货币创建svg的图标数据存储起来,便其他的页面调用 @@ -28,15 +30,18 @@ ### 交易对图标 - 交易对图标,仿照[TradingView交易对页面](https://cn.tradingview.com/symbols/BTCUSDT/?exchange=BINANCE)页面中图标放置的样式,将两种加密货币的图标进行叠放显示 -- +- 构建查用的交易对图标缓存Map,可以通过交易对名称快速获取到对应的图标 + - 常用交易对如下 BTCUSDT ETHUSDT BNBUSDT NEXOUSDT XRPUSDT LINKUSDT SOLUSDT + - 此函数需要考虑后续能够手动添加其他的交易对 ## 加密货币名称 -### 交易对名称 - - 后端的接口通常返回的是交易对名称 - - 交易对名称构成为 SOLUSDT LINKUSDT - - 后端接口的symbol均改为 交易对名称 - +### 前端后端接口-加密货币名称 +- 后端的接口返回的是交易对名称或者币种简称 + - 交易对名称构成为 SOLUSDT LINKUSDT + - 后端接口的symbol均改为 交易对名称 +- 在前后端的接口中,需要设计函数解析接口中的参数 + ### 加密货币全称 - 前端应该优先展示加密货币大写全称 - - + - 前端必须要同时展示加密货币的图标和名称 diff --git a/c-ProjectTonyStack/1-原始设计/2-组件/mask_currency_selector.md b/c-ProjectTonyStack/1-原始设计/2-组件/mask_currency_selector.md new file mode 100644 index 0000000..cfaf049 --- /dev/null +++ b/c-ProjectTonyStack/1-原始设计/2-组件/mask_currency_selector.md @@ -0,0 +1,51 @@ + + +# 组件名称 币种选择器 CurrencySelector + +## 组件功能 +- 通用组件 +- 用于其他页面中的加密货交易对选择器 +- 输入框交易对选择器 + +## 组件参数说明 +- 输入框存在参数设置,支持单选和多选 +- 输入框可选择的币种选项支持配置 + - 加密货币币种选项 + - 交易对选项 +- 输入框默认币种或交易对名称 + - 默认参数为 点击选择币种 + - 有参数时,查找默认币种图标显示 +- 币种选项的展示数量 + - 默认为6个 + - 可以通过参数调节,通过滑动块展示选项 + +## 样式 +- 可以通过参数进行自定义长度 宽度和高度,以适应各个页面使用 +- 匹配明亮和黑暗模式 + - 币种图标不需要颜色变换 +- 输入框选项,均显示为图标 简称 + - 币种选项- 图标 BNB + - 交易对选项- 图标 BNBUSDT +- 输入框在页面中的层级处于最高层级 + - 点击输入框选择时候,文字输入框和选项不会被其他内容遮挡 + +## 功能设计 +- 输入框点击输入框空白处之后,出现文字输入框及币种选项 + - 文字输入框按照币种名称快速查找交易对 + - 文字输入框高度与交易对选项保持一致 + +- 当点击选项后,币种图标 名称 删除键 出现在输入框 + - 样式为胶囊按钮状 + - 胶囊按钮状颜色不同于输入框的颜色 + +- 币种选项部分有滑动功能 + - 当鼠标处于币种选项部分时候,可以通过滑轮控制币种选项的滑动 + - 币种选项部分右侧 有拖动滑动块,也可以通过滑动块控制选项展示 + +- 已选择选项有删除键,点击删除键,输入框中去除此选项 +- 当输入框无选项时,自动显示默认的文字或者选项 + + + + + diff --git a/c-ProjectTonyStack/1-原始设计/mask_layout.md b/c-ProjectTonyStack/1-原始设计/2-组件/mask_layout.md similarity index 100% rename from c-ProjectTonyStack/1-原始设计/mask_layout.md rename to c-ProjectTonyStack/1-原始设计/2-组件/mask_layout.md diff --git a/c-ProjectTonyStack/1-原始设计/3-工具/utils_time_exchange.md b/c-ProjectTonyStack/1-原始设计/3-工具/utils_time_exchange.md new file mode 100644 index 0000000..16a4fcd --- /dev/null +++ b/c-ProjectTonyStack/1-原始设计/3-工具/utils_time_exchange.md @@ -0,0 +1,28 @@ + +# 时间工具类 + +## 工具统一内容 +1 前后端之间的接口参数,时间统一使用"2025-01-01 08:00:00"的格式 +2 前后端之间接口的时间字符串,统一都为东八区时间 + +## 函数功能 + +### 获取一个月前的时间字符串 +- 当调用之后,根据当前之间,推算一个月前的时间,返回时间字符串 +- 格式为"2025-01-01 08:00:00" + +### 获取三个月前的时间字符串 +- 当调用之后,根据当前之间,推算三个月前的时间,返回时间字符串 +- 格式为"2025-01-01 08:00:00" + +### 获取一年前的时间字符串 +- 当调用之后,根据当前之间,推算一年前的时间,返回时间字符串 +- 格式为"2025-01-01 08:00:00" + +### 获取三年前的时间字符串 +- 当调用之后,根据当前之间,推算一年前的时间,返回时间字符串 +- 格式为"2025-01-01 08:00:00" + +### 解析时间字符串为时间 +- 传入为格式为"2025-01-01 08:00:00"的时间字符串 +- 使用东八区时区解析,转换为时间对象 diff --git a/c-ProjectTonyStack/1-原始设计/mask_binance_account.md b/c-ProjectTonyStack/1-原始设计/mask_binance_account.md deleted file mode 100644 index d587844..0000000 --- a/c-ProjectTonyStack/1-原始设计/mask_binance_account.md +++ /dev/null @@ -1,49 +0,0 @@ - - -# 页面地址 [BinanceAccountView.vue](TonyMask/src/pages/BinanceAccountView.vue) - -# 页面设计 - -## 页面修改 -- 需要在Header右侧显示当前 用户名(加粗,加大显示) 从已登录信息中获取 - -- 缩小账户类型一行的大小 -- 时间使用后端返回数据中的timestamp字段,已经是东八区时间,直接展示即可 - -## 页面功能 - -### 账户支持的加密货币 -- 展示 账户支持的加密货币 图标 简称 -- 接口地址 GET /api/binance/account/symbols/get -- 返回的接口币种是加以对名称,BNBUSDT,XRPUSDT等,请统一去除掉USDT后缀 -- 增大显示 -- 用一行显示 - -### 添加账户支持加密货币 -- 接口地址 POST /api/binance/account/symbols/add -- 下面内容都在同一行显示 -- 左侧显示文字 添加账户支持加密货币 -- 中间 动态显示 加密货币图标及名称 能够有删除键 可以取消选择 -- 右侧,输入框,可以调用[cryptoIconData.ts](TonyMask/src/components/Icons/cryptoIconData.ts)中的方法,根据输入的简称,匹配查询获取到任意支持的币种 显示币种图标和简称 -- 最右侧,显示添加按钮,显示删除按钮 - -### 删除账户支持的加密货币 -- 接口地址 POST /api/binance/account/symbols/delete -- 与添加共用逻辑,通过按钮区分调用方法 - - -# 资产详情页面 -- 修改 总计 列名称为 币种数量 -- 搜索框 右侧 显示 当前账户总资产 - - 累加每一行的资产总计 - -## 币种实时价格展示 -- 新增一列,名称为币种价格 展示币种的实时价格 -- 查询币种的实时价格 接口地址为 POST /api/binance/market/ticker/price -- 具体函数为 [binance_market_handler.go](TonyCryptoOctopus\handler\binance_market_handler.go)中的GetPriceTickerHandler方法 -- 使用列表形式 Symbols -- 构建交易对名称 使用symbol+USDT,例如 BTC转换为 BTCUSDT - -## 资产总计 -- 新增一列 名称为 资产总计 -- 每一行 将 币种数量与 币种价格相乘的结果 diff --git a/c-ProjectTonyStack/1-原始设计/mask_binance_order.md b/c-ProjectTonyStack/1-原始设计/mask_binance_order.md deleted file mode 100644 index 5efb3be..0000000 --- a/c-ProjectTonyStack/1-原始设计/mask_binance_order.md +++ /dev/null @@ -1,36 +0,0 @@ - - -# 页面地址 [BinanceOrder.vue](TonyMask/src/pages/BinanceOrder.vue) -- 如果没有页面 请创建该页面 -- 页面在侧边栏的名称为 交易订单 - -# 页面设计 -- 展示特定币种,特定查询条件下的订单情况 -- 接口参数为 [binance_order_handler.go](TonyCryptoOctopus\handler\binance_order_handler.go) 中的MyTradesRequest - - 接口参数说明: 前端不呈现limit,固定为1000 - - 忽略OrderID和FromID,不需要此参数 - - 默认起始时间为 2025-01-01 08:00:00 - - 新增固定时间段,最近三个月,最近一个月,最近一年,最近三年,当点击查询时候,根据当前时间作为endTime推算起始时间 - -- 支持按照时间顺序,倒序或者正序排列 -- 可以筛选卖出和买入方向的订单 -- 根据订单的cst_time,展示时间轴 - - 每笔订单在时间轴上是一个小点,点击可以筛选到该笔订单 - - 时间轴可以划取范围,通过时间段筛选订单 - - - -## 订单接口数据 -- 接口地址 /api/binance/order/trades 查询 -- 接口地址 /api/binance/order/trades/save 查询+保存 -- 具体接口为 [binance_order_handler.go](TonyCryptoOctopus\handler\binance_order_handler.go)中的GetMyTradesHandler -- 订单接口查询,有两个查询按钮,一个查询 一个查询保存,颜色不同 - - 查询保存之后,额外显示返回结果的message字段内容 - - -## 输入框设置 -- 使用 [CurrencySelector.vue](TonyMask\src\components\CurrencySelector.vue)中的输入框 -- 根据页面样式,合理调整大小 - -## 开始时间 -- 当取消初始时间内容时候,自动变为默认的初始时间 \ No newline at end of file diff --git a/c-ProjectTonyStack/1-原始设计/mask_currency_selector.md b/c-ProjectTonyStack/1-原始设计/mask_currency_selector.md deleted file mode 100644 index cf34f4b..0000000 --- a/c-ProjectTonyStack/1-原始设计/mask_currency_selector.md +++ /dev/null @@ -1,36 +0,0 @@ - - -# 页面地址 [CurrencySelector.vue](TonyMask/src/components/CurrencySelector.vue) -- 如果没有页面 请创建该页面 - -# 页面设计 -- 作为所有其他设计币安账户支持币种的通用组件 - -## 样式 -- 账户支持币种选择框 -- 大小可以通过样式自定义,以适应其他页面调用 -- 匹配明亮和黑暗模式 - -## 功能设计 -- 呈现一个输入框 点击输入框空白处之后,出现文字输入框及币种选项 - - 支持通过输入按照币种名称快速查找币种 - - 输入框高度与选项保持一致 - - 输入框默认显示文字,点击选择币种,点击输入框之后消失,无选中币种时出现 - - 选项为账户支持的币种列表,显示为 币种图标 币种全名称 -- 当点击选项后,币种图标 名称 删除按键 出现在输入框 样式为按钮状样式 -- 币种选项部分有滑动功能 - - 当鼠标处于币种选项部分时候,可以通过滑轮控制币种选项的滑动 - - 币种选项部分右侧 有拖动滑动块 -- 已选择币种有取消选择按钮,点击取消按钮,输入框中去除此币种 -- 币种默认为 LINK,显示币种图标和币种全名称 - -### 参数说明 -- 输入框存在参数设置,支持单选和多选 -- 输入框可选择的币种选项支持配置 - - 调用[account.ts](TonyMask/src/api/account.ts)获取账户支持的币种列表, 然后调用[cryptoIconData.ts](TonyMask/src/components/Icons/cryptoIconData.ts)获取到对应的图标和全名称 - - 直接调用[cryptoIconData.ts](TonyMask/src/components/Icons/cryptoIconData.ts)获取到全部的币种图标和全名称 - -## 功能参考 -- 参照[ProfitAndLoss.vue](TonyMask/src/pages/ProfitAndLoss.vue)页面中的实现 - - diff --git a/c-ProjectTonyStack/1-原始设计/vue3-typescript-stye.md b/c-ProjectTonyStack/1-原始设计/vue3-typescript-stye.md new file mode 100644 index 0000000..2af6d71 --- /dev/null +++ b/c-ProjectTonyStack/1-原始设计/vue3-typescript-stye.md @@ -0,0 +1,120 @@ +**背景 (Context):** + +你是一名资深前端架构师,负责搭建前端框架和制定开发规范。该项目要求极高的代码质量、无缝的用户体验(跨设备、跨主题)以及长期的可维护性。 + +**核心指令 (Core Directive):** + +请你以架构师的身份,严格遵循并执行以下所有规范来生成代码、组件、模块和提供解决方案。你的任何产出都必须成为团队的代码典范。 + +**1. 语言与语法 (Language & Syntax):** + + * **TypeScript 至上 (TypeScript Supremacy):** + + * 项目 **必须** 完全基于 TypeScript (` +``` + +----- + +**最终指令**: 请根据以上这份详尽、严谨的架构设计方案,生成 `CurrencySelector.vue` 组件的完整代码。代码必须是生产级别的,并体现出卓越的工程实践。 \ No newline at end of file diff --git a/c-ProjectTonyStack/2-AI优化设计/2-组件/api_mask_layout.md b/c-ProjectTonyStack/2-AI优化设计/2-组件/api_mask_layout.md new file mode 100644 index 0000000..260c55e --- /dev/null +++ b/c-ProjectTonyStack/2-AI优化设计/2-组件/api_mask_layout.md @@ -0,0 +1,69 @@ +**角色 (Role):** 你是一位精通 Vue 3、TypeScript 和 Vuetify 的资深前端架构师。你的任务是构建基础布局框架。 + +**背景 (Context):** 你必须严格遵守所提供的 `vue3-typescript-stye.md` 风格指南中的所有原则。最终目标是产出一个健壮、可维护、生产就绪的应用外壳,它将作为未来所有页面的实现蓝图。此布局必须是完全响应式、支持主题切换,并完全基于 Vue 3 组合式 API 和 Vuetify 3 组件构建。 + +**核心任务 (Core Task):** + +在 `src/layouts/` 目录下,创建一个名为 `Default.vue` 的主应用布局组件。该组件需实现一个经典的三段式结构:一个持久化的导航抽屉、一个顶部应用栏和一个用于承载路由视图的主内容区。所有与布局 UI 相关的状态(例如,侧边栏的收缩状态、当前的主题)必须在一个专用的 Pinia store 中进行集中管理。 + +--- + +### **1. 状态管理:布局 Store (Pinia)** + +在创建组件之前,首先定义状态管理模块。 + +* **文件位置:** `src/store/layout.ts` +* **Store 名称:** `useLayoutStore` +* **State:** + * `isSidebarMini: Ref`: 管理导航抽屉的收缩/展开状态,默认为 `false`。 + * `theme: Ref<'light' | 'dark'>`: 存储当前的主题名称,默认为 `'light'`。 +* **Actions:** + * `toggleSidebar()`: 用于翻转 `isSidebarMini`布尔值的 action。 + * `setTheme(newTheme: 'light' | 'dark')`: 用于更新 `theme` 状态的 action。 + +**约束:** 所有的 state 属性和函数签名都必须拥有精确的 TypeScript 类型。 + +### **2. 组件拆解: `Default.vue`** + +#### **a. Script 部分 (`