一、应用概述
在数字经济时代,创业者亟需高效工具进行系统化的商业规划。本文介绍的智能创业计划生成器基于Streamlit框架构建,整合了财务建模、时间轴规划、智能文档生成等核心功能。该工具通过模块化设计实现了九大创业要素的系统化配置,显著提升了商业计划书的编写效率。应用采用会话状态管理技术,支持多步骤交互操作,并内置动态可视化分析,为创业者提供直观的数据决策支持。
二、核心功能模块分析
- 动态财务建模系统
财务模块采用参数化设计,用户可灵活调整启动成本、毛利率等6项核心参数。通过指数增长模型实现未来36个月的财务预测:
df['Revenue'] = [params['startup_cost'] * (1 + params['monthly_revenue_growth']) ** i for i in range(months)]
系统自动计算毛利润、运营成本和净利润,并通过Plotly生成交互式趋势图。关键指标卡片的实时更新功能,使ROI分析、回本周期等数据一目了然。
- 智能时间轴规划器
甘特图模块采用Pandas进行时间序列处理,支持动态增删任务项。每个任务包含开始/结束时间、负责人等多维度数据:
fig = px.timeline(df, x_start="Start", x_end="End", y="task", color="owner")
数据表格与图形视图的双向联动,配合表单提交验证机制(空任务检测、日期有效性校验),确保规划数据的准确性。
- 结构化文档生成引擎
基于Markdown的文档生成系统,通过会话状态整合各模块输入数据:
def generate_markdown():content = "# 创业计划\n"content += f"## 项目概述\n- **项目名称**: {plan_data['project_name']}"
输出文档包含财务参数、时间轴、市场分析等完整章节,支持一键下载为标准化商业计划书。
三、技术实现亮点
- 状态管理机制
应用采用Streamlit的session_state实现跨页面状态持久化:
if 'plan_data' not in st.session_state:st.session_state.plan_data = {'timeline': [],'current_step': 0,'financial_params': {...}}
这种设计保证用户在页面导航时数据不丢失,同时支持进度跟踪功能,通过radio组件与进度条联动展示完成度。
- 可视化增强方案
通过Plotly Express和Graph Objects构建专业级图表:
- 时间序列采用Scatter图表展示收入/利润双轴趋势
- 甘特图通过px.timeline实现任务进度可视化
- 关键指标卡片应用CSS阴影效果提升可读性
- 交互设计优化
侧边栏导航菜单采用icon+文字的组合方式,提升用户体验:
steps = ["🏠 项目概览", "🎯 市场分析", "💡 产品设计"...]
current_step = st.radio("当前进度", steps, index=current_step)
内容编辑区采用expand布局,结合智能建议模块,提供实时写作指导。例如市场分析模块内置TAM/SAM/SOM模型说明,降低用户学习成本。
import streamlit as st
import datetime
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go# 必须作为第一个streamlit命令
st.set_page_config(page_title="创业计划生成器",layout="wide",page_icon="🚀"
)# ================== 初始化会话状态 ==================
if 'plan_data' not in st.session_state:st.session_state.plan_data = {'timeline': [],'current_step': 0,'financial_params': {'startup_cost': 500000,'monthly_revenue_growth': 0.15,'gross_margin': 0.65,'cac': 3000,'salaries': 150000}}# ================== 样式配置 ==================
def local_css():st.markdown(f"""<style>.metric-card {{border: 1px solid #e6e6e6;border-radius: 8px;padding: 15px;margin: 10px 0;background: white;box-shadow: 0 2px 4px rgba(0,0,0,0.1);}}.stSlider>div>div>div>div {{background: #2B7DE9 !important;}}</style>""", unsafe_allow_html=True)# ================== 财务计算模块 ==================
def financial_calculator():params = st.session_state.plan_data['financial_params']with st.expander("💰 动态财务模型计算器", expanded=True):col1, col2 = st.columns(2)with col1:params['startup_cost'] = st.number_input("启动成本(元)", 100000, 10000000, params['startup_cost'])params['monthly_revenue_growth'] = st.slider("月收入增长率", 0.0, 1.0, params['monthly_revenue_growth'],0.01)params['gross_margin'] = st.slider("毛利率", 0.0, 1.0, params['gross_margin'], 0.01)with col2:params['cac'] = st.number_input("客户获取成本(CAC)", 100, 100000, params['cac'])params['salaries'] = st.number_input("年度人力成本(元)", 50000, 5000000, params['salaries'])# 生成财务预测months = 36df = pd.DataFrame({'Month': pd.date_range(start=datetime.date.today(), periods=months, freq='M'),'Revenue': [params['startup_cost'] * (1 + params['monthly_revenue_growth']) ** i for i in range(months)],'CAC': params['cac']})df['Gross Profit'] = df['Revenue'] * params['gross_margin']df['Operating Cost'] = params['salaries'] / 12 + df['CAC'] * df['Revenue'] / 1000df['Net Profit'] = df['Gross Profit'] - df['Operating Cost']# 可视化tab1, tab2 = st.tabs(["趋势分析", "关键指标"])with tab1:fig = go.Figure()fig.add_trace(go.Scatter(x=df['Month'], y=df['Revenue'], name="收入"))fig.add_trace(go.Scatter(x=df['Month'], y=df['Net Profit'], name="净利润"))fig.update_layout(height=400)st.plotly_chart(fig, use_container_width=True)with tab2:kpi1, kpi2, kpi3 = st.columns(3)with kpi1:st.metric("累计收入", f"¥{df['Revenue'].sum() / 10000:.1f}万")with kpi2:st.metric("平均净利润率", f"{df['Net Profit'].mean() / df['Revenue'].mean() * 100:.1f}%")with kpi3:st.metric("回本周期", f"{(params['startup_cost'] / df['Net Profit'].cumsum().max()) * 12:.1f}月")# ================== 时间轴模块 ==================
def timeline_step():st.header("📅 时间轴规划")# 甘特图if st.session_state.plan_data['timeline']:df = pd.DataFrame(st.session_state.plan_data['timeline'])df['Start'] = pd.to_datetime(df['start'])df['End'] = pd.to_datetime(df['end'])fig = px.timeline(df, x_start="Start", x_end="End", y="task", color="owner")fig.update_yaxes(autorange="reversed")st.plotly_chart(fig, use_container_width=True)# 任务输入表单with st.form("任务表单"):cols = st.columns([3, 2, 2, 2])task = cols[0].text_input("任务名称*")start = cols[1].date_input("开始日期", datetime.date.today())end = cols[2].date_input("结束日期", datetime.date.today())owner = cols[3].text_input("负责人", "未指定")if st.form_submit_button("➕ 添加任务"):if task and start and end:st.session_state.plan_data['timeline'].append({"task": task,"start": start.strftime("%Y-%m"),"end": end.strftime("%Y-%m"),"owner": owner})# 任务表格if st.session_state.plan_data['timeline']:st.dataframe(pd.DataFrame(st.session_state.plan_data['timeline']),hide_index=True,use_container_width=True)# ================== 主界面 ==================
def main_page():local_css()# 侧边栏导航with st.sidebar:st.title("🧭 导航菜单")steps = ["🏠 项目概览", "🎯 市场分析", "💡 产品设计","📈 商业模式", "⚙️ 运营计划", "👥 团队架构","💰 财务计划", "⚠️ 风险分析", "📅 时间轴"]current_step = st.radio("当前进度", steps, index=st.session_state.plan_data['current_step'])st.session_state.plan_data['current_step'] = steps.index(current_step)# 进度指示progress = (st.session_state.plan_data['current_step'] + 1) / len(steps)st.progress(progress)# 文档生成if st.button("📥 生成计划书"):markdown_content = generate_markdown()st.download_button(label="下载文档",data=markdown_content,file_name=f"{st.session_state.plan_data.get('project_name', '创业计划')}.md",mime="text/markdown")# 主内容区if current_step == "🏠 项目概览":st.header("项目概览")col1, col2 = st.columns([3, 2])with col1:st.session_state.plan_data['project_name'] = st.text_input("项目名称", "AI供应链优化平台")st.session_state.plan_data['overview'] = st.text_area("项目简介", height=200)with col2:st.image("https://example.com/startup-chart.png", caption="市场趋势分析")elif current_step == "💰 财务计划":st.header("财务规划")financial_calculator()elif current_step == "📅 时间轴":timeline_step()else:# 其他模块的统一处理section_map = {"🎯 市场分析": "market_analysis","💡 产品设计": "product_design","📈 商业模式": "business_model","⚙️ 运营计划": "operation_plan","👥 团队架构": "team","⚠️ 风险分析": "risk_management"}current_key = section_map[current_step]with st.expander("📝 内容编辑器", expanded=True):st.session_state.plan_data[current_key] = st.text_area("编辑内容",height=400,value=st.session_state.plan_data.get(current_key, ""))with st.expander("💡 智能建议", expanded=True):st.write(guidance_content[current_key])# ================== 文档生成 ==================
def generate_markdown():# 生成Markdown文档的逻辑content = "# 创业计划\n"content += f"## 项目概述\n"content += f"- **项目名称**: {st.session_state.plan_data.get('project_name', '未知')}\n"content += f"- **项目简介**: {st.session_state.plan_data.get('overview', '')}\n"content += f"## 财务计划\n"content += f"- 启动成本: ¥{st.session_state.plan_data['financial_params']['startup_cost']}元\n"content += f"- 月收入增长率: {st.session_state.plan_data['financial_params']['monthly_revenue_growth'] * 100}%\n"content += f"- 毛利率: {st.session_state.plan_data['financial_params']['gross_margin'] * 100}%\n"content += f"- 客户获取成本(CAC): ¥{st.session_state.plan_data['financial_params']['cac']}元\n"content += f"- 年度人力成本: ¥{st.session_state.plan_data['financial_params']['salaries']}元\n"content += f"## 时间轴\n"for task in st.session_state.plan_data['timeline']:content += f"- **任务**: {task['task']}, **开始**: {task['start']}, **结束**: {task['end']}, **负责人**: {task['owner']}\n"return content# ================== 指导内容 ==================
guidance_content = {"market_analysis": """### 市场分析指南
1. **目标市场**:使用TAM/SAM/SOM模型- TAM(总可服务市场) = 潜在客户数量 × 年消费额
2. **竞争分析**:制作SWOT矩阵
3. **用户画像**:包含年龄、职业、行为特征等维度""","product_design": """### 产品设计要点
1. **功能定义**:明确产品的核心功能和附加功能
2. **用户体验**:设计简洁易用的用户界面
3. **技术栈选择**:根据需求选择合适的技术方案""","business_model": """### 商业模式设计
1. **盈利模式**:确定如何从产品或服务中获利
2. **价值主张**:突出产品或服务的独特卖点
3. **合作伙伴关系**:考虑与其他企业的合作机会""","operation_plan": """### 运营计划制定
1. **营销策略**:制定有效的市场推广计划
2. **销售策略**:建立高效的销售渠道
3. **客户服务**:提供优质的售后服务支持""","team": """### 团队建设
1. **团队成员**:列出核心团队成员及其职责
2. **组织结构**:描述公司的组织架构
3. **技能要求**:说明各岗位所需的技能和经验""","risk_management": """### 风险管理
1. **风险识别**:列出潜在的风险因素
2. **风险评估**:对每个风险进行评估
3. **应对措施**:制定相应的风险管理措施"""
}# ================== 程序入口 ==================
if __name__ == "__main__":main_page()