8.2 KiB
geMoldInsight 项目状态(STATUS)
文档定位:唯一的「现在到哪了」。README / AGENTS / 各主文档只链接到这里,不复制状态内容。 维护规则:每完整完成一个需求,倒序在本文顶部加一条(日期 + 主题 + 关键事实);其余主文档(架构 / 规划 / 技术债 / 部署)维护各自的"当前有效说法",本文只记录"什么时候做到了哪一步"。维护规则出处见根目录 AGENTS.md。
2026-09-16(批次 2(任务一致性模型)完成:① D7 清偿——Redis 进程内存回退彻底删除(写 no-op / 读 None,查询路径自然落 PG),PG 为任务状态单一事实源;批量元数据入库:
processing_tasks新增batch_id列(迁移a3f8c2d91e47,升级后首次启动自动执行),GET /api/batch/{batch_id}改为 PG 聚合查询 +STPFile.user_id归属校验,删除 Redis batch key 与内存 dict 双通道;TaskQueryServicePG 视图与 batch 聚合响应补progress/current_step(Redis 不可用时前端仍能看到进度);② D8 清偿——型腔分模失败不再吞异常,任务标 failed 并带明确错误(已提交的几何/网格保留);③ D9 清偿——数据本体写方法只 flush,编排层分阶段原子收口(阶段 A 几何+网格、阶段 B 型腔+HTML+特征+指标+验证、完成时参数随状态一并提交),失败先 rollback 再置 failed;进度/状态更新保留即时 commit(长任务进度可见性);upload/batch/advanced 调用方补显式 commit,STPFile + ProcessingTask 原子落库消除孤儿文件记录。D11 未动(共享卷已兜正确性,留后续批次)。测试基线:105 passed, 1 skipped(新增 tests/test_batch_status_pg.py 4 项 + tests/test_redis_no_fallback.py 3 项)。下一步:批次 3(API 与代码结构:_safe_include失败显式化、advanced_router 拆分 + Pydantic 请求模型、配置治理,见 ROADMAP.md §3.1)。)
2026-09-16(批次 1(部署正确性)完成:① D6 清偿——分派入参
file_path→stp_file_id,处理方按 PG 元数据从 RustFS 下载源文件到任务专属临时目录(RustFS 异常时回退节点本地路径),compose 增uploads_data/html_data共享卷过渡兜底;② D12 清偿——新增AUTO_MIGRATE开关(默认 true 保持单机行为;多副本设 false 改部署流程单点迁移),迁移脚本与 alembic.ini 补进镜像。连带发现并修复:迁移目录alembic/与 alembic 包重名,应用内import alembic被遮蔽——启动期自动迁移自引入 alembic 起从未真正生效(异常被 init_database 吞掉只打日志),且镜像原本未打包迁移脚本;目录已改名migrations/(alembic.ini + 4 处文档引用同步);③ D13 主体——Dockerfile.moldinsight 改为 conda 运行时原生执行(不再跨镜像拷贝 site-packages),基础镜像 tag 锁定;pip 全量锁文件遗留,随下次镜像构建pip freeze生成;④ compose 关键项去弱默认:SECRET_KEY/ADMIN_PASSWORD改${VAR:?}强制显式配置(与 OPERATIONS「无默认」声明对齐),create_admin_user对空口令显式报错。测试基线:98 passed, 1 skipped(新增 tests/test_deployment_config.py;alembic 缺失环境 skip)。遗留:D13 pip 锁文件;既有问题待查——Dockerfile.celeryFROM gemold-moldinsight:latest,而 build.sh 只构建gemold-backendtag,干净机器上 build.sh 的 celery 步骤会失败。下一步:批次 2(任务一致性模型,见 ROADMAP.md §3.1)。)
2026-09-16(批次 0(安全与诚实)完成:①
/api/status/{task_id}补 JWT 鉴权 + 任务归属校验(无 token 401 / 他人或无主任务 403 / 不存在 404),归属校验收敛为TaskQueryService.ensure_task_access供 task_router 与 advanced_router 共用——技术债 D5 清偿;② 上传预检pythonocc_available从硬编码 true 改为惰性真实探测;③ bcrypt 口令治理:创建侧超 72 字节显式拒绝(此前静默截断改变有效密码),验证侧截断比较(兼容历史哈希 + 避免超长登录 500);④SECRET_KEY未配置 /RUSTFS_*缺失时惰性校验抛明确错误,代码侧不再有占位弱默认。顺带修复:完成态任务未持久化analysis_metrics时/api/status组装视图 500(值为 None 时.get(key, {})默认值不生效)。测试基线:pip 无 OCC 环境 96 passed(新增 tests/test_status_endpoint_auth.py 8 项回归)。status 端点鉴权为接口行为变化,已同步 API_CONTRACT.md §3.2;openapi.json 重导出仍按既有待办随下次接口变更一并执行。下一步:批次 1(D6 RustFS 主链路 + D12 alembic 移出 startup + D13 OCC 镜像,见 ROADMAP.md §3.1)。)
2026-09-15(后端设计审查完成 → 治理计划入文档:完成 moldinsight 后端设计审查(部署 / 任务一致性 / API / 代码结构),产出治理批次计划入 ROADMAP.md §3.1(批次 0–4:安全→部署→一致性→结构→架构);新识别技术债 D5–D14 入 TECH_DEBT.md §3——含确认安全缺口
/api/status/{task_id}无鉴权、主处理链路依赖节点本地文件路径(API 与 Celery worker 容器无共享卷)等。下一步:按批次 0 + 批次 1 的 D6(RustFS 主链路)启动实施。)
最后更新:2026-09-15(项目规范体系对齐 ipc-chat-cortex——参考
ipc-chat-cortex的 AGENTS.md + docs 规范重整本文档体系:① AGENTS.md 重写——硬约束速览(新增:接口变更三件套 Pydantic→openapi.json→gen:api、配置只走 .env 且关键项不兜底、单数据库刻意设计)+ 代码地图逐文件化 + 开发约定映射表(改什么→同步什么文档);② 新增 OPERATIONS.md(配置来源与优先级 / 本地启动 / Compose / 运维硬性要求)与 API_CONTRACT.md(端点总览 / 统一约定 / OpenAPI 类型生成流程);③ 本文件改为日志体,原静态内容分流到各归属文档(推荐部署模式→DEPLOYMENT §1,未完成项→ROADMAP/TECH_DEBT)。验证:openapi 导出命令实测可用(conda gemold 环境,unified app 76 paths);待办:checked-inopenapi.json(2026-07-27,70 paths)已落后当前代码,下次接口变更时按 API_CONTRACT.md §4 重导出并npm run gen:api。)
上一条:2026-09-02(模块化收口 + 文档主骨架建立(基线条目):代码侧完成 moldinsight 技术债治理——安全收口(debug/history 权限补齐、任务访问控制收紧)、静默失败修复(
detect-undercuts基于真实 shape 重建)、OCC 超时后 executor 重建防毒化全队列、后台任务统一分派、Redis 任务状态改 Hash 原子更新、完成态任务视图缓存、导出缓存与持久化收口、旧入口与死代码删除、Generator 公共接口提取 + 契约测试;详见 TECH_DEBT.md §2。结构侧完成src/entrypoints/三入口拆分(moldinsight / inventory / unified)、shared平台能力集中、前端独立frontend/工程。文档侧建立STATUS / ARCHITECTURE / ROADMAP / TECH_DEBT / DEPLOYMENT主骨架,README 收敛为唯一导航入口,历史材料迁入 archive/。测试基线:本地 pip 环境 47 passed, 1 skipped(pythonocc 缺失自动 skip);moldinsight conda + OCC 环境 88 passed。inventory 侧少量既有 deprecation warnings 不影响通过。)
此前:2026-09-01(文档体系专项整理启动:明确「README 只做导航、每类信息单一归属、历史材料进 archive」的文档治理原则;建立 deployment/ 主题目录与 archive/ 归档目录;部署文档收口为 DEPLOYMENT(入口)+ deployment/LINUX_SETUP(操作)+ deployment/DEPLOY_PORT / PORT_CONFIG(端口补充)三层。)