Files
happypoker/.workbuddy/memory/2026-09-18.md
T

18 lines
2.1 KiB
Markdown
Raw Normal View History

2026-09-21 19:12:31 +08:00
# 2026-09-18
- 对 FastAPI 学生管理系统做了整体代码审查(main/settings/models/api/*、Docker 配置),发现的问题:Dockerfile `COPY ../` 非法导致构建失败、files.py 路径遍历漏洞、grade.py selectAll 引用不存在的 name 字段、student.py selectPage 的 majorName 判断逻辑错误、登录/改密接口回传明文密码、全项目无鉴权且密码明文存储、register 接口可能把不存在的字段传给 Student.create 等。仅审查未修改代码。
## 排障:数据库连接与时区问题(已解决)
- 现象:Navicat 连 3306 报「服务器返回无效的时区。需要设置 serverTimezone 属性」,且看不到项目数据库。
- 根因1:本机另有 Windows 版 mysqld 占用 3306;Docker 的 student-mysql 实际映射 **3308→3306**,数据在 3308 那个实例里。
- 根因2:MySQL system_time_zone=CST(歧义时区)导致客户端报时区错误。
- 根因3:运行中的 backend(来自 WeMeet 接收目录 `C:\Users\Windows\AppData\Roaming\Tencent\WeMeet\Global\Data\IM\file\2026-9\3758211051474203869\student_system\student_system\`)的 settings.py 被加了 `serverTimezone` 参数,aiomysql 不支持 → 容器崩溃重启循环。
- 修复:删除该参数并 docker cp 回容器+重启;MySQL 执行 `SET GLOBAL time_zone='+8:00'` 并在 compose 的 mysql command 中加 `--default-time-zone=+08:00` 持久化。已验证 backend 启动成功、接口 200、student_system 数据完整。
- 注意:D:\fastapi-app 只是项目副本,真正在跑的栈在上述 WeMeet 目录;两份 settings.py 内容可能不同步。
## Docker 资产盘点
共 4 组来源:① student_system 项目(3 容器,来自 WeMeet 接收目录);② Dify 1.17.1 全家桶(16 容器,D:\dify\docker,占用最大 ~13GB 镜像);③ Milvus 向量库 3 件套(D:\milvus-docker,已停);④ 散装容器 web(nginx,:8083)/redis-server/student-ms-mysql(mysql:8.0,:3307,已停,疑为更早的测试遗留)。孤儿镜像:stu_test:latest、<none>:d0d674272be3。镜像共 17.84GB + 构建缓存 710MB。未删除任何东西,仅盘点。