Skip to content

hidesoon/evelearning

Repository files navigation

EVELearning

EVE Online 多角色数据管理与交易分析工具。通过 ESI API 同步角色数据到本地 SQLite,提供 Streamlit Dashboard 可视化展示、压单提醒和竞争分析。

Features

  • 多角色数据同步 — 钱包、挂单、技能、资产、合同,支持分层频率调度
  • 区域订单簿 — 拉取 Jita 等区域市场数据,与角色挂单交叉比对
  • 被压价检测 — 自动检测被压单的挂单,计算改价优先级
  • 实时提醒 — Discord Webhook 推送压单通知,支持去重和优先级排序
  • 竞争分析 — 按物品维度统计被压频率、幅度,识别高竞争商品
  • 选品评分 — 基于利润率、日均成交额、竞争度的综合评分排行
  • 联盟/军团分析 — 合同管理、主权地图、zKillboard 战斗数据
  • 技能管理 — 训练队列监控、MCT 状态按账号分组展示
  • 后台调度 — APScheduler 守护进程,支持 macOS launchd / Linux systemd 部署

Architecture

External APIs ──→ ODS (ods_*) ──→ DWD (dwd_*) ──→ DWS (dws_*) ──→ Dashboard
                  原始同步数据      清洗/关联       聚合/指标        展示

数据源包括 ESI API、zKillboard、Dotlan RSS 和 SDE 静态数据。所有外部数据先同步到 SQLite ODS 层,分析和展示只读 DB,不直接调用外部 API。

Project Structure

src/evelearning/
├── fetch/                # 外部数据获取
│   ├── esi/              #   ESI API (client, character, universe, market, alliance, contracts, auth/)
│   ├── zkb/              #   zKillboard API
│   └── dotlan/           #   Dotlan RSS
├── analysis/             # 中间层分析逻辑
├── dash/                 # Streamlit Dashboard
│   ├── app.py            #   入口(多页导航)
│   ├── queries.py        #   集中 SQL 查询(只读 DB)
│   └── views/            #   页面: overview, orders, assets, skills, contracts, alliance, battles, ...
├── scheduler/            # 后台调度服务 (APScheduler)
│   ├── server.py         #   主进程 (daemon / --status / --run)
│   ├── config.py         #   调度频率配置
│   ├── history.py        #   任务执行历史
│   └── rate_limiter.py   #   ESI 请求限流
├── decision/             # 决策逻辑 / workflow
├── actor/                # 执行层(待扩展)
└── utils/                # 辅助工具
    ├── config.py         #   环境变量 + 配置
    ├── notify.py         #   Discord 通知
    └── db/               #   SQLite 连接/schema/sync

scripts/
├── sync.py               # 统一同步入口 (--only / --weekly / --all / --list)
├── sync/                 # 同步模块 (characters, market_orders, contracts, alliance, killmails, ...)
├── report/               # 报告脚本
└── import_fittings.py    # 导入 EFT 配装

deploy/
└── install.sh            # 部署脚本 (macOS launchd + Linux systemd)

Requirements

  • Python 3.11+
  • uv package manager
  • EVE Online developer application (申请地址)

Quick Start

1. 安装依赖

uv sync

2. 配置环境变量

复制 .env.example.env 并填写:

cp .env.example .env

必填项:

  • ESI_CLIENT_ID / ESI_CLIENT_SECRET — EVE developer app 凭证
  • DEFAULT_CHARACTER_ID — 默认角色 ID(用于获取建筑等数据)

可选项:

  • DEFAULT_ALLIANCE_NAME — 联盟名称(用于联盟数据同步)
  • EVE_ACCOUNTS — 账号分组(用于 MCT 追踪)
  • DISCORD_WEBHOOK_URL — Discord 通知 webhook 地址

详见 .env.example 中的完整说明。

3. SSO 登录

uv run python -m evelearning.fetch.esi.auth

浏览器会打开 EVE SSO 页面,逐个授权你的角色。Token 存入 SQLite auth_tokens 表并自动刷新。

4. 同步数据

# 默认同步(高频任务)
uv run python scripts/sync.py

# 查看所有可用任务
uv run python scripts/sync.py --list

# 同步全部(包括 weekly/monthly 任务)
uv run python scripts/sync.py --all

# 只运行指定任务
uv run python scripts/sync.py --only characters_fast market_orders

5. 启动 Dashboard

uv run streamlit run src/evelearning/dash/app.py

6. 后台调度(可选)

# 前台运行
uv run python -m evelearning.scheduler.server

# 查看调度状态
uv run python -m evelearning.scheduler.server --status

# 手动触发某个任务
uv run python -m evelearning.scheduler.server --run undercut_alert

# 部署为系统服务
deploy/install.sh install
deploy/install.sh status

Database

SQLite 数据库位于 data/neweden.db(gitignored)。

表命名遵循数仓分层:

前缀 来源 示例
ods_esi_* ESI API ods_esi_wallet_balance, ods_esi_market_order
ods_zkb_* zKillboard ods_zkb_killmail
ods_sde_* SDE 静态数据 ods_sde_type, ods_sde_group
ods_user_* 用户录入 ods_user_fitting
ods_internal_* 内部计算 ods_internal_undercut_event

系统表:auth_tokensscheduler_task_history

Data Sources

Development

# 包管理
uv sync                  # 安装依赖
uv add <package>         # 添加依赖

# 代码结构
# src layout: src/evelearning/
# 构建工具: hatchling

Conventions:

  • Commit message 使用中文 + conventional commit prefix (feat: / fix: / refactor:)
  • Dashboard 查询集中在 dash/queries.py,views 只负责 UI 展示
  • 敏感信息(角色 ID、联盟 ID、API key、webhook URL)一律通过 .env 配置,禁止硬编码

Legacy Code

archive/ 目录保留早期实验代码和旧版 PostgreSQL pipeline,仅供参考。当前活跃代码在 src/ + scripts/

License

See LICENSE.

About

eve play and learn project

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors