33 KiB
33 KiB
Work Log - 去除后台左侧菜单标题与底部角色状态文案(2026-04-26)
-
背景:
- 用户要求去掉左侧导航中的“系统菜单”文案,以及底部“当前角色:admin”“账号状态:active”两行。
-
本次改动(最小闭环):
web/src/app/admin/layout.tsx- 删除桌面端侧栏顶部文案“系统菜单”。
- 删除桌面端侧栏底部角色/状态信息块。
- 移动端左侧抽屉标题改为
null,不再显示“系统菜单”。 - 菜单开关按钮
aria-label同步调整为“打开菜单/展开菜单/收起菜单”。
-
验证:
rg -n "系统菜单|当前角色:|账号状态:" web/src/app/admin/layout.tsx -S-> 无匹配。npm --workspace web exec tsc --noEmit --pretty false-> 通过。
-
风险与影响:
- 仅影响后台左侧导航展示文案,不涉及菜单权限、路由与接口逻辑。
Work Log - 打包镜像并发布更新(2026-04-26)
-
背景:
- 用户要求执行“打包镜像并发布更新”。
-
本次执行:
docker compose builddocker compose up -d
-
验证:
docker compose ps:api/web/celery/db/redis/minio均为 Up,api/db/redishealthy。docker compose logs --tail=80 api:Uvicorn 启动完成,GET /health返回 200。docker compose logs --tail=80 web:Next.js Ready。curl -fsS http://127.0.0.1:8000/health:返回{"status":"ok","service":"fquiz-api","version":"0.1.0"}。curl -I -fsS http://127.0.0.1:3000/:返回HTTP/1.1 200 OK。
-
风险与影响:
- 本次为镜像重建与容器滚动重启,存在短时服务切换窗口;未执行数据库结构变更。
Work Log - 下线收件箱、提示词管理、代码评审与 Git管理(2026-04-26)
-
背景:
- 用户要求删除“收件箱、提示词管理、代码评审、Git管理”功能。
-
本次改动:
- 前端:
- 删除后台页面入口:
web/src/app/admin/inbox/page.tsxweb/src/app/admin/prompt/page.tsxweb/src/app/admin/system-message/page.tsxweb/src/app/admin/code-review/page.tsxweb/src/app/admin/git-desktop/page.tsx
web/src/app/admin/page.tsx删除对应后台首页卡片。web/src/app/admin/menus/page.tsx删除对应受保护菜单编码。web/src/types/auth.ts删除系统消息/提示词管理相关类型。
- 删除后台页面入口:
- 后端:
- 删除提示词管理 API、schema、service、model:
api/app/api/v1/system_messages.pyapi/app/schemas/system_message.pyapi/app/services/system_message_service.pyapi/app/models/system_message.py
api/app/api/router.py取消/api/v1/admin/system-messages*路由挂载。api/app/core/database.py、api/app/models/__init__.py取消system_message模型导入。api/app/services/seed_service.py删除默认权限、默认菜单和 admin 菜单绑定。api/app/services/admin_service.py、api/app/services/legacy_admin_rbac_service.py、api/app/services/legacy_authz_service.py将四个历史菜单编码纳入已下线过滤,避免存量菜单继续展示。api/app/services/topic_registry.py删除admin.system-messages订阅规则。
- 删除提示词管理 API、schema、service、model:
- 前端:
-
验证:
python3 -m py_compile api/app/api/router.py api/app/core/database.py api/app/models/__init__.py api/app/services/seed_service.py api/app/services/admin_service.py api/app/services/legacy_admin_rbac_service.py api/app/services/legacy_authz_service.py api/app/services/topic_registry.py-> 通过。npm --workspace web exec tsc --noEmit --pretty false-> 通过(清理.next后复跑)。npx eslint src/app/admin/page.tsx src/app/admin/menus/page.tsx src/types/auth.ts-> 通过。npm run build:web-> 通过,构建路由列表已不再包含/admin/inbox、/admin/prompt、/admin/system-message、/admin/code-review、/admin/git-desktop。git diff --check(命中文件)-> 通过。npx @ant-design/cli lint src/app/admin/page.tsx --format json:默认 npx cache 报ENOTEMPTY;改用/tmp独立 cache 后命令长时间无返回,已终止卡住进程,未得到有效 AntD CLI lint 结果。
-
风险与影响:
- 本次仅下线入口、路由、默认权限/菜单和提示词管理执行链路,不执行数据库 drop;存量
system_messages表如果已存在,会作为历史数据保留。 admin.system_message、admin.inbox、admin.code_review、admin.git_desktop被保留在 removed/disabled 集合中,仅用于过滤历史菜单。
- 本次仅下线入口、路由、默认权限/菜单和提示词管理执行链路,不执行数据库 drop;存量
Work Log - 文件管理页去掉左侧挂载点(2026-04-26)
-
背景:
- 用户要求:文件管理仅会有本地/SFTP/S3 三种后端,不会出现多挂载点场景,去掉左侧挂载点。
-
本次改动(最小闭环):
web/src/app/admin/files/page.tsx- 删除左侧“挂载点”卡片与挂载点列表按钮组。
- 删除前端挂载点切换状态与逻辑(
mountCode、handleSelectMount)。 - 文件列表查询改为仅按
path拉取,由后端返回current_mount作为当前挂载上下文。 - 保留文件操作接口参数
mount_code,统一使用当前响应中的current_mount.code。
-
验证:
npm --workspace web exec tsc --noEmit --pretty false-> 通过。
-
风险与影响:
- 前端不再支持多挂载点手动切换;若后续恢复多挂载点产品形态,需要补回挂载点切换入口。
- 后端接口与数据模型未改动,仍兼容多挂载点能力。
Work Log - 任务监控功能彻底收口(2026-04-26)
-
背景:
- 用户要求“补充任务监控功能”并“彻底收口”。
-
本次改动:
- 后端接口对齐 Celery 监控语义:
api/app/api/v1/task_monitor.py- 查询参数统一为
task_limit/history_limit。 - 权限校验统一为
celery.read/celery.manage。 - 移除旧的需求/待办聚合参数与依赖(
risk_limit/stale_hours)。
- 查询参数统一为
- 前端页面按 Celery schema 重写:
web/src/app/admin/task-monitor/page.tsx- 请求参数改为
task_limit/history_limit。 - 页面展示改为 Worker / Queue / Task 三块监控表格。
- 统计卡片改为在线 Worker、总并发、队列待处理、采样任务数。
- 状态分布改为任务状态桶(
STARTED/RECEIVED/SCHEDULED/...)。 - 页面权限改为
celery.read/celery.manage。
- 请求参数改为
- 后台首页入口口径同步:
web/src/app/admin/page.tsx- “任务监控”卡片文案改为 Celery 监控描述。
- 可见权限改为
celery.read/celery.manage。
- 后端接口对齐 Celery 监控语义:
-
验证:
npm --workspace web exec tsc --noEmit --pretty false-> 通过。python3 -m compileall api/app/api/v1/task_monitor.py api/app/services/task_monitor_service.py api/app/schemas/task_monitor.py-> 通过。
-
风险与影响:
- 任务监控口径从“需求/待办风险聚合”切换为“Celery 运行态监控”;若历史调用仍传
risk_limit/stale_hours,将不再生效。 - 页面和接口权限都已切至
celery.*,需要对应角色具备 Celery 权限才可访问。
- 任务监控口径从“需求/待办风险聚合”切换为“Celery 运行态监控”;若历史调用仍传
Work Log - 任务监控补齐 Celery 队列积压与历史状态(2026-04-26)
-
背景:
- 用户确认“任务监控要监控 Celery 队列和任务状态”,需要从方案落到可运行实现。
-
本次补齐:
- 后端
api/app/services/task_monitor_service.py:inspect.active/reserved/scheduled/active_queues/stats/ping聚合 Worker 与实时任务。- Broker 为 Redis 时按队列执行
LLEN,输出真实pending_count(不再用 reserved/scheduled 近似值)。 - Result backend 为 Redis 时扫描
celery-task-meta-*,补齐SUCCESS/FAILURE/RETRY/REVOKED历史状态。 - 任务明细按状态优先级 + 时间排序,支持
task_limit/history_limit。
- 接口与权限:
api/app/api/v1/task_monitor.py改为task_limit/history_limit参数。- 权限校验统一为
celery.read/celery.manage。
- 权限映射与菜单:
api/app/services/seed_service.py增加celery.read/celery.manage,并将admin.task_monitor权限改为celery.read。api/app/services/legacy_authz_service.py同步admin.task_monitor -> celery.*映射。
- 前端
web/src/app/admin/task-monitor/page.tsx:- 展示 Worker/Queue/Task 三块监控视图;
- 自动刷新、任务上限、历史扫描上限可配置;
- 状态 Tag 与失败摘要展示。
- 后端
-
验证:
python3 -m py_compile api/app/schemas/task_monitor.py api/app/services/task_monitor_service.py api/app/api/v1/task_monitor.py api/app/services/seed_service.py api/app/services/legacy_authz_service.py-> 通过。npm --workspace web exec tsc --noEmit --pretty false-> 通过。
-
风险与影响:
- Redis 扫描历史任务采用
SCAN+ 限流(history_limit * 20)策略;历史量极大时仅展示采样窗口内数据。 - 当前未新增 DB 持久化索引,历史任务名称在 result backend 未携带时会显示为
-。
- Redis 扫描历史任务采用
Work Log - 移除后台页面顶部标题与描述信息(2026-04-26)
-
背景:
- 用户要求去掉所有后台页面顶部的标题和描述信息(例如“线路管理”“按角色权限访问当前模块,完成查询、维护、协作与操作留痕”)。
-
本次改动(最小闭环):
web/src/app/admin/layout.tsx- 删除后台壳层内容区顶部公共信息块(Breadcrumb + 页面标题 + 页面描述)。
- 同步清理对应的 breadcrumb/title 计算逻辑与无用导入。
-
验证:
npm --workspace web exec tsc --noEmit --pretty false-> 通过。
-
风险与影响:
- 仅影响后台页面顶部展示,不涉及页面业务逻辑、接口、权限与路由行为。
Work Log - 下线 AI/编排/MCP/模型/API测试/知识集/图谱/需求/日程功能(2026-04-26)
-
背景:
- 用户要求删除“AI 聊天、编排管理、MCP管理、模型管理、API测试、知识集管理、流程图、思维导图、需求管理、日程管理”功能。
-
本次改动:
- 前端入口与页面删除:
- 删除
/admin/chat、/admin/agent、/admin/orchestration、/admin/mcp-server、/admin/models、/admin/api-tester、/admin/files、/admin/knowledge-set、/admin/mermaid-mgr、/admin/mindmap、/admin/requirements、/admin/schedule对应页面文件。 web/src/app/admin/page.tsx删除对应后台首页卡片,仅保留用户/角色/菜单/系统参数/任务监控/线路/雷电/系统日志/Wine 执行器。web/src/app/admin/menus/page.tsx删除已下线菜单的前端受保护编码。web/src/types/auth.ts删除 File/Model/TokenUsage/Chat/MindMap/Mermaid/Requirement/Todo 等已下线前端 DTO 类型。
- 删除
- 后端公开 API 下线:
api/app/api/router.py取消挂载 chat/admin-files/calendar/mermaid/mindmap/requirements/todos/project_requirement 等路由。- 删除对应 route/schema/service/model 文件:chat、file_storage、mermaid、mind_map;删除 public requirements/todos/calendar/project_requirement API。
api/app/api/v1/admin.py删除模型管理与模型路由管理端点。
- 默认权限/菜单收口:
api/app/services/seed_service.py删除chat.use、file.*、model.*、requirement.*、todo.*默认权限,删除对应默认菜单与 admin 绑定。api/app/services/admin_service.py、legacy_admin_rbac_service.py、legacy_authz_service.py将已下线菜单编码放入 removed/disabled 过滤集合,屏蔽存量菜单。api/app/services/topic_registry.py删除已下线模块订阅规则。
- 任务监控适配:
/admin/task-monitor保留,但口径固定为 Celery Worker/Queue/Task 监控,不再读取需求/待办数据。api/app/services/model_service.py保留内部模型注册/路由基础设施,但移除已下线/api/v1/admin/models*刷新提示,并将 topic 改为内部model.registry。
- 前端入口与页面删除:
-
验证:
python3 -m compileall api/app-> 通过。npm --workspace web exec tsc --noEmit --pretty false-> 通过(删除.next后复跑,避免旧路由类型缓存)。npx eslint src/app/admin/page.tsx src/app/admin/menus/page.tsx src/app/admin/task-monitor/page.tsx src/types/auth.ts-> 通过。npm run build:web-> 通过;构建路由列表仅保留/admin、/admin/users、/admin/roles、/admin/menus、/admin/system-params、/admin/task-monitor、/admin/power-lines、/admin/lightning-currents、/admin/lightning-distribution、/admin/syslog、/admin/wine-runner。git diff --check-> 通过。
-
风险与影响:
- 本次不执行数据库 drop;历史表和历史数据保留。
- 本机 Python 与
.venv均缺少 FastAPI,PYTHONPATH=api python -c "from app.api.router import api_router"无法作为导入验证;已用compileall覆盖语法级后端检查。 - 模型注册表/路由表仍保留给内部 LLM 网关与寿命倒计时等内部能力使用,但后台模型管理/API 测试页面和 admin API 已移除。
Work Log - 打包镜像并发布功能下线更新(2026-04-26)
-
背景:
- 用户要求“打包镜像并发布更新”。
-
本次执行:
docker compose buildfquiz-api、fquiz-web、fquiz-celery-worker、fquiz-celery-beat构建完成。- Web 镜像构建阶段
next build通过,路由列表仅保留当前有效后台模块。
docker compose up -d- 重建并启动
api/web/celery-worker/celery-beat。 db/redis/minio继续复用运行中容器。
- 重建并启动
-
验证:
docker compose ps:fquiz-apiUp 且 healthy。fquiz-webUp。fquiz-celery-workerUp。fquiz-celery-beatUp。fquiz-db、fquiz-redishealthy。
curl -fsS http://127.0.0.1:8000/health->{"status":"ok","service":"fquiz-api","version":"0.1.0"}。curl -I -fsS http://127.0.0.1:3000/->HTTP/1.1 200 OK。docker compose logs --tail=120 api:Uvicorn 启动完成,/health返回 200。docker compose logs --tail=100 web:Next.js Ready。docker compose logs --tail=80 celery-worker:worker 连接 Redis 并 ready。docker compose logs --tail=80 celery-beat:beat 启动完成。- OpenAPI 运行态检查:
/api/v1/chat、/api/v1/admin/files、/api/v1/calendar、/api/v1/mermaids、/api/v1/mindmap、/api/v1/requirements、/api/v1/todos、/api/project/requirement、/api/v1/admin/models、/api/v1/admin/model-routes均无匹配。
-
风险与影响:
- 发布过程重启了 API、Web、Celery Worker、Celery Beat,存在短时服务切换窗口。
- Celery Worker 日志仍有 root 用户运行的既有安全警告,服务状态正常但后续生产化可考虑设置非 root 用户。
Work Log - 还原文件管理模块(2026-04-26)
-
背景:
- 用户要求恢复系统文件管理模块,并延续此前“单挂载点交互”约束。
-
本次改动:
- 恢复文件管理核心代码:
api/app/api/v1/admin_files.pyapi/app/models/file_storage.pyapi/app/schemas/file_storage.pyapi/app/services/file_service.pyapi/app/services/storage_driver.pyweb/src/app/admin/files/page.tsx
- 恢复后端接线:
api/app/api/router.py重新挂载admin_files_router。api/app/models/__init__.py、api/app/core/database.py重新注册file_storage模型。
- 恢复权限/菜单/订阅口径:
api/app/services/seed_service.py恢复file.read/file.manage、admin.files菜单、默认存储后端与挂载 seed。api/app/services/legacy_authz_service.py恢复admin.files权限映射与 synthetic legacy menu。api/app/services/topic_registry.py恢复admin.filestopic 订阅规则。api/app/services/admin_service.py/legacy_admin_rbac_service.py恢复admin.files为受保护菜单,并从 removed/disabled 过滤中放开。web/src/app/admin/menus/page.tsx恢复admin.files为前端受保护菜单。web/src/app/admin/page.tsx恢复“文件管理”入口卡片。web/src/types/auth.ts恢复文件管理相关类型定义。
- 文件管理页面按单挂载点收口:
- 去掉左侧挂载点列表与挂载切换状态,仅保留当前挂载上下文下的目录浏览与文件操作。
- 恢复文件管理核心代码:
-
验证:
python3 -m compileall api/app/api/router.py api/app/api/v1/admin_files.py api/app/core/database.py api/app/models/__init__.py api/app/models/file_storage.py api/app/schemas/file_storage.py api/app/services/file_service.py api/app/services/storage_driver.py api/app/services/seed_service.py api/app/services/topic_registry.py api/app/services/legacy_authz_service.py api/app/services/legacy_admin_rbac_service.py api/app/services/admin_service.py-> 通过。npm --workspace web exec tsc --noEmit --pretty false-> 通过。npm --workspace web exec eslint src/app/admin/files/page.tsx src/app/admin/page.tsx src/app/admin/menus/page.tsx src/types/auth.ts --max-warnings=0-> 通过。
-
风险与影响:
- 现有仓库仍包含大量其他未提交改动;本次仅在文件管理恢复相关文件完成闭环,未触及其他下线模块恢复。
- 若现网数据库已经移除历史
menu/role_menu_rela数据,需要重启后触发 seed 才能自动补齐admin.files菜单和默认挂载。
Work Log - ATP 仿真模型管理一期落地(2026-04-26)
-
背景:
- 用户确认按“ATPDraw 产物版本管理 + ATP 引擎调用”方案实现。
-
本次改动:
- 后端新增 ATP 模块(模型/版本/运行):
- 新增数据模型:
api/app/models/atp_model.pyatp_model(模型台账)atp_model_version(版本与产物元数据)atp_simulation_run(仿真运行记录)
- 新增 schema:
api/app/schemas/atp_model.py
- 新增服务:
api/app/services/atp_model_service.py- 模型 CRUD、版本管理、激活版本、运行记录查询
- ATP 引擎状态检查与同步执行落库(支持
wine/native)
- 新增 API:
api/app/api/v1/atp_models.py- 路由前缀:
/api/v1/atp/models - 关键端点:
GET /engine/statusGET/POST/PATCH/DELETE /GET/POST/PATCH /{model_id}/versions*POST /{model_id}/versions/{version_id}/activateGET/POST /{model_id}/runs*
- 新增数据模型:
- 后端接线与权限菜单:
api/app/api/router.py挂载 ATP 路由。api/app/core/config.py新增 ATP 引擎配置:atp_engine_modeatp_engine_executableatp_storage_rootatp_engine_workdiratp_engine_default_timeout_secondsatp_engine_max_timeout_seconds
api/app/models/__init__.py、api/app/core/database.py注册 ATP 模型。api/app/services/seed_service.py新增权限:atp.read/atp.manage/atp.run- 新增默认菜单
admin.atp_models(/admin/power-lines/atp-viewer)
api/app/services/legacy_authz_service.py、legacy_admin_rbac_service.py、admin_service.py、topic_registry.py同步 ATP 菜单权限映射、受保护菜单与订阅主题(admin.atp-models)。
- 前端 ATP 页面升级:
web/src/app/admin/power-lines/atp-viewer/page.tsx- 从“纯查看器”升级为“模型台账 + 版本管理 + 仿真运行 + 文本转换预览”四块。
- 支持模型创建/编辑/删除、版本创建/激活、版本加载回编辑区、运行任务执行与日志查看。
- 保留 ATP 文本解析与 maxGraph 渲染能力。
web/src/types/auth.ts增加 ATP 模块类型定义。web/src/app/admin/page.tsxATP 卡片升级为“ATP模型管理”,权限切到atp.*。web/src/app/admin/power-lines/page.tsx线路页入口文案改为“ATP模型管理”,并按atp.*权限显示。web/src/app/admin/menus/page.tsx新增admin.atp_models受保护菜单码。
- 后端新增 ATP 模块(模型/版本/运行):
-
验证:
- 后端:
python3 -m compileall api/app-> 通过。
- 前端:
npm --workspace web exec tsc --noEmit --pretty false-> 通过。npm --workspace web exec eslint src/app/admin/power-lines/atp-viewer/page.tsx src/app/admin/page.tsx src/app/admin/menus/page.tsx src/types/auth.ts --max-warnings=0-> 通过。npm run build:web-> 通过;路由包含/admin/power-lines/atp-viewer。
- 后端:
-
风险与影响:
- ATP 运行为同步执行(请求内完成),长耗时任务会占用 API worker;后续可升级为 Celery 异步执行。
atp_engine_executable默认值仅为占位,实际运行需按部署环境配置可执行 ATP 引擎路径。
Work Log - 线路管理地图专题化为线路走向图(2026-04-26)
-
背景:
- 用户要求“线路管理页面的图用于展示线路在地图上的分布走向,不要通用地图功能”。
-
本次改动(A 方案,最小闭环):
web/src/components/power-line-cesium-map.tsx- Cesium Viewer 改为专题化初始化:显式
baseLayer: false,关闭skyBox/skyAtmosphere,弱化通用地图能力。 - 保留线路业务核心可视化:按杆塔
seq_no连线、杆塔点位、起点/终点标识。 - 新增线路走向专题控件:
按风险着色、显示塔号、居中重置。 - 新增走向统计信息:有效坐标数、缺失坐标数、断点段数、线路估算长度(Haversine)。
- 对缺失坐标导致的序号断档按分段折线绘制,避免误连成单条连续线路。
- Cesium Viewer 改为专题化初始化:显式
web/src/app/admin/power-lines/page.tsx- 视图切换文案由“地图”改为“走向图”。
- 当前视图状态文案同步改为“走向图”。
-
验证:
npm --workspace web exec tsc --noEmit --pretty false-> 通过。
-
风险与影响:
- 本次仅修改前端展示逻辑,不涉及后端接口、权限、路由与数据库结构。
- 因专题化禁用了默认底图,视觉上会更偏“线路走向专题视图”;若后续需要叠加真实底图,应单独评估并显式配置地图源。
Work Log - 打包镜像并发布线路走向图更新(2026-04-26)
-
背景:
- 用户要求执行“打包镜像并发布更新”。
-
本次执行:
docker compose builddocker compose up -d
-
验证:
docker compose ps:api/web/celery-worker/celery-beat/db/redis/minio均为Up,api/db/redishealthy。curl -fsS http://127.0.0.1:8000/health:返回{"status":"ok","service":"fquiz-api","version":"0.1.0"}。curl -I -fsS http://127.0.0.1:3000/:返回HTTP/1.1 200 OK。docker compose logs --tail=120 api:Uvicorn 启动完成,/health返回 200。docker compose logs --tail=100 web:Next.js Ready。docker compose logs --tail=80 celery-worker:worker 连接 Redis 并 ready(保留 root 运行警告)。docker compose logs --tail=80 celery-beat:beat 启动完成。
-
风险与影响:
- 本次为镜像重建与容器重启,存在短时服务切换窗口。
celery-worker仍以 root 运行,功能可用但生产化建议后续切换为非 root 用户。
Work Log - ATP 文本转 JSON 并用 maxGraph 查看(2026-04-26)
-
背景:
- 用户要求开发“ATP 转 JSON,然后给 maxGraph 渲染”的查看能力,重点是展示,不涉及仿真。
-
本次改动(前端最小闭环):
- 新增依赖:
web/package.json增加@maxgraph/core。
- 新增 ATP 解析能力:
web/src/lib/atp/types.ts:定义 ATP 图 JSON 结构(nodes/edges/stats/warnings)。web/src/lib/atp/parse-atp-text.ts:实现 ATP 文本解析器(支持常见R1 BUS_A BUS_B 10与BUS_A BUS_B R 10两类行格式)。web/src/lib/atp/sample.ts:提供可直接试跑的 ATP 示例文本。
- 新增 maxGraph 只读渲染组件:
web/src/components/atp-maxgraph-viewer.tsx:渲染节点/正交连线,支持适配视图与缩放,不提供编辑能力。
- 新增业务页面:
web/src/app/admin/power-lines/atp-viewer/page.tsx:提供上传 ATP 文本、转换 JSON、JSON 预览、maxGraph 图形查看、导出 JSON。
- 增加入口:
web/src/app/admin/power-lines/page.tsx:在“线路管理”卡片增加ATP查看器入口按钮。web/src/app/admin/page.tsx:后台首页新增ATP查看器卡片入口(沿用线路模块权限)。
- 新增依赖:
-
验证:
npm --workspace web exec tsc --noEmit --pretty false-> 通过。cd web && npx eslint src/components/atp-maxgraph-viewer.tsx src/lib/atp/parse-atp-text.ts src/lib/atp/types.ts src/lib/atp/sample.ts src/app/admin/power-lines/atp-viewer/page.tsx-> 通过。- 构建产物确认:
web/.next/server/app/admin/power-lines/atp-viewer/page.js与相关rsc/html已生成。
-
风险与影响:
- 解析器当前是“查看优先”的通用文本解析,不覆盖 ATP/ATPDraw 全量语法;复杂模型卡、控制卡可能被忽略并进入 warnings。
- 本次不涉及后端 API/数据库改动,不影响现有线路与雷电业务接口。
Work Log - 雷电模块补齐地面倾角计算链路(2026-04-26)
-
背景:
- 用户要求按“高程+坐标+3x3 邻域(Horn)”方案改造雷电分布统计中的地形倾角能力。
-
本次改动:
- 后端 schema 与响应扩展:
api/app/schemas/lightning.py- 新增
LightningTowerTerrainMetrics - 新增
LightningTowerTerrainComputeRequest/Response LightningTowerBufferStatsResponse增加terrain_metrics- 新增
dem_grid_m的 3x3 校验
- 新增
- 后端服务能力补齐:
api/app/services/lightning_service.py- 补齐 Horn 梯度、坡向、邻域坡度统计、分位数、线路方向纵横坡、质量评分、角差/方向导数等辅助函数。
- 新增
compute_tower_terrain_metrics(...),支持:- 基于 3x3 DEM 计算倾角/坡向/纵横坡/起伏量/暴露指数
- 可选按权限持久化到
power_line_tower.raw_extra_json.terrain_metrics
get_tower_buffer_stats(...)增加地形指标读取与风险修正(地形暴露指数参与 Ng 风险权重)
- 后端 API 新增:
api/app/api/v1/lightning.py- 新增
POST /api/v1/lightning-currents/stats/tower-terrain - 权限:读权限可计算,
persist=true需tower.manage或lightning.manage(或 admin)
- 新增
- 前端类型与展示:
web/src/types/auth.ts- 新增
LightningTowerTerrainMetrics - 新增
LightningTowerTerrainComputeRequest/Response - 扩展
LightningTowerBufferStatsResponse.terrain_metrics
- 新增
web/src/app/admin/lightning-currents/page.tsx- 杆塔缓冲区结果区新增地形字段展示:倾角、坡向、暴露指数、纵/横坡、质量等级/评分、DEM 分辨率与来源
- 后端 schema 与响应扩展:
-
验证:
python3 -m py_compile api/app/services/lightning_service.py api/app/api/v1/lightning.py api/app/schemas/lightning.py-> 通过。npm --workspace web exec tsc --noEmit --pretty false-> 通过。
-
风险与影响:
- 当前计算输入 DEM 由调用方提供(3x3 高程矩阵),尚未接入自动 DEM 切片检索;生产精度仍依赖上游 DEM 分辨率与采样质量。
- 杆塔缓冲区风险等级已引入地形暴露权重,可能导致部分杆塔风险分级相对旧口径发生变化。
Work Log - 飞书需求管理多维表格(下拉版)创建(2026-04-26)
-
背景:
- 用户要求“重新创建一个需求管理多维表格,能够用下拉的用下拉”。
-
本次执行:
- 通过
lark-cli base新建 Base:需求管理多维表格。 - 将默认表重命名为
需求管理。 - 字段下拉化(
type=select)并配置选项:优先级:P0/P1/P2/P3状态:待开始/进行中/评审中/已完成/阻塞需求类型:功能需求/缺陷修复/优化改进/技术债务需求来源:产品/运营/客户反馈/内部改进负责人:程凯/待分配风险等级:低/中/高/紧急进度:0%/25%/50%/75%/100%标签(多选):前端/后端/测试/接口/高优先
- 文本/日期字段:
需求ID、需求名称、开始日期、截止日期、备注(保留附件字段)。 - 写入 3 条示例需求记录,验证下拉与日期写入均正常。
- 通过
-
验证:
HOME=/tmp lark-cli base +field-list --as user --base-token Xpsgb3jEUaZHlksbnY1cEXMrnpd --table-id tbleJyrScpTGtRdR-> 下拉字段及选项已生效。HOME=/tmp lark-cli base +record-batch-create ...-> 返回ok: true,成功写入 3 条记录。- Base 地址:
https://my.feishu.cn/base/Xpsgb3jEUaZHlksbnY1cEXMrnpd
-
风险与影响:
- 飞书
field-update接口存在频控(800004135),本次采用“删除默认字段 + 重建字段”兜底策略完成配置。 - 保留了系统默认
附件字段;若需极简字段集,可后续删除该列。
- 飞书
Work Log - 需求多维表优先级改为英文四档(2026-04-26)
-
背景:
- 用户要求将“优先级”下拉改为
Urgent/High/Medium/Low。
- 用户要求将“优先级”下拉改为
-
本次改动:
- 多维表:
https://my.feishu.cn/base/Xpsgb3jEUaZHlksbnY1cEXMrnpd - 表:
需求管理(tbleJyrScpTGtRdR) - 字段
优先级(fld02jCtl7)下拉选项更新为:Urgent、High、Medium、Low。 - 将现有 3 条示例记录优先级同步为:
REQ-001->HighREQ-002->MediumREQ-003->Urgent
- 多维表:
-
验证:
HOME=/tmp lark-cli base +record-list --as user --base-token Xpsgb3jEUaZHlksbnY1cEXMrnpd --table-id tbleJyrScpTGtRdR --limit 20- 返回数据中三条记录优先级分别为
High/Medium/Urgent。
-
风险与影响:
- 飞书
record-batch-update存在短时限频(800004135),本次通过串行+间隔重试完成。
- 飞书
Work Log - 需求多维表新增 issue 关联表(2026-04-26)
-
背景:
- 用户要求将主表名改为“需求列表”,并在同一 Base 中新增“issue列表”,且 issue 可关联到需求。
-
本次改动:
- Base:
https://my.feishu.cn/base/Xpsgb3jEUaZHlksbnY1cEXMrnpd - 表改名:
需求管理->需求列表(tbleJyrScpTGtRdR)
- 新增表:
issue列表(tblkI3rjksLcef67)
issue列表字段:Issue标题(text)状态(select: Open/In Progress/Resolved/Closed)严重级别(select: P0/P1/P2/P3)指派给(select: 程凯/待分配)截止日期(datetime)备注(text)关联需求(link ->tbleJyrScpTGtRdR)
- 新增 2 条 issue 示例,并已关联到需求记录:
登录页按钮样式偏差->REQ-001导出接口返回字段缺失->REQ-002
- Base:
-
验证:
HOME=/tmp lark-cli base +table-list --as user --base-token Xpsgb3jEUaZHlksbnY1cEXMrnpd-> 表列表包含需求列表与issue列表。HOME=/tmp lark-cli base +record-list --as user --base-token Xpsgb3jEUaZHlksbnY1cEXMrnpd --table-id tblkI3rjksLcef67 --limit 20->关联需求字段返回目标需求record id。
-
风险与影响:
- 当前
link字段为单向关联(bidirectional=false);需求表未自动新增反向聚合列。如需在需求表中直接看 issue 明细,可后续补一个双向/反向展示字段。
- 当前
Work Log - 接入 WebSocket STOMP 机制(2026-04-26)
-
背景:
- 用户要求在当前
fquiz系统落地 Socket STOMP 机制。
- 用户要求在当前
-
本次改动(最小闭环):
- 后端新增 STOMP 协议支持:
- 新增
api/app/services/stomp_protocol.py,提供 STOMP 帧编解码、版本协商与 topic/destination 映射。 api/app/api/v1/ws.py新增GET /api/v1/ws/stompWebSocket 端点(ticket 鉴权保持不变),支持:CONNECT/STOMPSUBSCRIBE/UNSUBSCRIBEDISCONNECTSEND /app/ping(收据语义)
- 保留原有
/api/v1/wsJSON 协议端点,确保兼容。
- 新增
- 推送管理器双协议化:
api/app/services/ws_manager.py扩展为 JSON/STOMP 双协议连接管理与事件分发。- 新增 STOMP 订阅 id 到 topic 的映射处理,保证
MESSAGE.subscription可回填对应订阅。 - 现有
publish_topic/publish_to_user调用链不变。
- 前端切换到 STOMP:
web/src/components/ws-provider.tsx改为通过/api/v1/ws/stomp连接并发送 STOMP 帧。- 保持
useWS/useTopicSubscription现有 API 不变,业务页面无须改动。 - 新增
web/src/lib/stomp.ts作为前端 STOMP 帧编解码工具。
- 后端新增 STOMP 协议支持:
-
验证:
python3 -m py_compile api/app/services/stomp_protocol.py api/app/services/ws_manager.py api/app/api/v1/ws.py-> 通过。npm --workspace web exec tsc --noEmit --pretty false-> 通过。
-
风险与影响:
- 目前后端 STOMP 路径已支持核心命令(CONNECT/SUBSCRIBE/UNSUBSCRIBE/DISCONNECT);事务相关命令仅做兼容性接收,不做事务语义实现。
- 权限变化后,STOMP 连接上的非法 topic 会被后台移除但不再下发 JSON
unsubscribed提示;前端依赖重连后重新协商订阅。