diff --git a/.gitignore b/.gitignore index ab7a0082..378300aa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ !.vscode/launch.json !.vscode/tasks.json !.vscode/extensions.json +!.vscode/settings.json frontend-web/.vscode/ node_modules/ # Claude Code local-only settings (per-user permissions, not shared) diff --git a/.vscode/launch.json b/.vscode/launch.json index f2ad5591..daafb653 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,7 +2,7 @@ "version": "0.2.0", "configurations": [ { - "name": "DeerFlow Backend FastAPI (8001)", + "name": "DeerFlow: Backend FastAPI (8001)", "type": "debugpy", "request": "launch", "module": "uvicorn", @@ -19,46 +19,45 @@ "envFile": "${workspaceFolder}/offline-backend-20260512/.env", "env": { "PYTHONPATH": "${workspaceFolder}/offline-backend-20260512/backend;${workspaceFolder}/offline-backend-20260512/backend/.deer-flow/python-vendor", - "GATEWAY_CORS_ORIGINS": "http://localhost:5174,http://127.0.0.1:5174,http://localhost:8080,http://127.0.0.1:8080" + "GATEWAY_CORS_ORIGINS": "http://localhost:5174,http://127.0.0.1:5174,http://localhost:8080,http://127.0.0.1:8080", + "UV_LINK_MODE": "copy", + "WEKNORA_ADMIN_PASSWORD": "1qaz@WSX" }, "console": "integratedTerminal", "justMyCode": false, "subProcess": true }, { - "name": "DeerFlow Frontend Vite (5174)", - "type": "node", + "name": "DeerFlow: Frontend Vite (5174)", + "type": "node-terminal", "request": "launch", - "runtimeExecutable": "pnpm", - "runtimeArgs": [ - "exec", - "vite", - "--host", - "0.0.0.0", - "--port", - "5174" - ], + "command": "npm run dev -- --host 0.0.0.0 --port 5174", "cwd": "${workspaceFolder}/frontend-web", "env": { "VITE_BACKEND_BASE_URL": "http://127.0.0.1:8001", "VITE_LANGGRAPH_BASE_URL": "http://127.0.0.1:8001/api" }, - "console": "integratedTerminal", - "outputCapture": "std", "serverReadyAction": { "pattern": "Local:\\s+(https?://[^\\s]+)", "uriFormat": "%s", "action": "debugWithChrome", "webRoot": "${workspaceFolder}/frontend-web" } + }, + { + "name": "DeerFlow: Open Frontend in Chrome", + "type": "pwa-chrome", + "request": "launch", + "url": "http://127.0.0.1:5174/", + "webRoot": "${workspaceFolder}/frontend-web" } ], "compounds": [ { - "name": "DeerFlow Full Stack (Backend + Frontend)", + "name": "DeerFlow: Full Stack (Backend + Frontend)", "configurations": [ - "DeerFlow Backend FastAPI (8001)", - "DeerFlow Frontend Vite (5174)" + "DeerFlow: Backend FastAPI (8001)", + "DeerFlow: Frontend Vite (5174)" ], "stopAll": true } diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..3fd2eb59 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "python.defaultInterpreterPath": "${workspaceFolder}/offline-backend-20260512/backend/.venv/Scripts/python.exe", + "python.terminal.activateEnvironment": true, + "typescript.tsdk": "frontend-web/node_modules/typescript/lib", + "npm.packageManager": "npm" +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index c0f966c6..bb4aff2c 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,9 +2,9 @@ "version": "2.0.0", "tasks": [ { - "label": "DeerFlow:检查本地开发环境", + "label": "DeerFlow: Check Local Dev Environment", "type": "shell", - "command": "$backendPython = '${workspaceFolder}\\offline-backend-20260512\\backend\\.venv\\Scripts\\python.exe'; if (-not (Test-Path -LiteralPath $backendPython)) { throw '后端虚拟环境不存在,请先在 backend 目录执行 uv sync' }; & $backendPython -c \"import uvicorn; print('Backend Python OK')\"; pnpm --dir '${workspaceFolder}\\frontend-web' exec vite --version", + "command": "$backendPython = '${workspaceFolder}\\offline-backend-20260512\\backend\\.venv\\Scripts\\python.exe'; if (-not (Test-Path -LiteralPath $backendPython)) { throw 'Backend virtual environment is missing. Run uv sync in offline-backend-20260512/backend first.' }; & $backendPython -c \"import uvicorn; print('Backend Python OK')\"; npm --prefix '${workspaceFolder}\\frontend-web' exec vite -- --version", "options": { "shell": { "executable": "powershell.exe", @@ -19,10 +19,38 @@ "problemMatcher": [] }, { - "label": "DeerFlow:前端生产构建", + "label": "DeerFlow: Install Frontend Dependencies", "type": "process", - "command": "pnpm", + "command": "npm", "args": [ + "ci", + "--no-audit", + "--no-fund" + ], + "options": { + "cwd": "${workspaceFolder}/frontend-web" + }, + "problemMatcher": [] + }, + { + "label": "DeerFlow: Frontend Typecheck", + "type": "process", + "command": "npm", + "args": [ + "run", + "typecheck" + ], + "options": { + "cwd": "${workspaceFolder}/frontend-web" + }, + "problemMatcher": "$tsc" + }, + { + "label": "DeerFlow: Frontend Build", + "type": "process", + "command": "npm", + "args": [ + "run", "build" ], "options": { @@ -31,7 +59,26 @@ "problemMatcher": [] }, { - "label": "DeerFlow:WeKnora 专项测试", + "label": "DeerFlow: Backend Tests", + "type": "process", + "command": "${workspaceFolder}/offline-backend-20260512/backend/.venv/Scripts/python.exe", + "args": [ + "-m", + "pytest", + "tests/", + "-v" + ], + "options": { + "cwd": "${workspaceFolder}/offline-backend-20260512/backend", + "env": { + "PYTHONPATH": ".", + "WEKNORA_ADMIN_PASSWORD": "1qaz@WSX" + } + }, + "problemMatcher": [] + }, + { + "label": "DeerFlow: WeKnora Backend Tests", "type": "process", "command": "${workspaceFolder}/offline-backend-20260512/backend/.venv/Scripts/python.exe", "args": [ @@ -43,7 +90,8 @@ "options": { "cwd": "${workspaceFolder}/offline-backend-20260512/backend", "env": { - "PYTHONPATH": "." + "PYTHONPATH": ".", + "WEKNORA_ADMIN_PASSWORD": "1qaz@WSX" } }, "problemMatcher": []