feat: 用户视角 — 按用户聚合 LD 板使用信息

- 新增 DomainDetail 数据模型存储逐域归属 (Owner/PID/T-Pod/Design)
- 解析详细版 test_server 输出 (Logic drawer X has N domains 格式)
- 新增 /users 页面 + /api/users API 按用户聚合 LD 板
- 修复邮件配置保存时中文逗号收件人分割问题
- 修复邮件发送时 ASCII 编码错误 (收件人含中文逗号)
This commit is contained in:
Your Name
2026-07-15 12:32:48 +08:00
parent d8eb6824b8
commit b5205d0543
5 changed files with 297 additions and 8 deletions
+13 -2
View File
@@ -124,10 +124,21 @@ def save_config(data: dict) -> int:
raise RuntimeError("EmailConfig 模型不可用")
to_addrs = data.get("to_addrs")
# 统一处理:支持中英文逗号、分号分隔,自动规范化为英文逗号分隔
if isinstance(to_addrs, list):
to_addrs_str = ",".join(str(x) for x in to_addrs if x)
# 每个元素内部也可能含中英文逗号,全部拆开
parts = []
for item in to_addrs:
s = str(item).replace("\uff0c", ",").replace("\u3001", ",").replace(";", ",")
for p in s.split(","):
p = p.strip()
if p:
parts.append(p)
to_addrs_str = ",".join(parts)
else:
to_addrs_str = str(to_addrs or "")
s = str(to_addrs or "").replace("\uff0c", ",").replace("\u3001", ",").replace(";", ",")
parts = [p.strip() for p in s.split(",") if p.strip()]
to_addrs_str = ",".join(parts)
save_fields = {
"enabled": str(data.get("enabled", False)).lower(),