# FMS 项目长期记忆 ## 设计令牌作用域(重要踩坑) - `--fms-*` 设计令牌必须在 `:root` 上定义(全局),不能只放在 `.theme-root`。 - 原因:`a-modal` 等 antdv 组件默认 teleport 到 ``,脱离 `.theme-root`,令牌在其内部全部失效,表现为 "var(--fms-border) is not defined" 报错 + 边框/颜色丢失。 - 现状:`fms-vue/src/styles/main.scss` 的 `:root` 已声明全部令牌;`.theme-root` 仅保留 color/background/overflow。 ## fms-file 附件组件关键约定 - 宫格/列表双模式由 `FileListPanel.vue` 的 `viewMode`(grid/list)控制。 - 上传:点击/拖拽/粘贴均汇入 `addFiles()`,允许重复上传同一文件(前端已移除去重,后端无同名约束)。 - 拖拽重复入栈防护在 `handleDragEnter/Leave` 的 `e.currentTarget !== e.target` 判断,非靠去重。 - 待上传文件虚拟 id 形如 `_pending_N`,`deleteSelected` 需降序删除防索引漂移。 ## 项目结构速查 - 后端 `fms-api/` Spring Boot 4.1 + Java 21 + SQL Server(Druid 多组织路由);端口 8088,context-path `/api`。 - 前端 `fms-vue/` Vue 3 + Vite + Pinia + antdv-next;dev `:5180`,代理 `/api`→`127.0.0.1:8088`。 - 通用数据接口:`/data/loaddata`、`/data/page`、`/data/saveobjt`、`/data/nextid`、`/auth/login`、`/file/upload`。勿新增业务端点。 - 开发纪律:改完不自行 build/起服务,除非用户要求;可用 `vite build`(或 `--mode development --emptyOutDir false` 规避 dist 清理权限问题)验证。