Files
xyzw_web_helper/MD说明文件夹/代码对比报告-v2.1.1.md
2025-10-17 20:56:50 +08:00

17 KiB
Raw Blame History

xyzw_web_helper v2.1.1 代码对比报告

生成时间2025年10月12日

📋 总览

本报告详细对比了开源更新版本 v2.1.1你的当前项目之间的所有差异,帮助你决定是否采纳这些更新。


🆕 一、新增组件(开源版有,你的项目没有)

1.1 IdentityCard.vue身份卡组件

位置: src/components/IdentityCard.vue

功能描述:

  • 显示角色身份信息卡片,包括头像、等级、战力
  • 完整的战力段位系统10个段位初出茅庐 → 无极至尊)
  • 支持嵌入模式embedded和弹窗模式
  • 展示资源信息:金币、金砖、鱼竿、珍珠、招募令、精铁、彩玉、进阶石
  • 炫光边框动画效果
  • 默认头像系统,加载失败自动降级
  • 深色主题完美适配

段位系统配置:

{
  { min: 0, max: 1_000_000, title: '初出茅庐', icon: '🌱' },
  { min: 1_000_000, max: 10_000_000, title: '小有名气', icon: '⚔️' },
  { min: 10_000_000, max: 100_000_000, title: '出入江湖', icon: '🗡️' },
  { min: 100_000_000, max: 500_000_000, title: '纵横四方', icon: '🏹' },
  { min: 500_000_000, max: 2_000_000_000, title: '盖世豪杰', icon: '⚡' },
  { min: 2_000_000_000, max: 4_000_000_000, title: '一方枭雄', icon: '👑' },
  { min: 4_000_000_000, max: 6_000_000_000, title: '睥睨江湖', icon: '🔱' },
  { min: 6_000_000_000, max: 9_000_000_000, title: '独霸天下', icon: '⚜️' },
  { min: 9_000_000_000, max: 15_000_000_000, title: '不世之尊', icon: '💎' },
  { min: 15_000_000_000, max: Infinity, title: '无极至尊', icon: '🌟' }
}

是否需要: 强烈推荐

  • 这是v2.1.1的核心特性之一
  • 提供了更好的用户体验和可视化效果
  • 资源展示更全面

1.2 RoleProfileCard.vue角色简介卡组件

位置: src/components/RoleProfileCard.vue

功能描述:

  • 紧凑型角色信息卡片
  • 显示角色头像、姓名、等级、战力
  • 段位标识和进度条
  • 炫光边框动画hover效果
  • 段位进度百分比计算
  • 响应式设计,移动端优化

与IdentityCard的区别:

  • RoleProfileCard简洁版主要用于列表展示
  • IdentityCard完整版包含详细资源信息

是否需要: 推荐

  • 如果需要更紧凑的角色展示界面
  • 适合在游戏状态页面使用

1.3 ClubInfo.vue俱乐部信息组件

位置: src/components/ClubInfo.vue

功能描述:

  • 显示俱乐部/军团信息
  • 三个Tab页概览、成员列表、盐场战绩
  • 概览俱乐部名称、LOGO、战力、段位、成员数、红洗次数、公告、会长信息
  • 成员列表显示前20名成员按战力排序
  • 集成盐场战绩组件

是否需要: 推荐

  • 提供完整的俱乐部管理功能
  • 比你当前项目中的俱乐部功能更完善

1.4 ClubBattleRecords.vue俱乐部战绩组件

位置: src/components/ClubBattleRecords.vue

功能描述:

  • 查询俱乐部盐场战绩(查询上周六的战绩)
  • 显示每个成员的击杀、死亡、攻城数据
  • 可展开查看详细战斗记录
  • 支持导出战绩到剪贴板
  • 支持内联模式和弹窗模式

使用的工具函数:

  • getLastSaturday() - 获取最近的周六日期
  • formatBattleRecordsForExport() - 格式化导出数据
  • copyToClipboard() - 复制到剪贴板

是否需要: 推荐

  • 对俱乐部管理者非常有用
  • 提供详细的战斗数据分析

1.5 TeamFormation.vue阵容管理组件

位置: src/components/TeamFormation.vue

功能描述:

  • 管理和切换战斗阵容最多4个阵容
  • 显示当前阵容中的英雄
  • 内置英雄字典100+ 英雄信息)
  • 支持阵容切换和刷新
  • 显示英雄头像和名称

英雄系统:

  • 包含101-314号英雄的完整信息
  • 按国家分类:魏国、蜀国、吴国、群雄

是否需要: 可选

  • 如果游戏有阵容系统,则推荐
  • 替代你现在的TeamStatus组件

📊 二、游戏状态页面重大改版

2.1 GameStatus.vue 的巨大变化

开源版本新增内容:

2.1.1 页面结构重构

<!-- 新增身份牌常驻顶部 -->
<IdentityCard embedded />

<!-- 新增Tab切换系统 -->
<n-tabs v-model:value="activeSection">
  <n-tab-pane name="daily" tab="日常" />
  <n-tab-pane name="club" tab="俱乐部" />
  <n-tab-pane name="activity" tab="活动" />
</n-tabs>

<!-- 新增阵容组件日常tab -->
<TeamFormation v-show="activeSection === 'daily'" />

<!-- 新增月度任务面板活动tab -->
<div class="monthly-tasks" v-show="activeSection === 'activity'">
  <!-- 月度任务内容 -->
</div>

2.1.2 月度任务系统 🎯

这是v2.1.1的核心功能

功能特性:

  • 显示钓鱼和竞技场的月度进度
  • 自动计算完成百分比
  • 显示剩余天数
  • 一键补齐功能(钓鱼/竞技场)
  • 刷新进度按钮
  • 智能补齐规则:让"当前天数比例"和"完成比例"一致

月度任务目标:

const FISH_TARGET = 200    // 钓鱼目标200次
const ARENA_TARGET = 100   // 竞技场目标100次

补齐逻辑:

// 钓鱼补齐:优先使用免费次数,不足则使用金鱼竿
async topUpMonthly(type) {
  if (type === 'fish') {
    // 1. 计算需要补齐的次数
    // 2. 优先使用免费次数
    // 3. 剩余用金鱼竿
  } else if (type === 'arena') {
    // 采用贪心策略估算战斗次数
    // 假设每次战斗5点体力
  }
}

相关游戏命令:

  • monthlyactivity_getinfo - 获取月度任务信息
  • monthlyactivity_fishreceive - 完成钓鱼
  • monthlyactivity_arenareceive - 完成竞技场
  • monthlyactivity_receivereward - 领取月度任务奖励

是否需要: 非常重要

  • 这是v2.1.1最重要的新功能
  • 极大提升日常任务效率

2.2 你的当前版本特有功能

你的项目有但开源版没有的:

  • TeamStatus.vue队伍状态组件
  • CarManagement.vue俱乐部赛车组件
  • BatchTaskPanel.vue批量任务面板
  • SchedulerConfig.vue定时任务配置
  • TaskProgressCard.vue任务进度卡片
  • ExecutionHistory.vue执行历史
  • UpgradeModule.vue升级模块

建议: 保留这些你独有的功能,可以考虑整合开源版的月度任务系统


🛠️ 三、工具函数Utils差异

3.1 新增工具文件

3.1.1 clubBattleUtils.js

位置: src/utils/clubBattleUtils.js

提供的函数:

// 获取最近的周六日期
export function getLastSaturday()

// 格式化时间戳
export function formatTimestamp(timestamp)

// 解析战斗结果 (1=败, 2=胜)
export function parseBattleResult(newWinFlag)

// 解析攻击类型 (0=进攻, 1=防守)
export function parseAttackType(attackType)

// 格式化战绩数据用于导出
export function formatBattleRecordsForExport(roleDetailsList, queryDate)

// 复制到剪贴板
export async function copyToClipboard(text)

是否需要: 推荐

  • 如果使用ClubBattleRecords组件则必须

3.1.2 logger.js

位置: src/utils/logger.js

重要性: 极其重要的性能优化

功能特性:

  • 智能日志管理系统
  • 支持5个日志级别ERROR, WARN, INFO, DEBUG, VERBOSE
  • 生产环境自动降低日志级别
  • 开发环境可动态调整
  • 移除大量调试日志,减少控制台噪音

日志级别:

LOG_LEVELS = {
  ERROR: 0,    // 错误 - 始终显示
  WARN: 1,     // 警告 - 生产环境显示
  INFO: 2,     // 信息 - 开发环境显示
  DEBUG: 3,    // 调试 - 开发环境详细模式
  VERBOSE: 4   // 详细 - 仅在明确启用时显示
}

预定义日志实例:

export const wsLogger = createLogger('WS')
export const tokenLogger = createLogger('TOKEN')
export const gameLogger = createLogger('GAME')

浏览器控制台调试工具:

// 在浏览器控制台使用
wsDebug.quiet()    // 只显示警告和错误
wsDebug.normal()   // 显示信息级别
wsDebug.debug()    // 显示调试信息
wsDebug.verbose()  // 显示所有详细日志

是否需要: 强烈推荐,性能优化关键

  • 这是v2.1.1性能优化的核心
  • 减少控制台噪音
  • 提升运行性能

3.1.3 tokenDb.js

位置: src/utils/tokenDb.js

功能: IndexedDB封装用于Token持久化存储

提供的API:

// KV存储
getKV(key)
setKV(key, value)
deleteKV(key)

// User Token
getUserToken()
setUserToken(token)
clearUserToken()

// Game Tokens
getAllGameTokens()
putGameToken(roleId, tokenData)
deleteGameToken(roleId)
clearGameTokens()

// localStorage迁移
migrateFromLocalStorageIfNeeded()

是否需要: 可选

  • 提供更可靠的数据持久化
  • 支持更大的数据量
  • 你的项目已有localStorage方案可选择性采纳

3.2 工具函数对比

gameCommands.js 差异

开源版特点:

// 消息格式更简洁
heart_beat(ack, seq, params) {
  return {
    ack,
    body: {},
    cmd: "_sys/ack",
    seq,
    time: Date.now()
  }
}

你的版本特点:

// 消息格式包含更多字段
heart_beat(ack, seq, params) {
  return {
    ack,
    body: undefined,
    c: undefined,
    cmd: "_sys/ack",
    hint: undefined,
    seq,
    time: Date.now()
  }
}

// 并且添加了rtt和code字段
role_getroleinfo(ack, seq, params) {
  return {
    cmd: "role_getroleinfo",
    body: this.g_utils.bon.encode({...}),
    ack: ack || 0,
    seq: seq || 0,
    rtt: randomInt(0, 500),  // 你的版本多了这个
    code: 0,                  // 你的版本多了这个
    time: Date.now()
  }
}

建议: 保持你的版本,字段更完整


💾 四、Store状态管理差异

4.1 tokenStore.js 对比

开源版特点:

// 1. 使用logger系统
import { tokenLogger, wsLogger, gameLogger } from '../utils/logger.js'

// 2. 更简洁的日志输出
tokenLogger.debug(`选择Token: ${tokenId}`, {...})

// 3. 移除了大量调试日志
// 4. 使用连接锁机制防止竞态
const connectionLocks = ref(new Map())

你的版本特点:

// 1. 使用shouldLog配置
const shouldLog = (type) => {
  try {
    const config = JSON.parse(localStorage.getItem('batchTaskLogConfig') || '{}')
    return config[type] === true
  } catch { return false }
}

// 2. 更详细的日志
if (shouldLog('websocket')) console.log(`[TokenStore] 开始更新token...`)

// 3. 支持bin文件导入
binFileId: tokenData.binFileId || null,
binFileContent: tokenData.binFileContent || null,

关键差异:

  1. 日志系统: 开源版使用专业logger你的版本用shouldLog配置
  2. Token结构: 你的版本支持更多导入方式bin文件
  3. 连接管理: 开源版有更完善的连接锁机制

建议:

  • 采纳开源版的logger系统性能优化
  • 保留你的bin文件支持功能

4.2 你的项目独有的Store

你有但开源版没有:

  • batchTaskStore.js - 批量任务状态管理
  • dailyTaskState.js - 日常任务状态

建议: 保留这些,它们是你的项目特色


🎨 五、视图Views对比

结论: Views文件夹完全相同无差异


📦 六、依赖包对比

需要查看两个项目的 package.json 来确认是否有依赖差异。


🔍 七、详细功能对比表

功能模块 开源v2.1.1 你的项目 建议
月度任务系统 完整实现 强烈建议添加
角色身份卡 IdentityCard + RoleProfileCard 强烈建议添加
战力段位系统 10个段位 强烈建议添加
俱乐部信息 ClubInfo组件 ⚠️ 功能较简单 建议升级
盐场战绩 ClubBattleRecords 建议添加
阵容管理 TeamFormation TeamStatus 可选替换
批量任务 完整系统 保留你的
定时任务 SchedulerConfig 保留你的
执行历史 ExecutionHistory 保留你的
升级模块 UpgradeModule 保留你的
赛车管理 CarManagement 保留你的
日志系统 logger.js (专业) ⚠️ shouldLog (简单) 强烈建议升级
IndexedDB tokenDb.js 使用localStorage 可选
Token过期提示 改进的提示机制 建议采纳改进

🎯 八、推荐更新优先级

🔴 优先级 1必须- 核心功能

  1. 月度任务系统 - 这是v2.1.1最重要的功能

    • 添加月度任务面板到GameStatus.vue
    • 实现钓鱼和竞技场补齐功能
    • 添加相关游戏命令
  2. 日志系统升级 - 性能优化关键

    • 添加logger.js
    • 替换所有console.log为logger调用
    • 移除生产环境的调试日志

🟠 优先级 2强烈推荐- 用户体验

  1. 角色身份卡系统

    • 添加IdentityCard.vue
    • 添加RoleProfileCard.vue可选
    • 实现战力段位系统
  2. 俱乐部功能增强

    • 添加ClubInfo.vue
    • 添加ClubBattleRecords.vue
    • 添加clubBattleUtils.js

🟡 优先级 3建议- 功能完善

  1. 阵容管理

    • 评估是否用TeamFormation替换TeamStatus
    • 添加英雄字典
  2. Token过期处理改进

    • 采纳开源版的Token过期检测逻辑

🟢 优先级 4可选- 技术优化

  1. IndexedDB支持

    • 添加tokenDb.js
    • 实现数据迁移
  2. 代码结构优化

    • 统一消息格式
    • 优化错误处理

📝 九、迁移建议

方案 A渐进式迁移推荐

第一阶段1-2天:

  1. 添加logger.js
  2. 在GameStatus.vue中集成月度任务面板
  3. 添加月度任务相关命令

第二阶段2-3天: 4. 添加IdentityCard组件 5. 实现战力段位系统 6. 调整GameStatus布局

第三阶段2-3天: 7. 添加俱乐部相关组件 8. 添加盐场战绩功能

第四阶段1-2天: 9. 代码优化和测试 10. 文档更新

方案 B选择性采纳

只采纳核心功能:

  1. 月度任务系统(必须)
  2. 日志系统(必须)
  3. 身份卡系统(可选)

⚠️ 十、注意事项

10.1 兼容性问题

  1. 消息格式差异

    • 你的版本有rtt和code字段
    • 开源版没有
    • 建议: 保持你的格式,更完整
  2. Token结构差异

    • 你支持bin文件导入
    • 开源版不支持
    • 建议: 保留你的功能

10.2 需要测试的功能

迁移后务必测试:

  • WebSocket连接稳定性
  • 月度任务补齐逻辑
  • Token刷新机制
  • 批量任务不受影响
  • 定时任务正常运行

10.3 可能的冲突

  1. GameStatus.vue改动巨大

    • 开源版用Tab切换日常/俱乐部/活动)
    • 你的版本:直接展示所有组件
    • 建议: 需要重构现有布局
  2. 组件依赖

    • 身份卡依赖logger.js
    • 盐场战绩依赖clubBattleUtils.js
    • 建议: 按依赖顺序添加

📊 十一、代码行数统计

新增代码量估算:

  • IdentityCard.vue: ~302行
  • RoleProfileCard.vue: ~693行
  • ClubInfo.vue: ~284行
  • ClubBattleRecords.vue: ~640行
  • TeamFormation.vue: ~268行
  • logger.js: ~164行
  • clubBattleUtils.js: ~145行
  • tokenDb.js: ~134行

总计: 约 2,630行 新代码

需要修改的现有代码:

  • GameStatus.vue: 重大改版
  • tokenStore.js: 集成logger
  • 其他组件: 替换console.log为logger

🎬 十二、下一步行动

立即可做:

  1. 仔细阅读此报告
  2. 决定采纳哪些功能
  3. 创建功能分支进行测试

建议流程:

# 1. 创建功能分支
git checkout -b feature/v2.1.1-integration

# 2. 逐步添加新功能
# 从logger.js开始
# 然后添加月度任务
# 最后添加身份卡系统

# 3. 充分测试
# 4. 合并到主分支

📞 十三、问题咨询

如果你对某个具体功能有疑问,我可以:

  1. 提供该功能的详细实现代码
  2. 解释实现原理
  3. 帮助你集成到项目中
  4. 处理可能的冲突

📈 总结建议

必须采纳

  • 月度任务系统
  • 日志系统logger.js
  • 角色身份卡系统

强烈推荐

  • 俱乐部信息增强
  • 盐场战绩功能

可选采纳

  • 阵容管理TeamFormation
  • IndexedDB支持

保留你的特色

  • 批量任务系统
  • 定时任务
  • 执行历史
  • 升级模块
  • 赛车管理
  • bin文件支持

报告生成完成! 🎉

如需要任何功能的详细实现代码或有其他问题,请随时告诉我!