Skip to content

Commit 56a63f7

Browse files
committed
feat: 路由和 Agent 工具改用后台初始化管理器
- app/router/note_router.py: 所有 note_service 引用替换为 init_manager.note_service,移除对 services.note_service 的直接导入 - app/agent/agent_tools.py: 所有 note_service 引用替换为 init_manager.note_service,移除模块级服务实例导入
1 parent 437088d commit 56a63f7

2 files changed

Lines changed: 19 additions & 19 deletions

File tree

backend/app/agent/agent_tools.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
from langchain_core.tools import tool
66

7+
from app.core.background_init import init_manager
78
from app.core.logger_handler import logger
89
from app.db.db_config import AsyncSessionLocal
910
from app.rag.rag_service import RagService
10-
from app.services.note_service import note_service
1111
from app.services.review_service import review_service
1212
from app.utils.auth_utils import decode_django_jwt
1313

@@ -77,7 +77,7 @@ async def search_notes_tool(query: str, top_k: int = 5) -> str:
7777
return "错误: 无法确定用户身份"
7878
async with AsyncSessionLocal() as db:
7979
try:
80-
results = await note_service.search_notes(db, user_id, query, top_k=top_k)
80+
results = await init_manager.note_service.search_notes(db, user_id, query, top_k=top_k)
8181
if not results:
8282
return "未找到相关笔记"
8383
lines = [f"找到 {len(results)} 篇相关笔记:\n"]
@@ -101,7 +101,7 @@ async def get_note_stats_tool() -> str:
101101
return "错误: 无法确定用户身份"
102102
async with AsyncSessionLocal() as db:
103103
try:
104-
stats = await note_service.get_category_stats(db, user_id)
104+
stats = await init_manager.note_service.get_category_stats(db, user_id)
105105
lines = ["📊 笔记统计\n"]
106106
lines.append(f"总笔记数: {stats['total']}\n")
107107
lines.append("各分类:")
@@ -167,7 +167,7 @@ async def create_note_tool(title: str, content: str = "") -> str:
167167
async with AsyncSessionLocal() as db:
168168
try:
169169
payload = NoteCreate(title=title, content=content)
170-
note = await note_service.create_note(db, user_id, payload)
170+
note = await init_manager.note_service.create_note(db, user_id, payload)
171171
return f"✅ 笔记创建成功!\n- 标题: {note.title}\n- ID: {note.id}\n- 标签和分类正在后台生成中..."
172172
except Exception as e:
173173
logger.error(f"创建笔记失败: {e}")
@@ -181,7 +181,7 @@ async def get_related_notes_tool(note_id: str, top_k: int = 3) -> str:
181181
return "错误: 无法确定用户身份"
182182
async with AsyncSessionLocal() as db:
183183
try:
184-
related = await note_service.get_related_notes(db, note_id, user_id, top_k=top_k)
184+
related = await init_manager.note_service.get_related_notes(db, note_id, user_id, top_k=top_k)
185185
if not related:
186186
return "未找到关联笔记或知识库文档"
187187
lines = [f"🔗 关联推荐(共 {len(related)} 项)\n"]

backend/app/router/note_router.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
NoteListResponse,
1717
NoteUpdate,
1818
)
19-
from app.services.note_service import note_service
19+
from app.core.background_init import init_manager
2020
from app.utils.auth_utils import get_current_user_id
2121

2222
note_router = APIRouter(prefix="/note", tags=["note"])
@@ -35,7 +35,7 @@ async def create_note(
3535
2. 立即返回笔记(tags/category 初始为空)
3636
3. 后台异步生成标签和回顾记录
3737
"""
38-
note = await note_service.create_note(db, user_id, payload)
38+
note = await init_manager.note_service.create_note(db, user_id, payload)
3939
return success_response(message="笔记创建成功", data=note)
4040

4141

@@ -51,7 +51,7 @@ async def list_notes(
5151
"""
5252
笔记列表:分页查询,支持按分类筛选。tag 筛选在内存层完成。
5353
"""
54-
notes, total = await note_service.list_notes(db, user_id, page, page_size, category, tag)
54+
notes, total = await init_manager.note_service.list_notes(db, user_id, page, page_size, category, tag)
5555
return success_response(data=NoteListResponse(notes=notes, total_count=total))
5656

5757

@@ -65,7 +65,7 @@ async def search_notes(
6565
全文语义搜索:走 ChromaDB notes_collection 向量检索,
6666
返回当前用户的语义相似笔记。
6767
"""
68-
notes = await note_service.search_notes(db, user_id, q)
68+
notes = await init_manager.note_service.search_notes(db, user_id, q)
6969
return success_response(data=NoteListResponse(notes=notes, total_count=len(notes)))
7070

7171

@@ -78,7 +78,7 @@ async def get_stats(
7878
获取用户笔记分类统计。
7979
返回各分类下的笔记数量及总数。
8080
"""
81-
stats = await note_service.get_category_stats(db, user_id)
81+
stats = await init_manager.note_service.get_category_stats(db, user_id)
8282
return success_response(data=stats)
8383

8484

@@ -96,7 +96,7 @@ async def autocomplete(
9696
AI 内联补全。基于光标前上下文,调用本地 Ollama qwen3:0.8b 快速返回续写文本。
9797
非流式,目标延迟 300-500ms。
9898
"""
99-
result = await note_service.autocomplete(payload.context)
99+
result = await init_manager.note_service.autocomplete(payload.context)
100100
return success_response(data=result)
101101

102102

@@ -119,7 +119,7 @@ async def assist_stream(
119119
- summarize:缩写
120120
"""
121121
return StreamingResponse(
122-
note_service.assist_stream(payload.content, payload.action),
122+
init_manager.note_service.assist_stream(payload.content, payload.action),
123123
media_type="text/event-stream",
124124
headers={
125125
"Cache-Control": "no-cache",
@@ -139,7 +139,7 @@ async def update_note(
139139
"""
140140
更新笔记:修改 title/content,content 变更时同步更新 ChromaDB 向量。
141141
"""
142-
note = await note_service.update_note(db, note_id, user_id, payload)
142+
note = await init_manager.note_service.update_note(db, note_id, user_id, payload)
143143
if not note:
144144
return success_response(message="笔记不存在")
145145
return success_response(message="笔记更新成功", data=note)
@@ -155,7 +155,7 @@ async def delete_note(
155155
"""
156156
删除笔记:联删 MySQL 记录、ChromaDB 向量、以及级联的 review_records。
157157
"""
158-
deleted = await note_service.delete_note(db, note_id, user_id)
158+
deleted = await init_manager.note_service.delete_note(db, note_id, user_id)
159159
if not deleted:
160160
return success_response(message="笔记不存在")
161161
return success_response(message="笔记删除成功")
@@ -170,7 +170,7 @@ async def get_note(
170170
"""
171171
获取笔记详情。
172172
"""
173-
note = await note_service.get_note(db, note_id, user_id)
173+
note = await init_manager.note_service.get_note(db, note_id, user_id)
174174
if not note:
175175
return success_response(message="笔记不存在")
176176
return success_response(data=note)
@@ -185,12 +185,12 @@ async def regenerate_tags(
185185
"""
186186
手动触发重新生成标签。
187187
"""
188-
note = await note_service.get_note(db, note_id, user_id)
188+
note = await init_manager.note_service.get_note(db, note_id, user_id)
189189
if not note:
190190
return success_response(message="笔记不存在")
191191

192192
import asyncio
193-
asyncio.create_task(note_service._auto_tag_and_review(note_id, user_id, note.content))
193+
asyncio.create_task(init_manager.note_service._auto_tag_and_review(note_id, user_id, note.content))
194194
return success_response(message="标签生成任务已提交")
195195

196196

@@ -204,7 +204,7 @@ async def get_related_notes(
204204
获取当前笔记的语义相似笔记和知识库文档(Top 3),
205205
标注来源:note(笔记库)或 knowledge_base(知识库)。
206206
"""
207-
related = await note_service.get_related_notes(db, note_id, user_id)
207+
related = await init_manager.note_service.get_related_notes(db, note_id, user_id)
208208
return success_response(data=related)
209209

210210

@@ -217,7 +217,7 @@ async def export_note(
217217
"""
218218
导出单篇笔记为 Markdown 格式纯文本。
219219
"""
220-
md = await note_service.export_note_markdown(db, note_id, user_id)
220+
md = await init_manager.note_service.export_note_markdown(db, note_id, user_id)
221221
if not md:
222222
return success_response(message="笔记不存在")
223223
return success_response(data={"markdown": md, "filename": f"{note_id}.md"})

0 commit comments

Comments
 (0)