这个项目能做什么
Ultros 是一款开源 Web 应用程序,为 Final Fantasy XIV 提供实时市场分析。它托管在 ultros.app,覆盖所有数据中心,并设有应用内帮助部分来解释各项功能。
其提供的功能包括:
- Flip Finder:扫描数据中心内的所有服务器,寻找可低价买入并在主服务器高价转售的物品,显示每日利润、销售速度、漂移值和置信度评分。
- 物品页面:实时跨服列表、销售历史图表、经过异常值过滤的“真实价格”,以及可交易物品的供应商/兑换来源信息。
- 针对赚金活动分析器:配方制作利润(原材料成本 vs 售价,支持子制作递归)、雇佣任务交付、管家派遣、代币消费、供应商转售和自由公司制作。
- 市场趋势:24 小时波动项、类别热度以及每个服务器的上涨/下跌物品。
- 货币兑换:使用 tomestones、scrips、seals 及其他游戏内货币购买的可交易物品。
- 列表:可分享的购物清单,支持最低价查询。
- 管家追踪:监控您的上架物品,并在被压价时收到通知。
- 价格提醒:通过 Discord 私信或 webhook 发送的单项物品价格阈值提醒。
- Discord 机器人:在服务器内进行市场查询和压价提醒。
作者将该项目描述为一个人为了乐趣而构建的业余爱好。它运行可选广告纯粹是为了覆盖托管成本;广告可以在设置中禁用,且支持广告拦截器。
技术构建
该项目采用全栈 Rust 开发:后端 Web 框架使用 Axum,全栈 Web 前端使用 Leptos,数据库访问使用 SeaORM,Discord 机器人使用 Serenity。市场数据来自实时的 Universalis API(HTTP 和 WebSocket)。代码库分为多个 crate,包括主 `ultros` 后端、包含 `ultros-app` 和 WASM `ultros-client` 的 `ultros-frontend`、`ultros-db`、`ultros-api-types`、`universalis` 封装层、游戏数据生成 crate(`xiv-gen`、`xiv-gen-db`、`game-data-pack`、`icon-extract`)以及一个 `migration` 工具。
自行运行
开发前提条件包括 nightly Rust 工具链、用于处理 `data/` 下游戏数据包的 Git LFS、运行中的 Postgres 实例以及 cargo-leptos。可以使用 Docker 启动本地 Postgres,并基于 `.env.example` 提供 `.env` 文件,其中包含 Discord OAuth 凭据、cookie 加密密钥、数据库 URL、端口和日志设置。应用在首次启动时会执行数据库迁移并从 Universalis 获取服务器/区域数据。游戏数据(物品和配方表及物品图标)以 Git LFS 跟踪的预生成包形式提供,并在编译时嵌入;`game-data-pack` 工具可从社区 ffxiv-datamining CSV 仓库重新生成这些数据,图标则从本地 FFXIV 安装的 SqPack 文件中提取,并支持固定版本、跳过图标或指定非标准游戏路径的选项。
项目欢迎通过 issue、pull request 或项目的 Discord 服务器进行贡献。该项目采用 MIT 许可证,其 README 注明代码库在某些地方可能较为混乱。
评论
0 评分人数达到10人后显示
登录后参与讨论。