Commit 8728514f authored by Data Governance Dev's avatar Data Governance Dev

refactor(web): 分析配置默认全部不勾选 + 默认全部折叠(含实时日志)

- loadSteps():去掉 form.steps 默认全选,只保留 hidden step 兜底过滤
  required 步骤仍在 startJob() 里自动补勾
- expandedGroups:初始化为空 Set,原 watcher 不再消费
  analysisTree.json 的 default_expand 自动展开
- logExpanded:ref(true) → ref(false),实时日志面板默认折叠

工具栏的「全选 / 清空 / 全部展开 / 全部折叠」按钮照常可用,
用户想一键操作仍然可以。

.gitignore:追加 Session.vim(Vim 会话临时文件)
parent 02de2a61
......@@ -38,3 +38,4 @@ work-logs/
数据治理报告_smart-build.docx
tags.lock
tags.temp
Session.vim
......@@ -2,6 +2,62 @@
> 任务做完一次记一次。最近的在最上面。
## 2026-08-12 · 实时日志默认折叠
### 需求
> "实时日志也默认折叠"
### 改动
[web/static/index.html](web/static/index.html) `logExpanded = ref(true)` → `ref(false)`,对应「进度」卡片顶部的「实时日志」面板默认折叠。点击「展开」按钮仍可临时打开。
---
## 2026-08-12 · 分析配置默认全部不勾选 + 默认全部折叠
### 需求
> "分析配置默认都不勾选,以及默认都折叠"
让用户主动决策「要跑哪些步骤」「要看哪些分组」,不再给一个「看起来全选 + 全展开」的默认值。
### 改动
#### 1. `loadSteps()` —— 默认全部不勾选
[web/static/index.html](web/static/index.html) 把:
```js
if (!form.steps.length) {
form.steps = r.steps.map(s => s.id); // 默认全选
} else { /* 兜底过滤 hidden */ }
```
改成只保留 hidden 过滤:
```js
// 默认全部不勾选(2026-08-12 起按用户要求):
// 用户主动选要跑哪些步骤;required 的步骤会在 startJob() 里兜底补上。
const visibleIds = new Set(r.steps.map(s => s.id));
form.steps = form.steps.filter(sid => visibleIds.has(sid));
```
`required` 步骤(如 `missing_comments`)会在 [startJob()](web/static/index.html) 启动时自动补上(原有兜底逻辑保留)。
#### 2. `expandedGroups` —— 默认全部折叠
[web/static/index.html](web/static/index.html) 原本的 watcher 会按 `analysisTree.json` 里 `default_expand: true` 的组自动展开。改为:
```js
const expandedGroups = ref(new Set()); // 初始空集 = 全折叠
watch(() => analysisTree.value.groups, (_groups) => {
/* 默认全部折叠 —— 不做任何自动展开 */
}, { immediate: true });
```
### 不动的地方
- 工具栏「全选 / 清空 / 全部展开 / 全部折叠」按钮照常工作 —— 用户想一键操作仍然可以。
- `required` 步骤的兜底补勾逻辑保留 —— 防止用户忘了勾某个关键检查就启动。
- `analysisTree.json` 里 `default_expand` 字段保留 —— 后端配置可读;只是前端不再消费它做自动展开。
### 用户自测
1. 浏览器刷新 → 「分析配置」里所有 checkbox 应都是空的。
2. 步骤分组默认应全部折叠(左侧箭头朝右)。
3. 启动分析 → 日志应只有 `form.steps` 里勾上的步骤 + `required` 兜底项。
---
## 2026-08-11 · 数据字典浏览器:右表格加字段 checkbox + 字段级 column_filter(不再按关键字推断)
### 需求
......
......@@ -727,17 +727,14 @@
const standards = ref([]);
// 分组树配置(来自 /api/analysis-tree → web/configs/analysis_tree.json)
const analysisTree = ref({ groups: [] });
// 用户展开/折叠状态。初始从 analysisTree 各组的 default_expand 派生;
// 一次写满,后续用户手动 toggle
// 用户展开/折叠状态。初始为空集(2026-08-12 起按用户要求:默认全部折叠),
// 完全由用户手动 toggle 决定。
const expandedGroups = ref(new Set());
// 监听 analysisTree 首次加载,初始化 expandedGroups
watch(() => analysisTree.value.groups, (groups) => {
if (!groups || !expandedGroups.value.size) {
const init = new Set();
for (const g of (groups || [])) if (g.default_expand) init.add(g.key);
if (init.size) expandedGroups.value = init;
}
// analysisTree 加载后不再自动展开任何组;保留该 watcher 占位
// 以备未来需要在此做初始化(例如按 group key 推断默认勾选)。
watch(() => analysisTree.value.groups, (_groups) => {
/* 默认全部折叠 —— 不做任何自动展开 */
}, { immediate: true });
// ── 数据字典(来自 connect/test 响应) ──
......@@ -761,7 +758,7 @@
error: null,
});
const logs = ref([]);
const logExpanded = ref(true);
const logExpanded = ref(false); // 2026-08-12 改:默认折叠实时日志
const showStandardsDialog = ref(false);
let logEventSource = null;
let pollTimer = null;
......@@ -1288,14 +1285,11 @@
try {
const r = await fetch('/api/steps').then(r => r.json());
stepsList.value = r.steps;
// 默认勾选全部(required 的也会被勾上 —— 后端会兜底)
if (!form.steps.length) {
form.steps = r.steps.map(s => s.id);
} else {
// 默认全部不勾选(2026-08-12 起按用户要求):
// 用户主动选要跑哪些步骤;required 的步骤会在 startJob() 里兜底补上。
// 兜底:清掉 form.steps 里残留的 hidden step(如浏览器未刷新 / Vue 状态缓存)
const visibleIds = new Set(r.steps.map(s => s.id));
form.steps = form.steps.filter(sid => visibleIds.has(sid));
}
} catch (e) { console.error(e); }
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment