feat: 数据源统一与前端预览修复
=== 后端核心 === - db_helper: 统一数据库访问抽象层 - system.py API: * 参数绑定修复: 使用 Body(embed=True) 接收 JSON * 添加请求日志记录 - sync.py: 仅导出 DB→JSON(备份) === 合规与流水线 === - compliance_checker: 标签检测优化(仅检查容器,避免正文误判) - 所有脚本(creator/collector/writer/outline/research等)统一使用数据库 === 前端改版 === - topics.html: * 创作/优化 API 路径修正 * 预览弹窗重设计:多平台并行加载、富文本显示、单复制按钮 * 状态中文映射(getStatusLabel) * 认证检查 - 所有 HTML 静态资源路径修复(移除 /static 前缀) === 数据一致性 === - 数据库状态统一为英文(pending/review/ready/published) - 前端显示中文化映射 已测试 A03 流水线完整通过。
This commit is contained in:
@@ -115,11 +115,16 @@ class ComplianceChecker:
|
||||
"suggestion": "移除违规内容或联系方式"
|
||||
})
|
||||
|
||||
# 标签检查(只匹配 #话题 格式,排除颜色码如 #1a1a1a)
|
||||
# 标签模式:#开头,后跟字母数字,长度2-10,不全是十六进制字符
|
||||
tags = re.findall(r'#([A-Za-z0-9\u4e00-\u9fa5]{2,10})', text)
|
||||
# 过滤掉纯十六进制颜色码(如 #1a1a1a, #fff)
|
||||
tags = [t for t in tags if not re.fullmatch(r'[0-9a-fA-F]{3,6}', t)]
|
||||
# 标签检查:仅检查专门的标签容器(避免误伤正文中的话题引用)
|
||||
tags_container_match = re.search(r'<div class="tags">([^<]+)</div>', text) or re.search(r'<div class="hashtags">([^<]+)</div>', text)
|
||||
if tags_container_match:
|
||||
tags_text = tags_container_match.group(1)
|
||||
tags = re.findall(r'#([A-Za-z0-9一-龥]{2,10})', tags_text)
|
||||
# 过滤掉纯十六进制颜色码(如 #1a1a1a, #fff)
|
||||
tags = [t for t in tags if not re.fullmatch(r'[0-9a-fA-F]{3,6}', t)]
|
||||
else:
|
||||
# 没有标签容器时,不检查标签
|
||||
tags = []
|
||||
allowed = rules.get("allowed_tags", [])
|
||||
if allowed:
|
||||
for tag in tags:
|
||||
|
||||
Reference in New Issue
Block a user