生产数据问题:16个任务中15个TRANSFER子节点全部挂在同一个root下, isMain() 将它们同时放入 allMains 和 childMap,导致每个子节点渲染2次。 修复: 1. allMains 改为仅收集 parent_task_id IS NULL 的根级主干 - TRANSFER 子节点仅通过 childMap → renderBranch 递归渲染 - 彻底杜绝同一任务在时间线 + 分支中双重出现 2. 统一焦点/全景为同一套垂直时间线 JSX 布局 - 删除旧焦点模式的独立 flex-row 排版 - visibleMains useMemo 负责数据过滤 (active() 过滤) 3. 清理死代码: getRootMainId() / rootMainMap / srm / flatMap
React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the Oxlint configuration
If you are developing a production application, we recommend enabling type-aware lint rules by installing oxlint-tsgolint and editing .oxlintrc.json:
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["react", "typescript", "oxc"],
"options": {
"typeAware": true
},
"rules": {
"react/rules-of-hooks": "error",
"react/only-export-components": ["warn", { "allowConstantExport": true }]
}
}
See the Oxlint rules documentation for the full list of rules and categories.