投资公司发展物语 V0.3 实现规划文档

投资公司发展物语 V0.3 实现规划文档

版本目标:在v0.2基础上,分阶段实现游戏阶段系统、多维能力、早期业务 文档状态:✅ 已完成(2026-04-24) 实施方式:v0.3.0 + v0.3.1已实现,v0.3.2长周期业务待后续版本


实现策略概述

为避免一次性实现过多功能导致开发周期过长,v0.3拆分为3个小版本

版本 目标 预计工时 验收标准
v0.3.0 基础框架 1-2天 阶段系统可正常运行,晋升弹窗显示
v0.3.1 多维能力 + 初创期新业务 3-4天 员工有新能力属性,可开展咨询服务
v0.3.2 扩张期长周期业务 4-5天 可开展房地产投资、初创投资

v0.3.0 - 游戏阶段系统(基础框架)

目标

建立游戏阶段系统,作为所有后续功能的前置依赖。

实现内容

1. 阶段定义与数据模型

// 阶段定义(建议添加到 gameState)
gameState.phase = {
  current: 'startup', // 'startup' | 'expansion' | 'mature'
  lastCheckedMonth: 0, // 上次检查月份,避免重复触发
  unlockedFeatures: [], // 已解锁功能列表(用于UI显示)
  history: [] // 阶段历史记录 [{phase, month, year}]
};

// 阶段触发条件配置
const PHASE_CONDITIONS = {
  startup: { // 默认开局
    next: 'expansion',
    check: () => true // 总是满足
  },
  expansion: {
    next: 'mature',
    check: (state) => {
      const totalAsset = state.cash + calculateTotalBusinessValue(state);
      const year = 1990 + Math.floor(state.month / 12);
      return totalAsset >= 10000 || // 1亿
             (year >= 2000 && totalAsset >= 5000) || // 2000年且5000万
             state.reputation >= 80;
    }
  },
  mature: {
    next: null, // 最终阶段
    check: (state) => {
      const totalAsset = state.cash + calculateTotalBusinessValue(state);
      const year = 1990 + Math.floor(state.month / 12);
      return state.ipoSuccess === true || // IPO成功标志
             totalAsset >= 50000 || // 50亿
             year >= 2010;
    }
  }
};

// 各阶段解锁功能配置
const PHASE_UNLOCKS = {
  startup: {
    businesses: ['stock', 'futures', 'consulting', 'fundraising'],
    employeeTiers: ['junior'],
    officeTypes: ['small'],
    features: ['basic_hr', 'basic_training']
  },
  expansion: {
    businesses: ['stock', 'futures', 'consulting', 'fundraising', 'realestate', 'startup_invest', 'ma_local', 'rnd', 'business_group'],
    employeeTiers: ['junior', 'mid'],
    officeTypes: ['small', 'standard', 'business'],
    features: ['advanced_hr', 'advanced_training', 'loans']
  },
  mature: {
    businesses: ['stock', 'futures', 'consulting', 'fundraising', 'realestate', 'startup_invest', 'ma_local', 'rnd', 'business_group', 'overseas', 'ma_global', 'ipo'],
    employeeTiers: ['junior', 'mid', 'senior'],
    officeTypes: ['small', 'standard', 'business', 'headquarters'],
    features: ['advanced_hr', 'advanced_training', 'loans', 'global_operations', 'challenge_mode']
  }
};

2. 阶段晋升检测流程

触发时机:每月初,在”查看行情”之前

function checkPhaseTransition(state) {
  const currentPhase = state.phase.current;
  const condition = PHASE_CONDITIONS[currentPhase];
  
  if (!condition.next) return; // 已到达最终阶段
  
  // 避免同月重复检查
  if (state.phase.lastCheckedMonth === state.month) return;
  state.phase.lastCheckedMonth = state.month;
  
  if (condition.check(state)) {
    const prevPhase = currentPhase;
    const nextPhase = condition.next;
    
    // 触发晋升
    state.phase.current = nextPhase;
    state.phase.unlockedFeatures = PHASE_UNLOCKS[nextPhase];
    
    // 记录历史
    state.phase.history.push({
      phase: nextPhase,
      month: state.month,
      year: 1990 + Math.floor(state.month / 12),
      triggeredBy: detectTriggerCondition(state, nextPhase) // 记录触发条件
    });
    
    // 显示强制弹窗
    showPhaseUpModal({
      from: prevPhase,
      to: nextPhase,
      unlocked: state.phase.unlockedFeatures,
      history: state.phase.history,
      isForced: true // ✅ 强制显示,必须点击关闭
    });
  }
}

3. UI - 阶段晋升弹窗(强制显示)

弹窗属性:✅ 强制显示(必须点击”我知道了”才能继续游戏)

弹窗内容:

  • 标题:”🎉 公司进入[扩张期/成熟期]!”
  • 说明文字:”恭喜,您的公司已满足以下条件之一…”
  • 触发条件显示:显示具体哪个条件触发(资产达标/年份达标/声望达标)
  • 解锁内容列表(带图标分类):
    • 📊 新业务:[列表]
    • 👥 新员工层级:[列表]
    • 🏢 新写字楼类型:[列表]
  • 按钮:”我知道了”(主按钮,必须点击)

历史记录:在”公司情况”页面增加阶段历史时间线

4. 阶段对系统的控制

UI过滤逻辑

// 在业务列表渲染时
function getAvailableBusinesses(state) {
  const currentPhase = state.phase.current;
  const unlockedBusinesses = PHASE_UNLOCKS[currentPhase].businesses;
  
  return ALL_BUSINESSES.filter(b => 
    unlockedBusinesses.includes(b.id) ||
    state.businesses.some(active => active.type === b.id) // 已开展的业务始终显示
  );
}

// 在招聘界面渲染时
function getAvailableTiers(state) {
  const currentPhase = state.phase.current;
  return PHASE_UNLOCKS[currentPhase].employeeTiers;
}

// 在写字楼界面渲染时
function getAvailableOfficeTypes(state) {
  const currentPhase = state.phase.current;
  return PHASE_UNLOCKS[currentPhase].officeTypes;
}

v0.3.1 - 多维能力系统 + 初创期新业务

目标

完成员工能力系统升级(8行业技术完整实现),添加初创期新业务。

实现内容

1. 员工属性重设计(完整版)

✅ 确认:8个完整行业技术

// 行业定义
const INDUSTRIES = {
  finance: { name: '金融', icon: '💰' },
  realestate: { name: '地产', icon: '🏘️' },
  tech: { name: '科技/互联网', icon: '💻' },
  semiconductor: { name: '半导体', icon: '🔌' },
  consumer: { name: '消费电子', icon: '📱' },
  medical: { name: '医疗', icon: '🏥' },
  energy: { name: '能源', icon: '' },
  aerospace: { name: '航天/汽车', icon: '🚀' }
};

// 新员工属性结构
interface Employee {
  id: string;
  name: string;
  tier: 'junior' | 'mid' | 'senior';
  
  // v0.2兼容属性(迁移后只读)
  ability?: number; // 旧属性,迁移后用于显示"历史能力值"
  aiStyle?: 'momentum' | 'trend' | 'dividend';
  
  // v0.3新属性
  leadership: number;    // 1-10 领导力
  innovation: number;    // 1-10 创新力
  execution: number;     // 1-10 执行力
  
  // 8行业技术(完整版)
  industryTech: {
    finance: number;      // 0-100
    realestate: number;
    tech: number;
    semiconductor: number;
    consumer: number;
    medical: number;
    energy: number;
    aerospace: number;
  };
  
  loyalty: number;  // 1-10
  exp: number;      // 累计月数
  salary: number;   // 当前月薪
  
  // UI显示用(计算属性)
  abilityAverage?: number; // (leadership + innovation + execution) / 3
}

存档迁移逻辑

function migrateEmployeeFromV02(oldEmployee) {
  const oldAbility = oldEmployee.ability || 5;
  
  return {
    ...oldEmployee,
    // 三维均分原能力值(向上取整)
    leadership: Math.ceil(oldAbility / 3 * (0.8 + Math.random() * 0.4)), // ±20%随机
    innovation: Math.ceil(oldAbility / 3 * (0.8 + Math.random() * 0.4)),
    execution: Math.ceil(oldAbility / 3 * (0.8 + Math.random() * 0.4)),
    
    // 8行业技术初始化为0(或随机5-15表示基础了解)
    industryTech: {
      finance: Math.floor(Math.random() * 10) + 5,
      realestate: Math.floor(Math.random() * 10) + 5,
      tech: Math.floor(Math.random() * 10) + 5,
      semiconductor: Math.floor(Math.random() * 10) + 5,
      consumer: Math.floor(Math.random() * 10) + 5,
      medical: Math.floor(Math.random() * 10) + 5,
      energy: Math.floor(Math.random() * 10) + 5,
      aerospace: Math.floor(Math.random() * 10) + 5
    }
  };
}

新员工生成

function generateNewEmployeeV03(tier, availableIndustries) {
  // 三维随机 3-7
  const leadership = Math.floor(Math.random() * 5) + 3;
  const innovation = Math.floor(Math.random() * 5) + 3;
  const execution = Math.floor(Math.random() * 5) + 3;
  
  // 随机选择1-2个主行业,赋予较高初始技术
  const primaryIndustries = pickRandom(availableIndustries, Math.floor(Math.random() * 2) + 1);
  const industryTech = {};
  
  Object.keys(INDUSTRIES).forEach(ind => {
    if (primaryIndustries.includes(ind)) {
      industryTech[ind] = Math.floor(Math.random() * 20) + 10; // 主行业 10-30
    } else {
      industryTech[ind] = Math.floor(Math.random() * 10); // 其他 0-10
    }
  });
  
  return { leadership, innovation, execution, industryTech };
}

2. 结算公式更新(方案B:不同业务用不同维度组合)

✅ 确认:方案B - 不同业务用不同维度组合

// 能力维度权重配置
const BUSINESS_ABILITY_WEIGHTS = {
  stock: { leadership: 0.5, execution: 0.5, innovation: 0 },
  futures: { leadership: 0.3, execution: 0.7, innovation: 0 },
  consulting: { leadership: 0.8, execution: 0.2, innovation: 0 },
  fundraising: { leadership: 1.0, execution: 0, innovation: 0 },
  realestate: { leadership: 0.4, execution: 0.6, innovation: 0 },
  startup_invest: { leadership: 0.2, execution: 0.2, innovation: 0.6 },
  rnd: { leadership: 0.2, execution: 0.3, innovation: 0.5 },
  ma: { leadership: 0.9, execution: 0.1, innovation: 0 }
};

// 行业技术加成配置
const BUSINESS_INDUSTRY_BOOST = {
  stock: 0.3,        // 每点行业技术+0.03%
  futures: 0.2,
  consulting: 0.5,   // 咨询服务受行业技术影响大
  fundraising: 0,
  realestate: 0.4,
  startup_invest: 0.4,
  rnd: 0.6,          // 研发受行业技术影响最大
  ma: 0.3
};

// 统一结算公式
function calculateBusinessReturn(employee, businessType, marketCondition, industry, industryTechLevel) {
  const weights = BUSINESS_ABILITY_WEIGHTS[businessType];
  
  // 计算加权能力值
  const weightedAbility = 
    employee.leadership * weights.leadership +
    employee.execution * weights.execution +
    employee.innovation * weights.innovation;
  
  // 查能力修正表(使用加权后的能力值)
  const abilityIndex = Math.min(Math.floor(weightedAbility), 10);
  const A_table = [-200, -150, -100, -50, 0, 50, 100, 150, 200, 250, 300];
  const abilityBonus = A_table[abilityIndex] || 0;
  
  // 行业技术加成
  const techBoost = BUSINESS_INDUSTRY_BOOST[businessType] || 0;
  const industryBonus = industryTechLevel * techBoost;
  
  // 市场基准
  const marketBase = getMarketBaseRate(businessType, marketCondition);
  
  // 合成收益率(万分比)
  return marketBase + abilityBonus + industryBonus;
}

3. 晋升条件更新

const PROMOTION_RULES = {
  junior_to_mid: {
    exp: 24,
    abilitySum: 12, // 领导力+创新力+执行力 >= 12
    // 旧员工过渡期:v0.3前创建的员工,3个月内可用原"能力"值兼容计算
    compatUntil: 'v0.3_migration_month_3'
  },
  mid_to_senior: {
    exp: 60,
    abilitySum: 20,
    techRequirement: {
      minValue: 50,
      count: 1 // 至少1个行业技术>=50
    }
  }
};

4. 培训系统扩展

每月培训选项:

培训类型 费用 效果
通用能力提升 (目标值)×1万 领导力/创新力/执行力中选一个+1
行业技术提升 (目标值)×0.2万 8行业技术中选择一个+5

UI改动

  1. 培训界面第一级选择:【提升通用能力】/【提升行业技术】
  2. 选择通用能力后:显示三个维度按钮
  3. 选择行业技术后:显示8个行业选项(带当前值)

5. 咨询服务 - 分行业市场分析报告

✅ 确认:分行业报告(需要选择行业)

业务参数

属性
解锁阶段 初创期
所需层级 初级+
占用时间 当月完成(月末结算)
投入资金 0(无需调拨资金)
结算周期 立即

操作流程

  1. 选择空闲员工
  2. 选择”市场分析报告”类型
  3. 选择目标行业(8选1)
  4. 确认开展(检查员工该行业技术)
  5. 月末结算收益

收益公式

function calculateConsultingRevenue(employee, targetIndustry) {
  const techLevel = employee.industryTech[targetIndustry];
  
  // 基础3万
  const base = 30;
  
  // 领导力加成:每点0.3万
  const leadershipBonus = employee.leadership * 3;
  
  // 行业技术加成:每点0.1万
  const techBonus = techLevel * 0.1;
  
  // 总收益(单位:千元)
  const total = base + leadershipBonus + techBonus;
  
  // ✅ 确认:上限23万(不按文档6万限制)
  return Math.min(total, 230); // 最大值230(23万)
}

能力增长

  • 完成后该行业技术+1
  • 领导力有10%概率+1(小概率成长)

6. 拉取投资

业务参数

属性
解锁阶段 初创期
所需层级 初级+
占用时间 随机1-6个月
投入资金 0
成功获得 10-100万

✅ 确认:无惩罚(失败后无任何负面效果)

周期计算

function calculateFundraisingDuration(employee) {
  // 领导力越高,周期越短
  // 领导力1 -> 5-6个月,领导力10 -> 1-2个月
  const minMonths = Math.max(1, 6 - Math.floor(employee.leadership / 2));
  const maxMonths = Math.min(6, 7 - Math.floor(employee.leadership / 2));
  return randomInt(minMonths, maxMonths);
}

成功判定

function checkFundraisingSuccess(employee, companyReputation) {
  // ✅ 确认:基础成功率30%-80%
  let successRate = 0.3;
  
  // 领导力加成:每点+5%
  successRate += employee.leadership * 0.05;
  
  // 声望加成:每点声望超过50,+0.5%
  successRate += Math.max(0, (companyReputation - 50)) * 0.005;
  
  // 范围限制
  return Math.random() < Math.min(Math.max(successRate, 0.3), 0.8);
}

收益计算

function calculateFundraisingAmount(employee, reputation) {
  // 基础10-50万
  const base = randomInt(100, 500); // 单位:千元
  
  // 领导力加成
  const leadershipBonus = employee.leadership * 30; // 每点+3万
  
  // 声望加成
  const repBonus = Math.max(0, reputation - 50) * 5; // 每点声望+0.5万
  
  // 总额(最高100万 = 1000千元)
  return Math.min(base + leadershipBonus + repBonus, 1000);
}

完成后效果

  • 员工领导力+1
  • 公司声望+2
  • 获得投资金额加入公司现金

v0.3.2 - 扩张期长周期业务(移至v0.4实现)

目标

实现扩张期解锁的36个月长周期业务。

状态说明:v0.3.2的长周期业务(房地产投资、初创投资)实现复杂度较高,需要更完善的业务状态管理和UI支持。为保证v0.3核心功能稳定,本部分移至v0.4版本专门实现。

实现内容

1. 长周期业务基础框架

✅ 确认:放在现有”在营业务”列表,加标签区分

interface LongTermBusiness {
  id: string;
  type: 'realestate' | 'startup_invest' | 'ma_local' | 'rnd';
  employeeId: string; // 负责人
  startMonth: number; // 开始月份(游戏总月数)
  totalMonths: number; // 总周期
  initialInvestment: number; // 初始投入(万元)
  
  // 6个月操作窗口
  minOperateMonth: number; // 第6个月后可操作
  
  // 状态
  status: 'running' | 'sold' | 'completed' | 'failed';
  progress: number; // 当前进度月数
  
  // 月度数据
  monthlyData: Array<{
    month: number;
    revenue: number; // 收入
    cost: number;    // 成本
    net: number;     // 净收益
    condition: number; // 当月市场景气
  }>;
  
  // 累计数据
  totalRevenue: number;
  totalCost: number;
  currentValue: number; // 当前估值
}

// UI标签区分
const BUSINESS_TYPE_LABELS = {
  stock: { name: '股票投资', tag: '月结', color: 'green' },
  futures: { name: '期货', tag: '月结', color: 'orange' },
  consulting: { name: '咨询', tag: '当月', color: 'blue' },
  fundraising: { name: '拉投资', tag: '长期', color: 'purple' },
  realestate: { name: '房地产', tag: '36月', color: 'brown' },
  startup_invest: { name: '初创投资', tag: '36月', color: 'pink' }
};

UI显示规则

  • 月结业务:显示本月收益/收益率
  • 长期业务:显示”第X月/共Y月”进度条
  • 长期业务第6个月前:显示锁定图标,提示”6个月后可操作”

负责人更换

function changeBusinessEmployee(business, newEmployeeId, state) {
  // 只能在月初更换
  if (state.dayOfMonth !== 1) {
    throw new Error('只能在月初更换负责人');
  }
  
  // 检查是否已过6个月锁定
  const currentProgress = state.month - business.startMonth;
  if (currentProgress < 6) {
    throw new Error(`还需等待${6 - currentProgress}个月才能更换负责人`);
  }
  
  // 原负责人经验结算
  const oldEmployee = state.employees.find(e => e.id === business.employeeId);
  if (oldEmployee) {
    // 原负责人保留已获得的经验
    // 不扣除,因为已经完成工作
  }
  
  // 更换负责人
  business.employeeId = newEmployeeId;
  
  // 新负责人从当前月开始计算
  const newEmployee = state.employees.find(e => e.id === newEmployeeId);
  return { success: true, message: `已更换负责人为${newEmployee.name}` };
}

2. 房地产投资

业务参数

属性
解锁阶段 扩张期
所需层级 中级+
周期 36个月
初始投入 30-500万(玩家自选,需是10万整数倍)
操作窗口 6个月后可出售/换人

月结收益(租金)

function calculateRealEstateMonthlyRevenue(investment, realEstateCondition) {
  // 基础年化3-8%,分摊到月
  // realEstateCondition: 0=繁荣(8%), 1=向好(6.5%), 2=平稳(5%), 3=低迷(4%), 4=冰点(3%)
  const annualRate = [0.08, 0.065, 0.05, 0.04, 0.03][realEstateCondition];
  const monthlyRate = annualRate / 12;
  
  // 月租金收益(直接进入公司现金,不进业务账户)
  return Math.floor(investment * monthlyRate);
}

到期增值

function calculateRealEstateFinalValue(investment, monthlyConditions) {
  // 根据36个月的地产景气累积决定
  const avgCondition = average(monthlyConditions);
  
  // 平均景气对应增值率
  // 冰点(-20%) -> 低迷(-5%) -> 平稳(+10%) -> 向好(+25%) -> 繁荣(+40%)
  const appreciationRate = [-0.2, -0.05, 0.1, 0.25, 0.4][Math.round(avgCondition)];
  
  // 最终价值 = 初始投入 + 36个月租金累积 + 增值
  const totalRent = monthlyConditions.reduce((sum, c) => 
    sum + calculateRealEstateMonthlyRevenue(investment, c), 0
  );
  const finalValue = investment * (1 + appreciationRate) + totalRent;
  
  return Math.floor(finalValue);
}

提前出售(6个月后):

function calculateRealEstateSaleValue(business, currentMonth, currentCondition) {
  const elapsedMonths = currentMonth - business.startMonth;
  const remainingMonths = 36 - elapsedMonths;
  
  // 已获租金收益
  const earnedRent = business.monthlyData.reduce((sum, m) => sum + m.revenue, 0);
  
  // 剩余价值按当前市场行情折算
  // 当前市场好则溢价出售,市场差则折价
  const marketMultiplier = [1.3, 1.15, 1.0, 0.85, 0.7][currentCondition];
  
  // 剩余预期租金的折现(简化:直接按比例)
  const remainingValue = business.initialInvestment * (remainingMonths / 36) * marketMultiplier;
  
  // 总出售价值
  return Math.floor(business.initialInvestment * 0.9 + earnedRent + remainingValue * 0.5);
}

3. 初创投资

业务参数

属性
解锁阶段 扩张期
所需层级 中级+
周期 36个月
初始投入 10-50万
结算 到期一次性判定

成功判定(到期时):

function checkStartupInvestmentSuccess(employee, targetIndustry, monthlyConditions) {
  // ✅ 确认:基础成功率40%
  let successRate = 0.4;
  
  // 创新力加成:每点+3%
  successRate += employee.innovation * 0.03;
  
  // 行业技术加成:匹配行业时,每点+0.2%
  const techLevel = employee.industryTech[targetIndustry] || 0;
  successRate += techLevel * 0.002;
  
  // 行业景气加成(36个月平均)
  const avgCondition = average(monthlyConditions);
  // 平均景气影响:繁荣+20%, 向好+10%, 平稳0, 低迷-10%, 冰点-20%
  successRate += (2 - avgCondition) * 0.1;
  
  // 限制范围并判定
  return Math.random() < Math.min(Math.max(successRate, 0.1), 0.9);
}

收益倍数

function calculateStartupReturn(investment, isSuccess, employee) {
  if (!isSuccess) {
    // ✅ 确认:失败完全损失,无残值回收
    return 0;
  }
  
  // 成功时2-10倍
  const baseMultiplier = 2;
  
  // 创新力加成:每点+0.8倍
  const innovationBonus = employee.innovation * 0.8;
  
  // 随机波动 ±20%
  const randomFactor = 0.8 + Math.random() * 0.4;
  
  const multiplier = (baseMultiplier + innovationBonus) * randomFactor;
  
  // 限制上限10倍
  return Math.floor(investment * Math.min(multiplier, 10));
}

目标行业选择

  • 开展业务时需要选择投资哪个行业(8选1)
  • 不同行业成功率独立计算(基于员工该行业技术)
  • 行业景气使用对应宏观线

验收标准

v0.3.0 验收清单

  • 新开游戏默认是初创期
  • 修改存档总资产到1亿,次月触发扩张期弹窗
  • 弹窗强制显示,必须点击”我知道了”才能继续
  • 弹窗正确显示解锁内容列表和触发条件
  • 扩张期业务列表显示新业务入口(房地产、初创投资等)
  • 招聘界面显示中级员工可选项
  • 公司情况页面显示阶段历史时间线

v0.3.1 验收清单

  • 旧存档员工平滑迁移到新能力系统(三维+8行业技术)
  • 员工详情页显示领导力/创新力/执行力和8行业技术
  • 新员工生成带有随机三维和8行业技术
  • 可开展咨询服务,选择行业后当月完成并获得收益
  • 咨询服务收益公式正确(基础3万+领导力+行业技术)
  • 可开展拉取投资,显示剩余月数和进度
  • 拉投资成功后获得10-100万,领导力+1,声望+2
  • 拉投资失败后无任何惩罚
  • 培训界面可选择提升通用能力或8行业技术之一
  • 股票/期货结算使用新能力公式(不同维度权重)

v0.3.2 验收清单(移至v0.4实现)

  • 扩张期可开展房地产投资,选择投入金额30-500万
  • 房地产投资每月产生租金收益(进入公司现金)
  • 房地产投资显示”第X月/36月”进度
  • 第6个月前显示锁定图标,不可出售/换人
  • 第6个月后可出售房地产,按当前市场行情计算价值
  • 可开展初创投资,选择目标行业
  • 初创投资36个月后判定成功/失败
  • 成功后获得2-10倍回报,失败完全损失
  • 长周期业务可在月初更换负责人
  • 业务列表正确区分月结业务和长期业务标签

数值参考表

能力修正表 A(万分比)

加权能力值 修正值 说明
1 -200 极低
2 -150 很低
3 -100 较低
4 -50 稍低
5 0 平均
6 +50 稍高
7 +100 较高
8 +150 很高
9 +200 极高
10 +250 超强

行业景气对应收益影响

景气 编码 股票基线 期货基线 地产年化 初创成功率
繁荣 0 +12% +15% 8% +20%
向好 1 +5% +6% 6.5% +10%
平稳 2 +1% 0% 5% 0%
低迷 3 -3% -4% 4% -10%
冰点 4 -8% -10% 3% -20%

文档完成日期:2026-04-24 版本:v0.3 已实现 作者:AI Assistant + User


实际实现摘要

v0.3.0 已实现

  • ✅ 游戏阶段系统完整实现(phase.js)
  • ✅ 阶段晋升检测与弹窗(checkPhaseTransition)
  • ✅ 阶段解锁表(PHASE_UNLOCKS)
  • ✅ 存档迁移支持(旧存档自动适配)

v0.3.1 已实现

  • ✅ 多维能力系统(领导力/创新力/执行力 + 8行业技术)
  • ✅ 员工迁移逻辑(migrateEmployeeFromV02)
  • ✅ 新员工生成带多维能力(talentPool.js)
  • ✅ 业务结算使用能力权重(BUSINESS_ABILITY_WEIGHTS)
  • ✅ 咨询服务(当月完成,行业选择)
  • ✅ 拉投资(多月周期,领导力影响周期和成功率)

v0.3.2 待实现(v0.4)

  • ⏳ 房地产投资(36月周期)
  • ⏳ 初创投资(36月周期)
  • ⏳ 长周期业务状态管理
  • ⏳ 业务操作窗口(6月后出售/换人)

附录:数值表更新

股票/期货基线收益率

实际代码值(tables.js)与设计文档不同,已调整为更保守的范围:

股票 B_STOCK_BP_BY_C: [500, 250, 0, -250, -500] → 对应 ±5% 期货 B_FUT_BP_BY_C: [600, 300, 0, -300, -600] → 对应 ±6%

调整原因:避免月度波动过大,更符合长线投资特征。

Latest Posts

Introducing some new layouts to Bulma Clean Theme
Introducing some new layouts to Bulma Clean Theme

I’ve been meaning to write about some of the new features I have been rolling out to my Jekyll theme, Bulma Clean Theme, for a while but I have only just managed to push the update for the landing page layout last weekend. This article provides some of the thinking behind the updates, as well as a brief introduction to how to get started.

Getting started with Bulma Clean Theme for Jekyll
Getting started with Bulma Clean Theme for Jekyll

I have made a theme for Jekyll which is based on the Bulma frontend framework. It might look familiar, because I am also using it for this site. If you like the look of this theme then I thought I would write a little blog post about how to use it for your own site and how you can use it with GitHub Pages.

Why use a static site generator
Why use a static site generator

There are many ways to make a website and many different CMS platforms you can use, such as WordPress and Joomla, as well as site builder tools that offer you drag and drop interfaces, but what about static site generators?