# TodoList 交付验收记录 验收日期:2026-07-16 ## 已完成 - FastAPI 已从 `todos.json` 迁移到 MySQL 8.4。 - MySQL 通过 Docker Compose 运行,数据保存在命名卷 `mysql_data`。 - Python 使用 `mysql-connector-python` 执行原始 SQL。 - 数据库连接配置从 `.env` 读取,代码中未写死密码。 - INSERT、UPDATE、DELETE 使用参数化 SQL,并包含提交、回滚和资源关闭逻辑。 - GET、POST、PATCH、DELETE 已通过本机接口测试。 - 不存在的 Todo ID 已验证返回 404。 - 响应模型已将 `completion` 统一输出为 JSON 布尔值。 - Nginx `/api` 反向代理已通过测试。 - Windows 局域网地址已成功打开前端。 - 页面新增、修改、完成状态、删除及刷新持久化链路已完成联调。 ## 当前运行链路 ```text Windows 192.168.10.55:8080 -> WSL Nginx :80 -> FastAPI 127.0.0.1:8000 -> MySQL 127.0.0.1:3306 ``` ## 未包含内容 - 真实 `.env` 与数据库密码 - Python `.venv` - MySQL Docker 数据卷 - 旧 `todos.json` 数据及备份 - 数据库连接测试脚本 ## 已知限制与后续建议 - 当前没有用户登录和权限控制。 - 当前没有自动化测试。 - 当前没有 Alembic 等数据库版本迁移工具。 - 当前每次请求建立一次数据库连接,后续可学习连接池。 - `task` 的数据库长度上限为 200;建议后续在 Pydantic 请求模型中增加长度和空字符串校验。 - CORS 当前为宽松配置;正式部署时应限制允许的来源。 - systemd 文件包含当前用户与项目绝对路径,换机器部署时必须调整。 - Windows 端口转发和防火墙规则属于当前机器的基础设施配置,未作为通用部署脚本放入本交付包。