本文内容主要参考自《用cursor玩转AI辅助编程》,将详细记录如何借助 Cursor AI 高效开发一个基于 FastAPI 和 Vue.js 的销售数据分析系统。适合希望了解 AI 辅助编程实践的 Python 全栈开发者。文章涵盖了从项目初始化、依赖配置、数据库设计、后端与前端开发、数据处理、API 实现、测试到前后端联调的完整流程。通过真实的对话与操作示例,帮助读者掌握在实际开发场景下如何高效利用 Cursor 进行协作,显著提升开发效率与代码质量。

后端开发

需求分析

  1. chat
    1
    2
    3
    4
    我需要开发一个销售数据分析系统,主要功能包括数据处理、统计分析和API。 
    请推荐合适的Python框架和技术栈,并帮助我搭建基础项目结构。
    系统需要处理CSV格式的销售数据,进行数据清洗和分析,最后通过Web API框架提供查询API。
    请帮我细化开发步骤,以便后续和你沟通时,能够一步一步实现。
  2. chat
    1
    2
    3
    4
    5
    感谢你的建议!不过我想做一些调整: 
    1. 我希望使用MySQL而不是PostgreSQL,因为我在本地电脑已经安装了MySQL
    2. 暂时不需要Docker,我们先在本地开发运行即可
    3. 其他的技术选型都很好,我们继续使用FastAPI和Pandas
    请帮我调整项目结构和依赖配置来适配这些变更内容。
  3. chat
    1
    2
    现在的技术选型我很满意。 
    请帮我把实现细节细化一下,并生成COMPOSER 可以理解的提示词,以便后续项目实现
    生成结果如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    我来帮你把项目实现细节拆分成更具体的步骤,并按照实现顺序组织。 
    1. 基础框架搭建
    步骤1.1:创建项目结构
    mkdir sales_analysis
    cd sales_analysis
    # 创建所需目录
    mkdir -p app/api/endpoints app/core app/models app/schemas app/services tests data
    步骤1.2:创建虚拟环境和安装依赖
    python -m venv venv
    source venv/bin/activate # Linux/Mac
    pip install -r requirements.txt
    2. 数据模型设计
    步骤2.1:创建基础数据模型
    from sqlalchemy import Column, Integer, String, Float, DateTime, ForeignKey
    from sqlalchemy.orm import relationship
    from app.core.database import Base
    class Product(Base):
    __tablename__ = "products"
    id
    = Column(Integer, primary_key=True, index=True)
    name = Column(String(100), nullable=False)
    category = Column(String(50))
    price = Column(Float, nullable=False)
    class Sale(Base):
    __tablename__ = "sales"

    id = Column(Integer, primary_key=True, index=True)
    product_id = Column(Integer, ForeignKey("products.id"))
    quantity = Column(Integer, nullable=False)
    sale_date = Column(DateTime, nullable=False)
    total_amount = Column(Float, nullable=False)
    3. 数据处理服务
    步骤3.1:CSV数据处理服务
    import pandas as pd
    from sqlalchemy.orm import Session
    from app.models.sales import Product, Sale
    from datetime import datetime

    class DataProcessor:
    @staticmethod
    def process_csv(file_path: str, db: Session):
    df = pd.read_csv(file_path)
    # 数据清洗和转换逻辑
    # 将处理后的数据保存到数据库
    4. API开发
    步骤4.1:创建API路由
    from fastapi import APIRouter, Depends, HTTPException
    from sqlalchemy.orm import Session
    from app.core.database import get_db
    from app.services.data_processor import DataProcessor

    router = APIRouter()

    @router.get("/sales/summary")
    def get_sales_summary(db: Session = Depends(get_db)):
    # 实现销售汇总统计
    pass

    @router.get("/sales/trend")
    def get_sales_trend(start_date: str, end_date: str, db: Session = Depends(get_db)):
    # 实现销售趋势分析
    pass
    5. 数据分析服务
    步骤5.1:创建分析服务
    import pandas as pd
    from sqlalchemy.orm import Session
    from app.models.sales import Sale, Product

    class SalesAnalytics:
    @staticmethod
    def calculate_summary(db: Session):
    # 实现销售汇总统计逻辑
    pass

    @staticmethod
    def analyze_trends(db: Session, start_date: str, end_date: str):
    # 实现销售趋势分析逻辑
    pass
    实现顺序和提示词
    1. 设置项目基础结构
    请帮我创建sales_analysis项目的基础目录结构,包括所有必要的空文件。
    2. 创建数据库配置
    请帮我实现MySQL数据库配置文件,包括database.py和config.py,需要支持环境变量配置。
    3. 实现数据模型
    请帮我实现销售数据分析系统的SQLAlchemy数据模型,包括产品表和销售记录表。
    4. 实现数据处理服务
    请帮我实现CSV数据处理服务,包括数据清洗和导入数据库的功能。
    5. 实现API路由
    请帮我实现销售数据分析系统的FastAPI路由,包括数据导入、查询和分析API。
    6. 实现数据分析服务
    请帮我实现销售数据分析服务,包括销售汇总、趋势分析等功能。
    测试数据示例
    创建示例CSV文件 `data/sample_sales.csv`:
    product_id,product_name,category,price,quantity,sale_date
    1,产品A,电子,99.9,2,2024-01-01
    2,产品B,服装,199.9,1,2024-01-02
    下一步建议
    1. 我们可以从创建项目基础结构开始
    2. 然后实现数据库配置
    3. 接着是数据模型的实现
    你想从哪个部分开始?每个步骤我都可以提供详细的代码实现。
  4. 将返回结果保存在notepads中

基础配置/环境搭建

  1. agent
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    请帮我创建sales_analysis项目的基础目录结构,包括所有必要的空文件。 
    目录是这样的:
    sales_analysis/
    ├── app/
    第5章 Cursor项目进阶:销售数据分析(后端Python部分) | 97

    │ ├── __init__.py
    │ ├── main.py # FastAPI应用入口
    │ ├── api/
    │ │ ├── __init__.py
    │ │ └── endpoints/
    │ ├── core/
    │ │ ├── config.py
    │ │ └── database.py
    │ ├── models/
    │ ├── schemas/
    │ └── services/
    ├── tests/
    ├── data/
    └── requirements.txt
    其中 requirements.txt 内部的依赖是这样的:
    fastapi>=0.104.0
    uvicorn>=0.24.0
    pandas>=2.1.0
    numpy>=1.24.0
    sqlalchemy>=2.0.0
    mysqlclient>=2.2.0
    python-dotenv>=1.0.0
    pydantic>=2.4.0
    pytest>=7.4.0
  2. agent
    1
    2
    3
    4
    以下是我的真实的MySQL连接信息,请帮我做对应文件的修改 
    localhost:3306
    用户名:root
    密码:root
  3. agent
    1
    帮我创建虚拟环境和安装依赖 

功能实现

  1. agent
    1
    @notepads 请帮我实现销售数据分析系统的SQLAlchemy数据模型,包括产品表和销售记录表。 
  2. agent
    1
    @Codebase 请帮我在database.py中添加创建表的代码
  3. agent
    1
    2
    我现在想用运行方法的形式启动整个项目,这样后续我做代码调试时会更方便。 
    请你帮我修改必要的代码
  4. agent
    1
    @notepads 请帮我实现CSV文件的数据处理服务,包括数据清洗和导入数据库的功能。
  5. agent
    1
    @notepads 请帮我实现销售数据分析系统的FastAPI路由,包括数据导入、查询和分析API。 
  6. agent
    1
    @notepads 请帮我实现销售数据分析服务,包括销售汇总、趋势分析等功能。

测试

  1. chat
    1
    2
    @notepads @Codebase  
    我现在已经写完代码了,需要测试,请你帮我生成一份测试计划
  2. 将生成内容保存到 notepads中
  3. agent
    1
    @notepads 帮我生成单元测试的部分
  4. chat
    1
    我需要在cursor中对这个文件做Debug,请告诉我如何配置
  5. 在notepads中添加以下内容
    1
    2
    ## 异常处理 
    在写代码时,如果你捕获了异常,就需要打印异常堆栈信息和当时请求的参数,方便我后续排查问题。

前端开发

准备

  1. 启动后端项目,获取API文档
  2. 添加doc 索引, https://vuejs.**g/guide/introduction.html,名字为 Vue.js
  3. 复制http://localhost:8000/openapi.json,内容保存到文件api.md
    1
    2
    3
    4
    5
    # 文档
    以下是 API 文档的JSON 定义
    {
    ...
    }

需求分析

  1. chat
    1
    2
    3
    4
    5
    6
    @api.md @Vue.js
    我希望你基于api.md中的API内容,开发一个前端项目。
    项目需要用到Vue.js和其他一些配套的前端组件。
    整体页面风格希望可以做得简洁、大方。
    对于一些数据展示的业务模块,希望可以增加图表组件的支持,看上去更加直观。
    我希望你可以清晰罗列每个步骤,方便我后续在“COMPOSER”面板中与Cursor进行沟通
  2. 复制输出到新的nodepads 中
  3. chat
    1
    需要运行前端项目,在电脑上需要安装哪些软件?

后端开发

  1. agent
    1
    @notepads 现在帮我创建Vue项目 
  2. agent
    1
    帮我生成一份测试CSV文件,数据尽可能多一些,方便我后续在前端用图表展示。 
  3. agent
    1
    2
    @notepads @Codebase 在前端单击“点击上传”选项时,希望可以加一个进度条,上传成功后希望可以有一个
    提示消息,而且现在上传文件没有请求后端接口,你来修复一下
  4. agent
    1
    2
    @Codebase 我在数据库中查看sale_records表数据时,发现有一些数据的total_amount算得不对,
    大部分是对的。请你分析可能的原因并给出解决方案。
  5. agent
    1
    @notepads 帮我实现销售数据管理模块的其他功能 
  6. 后端更新了接口后,前端需要对应适配
    agent
    1
    @notepads @Codebase 请基于最新的API对现有的代码做出修改与适配
  7. 数据分析模块 agent
    1
    @notepads 帮我生成数据分析模块的代码 
  8. agent
    1
    @Codebase 我希望光标悬浮在品类分析图表上可以显示数字

附录

提示词参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@note @Codebase 
我需要实现一个文章管理模块,要求如下:
1. 功能需求:
-
文章的增删改查操作
-
支持分页列表展示
-
包含标题、内容、发布时间等字段
2. 技术要求:
-
使用SpringBoot框架
-
MyBatis 作为ORM框架
-
遵循RESTful API设计规范
3. 预期输出:
-
后端API代码
-
数据库表设计
-
前端页面代码(Vue.js)
4. 质量规范:
-
需要添加适当的注释
-
包含异常处理
-
遵循项目现有的代码风格

使用上下文,

1
@notepads @Codebase @docs @file @git @cursor rules @Folders @Chat @Link @Web @Recent changes  @Code

本文由AI生成,内容仅供参考。在实际部署前,请根据具体环境进行测试和验证。