浏览代码

数据分析作业,双Agent协作,统一Agent模式

Han_Bingjie 2 月之前
父节点
当前提交
66bcfa94ea

+ 11 - 0
01_Homework_DATA_Analysis/.env

@@ -0,0 +1,11 @@
+# 配置环境变量 不能加逗号
+# OPENAI_API_KEY="sk-P30Hcvs5l76aqbE3I1SkbqIZ2qBtC7p8AfNOjMRoL6ITnX9t"
+# BASE_URL="https://api.moonshot.cn/v1"
+OPENAI_API_KEY="sk-0b225c6a101b4eef82a0d171a383b9b9"
+BASE_URL="https://api.deepseek.com"
+
+DB_USER=root
+DB_PASSWORD=admin
+DB_HOST=127.0.0.1
+DB_PORT=3306
+DB_NAME=analytics_demo

+ 1 - 0
01_Homework_DATA_Analysis/.python-version

@@ -0,0 +1 @@
+3.11

+ 0 - 0
01_Homework_DATA_Analysis/README.md


二进制
01_Homework_DATA_Analysis/chinese_test.png


+ 5 - 0
01_Homework_DATA_Analysis/db_check.txt

@@ -0,0 +1,5 @@
+(1, '张三', '技术部')
+(2, '李四', '销售部')
+(3, '王五', '技术部')
+(4, '赵六', '人力资源')
+(5, '钱七', '销售部')

+ 105 - 0
01_Homework_DATA_Analysis/init.py

@@ -0,0 +1,105 @@
+import os
+import mysql.connector
+# from dotenv import load_dotenv
+# load_dotenv()
+
+# ============================================================
+# 第一步:建立数据库连接
+# ============================================================
+# 使用环境变量管理敏感信息,这是生产级代码的基本规范
+# 这里拿到的是幻境中的env
+conn = mysql.connector.connect(
+    host=os.getenv("DB_HOST", "127.0.0.1"),
+    port=int(os.getenv("DB_PORT", 3306)),
+    user=os.getenv("DB_USER", "root"),
+    password=os.getenv("DB_PASSWORD", "admin"),
+    database=os.getenv("DB_NAME", "analytics_demo"),
+    charset="utf8mb4",  #定义字符集配置,否则Windows 默认编码是 gbk,中文字符在插入数据库前就被转成了 ?,所以数据库里存的就是问号
+    collation="utf8mb4_unicode_ci",
+)
+cursor = conn.cursor()
+
+# ============================================================
+# 第二步:创建表结构
+# ============================================================
+
+# 员工表:存储公司内部人员信息
+# 用于分析:部门人数分布、薪资结构、入职趋势等
+cursor.execute("""
+CREATE TABLE IF NOT EXISTS employees (
+    id          INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键
+    name        VARCHAR(50)  NOT NULL,           -- 姓名
+    department  VARCHAR(50)  NOT NULL,           -- 所属部门
+    salary      DECIMAL(10,2) NOT NULL,          -- 月薪(精确到分)
+    hire_date   DATE                             -- 入职日期
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+""")
+
+# 产品表:存储在售商品信息
+# 用于分析:品类销售、价格分布、库存预警等
+cursor.execute("""
+CREATE TABLE IF NOT EXISTS products (
+    id           INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键
+    product_name VARCHAR(100) NOT NULL,           -- 商品名称
+    category     VARCHAR(50)  NOT NULL,           -- 商品分类
+    price        DECIMAL(10,2) NOT NULL,          -- 单价
+    stock        INT DEFAULT 0                    -- 当前库存量
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+""")
+
+# 订单表:记录每笔交易
+# 用于分析:销售趋势、员工绩效、产品热度等
+cursor.execute("""
+CREATE TABLE IF NOT EXISTS orders (
+    id           INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主键
+    employee_id  INT NOT NULL,                    -- 下单员工(外键)
+    product_id   INT NOT NULL,                    -- 购买商品(外键)
+    quantity     INT NOT NULL,                    -- 购买数量
+    order_date   DATE NOT NULL,                   -- 下单日期
+    FOREIGN KEY (employee_id) REFERENCES employees(id),   -- 关联员工表
+    FOREIGN KEY (product_id)  REFERENCES products(id)     -- 关联产品表
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+""")
+
+# ============================================================
+# 第三步:插入演示数据
+# ============================================================
+
+# 员工数据:5 个员工,分属 3 个部门
+employees_data = [
+    (1, "张三", "技术部",   20000.00, "2023-01-15"),
+    (2, "李四", "销售部",   11000.00, "2023-02-20"),
+    (3, "王五", "技术部",   16000.00, "2022-11-10"),
+    (4, "赵六", "人力资源", 5000.00, "2023-03-01"),
+    (5, "钱七", "销售部",   17000.00, "2022-12-05"),
+]
+
+# 产品数据:4 款商品,覆盖 2 个品类
+products_data = [
+    (1, "笔记本电脑", "电子产品", 6999.00, 500),
+    (2, "机械键盘",   "电子产品", 399.00,  1000),
+    (3, "办公椅",     "办公用品", 499.00,  300),
+    (4, "显示器",     "电子产品", 1200.00, 400),
+]
+
+# 订单数据:5 笔订单,模拟真实购买行为
+orders_data = [
+    (1, 1, 1, 2, "2024-01-15"),  # 张三买了 2 台笔记本
+    (2, 2, 2, 15, "2024-01-16"),  # 李四买了 15 个键盘
+    (3, 3, 1, 10, "2024-01-17"),  # 王五买了 10 台笔记本
+    (4, 5, 3, 6, "2024-01-18"),  # 钱七买了 6 把办公椅
+    (5, 2, 4, 5, "2024-01-19"),  # 李四买了 5 台显示器
+]
+
+# executemany 批量插入,比逐条 insert 高效得多
+cursor.executemany("INSERT IGNORE INTO employees VALUES (%s,%s,%s,%s,%s)", employees_data)
+cursor.executemany("INSERT IGNORE INTO products  VALUES (%s,%s,%s,%s,%s)", products_data)
+cursor.executemany("INSERT IGNORE INTO orders     VALUES (%s,%s,%s,%s,%s)", orders_data)
+
+conn.commit()
+conn.close()
+
+print("✅ 数据库初始化完成")
+print("   - employees 表:5 条员工记录")
+print("   - products  表:4 条产品记录")
+print("   - orders    表:5 条订单记录")

+ 6 - 0
01_Homework_DATA_Analysis/main.py

@@ -0,0 +1,6 @@
+def main():
+    print("Hello from 02-data-analysis!")
+
+
+if __name__ == "__main__":
+    main()

+ 7 - 0
01_Homework_DATA_Analysis/pyproject.toml

@@ -0,0 +1,7 @@
+[project]
+name = "02-data-analysis"
+version = "0.1.0"
+description = "Add your description here"
+readme = "README.md"
+requires-python = ">=3.11"
+dependencies = []

文件差异内容过多而无法显示
+ 489 - 0
01_Homework_DATA_Analysis/sql_agent.ipynb


+ 8 - 0
01_Homework_DATA_Analysis/uv.lock

@@ -0,0 +1,8 @@
+version = 1
+revision = 3
+requires-python = ">=3.11"
+
+[[package]]
+name = "02-data-analysis"
+version = "0.1.0"
+source = { virtual = "." }

部分文件因为文件数量过多而无法显示