fix: media_cards 标签同时读取 media_tags 表和 metadata.tags
This commit is contained in:
parent
afae286434
commit
9c602a0e8d
@ -36,6 +36,36 @@ try:
|
|||||||
# 查出入介质标签(从标签表中取出来),按 doc_id 编组
|
# 查出入介质标签(从标签表中取出来),按 doc_id 编组
|
||||||
doc_ids = [r["id"] for r in rows]
|
doc_ids = [r["id"] for r in rows]
|
||||||
doc_tags = {}
|
doc_tags = {}
|
||||||
|
if doc_ids:
|
||||||
|
# Source 1: media_tags table (from face processing etc)
|
||||||
|
try:
|
||||||
|
id_list = ','.join(["'" + str(x) + "'" for x in doc_ids])
|
||||||
|
mt_recs = await sor.sqlExe(
|
||||||
|
"SELECT mt.media_id, t.name, t.color FROM media_tags mt " +
|
||||||
|
"JOIN tags t ON mt.tag_id=t.id " +
|
||||||
|
"WHERE mt.media_type='document' AND mt.media_id IN (" + id_list + ")",
|
||||||
|
ns={})
|
||||||
|
for mt in mt_recs:
|
||||||
|
doc_tags.setdefault(mt.media_id, []).append({"name": mt.name, "color": mt.color or '#3b82f6'})
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
# Source 2: metadata.tags (from add_tag.dspy UI)
|
||||||
|
for r in rows:
|
||||||
|
try:
|
||||||
|
meta = json.loads(r.get("metadata", "{}"))
|
||||||
|
tags_list = meta.get("tags", [])
|
||||||
|
if isinstance(tags_list, list):
|
||||||
|
for t in tags_list:
|
||||||
|
if isinstance(t, str):
|
||||||
|
tag_entry = {"name": t, "color": "#3b82f6"}
|
||||||
|
else:
|
||||||
|
tag_entry = t
|
||||||
|
existing = doc_tags.get(r["id"], [])
|
||||||
|
if not any(e.get("name") == tag_entry.get("name") for e in existing):
|
||||||
|
existing.append(tag_entry)
|
||||||
|
doc_tags[r["id"]] = existing
|
||||||
|
except:
|
||||||
|
pass
|
||||||
for r in rows:
|
for r in rows:
|
||||||
r["media_tags"] = doc_tags.get(r["id"], [])
|
r["media_tags"] = doc_tags.get(r["id"], [])
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user