# software-testing-todo-list
**Repository Path**: Mather/software-testing-todo-list
## Basic Information
- **Project Name**: software-testing-todo-list
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2026-08-26
- **Last Updated**: 2026-09-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 序事 Todo List
一个由 **Python Flask + Vue 3 + Vite** 构建的现代 Todo List 全栈项目。前后端分别放在 `backend/` 与 `frontend/` 文件夹中,支持任务的**增删改查**、完成状态切换、优先级、截止日期、搜索与筛选。
## 项目结构
```text
todo-list/
├── backend/
│ ├── src/todo_api/
│ │ ├── app.py # Flask 应用、路由与参数校验
│ │ └── storage.py # MySQL 存储与 JSON 文件降级存储
│ ├── tests/test_api.py # API CRUD 测试
│ ├── .python-version # uv 默认使用的 Python 版本(3.14)
│ ├── pyproject.toml # uv 项目、依赖与清华 PyPI 镜像配置
│ ├── .env.example
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── App.vue # 页面状态与交互
│ │ ├── api.js # API 请求封装
│ │ ├── components/ # Todo 表单与列表项
│ │ └── styles.css # 响应式视觉样式
│ ├── package.json
│ ├── .npmrc # npmmirror 镜像源及相关二进制依赖下载配置
│ ├── vite.config.js
│ └── Dockerfile
├── docs/
│ └── api.md # 完整 API 接口文档
├── docker-compose.yml
└── README.md
```
## 软件环境
- **Python 3.8~3.14**:后端支持该范围内的所有 Python 次要版本,推荐使用 **Python 3.14**
- 项目通过 `.python-version` 将本地默认版本设为 **Python 3.14**;`uv.lock` 包含适用于 Python 3.8~3.14 的依赖分支
- **uv 0.4+**:Python 环境与依赖管理
- **Node.js 20.19+ 或 22.12+、npm 10+**:Vue 3 前端构建
- 可选:**MySQL 5.7**。没有可用数据库时,后端会自动改用 JSON 文件。
## 本地开发
### 1. 启动后端
```bash
cd backend #切换到后端目录
cp .env.example .env # 仅第一次拉取项目需要
uv sync --extra dev # 创建虚拟环境
uv run todo-api #运行服务
```
后端默认监听 `http://127.0.0.1:5000`。首次启动会尝试连接 `.env` 中的 **MySQL 5.7**,并自动创建数据库 `todo_list` 与 `todos` 表。若连接超时、认证失败或数据库未启动,API 会自动使用 `backend/data/todos.json`,无需修改代码即可继续开发。
强制使用文件存储:
```env
TODO_STORAGE=file
```
### 2. 启动前端
另开一个终端:
```bash
cd frontend # 切换到前端目录
npm install # 安装依赖
cp .env.example .env # 复制环境变量
npm run dev # 运行本地服务器
```
浏览器访问 `http://127.0.0.1:5173`。Vite 开发服务器会将 `/api` 请求代理到 Flask 的 5000 端口。
## API 接口
后端共提供 **6 个 REST API 接口**,覆盖服务状态检测和工作清单的完整增删改查:
1. 服务状态检测。
2. 获取全部工作清单。
3. 获取单条工作清单。
4. 创建工作清单。
5. 修改工作清单。
6. 删除工作清单。
接口的请求路径、请求方法、请求头、参数表格以及成功和失败响应示例,请查看 [完整 API 接口文档](docs/api.md)。
## 测试与构建
```bash
cd backend
uv run pytest
cd ../frontend
npm run build
```
后端测试使用临时 JSON 文件,不依赖 MySQL;前端构建产物位于 `frontend/dist/`。
## Docker Compose 部署
项目提供包含 **MySQL 5.7、Waitress 托管的 Flask API、Nginx 前端** 的完整编排:
后端镜像默认使用推荐的 **Python 3.14**。如需单独构建其他受支持版本,可在 `backend/` 目录传入构建参数,例如 `docker build --build-arg PYTHON_VERSION=3.8 .`;`PYTHON_VERSION` 可选择 **3.8~3.14**。
```bash
docker compose up --build -d
```
访问 `http://127.0.0.1:8080`。查看日志:
```bash
docker compose logs -f backend
```
停止服务但保留数据库数据:
```bash
docker compose down
```
如需同时删除数据卷,请确认数据已备份后执行 `docker compose down -v`。
## 学习建议
1. 从 `backend/src/todo_api/app.py` 了解 Flask 路由、请求校验与 CORS。
2. 阅读 `backend/src/todo_api/storage.py`,对比抽象存储接口、MySQL 参数化 SQL 和原子 JSON 写入。
3. 从 `frontend/src/App.vue` 观察 Vue 3 Composition API、响应式状态和 CRUD 调用。
4. 修改 `frontend/src/components/TodoForm.vue`,练习表单校验与组件事件通信。
5. 用浏览器开发者工具查看 Network 面板,理解前端如何调用 REST API。
## 设计说明
- 无登录功能,适合个人本地使用或内网部署。
- API 默认开放 CORS;生产环境建议设置 `CORS_ORIGINS` 为实际前端域名。
- MySQL 连接信息只通过环境变量注入,不写入源码。
- 文件降级存储使用临时文件替换,避免进程中断时留下半写入 JSON。