# 组织架构层级调试快速参考

## 问题描述
"三水区服务部门" 和 "佛山交通运输局" 应该显示相同的缩进（都是 Level 1），但前端显示不一致。

## 已添加的调试功能

### ✅ 前端调试日志 (已添加到 super_admin.html)

在浏览器控制台会看到：
- `=== 组织架构层级调试 ===` - API 返回的完整树形结构
- `扁平化节点数量` - 所有节点的 level 值
- `🔍 渲染节点` - 每个节点渲染时的详细信息
- `=== 渲染完成 ===` - 包含"交通运输"和"三水"的部门列表

## 快速测试步骤

### 1️⃣ 清除缓存（必须）
```
Ctrl + Shift + Delete → 清除"缓存的图片和文件"
```

### 2️⃣ 强制刷新
```
Ctrl + F5
```

### 3️⃣ 打开开发者工具
```
F12 → Console 标签
```

### 4️⃣ 查找关键信息
在控制台中搜索：
- `"佛山交通运输局"`
- `"三水区服务部门"`
- `"交通运输"` (查看所有包含此关键词的部门)

## 预期的正确输出

```
扁平化节点数量: XX
所有节点 level 值:
  [Level 0] 市级服务部门 (ID: xxx, Parent: root)
  [Level 1] 三水区服务部门 (ID: xxx, Parent: 市级服务部门的ID) ✅
  [Level 1] 佛山交通运输局 (ID: xxx, Parent: 市级服务部门的ID) ✅
```

```
🔍 渲染节点: "三水区服务部门"
   - level: 1
   - indent: 30px
🔍 渲染节点: "佛山交通运输局"
   - level: 1
   - indent: 30px
```

## 如果看到错误的输出

### 情况 1: Level 不一致
```
  [Level 1] 三水区服务部门
  [Level 2] 佛山交通运输局  ❌ 错误！
```
→ **问题**: API 返回的数据不正确
→ **解决**: 需要修复数据库

### 情况 2: Indent 不一致
```
🔍 渲染节点: "三水区服务部门"
   - indent: 30px
🔍 渲染节点: "佛山交通运输局"
   - indent: 60px  ❌ 错误！
```
→ **问题**: 前端渲染逻辑错误
→ **解决**: 检查 `renderOrgListNode` 函数

### 情况 3: 部门名称不匹配
```
部门名称中包含"交通运输"的节点:
  - 佛山市交通运输局 (Level: 1)  ← 注意是"佛山市"不是"佛山"
```
→ **问题**: 数据库中的部门名称与用户看到的不一致
→ **解决**: 确认数据库中实际的部门名称

## SQL 验证查询

如果需要直接查询数据库：

```sql
-- 查看相关部门的层级关系
SELECT
    sd.id,
    sd.name,
    sd.code,
    sd.parent_id,
    parent.name as parent_name,
    sd.unit_level
FROM service_departments sd
LEFT JOIN service_departments parent ON sd.parent_id = parent.id
WHERE sd.name LIKE '%交通运输%'
   OR sd.name LIKE '%三水%'
ORDER BY sd.name;
```

## 常见问题速查表

| 症状 | 可能原因 | 解决方案 |
|------|----------|----------|
| 清除缓存后问题仍存在 | API 数据错误 | 检查 Network 标签的响应 |
| 控制台无调试输出 | 代码未加载 | 强制刷新 (Ctrl+F5) |
| API 数据正确但显示错误 | 前端渲染问题 | 检查 level 参数传递 |
| 找不到"佛山交通运输局" | 部门名称不一致 | 查询数据库确认名称 |

## 关键文件位置

- 前端: `static/super_admin.html` (第 2602-2625 行)
- API: `lawrisk/api/v2.py` (第 545-556 行)
- 数据逻辑: `lawrisk/services/licensing_repo.py` (第 2190-2224 行)

## 下一步

1. 按照上述步骤测试
2. 记录控制台输出
3. 根据输出结果决定修复方案
4. 如需帮助，提供控制台输出截图
