Browse Source

增加分类层级

xueyiming 4 weeks ago
parent
commit
eaf37fda34
3 changed files with 35 additions and 3 deletions
  1. 27 0
      examples/demand/db_manager.py
  2. 1 1
      examples/demand/demand.md
  3. 7 2
      examples/demand/run.py

+ 27 - 0
examples/demand/db_manager.py

@@ -92,6 +92,33 @@ def query_video_ids_by_names(execution_id: int, names: Iterable[str]) -> list[st
 
     return list(video_ids)
 
+def query_category_level(execution_id: int, name: str) -> int | None:
+    """按 execution_id + 分类名称查询 topic_pattern_category.level。"""
+    clean_name = str(name).strip() if name is not None else ""
+    if not clean_name:
+        return None
+
+    manager = DatabaseManager()
+    session = manager.get_session()
+    try:
+        row = session.execute(
+            text(
+                """
+                SELECT level
+                FROM topic_pattern_category
+                WHERE execution_id = :execution_id AND name = :name
+                ORDER BY id DESC
+                LIMIT 1
+                """
+            ),
+            {"execution_id": execution_id, "name": clean_name},
+        ).first()
+        if not row:
+            return None
+        level = row[0]
+        return int(level) if level is not None else None
+    finally:
+        session.close()
 
 db2 = DatabaseManager2()
 

+ 1 - 1
examples/demand/demand.md

@@ -56,7 +56,7 @@ $system$
 
 - `element_names`: 元素名称列表
 - `reason`: 产生该需求的理由
-- `desc`: 需求的描述,只描述需求,不要揣测意图
+- `desc`: 需求的描述
 - `type`: 需求的来源类型(元素/分类/关系/pattern)
 
 ## 工具概览

+ 7 - 2
examples/demand/run.py

@@ -15,7 +15,7 @@ from sqlalchemy import desc, or_
 
 from examples.demand.changwen_prepare import changwen_prepare
 from examples.demand.config import LOG_LEVEL, ENABLED_TOOLS
-from examples.demand.db_manager import DatabaseManager, query_video_ids_by_names
+from examples.demand.db_manager import DatabaseManager, query_video_ids_by_names, query_category_level
 from examples.demand.models import TopicPatternExecution
 from examples.demand.piaoquan_prepare import prepare, piaoquan_prepare
 from examples.demand.demand_agent_context import TopicBuildAgentContext
@@ -292,9 +292,14 @@ def write_demand_items_to_mysql(execution_id: int, merge_level2: str) -> int:
         desc_value = di.get("desc")
         type = di.get("type")
         suggestion = desc_value
+        type_str = str(type).strip() if type is not None else ""
+        if type_str == "分类":
+            category_level = query_category_level(execution_id=execution_id, name=name)
+            if category_level:
+                type_str = type_str + f"L{category_level}"
         video_ids = _resolve_video_ids_by_name_and_execution_id(name=name, execution_id=execution_id)
         # 兼容旧字段:同时保留 ext_data(reason/desc)JSON,便于旧版消费逻辑迁移期继续使用。
-        ext_data = {"reason": reason, "desc": desc_value, "type": type, "video_ids": video_ids}
+        ext_data = {"reason": reason, "desc": desc_value, "type": type_str, "video_ids": video_ids}
 
         rows.append(
             {