当前位置: 首页 > news >正文

AI 编程的世界:用Cursor编写评分项目

AI 编程的世界:用Cursor编写评分项目

  今天是2024年的最后一天,祝大家在新的一年,健康开心快乐!

  岁末之际,星辰为伴,灯火长明,我终于在 2024 年的最后一天成功上线了 AI 编程项目。回首这一年,那些与代码鏖战的日夜、攻克难题的瞬间,都化作此刻内心的满足与安宁。感谢这一年来努力奔跑、不曾放弃的自己,所有的汗水与坚持,都在今日结成了最美的果实。新岁将启,愿未来的路上,继续心怀热爱,奔赴下一场山海,书写更多篇章!

  本项目的创意最初源自一位朋友的构想,目标是构建一个评委评分系统。值得一提的是,在整个项目开发进程中,我未手动编写任何一行代码,而是完全依赖于与多种人工智能工具(如 o1、Cursor、豆包等)的交互协作来达成项目目标。经过多日持续不懈的调试与优化工作,项目最终成功部署于腾讯云服务器之上(得益于腾讯云所提供的为期一个月的免费服务器资源),并且额外花费 15 元在腾讯云平台上购置了域名 aibobo.tech。项目访问方式如下:您既能够通过域名访问访问,也可以直接使用 IP访问访问项目。各位可以进行测试体验自已下载项目源码进行部署,管理员账号为 admin,密码为 admin123。管理员登录后,在数据初始化中下载模块,在这个模块中我已让AI生成了一些模拟数据,下载后可以直接导入进行数据初始化。有关项目的详细功能介绍,请见下文。项目源码地址:项目源码,小程序已调试通过,正在审核。

  在使用 Cursor 进行编程辅助的过程中,发现其存在一定的不稳定性问题。例如,有时会出现代码丢失的情况,原本长达 1K 多行的代码,经其处理后仅剩下百余行,着实令人惊出一身冷汗。此外,对于一些原本能够正常执行的功能代码,经 Cursor 再次编辑后,会出现诸如 403、500 等错误状态。基于此,在使用过程中,建议采用以下提示词来优化与 Cursor 的交互,以提升代码生成的准确性和稳定性。

在开发新功能前,我需要: 
1. 理解现有架构 - 查看相关模块的代码实现 - 分析代码组织方式和设计模式 - 理解数据流转和状态管理 - 确认现有的工具和方法 
2. 确认开发规范 - 检查相似功能的实现方式 - 遵循项目的命名规范 - 保持代码风格一致 - 复用现有组件和工具 
3. 开发步骤 - 先写类型定义 - 实现核心逻辑 - 添加错误处理 - 进行功能测试 
4. 如果遇到问题 - 查看相似功能的实现 - 不随意修改现有代码 - 保持架构的一致性 - 完整测试后再提交。

  提示词举例

1、基于python+flask设计的web程序,界面现代风格,同时兼容手机浏览,在手机上能正常美观显示。
2、设计一个评分系统,管理员帐号登录可以对数据管理,评委登录进去,可以选择组,只能对分配的组的被评人进行评分,分数值在0到100,分数提交后,不能重新再评分,重新再选择组,继续对被评人评分。
3、有各表的管理页面,包括添加、编辑和删除,对于评委以及被评人数据量大的可以通过电子表格直接上传添加。
4、有评分统计,对于每一个被评分对象,给出一个二维表显示各评委的打分,以及最后所得平均分,可以导出为电子表格。

项目介绍

这是一个基于Flask和微信小程序的评分系统,主要用于组织评委对参评人员进行打分评估。系统分为Web管理端和微信小程序评委端两部分。

主要功能

Web管理端
  • 用户管理:管理员可以添加、编辑、删除评委账号
  • 分组管理:创建和管理不同的评分分组
  • 成员管理:添加、编辑、删除待评分成员
  • 数据导入:支持Excel批量导入评委和待评分成员数据
  • 评分统计:查看所有评分数据,支持按学段、学科筛选
  • 数据导出:支持导出评分统计数据到Excel
小程序评委端
  • 评委登录:评委使用账号密码登录
  • 分组查看:查看自己所在的评分分组
  • 评分功能:对分组内的成员进行打分
  • 评分进度:实时显示评分进度

部署指南

1. 服务器环境准备

# 更新系统
sudo apt update
sudo apt upgrade -y# 安装必要的系统包
sudo apt install -y python3-pip python3-venv nginx mysql-server mysql-client libmysqlclient-dev# 安装SSL所需的包
sudo apt install -y certbot python3-certbot-nginx

2. 创建项目目录和虚拟环境

# 创建项目目录
sudo mkdir -p /var/www/rating_system
cd /var/www/rating_system# 创建并激活Python虚拟环境
python3 -m venv venv
source venv/bin/activate# 创建项目所需目录
#这里直接上传项目整个目录压缩文件

3. 项目文件部署

项目文件压缩之前导出所用模块,可参考

# 这里注意项目打包时,导出完整的模块: 激活本地项目的虚拟环境,在项目目录下导出模块, 虽然这样有时程序运行好似还缺模块,根据错误提示再pip一下
E:\rating_system\.venv\Scripts>activate.bat
pip freeze > requirements.txt

将项目压缩

# 上传项目文件压缩包,将项目文件压缩文件解压到指定目录
sudo apt-get install p7zip-full
7z x rating_system.7z
# 安装项目依赖
pip install -r requirements.txt
pip install gunicorn

4. 配置MySQL数据库

# 启动 MySQL
sudo systemctl start mysql
sudo systemctl enable mysql# 设置 root 密码
sudo mysql_secure_installation# 登录 MySQL
sudo mysql -u root -p# 在 MySQL 中执行以下命令
CREATE DATABASE rating_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'rating_user'@'localhost' IDENTIFIED BY '你设置的密码';
GRANT ALL PRIVILEGES ON rating_system.* TO 'rating_user'@'localhost';
FLUSH PRIVILEGES;
exit;# 数据库进行初始化在mysql shell下运行项目目录下的create_database.sql
# 切换到项目目录
cd /var/www/rating_system# 使用MySQL命令执行SQL文件
sudo mysql -u root -p rating_system < create_database.sql
# 验证数据库是否创建成功
# 登录MySQL
mysql -u rating_user -p# 在MySQL中执行以下命令
use rating_system;
show tables;  # 查看是否创建了所有表
select * from user;  # 检查管理员用户是否创建成功
exit;

5. 配置环境变量

# 项目根目录下创建.env文件
cd /var/www/rating_system
vim .env# 添加以下内容
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=rating_user
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=rating_system
JWT_SECRET=your_jwt_secret_key
SECRET_KEY=your_flask_secret_key# 设置文件权限
chmod 600 .env

6. 配置Gunicorn

创建Gunicorn服务文件:

sudo vim /etc/systemd/system/rating_system.service

服务文件内容:

[Unit]
Description=Rating System Gunicorn Service
After=network.target[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/var/www/rating_system
Environment="PATH=/var/www/rating_system/venv/bin"
ExecStart=/var/www/rating_system/venv/bin/gunicorn -w 4 -b 0.0.0.0:4262 app:app
Restart=always[Install]
WantedBy=multi-user.target

启动服务:

# 重新加载 systemd 配置
sudo systemctl daemon-reload
sudo systemctl start rating_system
sudo systemctl enable rating_system

7. 配置Nginx

创建Nginx配置文件:

sudo vim /etc/nginx/sites-available/rating_system

配置文件内容:

# HTTP - 重定向到HTTPS
server {listen 80;                                    # 监听80端口(HTTP)server_name www.aibobo.tech aibobo.tech;     # 指定域名,支持带www和不带www的访问return 301 https://$server_name$request_uri;  # 301永久重定向到HTTPS
}# HTTPS
server {listen 443 ssl;                              # 监听443端口,启用SSLserver_name www.aibobo.tech aibobo.tech;     # 指定域名# SSL证书配置ssl_certificate /etc/letsencrypt/live/www.aibobo.tech/fullchain.pem;      # SSL证书文件ssl_certificate_key /etc/letsencrypt/live/www.aibobo.tech/privkey.pem;    # SSL私钥文件# SSL安全参数ssl_protocols TLSv1.2 TLSv1.3;               # 只允许TLS 1.2和1.3ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305;  # 加密算法ssl_prefer_server_ciphers on;                # 优先使用服务器的加密算法ssl_session_cache shared:SSL:10m;            # SSL会话缓存ssl_session_timeout 10m;                     # SSL会话超时时间# API 路由location / {# 反向代理设置proxy_pass http://127.0.0.1:4262;        # 转发到Flask应用proxy_http_version 1.1;                  # 使用HTTP 1.1proxy_set_header Upgrade $http_upgrade;  # WebSocket支持proxy_set_header Connection 'upgrade';   # WebSocket支持# 请求头设置proxy_set_header Host $host;             # 传递原始主机名proxy_set_header X-Real-IP $remote_addr; # 传递真实IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 传递代理链路proxy_set_header X-Forwarded-Proto $scheme;  # 传递协议类型# CORS头部设置add_header 'Access-Control-Allow-Origin' '*' always;          # 允许所有来源add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;  # 允许的HTTP方法add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization' always;  # 允许的请求头# OPTIONS请求特殊处理if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';add_header 'Access-Control-Max-Age' 1728000;  # 预检请求缓存时间add_header 'Content-Type' 'text/plain charset=UTF-8';add_header 'Content-Length' 0;return 204;  # 返回无内容状态码}}
}                                                                                                                                                                                              

创建符号链接:

sudo ln -s /etc/nginx/sites-available/rating_system /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx

8. 配置SSL证书

# 安装SSL证书
sudo certbot --nginx -d your_domain.com# 自动续期证书
sudo certbot renew --dry-run

9. 文件权限设置

# 设置目录权限
sudo chown -R www-data:www-data /var/www/rating_system
sudo chmod -R 755 /var/www/rating_system

10、访问测试

  • 在浏览器访问 http://服务器IP:4262 应该能看到管理后台登录界面
  • 默认管理员账号:
    • 用户名:admin
    • 密码:admin123

11、小程序配置

  • 在微信开发者工具中:

    • 点击右上角【详情】
    • 在【本地设置】中勾选【不校验合法域名…】选项
    • 这样可以在开发阶段使用 IP 地址

常用的操作命令

以下是我在项目部署过程中使用的一些命令

# 赋予权限
sudo chmod -R 777 /var/www/rating_system/*
# 删除
rm /var/www/rating_system/rating_system.tar
# 更改路径写的权限 为所有者添加写权限
chmod u+w /var/www/rating_system
# 为所有者、组用户和其他用户添加写权限
chmod a+w /var/www/rating_system
# 打包/var/www/rating_system 将此目录下的venv目录除外
tar --exclude=venv -cvf rating_system.tar /var/www/rating_system
# 强制删除目录
rm -rf /var/www/rating_system
# 将压缩文件解压到指定目录
sudo apt-get install p7zip-full
7z x rating_system.7z

维护建议

  1. 定期备份数据库
# 创建备份脚本
#!/bin/bash
backup_dir="/var/backups/rating_system"
date_format=$(date +%Y%m%d_%H%M%S)
mysqldump -u rating_user -p rating_system > "$backup_dir/backup_$date_format.sql"
  1. 监控系统日志
# 检查应用日志
tail -f /var/www/rating_system/logs/flask_app.log# 检查Nginx日志
tail -f /var/log/nginx/error.log
  1. 定期更新依赖包
pip install --upgrade -r requirements.txt

技术栈

  • 后端:Python Flask

  • 数据库:MySQL

  • 前端:微信小程序

  • Web端:Bootstrap + jQuery

  • 服务器:Nginx + Gunicorn

重置Cursor试用

解决Cursor在免费订阅期间出现以下提示的问题: Too many free trial accounts used on this machine. Please upgrade to pro. We have this limit in place to prevent abuse. Please let us know if you believe this is a mistake.

1、https://github.com/yuaotian/go-cursor-help

相关文章:

AI 编程的世界:用Cursor编写评分项目

AI 编程的世界&#xff1a;用Cursor编写评分项目 今天是2024年的最后一天&#xff0c;祝大家在新的一年&#xff0c;健康开心快乐&#xff01; 岁末之际&#xff0c;星辰为伴&#xff0c;灯火长明&#xff0c;我终于在 2024 年的最后一天成功上线了 AI 编程项目。回首这一年&am…...

Cesium教程(二十三):Cesium实现下雨场景

文章目录 实现效果代码引入js文件创建容器创建视图定义下雨场景完整代码下载实现效果 代码 在 Cesium 中利用PostProcessStageLibrary实现下雪场景,你可以按照以下步骤进行: 创建一个 PostProcessStage:首先,你需要创建一个PostProcessStage对象,它将用于定义下雪效果的渲…...

SpringCloudAlibaba技术栈-Higress

1、什么是Higress? 云原生网关&#xff0c;干啥的&#xff1f;用通俗易懂的话来说&#xff0c;微服务架构下Higress 就像是一个智能的“交通警察”&#xff0c;它站在你的网络世界里&#xff0c;负责指挥和调度所有进出的“车辆”&#xff08;也就是数据流量&#xff09;。它的…...

uniapp 微信小程序开发使用高德地图、腾讯地图

一、高德地图 1.注册高德地图开放平台账号 &#xff08;1&#xff09;创建应用 这个key 第3步骤&#xff0c;配置到项目中locationGps.js 2.下载高德地图微信小程序插件 &#xff08;1&#xff09;下载地址 高德地图API | 微信小程序插件 &#xff08;2&#xff09;引入项目…...

Springboot:后端接收数组形式参数

1、接收端写法 PermissionAnnotation(permissionName "",isCheckToken true)PostMapping("/batchDeleteByIds")public ReturnBean webPageSelf( NotNull(message "请选择要删除的单据&#xff01;") Long[] ids) {for (Long string : ids) {l…...

Postman[2] 入门——界面介绍

可参考官方 文档 Postman 导航 | Postman 官方帮助文档中文版Postman 拥有各种工具、视图和控件&#xff0c;帮助你管理 API 项目。本指南是对 Postman 主要界面区域的高级概述&#xff1a;https://postman.xiniushu.com/docs/getting-started/navigating-postman 1. Header&a…...

1月第四讲:Java Web学生自习管理系统

一、项目背景与需求分析 随着网络技术的不断发展和学校规模的扩大&#xff0c;学生自习管理系统的需求日益增加。传统的自习管理方式存在效率低下、资源浪费等问题&#xff0c;因此&#xff0c;开发一个智能化的学生自习管理系统显得尤为重要。该系统旨在提高自习室的利用率和…...

【Redis】Redis 典型应用 - 缓存 (cache)

目录 1. 什么是缓存 2. 使用 Redis 作为缓存 3. 缓存的更新策略 3.1 定期生成 3.2 实时生成 4. 缓存的淘汰策略 5. 缓存预热, 缓存穿透, 缓存雪崩 和 缓存击穿 关于缓存预热 (Cache preheating) 关于缓存穿透 (Cache penetration) 关于缓存雪崩 (Cache avalanche) 关…...

HTML——38.Span标签和字符实体

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>span标签和字符实体</title><style type"text/css">h1{text-align: center;}p{text-indent: 2em;}span{color: red;}</style></head><…...

ROS2+OpenCV综合应用--10. AprilTag标签码追踪

1. 简介 apriltag标签码追踪是在apriltag标签码识别的基础上&#xff0c;增加了小车摄像头云台运动的功能&#xff0c;摄像头会保持标签码在视觉中间而运动&#xff0c;根据这一特性&#xff0c;从而实现标签码追踪功能。 2. 启动 2.1 程序启动前的准备 本次apriltag标签码使…...

python Celery 是一个基于分布式消息传递的异步任务队列系统

Celery 是一个基于分布式消息传递的异步任务队列系统&#xff0c;主要用于处理耗时任务、定时任务和周期性任务。它能够将任务分配到多个工作节点&#xff08;Worker&#xff09;上执行&#xff0c;从而提高应用程序的性能和可扩展性。Celery 是 Python 生态中最流行的任务队列…...

嵌入式硬件杂谈(七)IGBT MOS管 三极管应用场景与区别

引言&#xff1a;在现代嵌入式硬件设计中&#xff0c;开关元件作为电路中的重要组成部分&#xff0c;起着至关重要的作用。三种主要的开关元件——IGBT&#xff08;绝缘栅双极型晶体管&#xff09;、MOSFET&#xff08;金属氧化物半导体场效应晶体管&#xff09;和三极管&#…...

麒麟信安云在长沙某银行的应用入选“云建设与应用领航计划(2024)”,打造湖湘金融云化升级优质范本

12月26日&#xff0c;2024云计算产业和标准应用大会在北京成功召开。大会汇集政产学研用各方专家学者&#xff0c;共同探讨云计算产业发展方向和未来机遇&#xff0c;展示云计算标准化工作重要成果。 会上&#xff0c;云建设与应用领航计划&#xff08;2024&#xff09;建云用…...

好用的随机生成图片的网站

官网&#xff1a; Lorem Picsum 获取自定义大小的随机图像 https://picsum.photos/200/300 获取正方形图像 https://picsum.photos/200 获取特定类型的图像 通过添加到 /id/{image} url 的开头来获取特定图像。 https://picsum.photos/id/237/200/300 获取静态随机图像…...

添加 env 配置,解决import路径问题

添加 env 配置&#xff0c;解决import路径问题 { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387 “version”: “0.2.0”, “configurations”: [ {"name&q…...

Go work stealing 机制

Go语言的Work Stealing&#xff08;工作窃取&#xff09;机制是一种用于调度Goroutines&#xff08;协程&#xff09;的策略&#xff0c;其核心目的是最大化CPU使用率&#xff0c;减少任务调度的开销&#xff0c;并提高并发性能和吞吐量。以下是Go Work Stealing机制的详细解释…...

基础数据结构--二叉树

一、二叉树的定义 二叉树是 n( n > 0 ) 个结点组成的有限集合&#xff0c;这个集合要么是空集&#xff08;当 n 等于 0 时&#xff09;&#xff0c;要么是由一个根结点和两棵互不相交的二叉树组成。其中这两棵互不相交的二叉树被称为根结点的左子树和右子树。 如图所示&am…...

《C++设计模式》策略模式

文章目录 1、引言1.1 什么是策略模式1.2 策略模式的应用场景1.3 本文结构概览 2、策略模式的基本概念2.1 定义与结构2.2 核心角色解析2.2.1 策略接口&#xff08;Strategy&#xff09;2.2.2 具体策略实现&#xff08;ConcreteStrategy&#xff09;2.2.3 上下文&#xff08;Cont…...

JavaScript学习记录6

第一节 算数运算符 1. 概述 JavaScript 共提供10个算术运算符&#xff0c;用来完成基本的算术运算。 加法运算符x y减法运算符 x - y乘法运算符 x * y除法运算符x / y指数运算符x ** y余数运算符x % y自增运算符x 、x自减运算符--x 、x--数值运算符 x负数值运算符-x 减法、…...

如何在没有 iCloud 的情况下将数据从 iPhone 传输到 iPhone

概括 您可能会遇到将数据从 iPhone 转移到 iPhone 的情况&#xff0c;尤其是当您获得新的 iPhone 15/14 时&#xff0c;您会很兴奋并希望将数据转移到它。 使用iCloud最终可以做到这一点&#xff0c;但它的缺点也不容忽视&#xff0c;阻碍了你选择它。例如&#xff0c;您需要…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...