TDN-M's picture
Update app.py
f74cac3 verified
import streamlit as st
from groq import Groq
import time
from datetime import datetime
# Thiết lập trang
st.set_page_config(
page_title="Chiến Lược Kinh Doanh Chuyên Nghiệp",
page_icon="📈",
layout="wide",
initial_sidebar_state="expanded"
)
# CSS tùy chỉnh nâng cao
st.markdown("""
<style>
.stTextInput input, .stTextArea textarea, .stSelectbox select {
border-radius: 10px !important;
padding: 12px !important;
border: 1px solid #e0e0e0 !important;
}
.stButton button {
width: 100%;
border-radius: 10px;
padding: 12px;
background-color: #4a6fa5;
color: white;
font-weight: bold;
transition: all 0.3s;
border: none;
}
.stButton button:hover {
background-color: #3a5a80;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
.stMarkdown h1, .stMarkdown h2, .stMarkdown h3 {
color: #4a6fa5;
}
.stExpander {
border-radius: 10px !important;
border: 1px solid #e0e0e0 !important;
}
.stProgress > div > div > div {
background-color: #4a6fa5 !important;
}
.sidebar .sidebar-content {
background-color: #f8f9fa;
}
[data-testid="stSidebar"] {
background-color: #f8f9fa !important;
}
</style>
""", unsafe_allow_html=True)
# Khởi tạo Groq client
client = Groq(api_key=st.secrets["GROQ_API_KEY"])
# Sidebar với thông tin công ty
with st.sidebar:
st.image("https://via.placeholder.com/150x50?text=Business+Strategy", width=150)
st.markdown("""
### Công Cụ Chiến Lược Kinh Doanh
Phiên bản: 2.0
Ngày cập nhật: """ + datetime.now().strftime("%d/%m/%Y") + """
---
""")
st.markdown("""
**Hướng dẫn sử dụng:**
1. Điền đầy đủ thông tin doanh nghiệp
2. Chọn loại chiến lược cần tư vấn
3. Nhấn nút "Tạo Chiến Lược"
4. Xem và tải về kết quả
""")
st.markdown("---")
st.markdown("""
**Hỗ trợ:**
📞 1900 1234
✉️ [email protected]
""")
# Tiêu đề ứng dụng
st.title("📊 Công Cụ Xây Dựng Chiến Lược Kinh Doanh")
st.markdown(f"""
<div style="background-color:#f0f5ff;padding:20px;border-radius:10px;margin-bottom:20px">
<h4 style="color:#4a6fa5">Giải pháp toàn diện cho chiến lược kinh doanh - Tối ưu hóa hiệu quả với AI</h4>
</div>
""", unsafe_allow_html=True)
# Tabs cho các loại chiến lược
tab1, tab2, tab3, tab4 = st.tabs([
"📌 Thông Tin Doanh Nghiệp",
"🎯 Phân Tích Thị Trường",
"🚀 Chiến Lược Phát Triển",
"📅 Kế Hoạch Hành Động"
])
with tab1:
# Phần nhập thông tin doanh nghiệp
with st.expander("🏢 THÔNG TIN DOANH NGHIỆP", expanded=True):
col1, col2 = st.columns(2)
with col1:
company_name = st.text_input("Tên doanh nghiệp")
company_age = st.selectbox("Thời gian hoạt động",
["Dưới 1 năm", "1-3 năm", "3-5 năm", "Trên 5 năm"])
industry = st.selectbox("Ngành nghề kinh doanh", [
"Bán lẻ", "Dịch vụ", "Sản xuất", "Công nghệ",
"Thực phẩm & Đồ uống", "Giáo dục", "Y tế", "Khác"
])
with col2:
revenue = st.selectbox("Doanh thu hàng năm", [
"Dưới 1 tỷ", "1-5 tỷ", "5-10 tỷ", "10-50 tỷ", "Trên 50 tỷ"
])
employee_count = st.selectbox("Số lượng nhân viên", [
"1-10", "11-50", "51-100", "101-500", "Trên 500"
])
business_model = st.selectbox("Mô hình kinh doanh", [
"B2B", "B2C", "B2B2C", "Marketplace", "Subscription", "Khác"
])
# Phần nhập thông tin khách hàng
with st.expander("👥 KHÁCH HÀNG MỤC TIÊU"):
target_audience = st.text_area(
"Mô tả chi tiết khách hàng mục tiêu",
placeholder="Ví dụ: Nam/Nữ, độ tuổi, thu nhập, thói quen mua sắm, nhu cầu, pain points...",
height=120
)
col1, col2 = st.columns(2)
with col1:
customer_location = st.text_input("Khu vực địa lý khách hàng")
with col2:
customer_channel = st.multiselect(
"Kênh tiếp cận khách hàng chính",
["Facebook", "Zalo", "Tiktok", "Website", "Cửa hàng", "Đại lý", "Khác"]
)
with tab2:
# Phần phân tích thị trường
with st.expander("🔍 PHÂN TÍCH SWOT", expanded=True):
col1, col2, col3, col4 = st.columns(4)
with col1:
strengths = st.text_area("Điểm mạnh (Strengths)", height=150)
with col2:
weaknesses = st.text_area("Điểm yếu (Weaknesses)", height=150)
with col3:
opportunities = st.text_area("Cơ hội (Opportunities)", height=150)
with col4:
threats = st.text_area("Thách thức (Threats)", height=150)
with st.expander("📊 ĐỐI THỦ CẠNH TRANH"):
competitors = st.text_area(
"Mô tả các đối thủ cạnh tranh chính",
placeholder="Liệt kê 3-5 đối thủ chính, điểm mạnh/yếu của họ...",
height=100
)
competitive_advantage = st.text_area(
"Lợi thế cạnh tranh của bạn",
placeholder="Điểm khác biệt giúp bạn vượt trội so với đối thủ...",
height=100
)
with tab3:
# Phần chiến lược phát triển
strategy_type = st.selectbox(
"Loại chiến lược cần tư vấn",
["Chiến lược Marketing", "Chiến lược Bán hàng", "Chiến lược Sản phẩm",
"Chiến lược Giá cả", "Chiến lược Phân phối", "Chiến lược Tăng trưởng"]
)
with st.expander("🎯 MỤC TIÊU CHIẾN LƯỢC"):
time_frame = st.selectbox("Khung thời gian", [
"3 tháng", "6 tháng", "1 năm", "3 năm", "5 năm"
])
goals = st.text_area(
"Mục tiêu cụ thể (SMART)",
placeholder="Ví dụ: Tăng doanh thu 30% trong 6 tháng tới, mở rộng thị phần lên 15%...",
height=100
)
with st.expander("📈 CHỈ SỐ ĐO LƯỜNG (KPI)"):
kpis = st.text_area(
"Các chỉ số đánh giá hiệu quả",
placeholder="Ví dụ: Tỷ lệ chuyển đổi, Doanh thu, Số lượng khách hàng mới...",
height=100
)
with tab4:
# Phần kế hoạch hành động
with st.expander("📅 KẾ HOẠCH TRIỂN KHAI"):
action_plan = st.text_area(
"Các bước triển khai chính",
placeholder="Liệt kê các hoạt động chính cần thực hiện...",
height=120
)
budget = st.number_input(
"Ngân sách dự kiến (triệu đồng)",
min_value=0,
value=100
)
with st.expander("🛠 NGUỒN LỰC CẦN THIẾT"):
resources = st.text_area(
"Nguồn lực cần chuẩn bị",
placeholder="Nhân lực, tài chính, công nghệ, đối tác...",
height=100
)
# Nút tạo chiến lược ở vị trí cố định
st.markdown("""
<style>
.fixed-button {
position: fixed;
bottom: 20px;
right: 20px;
z-index: 100;
}
</style>
""", unsafe_allow_html=True)
st.markdown('<div class="fixed-button"></div>', unsafe_allow_html=True)
if st.button('🚀 TẠO CHIẾN LƯỢC KINH DOANH', type="primary", key="generate_button"):
if not company_name:
st.warning("Vui lòng nhập tên doanh nghiệp")
st.stop()
if not target_audience:
st.warning("Vui lòng mô tả khách hàng mục tiêu")
st.stop()
with st.spinner("AI đang phân tích và xây dựng chiến lược tối ưu cho doanh nghiệp của bạn..."):
progress_bar = st.progress(0)
# Tạo prompt chuyên sâu cho chiến lược kinh doanh
prompt_text = f"""
Hãy xây dựng một chiến lược kinh doanh toàn diện cho công ty {company_name} hoạt động trong ngành {industry} với các yêu cầu sau:
1. Thông tin doanh nghiệp:
- Thời gian hoạt động: {company_age}
- Mô hình kinh doanh: {business_model}
- Doanh thu: {revenue}
- Số nhân viên: {employee_count}
2. Khách hàng mục tiêu:
- {target_audience}
- Khu vực địa lý: {customer_location}
- Kênh tiếp cận: {', '.join(customer_channel) if customer_channel else 'Chưa xác định'}
3. Phân tích SWOT:
- Điểm mạnh: {strengths}
- Điểm yếu: {weaknesses}
- Cơ hội: {opportunities}
- Thách thức: {threats}
4. Đối thủ cạnh tranh: {competitors}
Lợi thế cạnh tranh: {competitive_advantage}
5. Chiến lược {strategy_type} cho khung thời gian {time_frame}:
- Mục tiêu: {goals}
- KPI đo lường: {kpis}
6. Kế hoạch hành động:
- Các bước triển khai: {action_plan}
- Ngân sách: {budget} triệu đồng
- Nguồn lực cần thiết: {resources}
Yêu cầu chi tiết:
- Định dạng bằng tiếng Việt, rõ ràng, chuyên nghiệp
- Bao gồm các phần:
* Tóm tắt chiến lược
* Phân tích thị trường
* Chiến lược cụ thể
* Kế hoạch triển khai
* Ngân sách và ROI dự kiến
* Rủi ro và giải pháp
- Đưa ra các giải pháp sáng tạo, khả thi
- Kết hợp xu hướng mới nhất trong ngành
- Ưu tiên các giải pháp số hóa và tối ưu chi phí
- Đề xuất timeline cụ thể
"""
# Hiệu ứng loading
for i in range(10):
progress_bar.progress((i + 1) * 10)
time.sleep(0.2)
# Gọi API Groq để tạo chiến lược
try:
chat_completion = client.chat.completions.create(
messages=[
{
"role": "system",
"content": """
Bạn là chuyên gia tư vấn chiến lược kinh doanh với 20 năm kinh nghiệm.
Bạn am hiểu sâu về tất cả các ngành nghề và có khả năng đưa ra các
chiến lược sáng tạo, khả thi và hiệu quả. Hãy phân tích kỹ lưỡng và
đưa ra các giải pháp tối ưu nhất cho doanh nghiệp, kết hợp giữa
phương pháp truyền thống và công nghệ số.
"""
},
{
"role": "user",
"content": prompt_text
}
],
model="meta-llama/Llama-4-Maverick-17B-128E-Instruct",
temperature=0.7,
max_tokens=4000
)
business_strategy = chat_completion.choices[0].message.content
# Hiển thị kết quả
st.success("✅ Chiến lược kinh doanh đã sẵn sàng!")
st.balloons()
with st.expander(f"📋 CHIẾN LƯỢC KINH DOANH - {company_name.upper()}", expanded=True):
st.markdown(business_strategy)
# Tải về file
st.download_button(
label="📥 Tải về báo cáo đầy đủ",
data=business_strategy,
file_name=f"Chien_luoc_kinh_doanh_{company_name}_{datetime.now().strftime('%Y%m%d')}.docx",
mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
)
# Thêm phần đánh giá
st.markdown("---")
st.subheader("Đánh giá chiến lược")
col1, col2, col3 = st.columns(3)
with col1:
st.select_slider("Mức độ khả thi", options=["Thấp", "Trung bình", "Cao"], value="Cao")
with col2:
st.select_slider("Tiềm năng hiệu quả", options=["Thấp", "Trung bình", "Cao"], value="Cao")
with col3:
st.select_slider("Mức độ sáng tạo", options=["Thấp", "Trung bình", "Cao"], value="Cao")
st.text_area("Nhận xét của bạn về chiến lược này", placeholder="Ghi lại các ý kiến đánh giá...")
except Exception as e:
st.error(f"⚠️ Có lỗi xảy ra khi tạo chiến lược: {str(e)}")
# Footer chuyên nghiệp
st.markdown("---")
st.markdown("""
<div style="text-align: center; color: #4a6fa5; padding: 20px">
<p style="font-size: 14px">© 2024 Business Strategy AI Tool - Phiên bản Pro</p>
<p style="font-size: 12px">Công cụ này sử dụng AI mạnh mẽ để phân tích và đề xuất chiến lược kinh doanh tối ưu</p>
</div>
""", unsafe_allow_html=True)