8dc443b2b7
Co-authored-by: multica-agent <github@multica.ai>
6.7 KiB
6.7 KiB
Work Log - 当前环境将线路管理菜单置顶(2026-06-08)
-
背景:
- 仓库代码已支持
admin.power_lines菜单,但默认排序仍落在其他后台一级菜单之后。 - 用户要求在当前环境中让“线路管理”展示在后台菜单最前面。
- 仓库代码已支持
-
本次处理:
- 当前环境数据库:
- 将
menus.code='admin.power_lines'的sort_order调整为0。
- 将
- 仓库代码:
api/app/services/seed_service.py- 将默认种子菜单中
admin.power_lines的sort_order同步改为0,避免后续补种回退。
- 将默认种子菜单中
MEMORY.md- 补充“线路管理默认置顶”的长期口径。
- 当前环境数据库:
-
验证:
- 复核后台菜单排序后,
线路管理已位于一级菜单首位。
- 复核后台菜单排序后,
-
风险与关注点:
- 已登录后台的浏览器会话需要刷新页面后才会看到最新菜单顺序。
Work Log - 放出后台剩余目录菜单并补齐保护(2026-06-08)
-
背景:
- 当前仓库默认菜单集合缺少
admin.basic_data、admin.system_monitor、admin.system3 个目录菜单。 admin.fl_analysis已有完整页面,但旧权限映射与菜单保护集合仍未完全覆盖。
- 当前仓库默认菜单集合缺少
-
本次处理:
api/app/services/seed_service.py- 补齐上述 3 个目录菜单,并将其加入
admin默认菜单绑定。
- 补齐上述 3 个目录菜单,并将其加入
api/app/services/admin_service.py- 将
admin.system、admin.system_monitor、admin.basic_data、admin.fl_analysis、admin.fault_recurrence加入现代菜单删除保护集合。
- 将
api/app/services/legacy_admin_rbac_service.py- 将
admin.system、admin.system_monitor、admin.basic_data、admin.fl_analysis加入 legacy 受保护菜单集合。
- 将
api/app/services/legacy_authz_service.py- 补齐
admin.fl_analysis的 legacy 权限映射。
- 补齐
-
验证:
git diff --check通过。npm --workspace web exec tsc --noEmit通过。npm --workspace web exec eslint src/app/admin/fl-analysis/page.tsx src/app/admin/fault-recurrence/page.tsx通过。- Python 变更文件 AST 语法解析通过。
-
风险与关注点:
admin.basic_data、admin.system_monitor、admin.system仍为无path的目录菜单,只承担菜单树占位与分组作用。
Work Log - 在共享后端镜像内置 Wine(2026-06-08)
-
背景:
- 新需求要求把 Wine 安装到
fquiz-celery-worker。 - 当前仓库中
celery-worker、api、celery-beat、flower复用同一个api/Dockerfile/${API_IMAGE},且后端已有/api/v1/wine/*直接探测与执行 Wine 的能力。
- 新需求要求把 Wine 安装到
-
本次处理:
api/Dockerfile- 在系统依赖安装阶段加入
wine,并用command -v wine做镜像构建期存在性校验。
- 在系统依赖安装阶段加入
MEMORY.md- 将 Wine 口径从“运行环境自行安装”更新为“共享后端镜像已内置 Wine”。
-
验证:
python3 -c "import yaml; ..."解析deploy/dev-deploy/compose.yml、deploy/pro-deploy/compose.yml、.github/workflows/main.yml通过。git diff --check通过。python3 -m py_compile api/app/services/wine_service.py api/app/services/fl_analysis_external.py api/app/tasks/fl_analysis_tasks.py api/app/core/config.py通过。- 当前执行环境无
docker命令,未能本地实际跑docker compose build/docker compose config。
-
风险与关注点:
- 由于部署链路复用同一个后端镜像,本次会同时影响
api/celery-worker/celery-beat/flower的基础镜像体积,而不只是celery-worker。
- 由于部署链路复用同一个后端镜像,本次会同时影响
Work Log - 修正 Wine 缺少 wine32 时的误报(2026-06-08)
-
背景:
- 当前环境里
wine --version会输出it looks like wine32 is missing,但后端/api/v1/wine/status之前只按返回码判定,可能把半可用环境误报成“可用”。 ATP的 Wine 引擎状态也复用同一 Wine 二进制,存在同类误报风险。
- 当前环境里
-
本次处理:
api/app/services/wine_probe.py- 新增共享 Wine 探测 helper,统一将
wine32 is missing识别为不可用状态。
- 新增共享 Wine 探测 helper,统一将
api/app/services/wine_service.py- Wine 状态接口与测试执行前校验改为复用共享探测 helper。
api/app/services/atp_model_service.py- ATP Wine 引擎状态与执行前校验同步复用共享探测 helper。
api/Dockerfile- 构建阶段显式开启
i386并安装wine32:i386,避免镜像只装到半套 Wine 运行时。
- 构建阶段显式开启
api/tests/test_wine_probe.py- 新增针对
wine32 is missing误报场景的最小单测。
- 新增针对
-
验证:
- 变更前基线:
python3 -m pytest api/tests/test_fl_analysis_external.py、python3 -m pytest api/tests/test_fl_analysis_service.py因本地运行环境缺少pytest/sqlalchemy无法执行。 - 变更后执行:
python3 -m py_compile api/app/services/wine_probe.py api/app/services/wine_service.py api/app/services/atp_model_service.py api/tests/test_wine_probe.py通过。./.venv/bin/python -m pytest api/tests/test_wine_probe.py通过(3 passed)。git diff --check通过。
- 变更前基线:
-
风险与关注点:
- 当前本地环境仍不具备完整后端依赖,无法直接回归所有 FastAPI/SQLAlchemy 相关测试;本次验证聚焦在 Wine 探测逻辑和语法层面。
Work Log - 修复 ATP 文本上传中文乱码(2026-06-08)
-
背景:
ATP文本转换与预览页面上传.atp/.txt文件时直接使用file.text(),浏览器会按 UTF-8 解码。- 现场 ATP 文件常见为 Windows 导出的 GBK/GB18030 文本,导致导入后编辑区和转换预览中的中文注释/名称乱码。
-
本次处理:
web/src/lib/text-file.ts- 新增前端文本解码工具,优先识别 BOM、兼容无 BOM 的 UTF-16,并在 UTF-8 严格解码失败时回退到
GB18030。
- 新增前端文本解码工具,优先识别 BOM、兼容无 BOM 的 UTF-16,并在 UTF-8 严格解码失败时回退到
web/src/app/admin/power-lines/atp-viewer/page.tsx- 上传 ATP 文本时改为基于
arrayBuffer + TextDecoder自动判定编码,不再固定走 UTF-8。
- 上传 ATP 文本时改为基于
web/src/lib/text-file.test.js- 补充最小测试,覆盖
UTF-8、GB18030(兼容 GBK)、无 BOMUTF-16LE三类输入。
- 补充最小测试,覆盖
-
验证:
- 基线:
npm_config_cache=/tmp/npm-cache npm --workspace web exec tsc --noEmit通过;npm_config_cache=/tmp/npm-cache npm --workspace web exec eslint src/app/admin/power-lines/atp-viewer/page.tsx通过。 - 修改后:
npm_config_cache=/tmp/npm-cache npm --workspace web exec tsc --noEmitnpm_config_cache=/tmp/npm-cache npm --workspace web exec eslint src/app/admin/power-lines/atp-viewer/page.tsx src/lib/text-file.ts src/lib/text-file.test.jsnode --test web/src/lib/text-file.test.js
- 基线:
-
风险与关注点:
- 已经以错误编码写入数据库的历史 ATP 文本不会被自动修复;本次修复只覆盖后续上传与预览入口。