核心概念

科技树

科技树定义

权威来源: 用户与领地系统设计v1.0.md

最后更新: 2026-02-01

状态: ✅ 已实施 - CronJob 和 organization-service 已部署

2026-02-01 更新: 高级单位 KPI 计算改为"方案 A"(每个级别计算自身 KPI)

科技树加成

科技树加成是领地为成员提供的铸造效率提升,加成累加

领地级别加成累计加成
Station+10%+10%
Matrix+20%+30%
Sector+30%+60%
System+40%+100%

最高累计加成: +100%(所有4级科技树都点亮)

加成公式:

总加成 = Station加成 + Matrix加成 + Sector加成 + System加成 铸造产出 = 基础产出 × (1 + 总加成%)

科技树点亮规则

所有级别使用统一规则:过去 30 天内 ≥ 21 天 KPI 达标

KPI 达标条件(所有级别相同)

  1. 满员率 ≥ 90%
  2. 人均铸造投入 ≥ 20 USDC/天
  3. 两个条件同时满足才算当日达标

各级容量及阈值

领地级别容量90% 阈值每日铸造阈值
Station1,000≥ 900人≥ 18,000 USDC
Matrix10,000≥ 9,000人≥ 180,000 USDC
Sector100,000≥ 90,000人≥ 1,800,000 USDC
System1,000,000≥ 900,000人≥ 18,000,000 USDC

方案 A: 每个级别计算自身 KPI

2026-02-01 确认: 采用方案 A,每个级别计算自身的 KPI(成员数、总铸造投入)

KPI 计算逻辑:

  • Station: 计算该 Station 的成员数和铸造投入
  • Matrix: 计算该 Matrix 下所有 Station 的成员总数和总铸造投入
  • Sector: 计算该 Sector 下所有 Matrix → Station 的成员总数和总铸造投入
  • System: 计算该 System 下所有 Sector → Matrix → Station 的成员总数和总铸造投入

示例:

Matrix M-0001 包含 10 个 Station: - 总成员数 = S-00001 成员数 + S-00002 成员数 + ... + S-00010 成员数 - 总铸造 = S-00001 铸造 + S-00002 铸造 + ... + S-00010 铸造 - 满员率 = 总成员数 / 10,000 - 人均铸造 = 总铸造 / 总成员数

科技树点亮逻辑

每日 UTC 00:30 执行 CronJob,分三个步骤:

步骤 1: 计算所有单位的每日 KPI

  • Station: 直接计算成员数和铸造
  • Matrix: 计算所辖 Station 的成员总数和总铸造
  • Sector: 计算所辖 Matrix --> Station 的成员总数和总铸造
  • System: 计算所辖 Sector --> Matrix --> Station 的成员总数和总铸造

步骤 2: 更新科技树状态

  • 查询过去 30 天 KPI 达标天数
  • 如果达标天数 >= 21,则点亮科技树
  • 更新 bonus_percentage

步骤 3: 更新用户铸造加成缓存

  • 遍历所有用户
  • 向上遍历单位链 (Station --> Matrix --> Sector --> System)
  • 累加所有点亮科技树的加成

科技树折扣

科技树加成 = 铸造折扣(支付更少 USDC 获得相同 MCC)

科技树加成支付比例1000 USDC 基础 → 实际支付
0%100%1000 USDC
+10%90%900 USDC
+30%70%700 USDC
+60%40%400 USDC
+100%0%0 USDC (免费铸造)

折扣公式:

实际 USDC = 基础 USDC × (1 - 科技树加成%)

数据库表

unit_kpi_daily - 单位每日 KPI 记录

字段类型说明
territory_idVARCHAR(50)领地 ID (如 S-00001, M-0001)
kpi_dateDATEKPI 日期
is_compliantBOOLEAN是否达标
member_countINT成员数
occupancy_rateDECIMAL(5,4)满员率
total_mining_usdcDECIMAL(18,6)当日总铸造 USDC
mining_per_userDECIMAL(18,6)人均铸造 USDC

unit_tech_tree_status - 单位科技树状态

字段类型说明
territory_idVARCHAR(50)领地 ID
territory_typeVARCHAR(20)领地类型
is_litBOOLEAN是否点亮
bonus_percentageDECIMAL(5,2)加成百分比
compliant_daysINT过去30天达标天数
last_check_dateDATE最后检查日期

user_mining_bonus_cache - 用户铸造加成缓存

字段类型说明
user_idVARCHAR(50)用户 UID
territory_idVARCHAR(50)用户所属 Station
station_bonusDECIMAL(5,2)Station 加成
matrix_bonusDECIMAL(5,2)Matrix 加成
sector_bonusDECIMAL(5,2)Sector 加成
system_bonusDECIMAL(5,2)System 加成
total_bonusDECIMAL(5,2)总加成

CronJob 配置

CronJob时间 (UTC)说明
tech-tree-daily-update00:30科技树 KPI 计算和状态更新

部署文件: k8s/tech-tree-update-cronjob.yaml


API 端点

获取用户科技树加成 (Open API)

GET /v1/tech-tree/bonus Authorization: Bearer {token} Response: { "user_id": "abc123", "territory_id": "S-00001", "bonuses": { "station": {"is_lit": true, "bonus": 10}, "matrix": {"is_lit": true, "bonus": 20}, "sector": {"is_lit": false, "bonus": 0}, "system": {"is_lit": false, "bonus": 0} }, "total_bonus": 30, "multiplier": 1.30 }

版本历史

日期变更
2026-02-01方案 A 实施: 高级单位 KPI 改为计算自身成员总数和总铸造(非平均下级 Station 达标天数)
2026-02-01加成更正: Station +10%, Matrix +20%, Sector +30%, System +40% (非 +5/+10/+15/+20)
2026-02-01初始版本
询问 AI
询问 AI