2085 lines
134 KiB
JSON
2085 lines
134 KiB
JSON
|
|
{
|
|||
|
|
"extensions": [
|
|||
|
|
[
|
|||
|
|
".js",
|
|||
|
|
6314
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".ts",
|
|||
|
|
6118
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".py",
|
|||
|
|
3944
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".map",
|
|||
|
|
3663
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".mjs",
|
|||
|
|
2080
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"[no extension]",
|
|||
|
|
1926
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".css",
|
|||
|
|
1294
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".md",
|
|||
|
|
820
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".png",
|
|||
|
|
525
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".json",
|
|||
|
|
473
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".vue",
|
|||
|
|
354
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".txt",
|
|||
|
|
212
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".html",
|
|||
|
|
182
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".gz",
|
|||
|
|
132
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".sh",
|
|||
|
|
125
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".cjs",
|
|||
|
|
104
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".mts",
|
|||
|
|
71
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".webp",
|
|||
|
|
61
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".ps1",
|
|||
|
|
59
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".yml",
|
|||
|
|
56
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".zip",
|
|||
|
|
55
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".h",
|
|||
|
|
55
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".typed",
|
|||
|
|
53
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".pyi",
|
|||
|
|
49
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".cts",
|
|||
|
|
48
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".dll",
|
|||
|
|
44
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".log",
|
|||
|
|
42
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".pyx",
|
|||
|
|
38
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".mermaid",
|
|||
|
|
35
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".bin",
|
|||
|
|
34
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".snap",
|
|||
|
|
34
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".sql",
|
|||
|
|
31
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".pdf",
|
|||
|
|
30
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".exe",
|
|||
|
|
30
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".cc",
|
|||
|
|
29
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".pyd",
|
|||
|
|
27
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".b64",
|
|||
|
|
24
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".cmd",
|
|||
|
|
21
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".conf",
|
|||
|
|
20
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".bat",
|
|||
|
|
18
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".mp4",
|
|||
|
|
18
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".pxd",
|
|||
|
|
18
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".hh",
|
|||
|
|
18
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".mako",
|
|||
|
|
15
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".cpp",
|
|||
|
|
15
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".docx",
|
|||
|
|
14
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".hpp",
|
|||
|
|
13
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".dev",
|
|||
|
|
8
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".yaml",
|
|||
|
|
8
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".tab",
|
|||
|
|
8
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".tsbuildinfo",
|
|||
|
|
8
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".flow",
|
|||
|
|
7
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".svg",
|
|||
|
|
6
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part1",
|
|||
|
|
6
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part2",
|
|||
|
|
6
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part",
|
|||
|
|
6
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".cypher",
|
|||
|
|
6
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".cfg",
|
|||
|
|
6
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".lua",
|
|||
|
|
6
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".node",
|
|||
|
|
6
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".ini",
|
|||
|
|
5
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".xlsx",
|
|||
|
|
5
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".bsd",
|
|||
|
|
5
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".rst",
|
|||
|
|
5
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".xml",
|
|||
|
|
5
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".pxi",
|
|||
|
|
4
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".apache",
|
|||
|
|
4
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".c",
|
|||
|
|
4
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".gyp",
|
|||
|
|
4
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".gypi",
|
|||
|
|
4
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".tgz",
|
|||
|
|
3
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".example",
|
|||
|
|
3
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".db",
|
|||
|
|
3
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".mmd",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part10",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part11",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part12",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part3",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part4",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part5",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part6",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part7",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part8",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part9",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".part0",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".pem",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".asm",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".obj",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".zi",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".development",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".properties",
|
|||
|
|
2
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".s1",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".s2",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".0",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".sqlite-shm",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".sqlite-wal",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".chunk0",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".chunk1",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".chunk2",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".sha256",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".jpg",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".yml-archived-20260704",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".conf-archived-20260704",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".python",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".psf",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".fish",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".production",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".applescript",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".sln",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".vcxproj",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".filters",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".lock",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".markdown",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".1",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".iml",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".apache2",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".mit",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".mdown",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".snapshot",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".bnf",
|
|||
|
|
1
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".tar",
|
|||
|
|
1
|
|||
|
|
]
|
|||
|
|
],
|
|||
|
|
"relevant_duplicates": [
|
|||
|
|
[
|
|||
|
|
"agent-v1.4.zip",
|
|||
|
|
"archives\\agent-v1.4.zip"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"agent-v1.5.zip",
|
|||
|
|
"archives\\agent-v1.5.zip"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"agent-v1.6.zip",
|
|||
|
|
"archives\\agent-v1.6.zip"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"agent-v1.7.zip",
|
|||
|
|
"archives\\agent-v1.7.zip"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"chunk_0000.bin",
|
|||
|
|
"archives\\chunk_0000.bin"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"CONTRIBUTING.md",
|
|||
|
|
"docs\\CONTRIBUTING.md"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"diagnose-500.b64",
|
|||
|
|
"archives\\diagnose-500.b64"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"diagnose-500.sh",
|
|||
|
|
"scripts\\diagnose-500.sh",
|
|||
|
|
"scripts\\debug\\diagnose-500.sh"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"fix-prod.b64",
|
|||
|
|
"archives\\fix-prod.b64"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"fix-prod.sh",
|
|||
|
|
"scripts\\debug\\fix-prod.sh"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"fix_alembic.sql",
|
|||
|
|
"scripts\\debug\\fix_alembic.sql"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"frontend-h5-dist-part1.bin",
|
|||
|
|
"archives\\frontend-h5-dist-part1.bin"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"frontend-h5-dist-part2.bin",
|
|||
|
|
"archives\\frontend-h5-dist-part2.bin"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"frontend-h5-dist-part3.bin",
|
|||
|
|
"archives\\frontend-h5-dist-part3.bin"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"list_nas_full.ps1",
|
|||
|
|
"scripts\\debug\\list_nas_full.ps1"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"list_nas_volumes.ps1",
|
|||
|
|
"scripts\\debug\\list_nas_volumes.ps1"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"nas_probe_output.txt",
|
|||
|
|
"archives\\nas_probe_output.txt"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"nas_volumes.txt",
|
|||
|
|
"archives\\nas_volumes.txt"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"probe_nas.ps1",
|
|||
|
|
"scripts\\debug\\probe_nas.ps1"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"README.md",
|
|||
|
|
"docs\\README.md"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"set-real-ip-patch.md",
|
|||
|
|
"docs\\set-real-ip-patch.md",
|
|||
|
|
"docs\\04-运维文档\\部署运维\\set-real-ip-patch.md"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"split-b64.ps1",
|
|||
|
|
"scripts\\split-b64.ps1",
|
|||
|
|
"scripts\\debug\\split-b64.ps1"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"stage1-probe.sh",
|
|||
|
|
"scripts\\debug\\stage1-probe.sh"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"start-backend.sh",
|
|||
|
|
"scripts\\debug\\start-backend.sh"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"test_contact_verify.py",
|
|||
|
|
"scripts\\debug\\test_contact_verify.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"test_detect_api.py",
|
|||
|
|
"scripts\\debug\\test_detect_api.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"test_detect_internal.py",
|
|||
|
|
"scripts\\debug\\test_detect_internal.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"test_detect_v2.py",
|
|||
|
|
"scripts\\debug\\test_detect_v2.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"test_dify_approval.py",
|
|||
|
|
"scripts\\debug\\test_dify_approval.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"test_dify_composite.py",
|
|||
|
|
"scripts\\debug\\test_dify_composite.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"test_dify_models.py",
|
|||
|
|
"scripts\\debug\\test_dify_models.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"update_mfa.sh",
|
|||
|
|
"scripts\\debug\\update_mfa.sh"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"update_mfa.sql",
|
|||
|
|
"scripts\\debug\\update_mfa.sql"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"REQ编号",
|
|||
|
|
"代码核查范围:仅",
|
|||
|
|
"任务性质:技术可行性验证(未修改任何业务源码)",
|
|||
|
|
"优先级",
|
|||
|
|
"作者",
|
|||
|
|
"关联",
|
|||
|
|
"关联",
|
|||
|
|
"文档版本:v1.0",
|
|||
|
|
"日期",
|
|||
|
|
"版本",
|
|||
|
|
"状态",
|
|||
|
|
"验证人:高见远(架构师)",
|
|||
|
|
"验证日期:2026-08-08",
|
|||
|
|
".workbuddy\\tmp\\upload_log.txt",
|
|||
|
|
"backend\\alembic\\versions\\.gitkeep",
|
|||
|
|
"backend\\tests\\__init__.py",
|
|||
|
|
"frontend-agent\\_tmp_29372_1009f75a5f4920154481edd364faddc5",
|
|||
|
|
"frontend-agent\\_tmp_35932_8fbbec5837c1aa586dcffeb17312f17c",
|
|||
|
|
"frontend-agent\\_tmp_7080_b6f58a22b62945d3984da41b01a52ca4",
|
|||
|
|
"scripts\\_ssh_test.txt",
|
|||
|
|
"scripts\\_test_result2.txt",
|
|||
|
|
"src\\backend\\alembic\\versions\\.gitkeep",
|
|||
|
|
"src\\backend\\tests\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\aiosqlite\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\aiosqlite-0.22.1.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\alembic\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\alembic\\runtime\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\alembic\\testing\\plugin\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\alembic-1.18.5.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\annotated_doc\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\annotated_types\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\anyio\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\anyio\\streams\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\anyio\\_backends\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\anyio\\_core\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\apscheduler\\executors\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\apscheduler\\jobstores\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\apscheduler\\triggers\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\apscheduler-3.11.3.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\asyncpg\\protocol\\codecs\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\asyncpg-0.31.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\bcrypt\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\bcrypt-5.0.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\certifi\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\click\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\cryptography\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\cryptography-49.0.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\fastapi\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\fastapi\\dependencies\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\fastapi\\openapi\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\fastapi-0.139.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\greenlet\\platform\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\httpcore\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\httpcore\\_backends\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\httpx\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\httpx-0.28.1.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\idna\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\iniconfig\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\limits\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\mako\\ext\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\mako\\testing\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\markupsafe\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\neo4j\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\neo4j-6.2.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\openpyxl-3.1.5.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\packaging\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\passlib-1.7.4.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\PIL\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pillow-12.3.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_internal\\operations\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_internal\\operations\\build\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_internal\\resolution\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_internal\\resolution\\legacy\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_internal\\resolution\\resolvelib\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_internal\\utils\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\cachecontrol\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\certifi\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\dependency_groups\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\distro\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\idna\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\packaging\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\platformdirs\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\pyproject_hooks\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\resolvelib\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\rich\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\truststore\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\urllib3\\contrib\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\urllib3\\contrib\\_securetransport\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\urllib3\\packages\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip\\_vendor\\urllib3\\packages\\backports\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pip-25.3.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pluggy\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\psutil-7.2.2.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pydantic\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pydantic\\deprecated\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pydantic\\v1\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pydantic\\_internal\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pydantic-2.13.4.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pydantic_core\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pydantic_settings\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pydantic_settings-2.14.2.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pyotp\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pyotp-2.10.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pytest\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pytest-9.1.1.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pytest_asyncio\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pytest_asyncio-1.4.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\python_dotenv-1.2.2.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\python_jose-3.5.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\python_multipart\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\python_multipart-0.0.32.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\pyyaml-6.0.3.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\qrcode\\compat\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\qrcode\\image\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\qrcode\\image\\styles\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\qrcode\\tests\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\qrcode-8.2.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\redis\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\redis\\asyncio\\http\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\redis\\asyncio\\multidb\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\redis\\auth\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\redis\\http\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\redis\\multidb\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\redis-8.0.1.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\slowapi\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\slowapi-0.1.10.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\sqlalchemy\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\sqlalchemy-2.0.51.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\starlette\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\typing_inspection\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\typing_inspection\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Africa\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\America\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\America\\Argentina\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\America\\Indiana\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\America\\Kentucky\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\America\\North_Dakota\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Antarctica\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Arctic\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Asia\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Atlantic\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Australia\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Brazil\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Canada\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Chile\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Etc\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Europe\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Indian\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Mexico\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\Pacific\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzdata\\zoneinfo\\US\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\tzlocal\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\uvicorn\\lifespan\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\uvicorn\\loops\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\uvicorn\\middleware\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\uvicorn\\protocols\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\uvicorn\\protocols\\http\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\uvicorn\\protocols\\websockets\\__init__.py",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\uvicorn-0.50.0.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\wordfilter-0.2.7.dist-info\\REQUESTED",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\_pytest\\py.typed",
|
|||
|
|
"src\\backend\\venv\\Lib\\site-packages\\_pytest\\_py\\__init__.py",
|
|||
|
|
"src\\frontend-admin\\_tmp_10700_eea2ff15ef7e4a7a4dcc582455c464b3",
|
|||
|
|
"src\\frontend-admin\\_tmp_33128_dce88b57677b229a9f995be5048e5170",
|
|||
|
|
"src\\frontend-agent\\agent_dev.log",
|
|||
|
|
"src\\frontend-agent\\agent_dev_err.log",
|
|||
|
|
"src\\frontend-agent\\_tmp_29372_1009f75a5f4920154481edd364faddc5",
|
|||
|
|
"src\\frontend-agent\\_tmp_33248_43e1a5598013c000ff42881e2bfff7b1",
|
|||
|
|
"src\\frontend-agent\\_tmp_35932_8fbbec5837c1aa586dcffeb17312f17c",
|
|||
|
|
"src\\frontend-agent\\_tmp_42692_4702be5b34292aa674230cb235ba770d",
|
|||
|
|
"src\\frontend-agent\\_tmp_45344_9114b5d5194ff8a1c8628d2b71f1b1e1",
|
|||
|
|
"src\\frontend-agent\\_tmp_48280_f21ce13609a336ee57bd49393e164b45",
|
|||
|
|
"src\\frontend-agent\\_tmp_7080_b6f58a22b62945d3984da41b01a52ca4",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\html2canvas-pro\\dist\\types\\dom\\replaced-elements\\pseudo-elements.d.ts",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\unplugin-vue-components\\dist\\chunk-6F4PWJZI.js",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\action-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\action-bar-button\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\action-bar-icon\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\action-sheet\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\address-edit\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\address-list\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\area\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\back-top\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\badge\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\barrage\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\button\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\calendar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\card\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\cascader\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\cell\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\cell-group\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\checkbox\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\checkbox-group\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\circle\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\collapse-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\config-provider\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\contact-card\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\contact-edit\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\contact-list\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\count-down\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\coupon\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\coupon-cell\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\coupon-list\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\dialog\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\divider\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\dropdown-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\dropdown-menu\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\empty\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\field\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\floating-bubble\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\floating-panel\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\form\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\grid-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\highlight\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\image\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\image-preview\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\index-anchor\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\index-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\list\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\loading\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\nav-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\notice-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\notify\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\number-keyboard\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\overlay\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\pagination\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\password-input\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\picker\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\picker-group\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\popover\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\popup\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\progress\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\pull-refresh\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\radio\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\rate\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\rolling-text\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\search\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\share-sheet\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\sidebar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\sidebar-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\signature\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\skeleton\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\slider\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\step\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\stepper\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\steps\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\sticky\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\style\\mixins\\clearfix.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\style\\mixins\\ellipsis.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\style\\mixins\\hairline.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\submit-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\swipe\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\swipe-cell\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\switch\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\tabbar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\tabbar-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\tabs\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\tag\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\text-ellipsis\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\toast\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\tree-select\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\uploader\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\es\\watermark\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\lib\\style\\mixins\\clearfix.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\lib\\style\\mixins\\ellipsis.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\.ignored\\vant\\lib\\style\\mixins\\hairline.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\@standard-schema\\spec\\dist\\index.js",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\html2canvas-pro\\dist\\types\\dom\\replaced-elements\\pseudo-elements.d.ts",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\napi-build-utils\\index.md",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\node-addon-api\\nothing.c",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\nwsapi\\dist\\lint.log",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\tar-fs\\test\\fixtures\\d\\file1",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\tar-fs\\test\\fixtures\\d\\file2",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\tar-fs\\test\\fixtures\\d\\sub-dir\\file5",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\tar-fs\\test\\fixtures\\d\\sub-files\\file3",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\tar-fs\\test\\fixtures\\d\\sub-files\\file4",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\tar-fs\\test\\fixtures\\e\\file",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\tar-fs\\test\\fixtures\\e\\directory\\.ignore",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\unplugin-vue-components\\dist\\chunk-6F4PWJZI.js",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\action-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\action-bar-button\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\action-bar-icon\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\action-sheet\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\address-edit\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\address-list\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\area\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\back-top\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\badge\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\barrage\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\button\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\calendar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\card\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\cascader\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\cell\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\cell-group\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\checkbox\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\checkbox-group\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\circle\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\collapse-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\config-provider\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\contact-card\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\contact-edit\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\contact-list\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\count-down\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\coupon\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\coupon-cell\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\coupon-list\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\dialog\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\divider\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\dropdown-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\dropdown-menu\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\empty\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\field\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\floating-bubble\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\floating-panel\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\form\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\grid-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\highlight\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\image\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\image-preview\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\index-anchor\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\index-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\list\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\loading\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\nav-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\notice-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\notify\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\number-keyboard\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\overlay\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\pagination\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\password-input\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\picker\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\picker-group\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\popover\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\popup\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\progress\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\pull-refresh\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\radio\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\rate\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\rolling-text\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\search\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\share-sheet\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\sidebar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\sidebar-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\signature\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\skeleton\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\slider\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\step\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\stepper\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\steps\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\sticky\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\style\\mixins\\clearfix.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\style\\mixins\\ellipsis.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\style\\mixins\\hairline.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\submit-bar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\swipe\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\swipe-cell\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\switch\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\tabbar\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\tabbar-item\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\tabs\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\tag\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\text-ellipsis\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\toast\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\tree-select\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\uploader\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\es\\watermark\\types.mjs",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\lib\\style\\mixins\\clearfix.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\lib\\style\\mixins\\ellipsis.css",
|
|||
|
|
"src\\frontend-h5\\node_modules_old\\vant\\lib\\style\\mixins\\hairline.css"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".workbuddy\\outputs\\itdesk-after-portal-token.png",
|
|||
|
|
".workbuddy\\outputs\\itdesk-stable.png"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".workbuddy\\tmp\\dify_workflow_BACKUP.json",
|
|||
|
|
".workbuddy\\tmp\\dify_workflow_draft.json"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".workbuddy\\tmp\\deploy\\app\\services\\wingman_service.py",
|
|||
|
|
"src\\backend\\app\\services\\wingman_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
".workbuddy\\tmp\\orphan-backup\\InputBox.vue",
|
|||
|
|
"frontend-h5\\src\\components\\chat\\InputBox.vue"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\.dockerignore",
|
|||
|
|
"src\\backend\\.dockerignore"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic.ini",
|
|||
|
|
"docs\\08-历史归档\\deploy-nas-archived-20260704\\backend\\alembic.ini",
|
|||
|
|
"src\\backend\\alembic.ini"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\create_meetingroom_tables.py",
|
|||
|
|
"src\\backend\\create_meetingroom_tables.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\Dockerfile",
|
|||
|
|
"src\\backend\\Dockerfile"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\Dockerfile.dev",
|
|||
|
|
"src\\backend\\Dockerfile.dev"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\hello.py",
|
|||
|
|
"src\\backend\\hello.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\migrate_employee_v53.py",
|
|||
|
|
"src\\backend\\migrate_employee_v53.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\migrate_v53.py",
|
|||
|
|
"src\\backend\\migrate_v53.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\pytest.ini",
|
|||
|
|
"src\\backend\\pytest.ini"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\pytest_result.txt",
|
|||
|
|
"src\\backend\\pytest_result.txt"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\requirements.txt",
|
|||
|
|
"src\\backend\\requirements.txt"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\run_tests.bat",
|
|||
|
|
"src\\backend\\run_tests.bat"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\run_tests.ps1",
|
|||
|
|
"src\\backend\\run_tests.ps1"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\run_tests.py",
|
|||
|
|
"src\\backend\\run_tests.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\run_tests_v2.py",
|
|||
|
|
"src\\backend\\run_tests_v2.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\seed_conversations.py",
|
|||
|
|
"src\\backend\\seed_conversations.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\setup_test_env.py",
|
|||
|
|
"src\\backend\\setup_test_env.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\start_backend.py",
|
|||
|
|
"src\\backend\\start_backend.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\stderr.txt",
|
|||
|
|
"src\\backend\\stderr.txt"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\stdout.txt",
|
|||
|
|
"src\\backend\\stdout.txt"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\test_env.py",
|
|||
|
|
"src\\backend\\test_env.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\test_nontext_result.txt",
|
|||
|
|
"src\\backend\\test_nontext_result.txt"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\test_service_routes.py",
|
|||
|
|
"src\\backend\\test_service_routes.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\tmp_create_dev_agent.py",
|
|||
|
|
"src\\backend\\tmp_create_dev_agent.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\tmp_create_test_conversation.py",
|
|||
|
|
"src\\backend\\tmp_create_test_conversation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\tmp_seed_test_data.py",
|
|||
|
|
"src\\backend\\tmp_seed_test_data.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\__init__.py",
|
|||
|
|
"src\\backend\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\env.py",
|
|||
|
|
"docs\\08-历史归档\\deploy-nas-archived-20260704\\backend\\alembic\\env.py",
|
|||
|
|
"src\\backend\\alembic\\env.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\script.py.mako",
|
|||
|
|
"docs\\08-历史归档\\deploy-nas-archived-20260704\\backend\\alembic\\script.py.mako",
|
|||
|
|
"src\\backend\\alembic\\script.py.mako"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\002_add_media_fields.py",
|
|||
|
|
"docs\\08-历史归档\\deploy-nas-archived-20260704\\backend\\alembic\\versions\\002_add_media_fields.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\002_add_media_fields.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\003_add_suggestion_action.py",
|
|||
|
|
"docs\\08-历史归档\\deploy-nas-archived-20260704\\backend\\alembic\\versions\\003_add_suggestion_action.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\003_add_suggestion_action.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\004_add_participants.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\004_add_participants.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\005_add_reply_to_id.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\005_add_reply_to_id.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\006_admin_ext.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\006_admin_ext.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\007_role_system.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\007_role_system.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\008_add_agent_password.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\008_add_agent_password.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\009_add_message_status.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\009_add_message_status.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\010_add_agent_otp.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\010_add_agent_otp.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\011_add_conversation_impact_fields.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\011_add_conversation_impact_fields.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\012_sync_remaining_fields.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\012_sync_remaining_fields.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\021_rbac.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\021_rbac.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\022_qrcode_login.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\022_qrcode_login.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\023_mfa_fields.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\023_mfa_fields.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\025_messages_id_uuid.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\025_messages_id_uuid.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\026_drop_agent_otp_legacy.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\026_drop_agent_otp_legacy.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\027_audit_logs.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\027_audit_logs.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\028_merge_heads_022_023_027.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\028_merge_heads_022_023_027.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\041_message_server_timestamp.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\041_message_server_timestamp.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\042_add_employee_avatar_updated_at.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\042_add_employee_avatar_updated_at.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\043_knowledge_iteration.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\043_knowledge_iteration.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\044_automation.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\044_automation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\045_add_graph_confidence_audience.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\045_add_graph_confidence_audience.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\046_add_login_logs.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\046_add_login_logs.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\047_business_contacts.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\047_business_contacts.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\048_add_information_items.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\048_add_information_items.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\049_add_p2_p3_tables.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\049_add_p2_p3_tables.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\050_add_meetingroom_tables.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\050_add_meetingroom_tables.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\051_add_meetingroom_repair_guide.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\051_add_meetingroom_repair_guide.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\051_triage_exclusion_tables.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\051_triage_exclusion_tables.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\052_diagnostic_queue_quiz_closing.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\052_diagnostic_queue_quiz_closing.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\alembic\\versions\\6d5520491644_initial_all_tables.py",
|
|||
|
|
"docs\\08-历史归档\\deploy-nas-archived-20260704\\backend\\alembic\\versions\\6d5520491644_initial_all_tables.py",
|
|||
|
|
"src\\backend\\alembic\\versions\\6d5520491644_initial_all_tables.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\constants.py",
|
|||
|
|
"deploy-temp\\p2p3\\app\\constants.py",
|
|||
|
|
"src\\backend\\app\\constants\\automation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\database.py",
|
|||
|
|
"src\\backend\\app\\database.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\__init__.py",
|
|||
|
|
"src\\backend\\app\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\admin_roles.py",
|
|||
|
|
"src\\backend\\app\\api\\admin_roles.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\admin_users.py",
|
|||
|
|
"src\\backend\\app\\api\\admin_users.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\agent_notes.py",
|
|||
|
|
"src\\backend\\app\\api\\agent_notes.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\approval_queue.py",
|
|||
|
|
"src\\backend\\app\\api\\approval_queue.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\audit_logs.py",
|
|||
|
|
"src\\backend\\app\\api\\audit_logs.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\auth.py",
|
|||
|
|
"src\\backend\\app\\api\\auth.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\automation.py",
|
|||
|
|
"deploy-temp\\p2p3\\app\\api\\automation.py",
|
|||
|
|
"src\\backend\\app\\api\\automation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\avatar.py",
|
|||
|
|
"src\\backend\\app\\api\\avatar.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\conversation_annotation.py",
|
|||
|
|
"src\\backend\\app\\api\\conversation_annotation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\dev_auth.py",
|
|||
|
|
"src\\backend\\app\\api\\dev_auth.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\employees.py",
|
|||
|
|
"src\\backend\\app\\api\\employees.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\employees_simple.py",
|
|||
|
|
"src\\backend\\app\\api\\employees_simple.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\evaluations.py",
|
|||
|
|
"src\\backend\\app\\api\\evaluations.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\exclusion_rules.py",
|
|||
|
|
"src\\backend\\app\\api\\exclusion_rules.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\knowledge_base.py",
|
|||
|
|
"src\\backend\\app\\api\\knowledge_base.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\knowledge_iteration.py",
|
|||
|
|
"deploy-staging-ki\\app\\api\\knowledge_iteration.py",
|
|||
|
|
"src\\backend\\app\\api\\knowledge_iteration.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\meetingroom.py",
|
|||
|
|
"src\\backend\\app\\api\\meetingroom.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\queue.py",
|
|||
|
|
"src\\backend\\app\\api\\queue.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\quick_replies.py",
|
|||
|
|
"src\\backend\\app\\api\\quick_replies.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\quiz.py",
|
|||
|
|
"src\\backend\\app\\api\\quiz.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\quiz_admin.py",
|
|||
|
|
"src\\backend\\app\\api\\quiz_admin.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\ragflow_ingestion.py",
|
|||
|
|
"src\\backend\\app\\api\\ragflow_ingestion.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\routing.py",
|
|||
|
|
"src\\backend\\app\\api\\routing.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\runtime_logs.py",
|
|||
|
|
"src\\backend\\app\\api\\runtime_logs.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\service_routes.py",
|
|||
|
|
"src\\backend\\app\\api\\service_routes.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\statistics.py",
|
|||
|
|
"src\\backend\\app\\api\\statistics.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\system.py",
|
|||
|
|
"src\\backend\\app\\api\\system.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\todo_items.py",
|
|||
|
|
"src\\backend\\app\\api\\todo_items.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\triage.py",
|
|||
|
|
"src\\backend\\app\\api\\triage.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\upload.py",
|
|||
|
|
"src\\backend\\app\\api\\upload.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\vision.py",
|
|||
|
|
"src\\backend\\app\\api\\vision.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\wecom_jsapi.py",
|
|||
|
|
"src\\backend\\app\\api\\wecom_jsapi.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\__init__.py",
|
|||
|
|
"src\\backend\\app\\api\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\admin\\security_comparison.py",
|
|||
|
|
"src\\backend\\app\\api\\admin\\security_comparison.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\admin\\terminal_binding.py",
|
|||
|
|
"src\\backend\\app\\api\\admin\\terminal_binding.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\api\\admin\\__init__.py",
|
|||
|
|
"src\\backend\\app\\api\\admin\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\core\\__init__.py",
|
|||
|
|
"src\\backend\\app\\core\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\core\\clients\\base.py",
|
|||
|
|
"src\\backend\\app\\core\\clients\\base.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\core\\clients\\dify.py",
|
|||
|
|
"src\\backend\\app\\core\\clients\\dify.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\core\\clients\\ehr.py",
|
|||
|
|
"src\\backend\\app\\core\\clients\\ehr.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\core\\clients\\huorong.py",
|
|||
|
|
"src\\backend\\app\\core\\clients\\huorong.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\core\\clients\\lianruan.py",
|
|||
|
|
"src\\backend\\app\\core\\clients\\lianruan.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\core\\clients\\ragflow.py",
|
|||
|
|
"src\\backend\\app\\core\\clients\\ragflow.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\core\\clients\\__init__.py",
|
|||
|
|
"src\\backend\\app\\core\\clients\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\data\\seed_rbac.py",
|
|||
|
|
"src\\backend\\app\\data\\seed_rbac.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\dependencies\\automation.py",
|
|||
|
|
"src\\backend\\app\\dependencies\\automation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\base.py",
|
|||
|
|
"src\\backend\\app\\integrations\\base.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\dify.py",
|
|||
|
|
"src\\backend\\app\\integrations\\dify.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\ehr.py",
|
|||
|
|
"src\\backend\\app\\integrations\\ehr.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\factory.py",
|
|||
|
|
"src\\backend\\app\\integrations\\factory.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\__init__.py",
|
|||
|
|
"src\\backend\\app\\integrations\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\ehr\\__init__.py",
|
|||
|
|
"src\\backend\\app\\integrations\\ehr\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\huorong\\client.py",
|
|||
|
|
"src\\backend\\app\\integrations\\huorong\\client.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\huorong\\config.py",
|
|||
|
|
"src\\backend\\app\\integrations\\huorong\\config.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\huorong\\exceptions.py",
|
|||
|
|
"src\\backend\\app\\integrations\\huorong\\exceptions.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\huorong\\models.py",
|
|||
|
|
"src\\backend\\app\\integrations\\huorong\\models.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\huorong\\__init__.py",
|
|||
|
|
"src\\backend\\app\\integrations\\huorong\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\lianruan\\exceptions.py",
|
|||
|
|
"src\\backend\\app\\integrations\\lianruan\\exceptions.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\lianruan\\models.py",
|
|||
|
|
"src\\backend\\app\\integrations\\lianruan\\models.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\integrations\\lianruan\\__init__.py",
|
|||
|
|
"src\\backend\\app\\integrations\\lianruan\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\middleware\\admin_ip_whitelist.py",
|
|||
|
|
"src\\backend\\app\\middleware\\admin_ip_whitelist.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\agent.py",
|
|||
|
|
"src\\backend\\app\\models\\agent.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\agent_note.py",
|
|||
|
|
"src\\backend\\app\\models\\agent_note.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\approval_link.py",
|
|||
|
|
"src\\backend\\app\\models\\approval_link.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\audit_log.py",
|
|||
|
|
"src\\backend\\app\\models\\audit_log.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\automation.py",
|
|||
|
|
"deploy-temp\\p2p3\\app\\models\\automation.py",
|
|||
|
|
"src\\backend\\app\\models\\automation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\business_contact.py",
|
|||
|
|
"src\\backend\\app\\models\\business_contact.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\config_change_log.py",
|
|||
|
|
"src\\backend\\app\\models\\config_change_log.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\conversation_annotation.py",
|
|||
|
|
"src\\backend\\app\\models\\conversation_annotation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\conversation_evaluation.py",
|
|||
|
|
"src\\backend\\app\\models\\conversation_evaluation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\diagnostic.py",
|
|||
|
|
"src\\backend\\app\\models\\diagnostic.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\employee.py",
|
|||
|
|
"src\\backend\\app\\models\\employee.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\exclusion_log.py",
|
|||
|
|
"src\\backend\\app\\models\\exclusion_log.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\exclusion_rule.py",
|
|||
|
|
"src\\backend\\app\\models\\exclusion_rule.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\funny_phrase.py",
|
|||
|
|
"src\\backend\\app\\models\\funny_phrase.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\knowledge_base.py",
|
|||
|
|
"src\\backend\\app\\models\\knowledge_base.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\knowledge_suggestion.py",
|
|||
|
|
"src\\backend\\app\\models\\knowledge_suggestion.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\login_log.py",
|
|||
|
|
"src\\backend\\app\\models\\login_log.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\meetingroom_booking_snapshot.py",
|
|||
|
|
"src\\backend\\app\\models\\meetingroom_booking_snapshot.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\meetingroom_guide.py",
|
|||
|
|
"src\\backend\\app\\models\\meetingroom_guide.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\meetingroom_repair.py",
|
|||
|
|
"src\\backend\\app\\models\\meetingroom_repair.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\neo4j_schema.py",
|
|||
|
|
"src\\backend\\app\\models\\neo4j_schema.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\quick_reply_template.py",
|
|||
|
|
"src\\backend\\app\\models\\quick_reply_template.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\quiz.py",
|
|||
|
|
"src\\backend\\app\\models\\quiz.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\role.py",
|
|||
|
|
"src\\backend\\app\\models\\role.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\role_mapping_rule.py",
|
|||
|
|
"src\\backend\\app\\models\\role_mapping_rule.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\routing_event.py",
|
|||
|
|
"src\\backend\\app\\models\\routing_event.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\software_download.py",
|
|||
|
|
"src\\backend\\app\\models\\software_download.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\system_config.py",
|
|||
|
|
"src\\backend\\app\\models\\system_config.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\terminal_room_binding.py",
|
|||
|
|
"src\\backend\\app\\models\\terminal_room_binding.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\todo_item.py",
|
|||
|
|
"src\\backend\\app\\models\\todo_item.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\triage_session.py",
|
|||
|
|
"src\\backend\\app\\models\\triage_session.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\troubleshooting_template.py",
|
|||
|
|
"src\\backend\\app\\models\\troubleshooting_template.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\models\\user_role.py",
|
|||
|
|
"src\\backend\\app\\models\\user_role.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\admin.py",
|
|||
|
|
"src\\backend\\app\\schemas\\admin.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\admin_user.py",
|
|||
|
|
"src\\backend\\app\\schemas\\admin_user.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\agent.py",
|
|||
|
|
"src\\backend\\app\\schemas\\agent.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\auth.py",
|
|||
|
|
"src\\backend\\app\\schemas\\auth.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\automation.py",
|
|||
|
|
"deploy-temp\\p2p3\\app\\schemas\\automation.py",
|
|||
|
|
"src\\backend\\app\\schemas\\automation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\conversation_annotation.py",
|
|||
|
|
"src\\backend\\app\\schemas\\conversation_annotation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\employee.py",
|
|||
|
|
"src\\backend\\app\\schemas\\employee.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\enums.py",
|
|||
|
|
"src\\backend\\app\\schemas\\enums.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\evaluation.py",
|
|||
|
|
"src\\backend\\app\\schemas\\evaluation.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\exclusion.py",
|
|||
|
|
"src\\backend\\app\\schemas\\exclusion.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\h5.py",
|
|||
|
|
"src\\backend\\app\\schemas\\h5.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\knowledge_base.py",
|
|||
|
|
"src\\backend\\app\\schemas\\knowledge_base.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\knowledge_suggestion.py",
|
|||
|
|
"src\\backend\\app\\schemas\\knowledge_suggestion.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\meetingroom.py",
|
|||
|
|
"src\\backend\\app\\schemas\\meetingroom.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\qrcode.py",
|
|||
|
|
"src\\backend\\app\\schemas\\qrcode.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\quick_reply.py",
|
|||
|
|
"src\\backend\\app\\schemas\\quick_reply.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\role.py",
|
|||
|
|
"src\\backend\\app\\schemas\\role.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\todo_item.py",
|
|||
|
|
"src\\backend\\app\\schemas\\todo_item.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\triage.py",
|
|||
|
|
"src\\backend\\app\\schemas\\triage.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\troubleshooting_template.py",
|
|||
|
|
"src\\backend\\app\\schemas\\troubleshooting_template.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\wecom.py",
|
|||
|
|
"src\\backend\\app\\schemas\\wecom.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\schemas\\__init__.py",
|
|||
|
|
"src\\backend\\app\\schemas\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin_user_service.py",
|
|||
|
|
"src\\backend\\app\\services\\admin_user_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\asset_service.py",
|
|||
|
|
"src\\backend\\app\\services\\asset_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\audit_log_service.py",
|
|||
|
|
"src\\backend\\app\\services\\audit_log_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\auth_service.py",
|
|||
|
|
"src\\backend\\app\\services\\auth_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\avatar_service.py",
|
|||
|
|
"src\\backend\\app\\services\\avatar_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\cache_service.py",
|
|||
|
|
"src\\backend\\app\\services\\cache_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\closing_service.py",
|
|||
|
|
"src\\backend\\app\\services\\closing_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\dify_triage_service.py",
|
|||
|
|
"src\\backend\\app\\services\\dify_triage_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\exclusion_service.py",
|
|||
|
|
"src\\backend\\app\\services\\exclusion_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\funny_phrase_service.py",
|
|||
|
|
"src\\backend\\app\\services\\funny_phrase_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\itsm_service.py",
|
|||
|
|
"src\\backend\\app\\services\\itsm_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\knowledge_iteration_service.py",
|
|||
|
|
"src\\backend\\app\\services\\knowledge_iteration_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\meetingroom_service.py",
|
|||
|
|
"src\\backend\\app\\services\\meetingroom_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\mfa_service.py",
|
|||
|
|
"src\\backend\\app\\services\\mfa_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\neo4j_client.py",
|
|||
|
|
"deploy-staging-ki\\app\\services\\neo4j_client.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\qrcode_service.py",
|
|||
|
|
"src\\backend\\app\\services\\qrcode_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\queue_service.py",
|
|||
|
|
"src\\backend\\app\\services\\queue_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\quiz_generation_service.py",
|
|||
|
|
"src\\backend\\app\\services\\quiz_generation_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\quiz_service.py",
|
|||
|
|
"src\\backend\\app\\services\\quiz_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\ragflow_ingestion_service.py",
|
|||
|
|
"src\\backend\\app\\services\\ragflow_ingestion_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\rbac_service.py",
|
|||
|
|
"src\\backend\\app\\services\\rbac_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\reminder_service.py",
|
|||
|
|
"src\\backend\\app\\services\\reminder_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\repair_service.py",
|
|||
|
|
"src\\backend\\app\\services\\repair_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\role_mapping_service.py",
|
|||
|
|
"src\\backend\\app\\services\\role_mapping_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\runtime_log_service.py",
|
|||
|
|
"src\\backend\\app\\services\\runtime_log_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\scoring_service.py",
|
|||
|
|
"src\\backend\\app\\services\\scoring_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\security_comparison.py",
|
|||
|
|
"src\\backend\\app\\services\\security_comparison.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\todo_aggregator_service.py",
|
|||
|
|
"src\\backend\\app\\services\\todo_aggregator_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\todo_source_service.py",
|
|||
|
|
"src\\backend\\app\\services\\todo_source_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\triage_service.py",
|
|||
|
|
"src\\backend\\app\\services\\triage_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\vision_service.py",
|
|||
|
|
"src\\backend\\app\\services\\vision_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\xylink_service.py",
|
|||
|
|
"src\\backend\\app\\services\\xylink_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin\\admin_agent_service.py",
|
|||
|
|
"src\\backend\\app\\services\\admin\\admin_agent_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin\\admin_audit_service.py",
|
|||
|
|
"src\\backend\\app\\services\\admin\\admin_audit_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin\\admin_config_service.py",
|
|||
|
|
"src\\backend\\app\\services\\admin\\admin_config_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin\\admin_dashboard_service.py",
|
|||
|
|
"src\\backend\\app\\services\\admin\\admin_dashboard_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin\\admin_integration_service.py",
|
|||
|
|
"src\\backend\\app\\services\\admin\\admin_integration_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin\\admin_moderation_service.py",
|
|||
|
|
"src\\backend\\app\\services\\admin\\admin_moderation_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin\\admin_monitoring_service.py",
|
|||
|
|
"src\\backend\\app\\services\\admin\\admin_monitoring_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\admin\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\admin\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\agent\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\agent\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\ai\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\ai\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\action_registry.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\action_registry.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\approval.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\approval.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\context_compressor.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\context_compressor.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\correction_service.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\correction_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\exception_handler.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\exception_handler.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\executor.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\executor.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\information_item_service.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\information_item_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\intent_router.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\intent_router.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\mapping_resolver.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\mapping_resolver.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\progress_publisher.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\progress_publisher.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\rollback.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\rollback.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\session_manager.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\session_manager.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\snapshot_service.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\snapshot_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\timeout_cleaner.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\timeout_cleaner.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\automation\\__init__.py",
|
|||
|
|
"deploy-temp\\p2p3\\app\\services\\automation\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\automation\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\conversation\\session_collaboration_service.py",
|
|||
|
|
"src\\backend\\app\\services\\conversation\\session_collaboration_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\conversation\\session_lifecycle_service.py",
|
|||
|
|
"src\\backend\\app\\services\\conversation\\session_lifecycle_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\conversation\\session_participant_service.py",
|
|||
|
|
"src\\backend\\app\\services\\conversation\\session_participant_service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\conversation\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\conversation\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\core\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\core\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\external\\base.py",
|
|||
|
|
"src\\backend\\app\\services\\external\\base.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\external\\cache.py",
|
|||
|
|
"src\\backend\\app\\services\\external\\cache.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\external\\config.py",
|
|||
|
|
"src\\backend\\app\\services\\external\\config.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\external\\mock.py",
|
|||
|
|
"src\\backend\\app\\services\\external\\mock.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\external\\service.py",
|
|||
|
|
"src\\backend\\app\\services\\external\\service.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\external\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\external\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\integration\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\integration\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\matchers\\base.py",
|
|||
|
|
"src\\backend\\app\\services\\matchers\\base.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\matchers\\category_matcher.py",
|
|||
|
|
"src\\backend\\app\\services\\matchers\\category_matcher.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\matchers\\intent_matcher.py",
|
|||
|
|
"src\\backend\\app\\services\\matchers\\intent_matcher.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\matchers\\keyword_matcher.py",
|
|||
|
|
"src\\backend\\app\\services\\matchers\\keyword_matcher.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\matchers\\regex_matcher.py",
|
|||
|
|
"src\\backend\\app\\services\\matchers\\regex_matcher.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\services\\matchers\\__init__.py",
|
|||
|
|
"src\\backend\\app\\services\\matchers\\__init__.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\tasks\\quiz_generation_task.py",
|
|||
|
|
"src\\backend\\app\\tasks\\quiz_generation_task.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\tasks\\reminder_task.py",
|
|||
|
|
"src\\backend\\app\\tasks\\reminder_task.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\utils\\env_gating.py",
|
|||
|
|
"src\\backend\\app\\utils\\env_gating.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\utils\\error_codes.py",
|
|||
|
|
"src\\backend\\app\\utils\\error_codes.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\utils\\itsm_signer.py",
|
|||
|
|
"src\\backend\\app\\utils\\itsm_signer.py"
|
|||
|
|
],
|
|||
|
|
[
|
|||
|
|
"backend\\app\\utils\\logging_config.py",
|
|||
|
|
"src\\backend\\app\\utils\\logging_config.py"
|
|||
|
|
]
|
|||
|
|
],
|
|||
|
|
"texts": {
|
|||
|
|
"README.md": "# 企微智能IT支持服务台 (IT Smart Desk)\n\n> **环境状态**: 预生产(独立主机,共享域名)→ 正式环境迁移 K8s \n> **维护者**: 税友集团 IT支持组(宋献) \n> **最后更新**: 2026-06-03\n\n---\n\n## 📖 阅读指南(按对象)\n\n| 阅读对象 | 推荐文档 | 内容 |\n|---------|---------|------|\n| **新人/产品经理** | 本文档 + docs/ARCHITECTURE.md 前半部分 | 项目背景、功能清单、如何使用 |\n| **开发人员** | docs/ARCHITECTURE.md + backend/app/ 代码 | 架构设计、API 接口、数据模型、开发规范 |\n| **运维/部署人员** | 本文档「部署」章节 + scripts/deploy.sh | Docker 编排、Nginx 配置、环境变量 |\n| **测试人员** | docs/ARCHITECTURE.md 「任务清单」 | 功能模块划分、待完善项 |\n\n---\n\n## 🎯 项目背景\n\n税友集团内部 IT 支持渠道分散(企微群、电话、走访),缺乏统一 SLA 追踪。本项目构建一个 **AI + 人工坐席协作** 的智能服务台:\n\n- **员工端**(H5):企微 OAuth2 免登,AI 自动回复 + 人工兜底,支持「敲桌子」趣味呼叫\n- **坐席端**(Web):三栏工作台,会话分配/抢单/协作/转接,实时 WebSocket 推送\n- **AI 层**:接入 RAGFLOW/Dify 知识库,自动回复常见 IT 问题\n\n**核心指标**:AI 自助解决率 55%(实际 1-5月已达 70.2%)\n\n---\n\n## ✅ 当前实现进度\n\n### 后端(FastAPI + PostgreSQL + Redis)\n- [x] 企微回调加解密(AES-CBC-256)\n- [x] 消息路由(VIP 识别、紧急度评分 1-5、标记检测)\n- [x] WebSocket 实时推送(心跳、重连、定向广播)\n- [x] 会话全生命周期(创建→分配→处理→结单→转接)\n- [x] 坐席管理(登录、状态切换、在线列表)\n- [x] H5 端 OAuth2 认证、审批链接、软件下载\n- [x] 应急模式(系统故障时手动开启)\n- [x] Alembic 数据库迁移(初始表结构)\n- [ ] **AI 回复集成**(需接入 Dify,目前新会话直接进入队列)\n- [ ] 自动化测试(pytest)\n\n### 坐席前端(Vue 3 + Element Plus)\n- [x] 登录页(用户ID + 姓名,无密码)\n- [x] 三栏工作台(会话列表 + 对话区 + AI 助手面板)\n- [x] 6 分区会话列表(待接单/我的/协作/其他坐席/AI处理/已结单)\n- [x] 协作功能(摇人邀请、接受/拒绝)\n- [x] WebSocket + 轮询双模式(自动降级)\n- [ ] 操作步骤、风险提示、用户信息面板(需确认后端数据)\n\n### 员工前端(Vue 3 + Vant)\n- [x] OAuth2 静默授权登录\n- [x] 聊天界面(员工/坐席/AI/系统 4 种消息气泡)\n- [x] 「敲桌子」呼叫坐席(7 种 SVG 动画)\n- [x] AI 助手面板、审批流程链接、软件下载\n- [ ] AI 回复展示(依赖后端 AI 集成)\n\n### 部署\n- [x] Docker Compose 4 容器编排(nginx + backend + postgres + redis)\n- [x] Nginx 反向代理(与数据平台共享域名,独立主机部署)\n- [x] 部署脚本(build.sh + deploy.sh)\n- [ ] HTTPS 启用(nginx.conf 已预留模板)\n- [ ] **预生产环境验证**(独立主机,路径路由到数据平台远程主机)\n\n---\n\n## 🚀 快速启动\n\n### 前置条件\n- Docker Desktop / Docker Compose\n- 企微企业应用(需配置 Token、EncodingAESKey、CorpID)\n- 公钥上传至服务器(部署用)\n\n### 本地开发\n```bash\n# 1. 复制环境变量\ncp .env.example .env\n# 编辑 .env 填入企微凭据和数据库密码\n\n# 2. 启动数据库(仅 PostgreSQL)\ndocker compose up -d postgres redis\n\n# 3. 后端开发模式\ncd backend\npython -m venv venv && venv\\Scripts\\activate\npip install -r requirements.txt\nuvicorn app.main:app --reload\n\n# 4. 前端开发模式(另开终端)\ncd frontend-agent\nnpm install && npm run dev\n```\n\n### 预生产部署\n> **注意**:预生产环境中,智能咨询系统与数据平台在不同主机上。部署前需将 `nginx/nginx.conf` 中 `DATAQUERY_HOST` 替换为数据平台实际 IP。\n\n``
|
|||
|
|
"CHANGELOG.md": "# 变更日志 (Changelog)\n\n本项目的所有重要变更都会记录在此文件。\n\n格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),\n本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。\n\n## [未发布] - 2026-07-13\n\n### 🚀 功能增强 (Features)\n\n#### Agent 坐席端 v5 — AI 结构化消息 + 思考指示器(2026-07-13 01:38 部署)\n- **ai_structured 只读渲染**:坐席端 `MessageBubble.vue` 新增 AI 结构化消息渲染分支(文字 + 只读选项标签 + 推荐摘要)\n- **byod_card 渲染**:补全之前缺失的 `byod_card` 消息类型渲染分支\n- **AI 思考指示器**:`ChatArea.vue` 新增 `aiThinkingText` 计算属性 + 脉冲动画 CSS,坐席可实时看到 AI 正在思考\n- **handleNewMessage 透传修复**:修复 `msg_type` 和 `extra_data` 硬编码为 `'text'` 的问题,正确透传消息类型\n- **ai_thinking 双推**:后端 `ai_thinking` WS 消息同时推送给员工端和坐席端\n- 验证:JS hash `index-2BTn4SZz.js` ✅,5 容器全部 healthy ✅\n\n#### H5 员工端 v4 — 人工坐席交互改造(#116, 2026-07-13 部署)\n- **人工按钮三态文案统一**为\"人工坐席\"(原\"人工(需更多对话)\"等多态文案)\n- **按钮位置调整**:移至发送键 + 语音转文字图标上方(`.input-bar__controls` 容器内垂直堆叠)\n- **删除 CallAgentModal 弹窗动画**:点击按钮直接调用 `store.shakeAgent()`,无中间浮窗\n- **截图快捷键提示改版**:改为\"截图->粘贴:Alt+Shift+A-Ctrl+V ---> Ctrl+V\",排列在工具图标后\n- **移动端隐藏截图提示**:CSS `@media (max-width: 768px)` 媒体查询\n- **AI 转人工提示**:\"已为您呼叫人工坐席,请稍等!\"(原\"少主,折旧为您去摇人,稍等….\")\n- **坐席接入提示**:\"坐席正在查看您的信息,请等待处理回复!\"(原\"坐席已为您服务,请稍后….\")\n- **删除\"摇铃呼叫坐席\"入口和文案**\n- **清理孤儿组件** `MessageList.vue`(全项目无引用)\n- **删除 CSS** `@keyframes shake` 动画及相关变量\n- **DB 同步**:PostgreSQL `funny_phrases` 表 3 条记录(shake/connected/keyword)UPDATE\n- 验证:JS hash `index-eQVEQIDL.js` → `index-B6dzwk-X.js` ✅,JS 包内容检查通过\n\n#### AI 对话链路全栈改造 Phase 1-6(#59-#69, 2026-07-13 01:38 生产部署)\n- **Phase 1 ✅**:Dify Prompt JSON 输出 + 后端 blocking + JSON 解析 + 双 WS 推送 + 错误降级(30s 超时 / 15s still_thinking)\n- **Phase 2 ✅**:审批关键词收窄(~40→~25 强意图词)+ 两级分类 Prompt v4.0(4粗→12细)+ 删除前端 `checkApprovalIntent()`\n- **Phase 3 ✅**:WS 扩展(`ai_thinking` + `dynamic_recommend`)+ `MessageBubble` ai_structured 渲染 + `RightPanel` v2(手风琴 + 底部标签)+ `DynamicRecommend.vue`(新建)+ `sendOptionSelect` WS 回传\n- **Phase 4 ✅**:`VisionService` 接入(`_enrich_image_content` + `_fetch_recent_employee_text` 5秒融合)+ 图片消息跳过关键词拦截 + 降级策略\n- **Phase 5 ✅**:坐席端 `ai_thinking` WS + 指示器 UI + `MessageBubble` ai_structured/byod_card 渲染 + `handleNewMessage` 修复\n- **Phase 6 ✅**:`diagnosis_stage` 字段(6种值)→ `closing_service` 辅助方法 + `response_time_ms` 计时 + 慢响应告警(>10s)\n\n#### 上下文感知智能诊断→修复闭环(2026-07-12 部署)\n- **三层诊断**:API → Script → AI 递进式诊断\n- **三段排队**:VIP → info_locked → not locked\n- **答题插队**:员工答题期间优先处理\n- **五场景关闭**:五种场景自动关闭会话\n- 后端:迁移 052(6表+6列)/ `queue_service` / `quiz_service` / `closing_service` / `seed_quiz` / 每日3:00定时生成\n- H5 前端:`QueueWaiting` / `RightPanel` 双Tab / `InputBar` 三态\"人工\"按钮 / `ResolveConfirmCard`\n- 坐席前端:`pending_close` 结单流程;信息锁定(Dify 步骤完成 + 有效回答率≥70%)\n\n#### 坐
|
|||
|
|
"CONTRIBUTING.md": "# 贡献指南 (CONTRIBUTING)\n\n**适用范围**: 企微 IT 智能服务台 (`wecom_it_smart_desk`)\n**维护者**: 宋献(项目负责人)+ Claude(评审协作)+ workbuddy(自动化开发)\n**最后更新**: 2026-06-14\n\n---\n\n## 📌 仓库入口\n\n- **Gitea(公网 Funnel)**: `https://ds923plus.tail58d872.ts.net/simon/wecom_it_smart_desk`\n- **Gitea(内网 LAN)**: `http://100.85.152.112:8418/simon/wecom_it_smart_desk`\n- **Tailscale 私网**: `100.85.152.112:8418`\n\n---\n\n## 🌿 分支模型\n\n| 分支 | 用途 | 保护规则 |\n|---|---|---|\n| `main` | 稳定可发布版本 | 🔒 禁止直推,需 PR + 1 reviewer |\n| `develop` | 主开发分支 | 🟡 允许 push |\n| `feature/*` | 新功能(从 develop 拉) | 🟢 自由 |\n| `hotfix/*` | 紧急修复(从 main 拉) | 🟢 自由,合入需评审 |\n| `release/*` | 发布准备 | 🟡 自由,合入 main 需评审 |\n\n**主分支**: `main`(默认推送目标)\n\n---\n\n## 📝 Commit 规范\n\n**格式** (Conventional Commits):\n\n```\n<type>(<scope>): <subject>\n\n<body>\n\n<footer>\n```\n\n**type 取值**:\n\n| type | 用途 | 示例 |\n|---|---|---|\n| `feat` | 新功能 | `feat(messages): 撤回消息端点` |\n| `fix` | Bug 修复 | `fix(h5): 修复参与者权限校验` |\n| `refactor` | 重构(无新功能 / 无 Bug 修复) | `refactor(agents): 提取鉴权中间件` |\n| `docs` | 文档变更 | `docs: 评审报告 workbuddy-2026-06-14` |\n| `chore` | 构建/工具/依赖 | `chore: 强化 .gitignore` |\n| `security` | 安全相关 | `security: P0 鉴权止血` |\n| `perf` | 性能优化 | `perf(messages): 消息批量插入` |\n| `test` | 测试相关 | `test: 加 mark_read 鉴权测试` |\n\n**scope 取值**: 模块名,如 `agents` / `messages` / `h5` / `frontend-agent` / `nginx` / `workbuddy`\n\n**subject**: 中文,不超过 50 字,**祈使句**,如 \"修复 xx\" 而非 \"修复了 xx\"\n\n**body** (可选): 详细说明,**每行 ≤ 72 字**\n\n**footer** (可选): 关联 Issue / workbuddy 任务编号,如:\n```\nRefs: #18\nRefs: workbuddy-2026-06-14-任务-修遗留\n```\n\n**示例**:\n```\nsecurity(ws): WS token 从 URL 改 header 鉴权\n\n【workbuddy 推送 2026-06-14】\n- ws.py 服务端: 优先 Authorization: Bearer header, query 降级\n- ws.ts 前端: 待 workbuddy 改 Sec-WebSocket-Protocol 方案\n- 详见 docs/评审报告/workbuddy-2026-06-14-P0安全.md\n\nRefs: #18\nRefs: workbuddy-2026-06-14-任务-修遗留\n```\n\n---\n\n## 🔄 PR 流程\n\n### 推送前自检清单\n\n**所有 P0 修复推送前必须 4 件套自检**:\n\n- [ ] **鉴权**: 新增/修改端点是否有 `Depends(get_current_agent)` 或 `_get_current_employee`?\n- [ ] **依赖**: 改代码是否同步 `requirements.txt` / `package.json`?\n- [ ] **alembic**: 数据库 schema 变化是否生成迁移脚本?\n- [ ] **配置**: nginx / docker / conf 变化 plan 写了是否做完?\n\n### PR 流程\n\n1. **本地开发**\n ```bash\n git checkout develop\n git pull\n git checkout -b feature/xxx\n # 改代码\n git add .\n git commit -m \"feat(xxx): ...\"\n git push origin feature/xxx\n ```\n\n2. **开 PR**(走 Gitea Web 或 API)\n - 标题 = commit subject\n - 描述 = body 内容 + 关联评审报告 / workbuddy 任务\n - Reviewer: `simon`(主) + 可选 workbuddy auto-review\n\n3. **评审员评审**(Gitea UI)\n - 🟢 **P0 鉴权 / 安全**: 必须 Claude 评审 + 通过\n - 🟡 **功能 / 重构**: 至少 1 reviewer 通过\n - 🟢 **docs / chore**: 自审即可\n\n4. **合并**\n - 评审通过 + status check 绿 → squash merge → 删 feature 分支\n\n---\n\n## 🔒 main 分支保护规则\n\n由 Gitea API 配置,目前设定:\n\n| 项 | 值 |\n|---|---|\n| 禁止直推 | ✅ |\n| 需 PR | ✅ |\n| Approvals 数 | 1 |\n| Dismiss stale approvals | ✅ |\n| 状态检查必须通过 | ✅(待配) |\n| 管理员限制 | ✅(管理员也走 PR) |\n\n**配分支保护**:\n```bash\ncurl -X POST \\\n -H \"Authorization: token <ADMIN_TOKEN>\" \\\n -H \"Content-Type: application/json\" \\\n
|
|||
|
|
"overview.md": "# H5 会话关闭「重复提醒」优化(方案A)— 交付概要\n\n## 问题\n员工端会话关闭后,消息列表**系统消息**(`✅ 会话已关闭。24小时内可重新打开。`)与底部 **QueueCapsule 横幅**(`会话已关闭 · 24小时内可重新打开 点击重新打开 🔄`)两处重复展示同一提醒文案,且横幅另带「点击重新打开」入口,造成信息冗余。\n\n## 方案(用户选定 · 方案A)\n- 保留消息列表系统消息,在其卡片内新增「🔄 重新打开」按钮(上下文最近、最自然);\n- 删除底部 QueueCapsule 的 resolved 横幅(去重)。\n\n## 改动文件(均位于真实部署目录 `src/frontend-h5/`)\n1. **`src/frontend-h5/src/components/chat/MessageBubble.vue`**\n - 模板:系统消息 `<div>` 内新增 `v-if=\"isResolveMessage && canReopen\"` 的「🔄 重新打开」按钮,点击 `handleReopen`;\n - script:新增 `isResolveMessage`(content 含「可重新打开」判定)/ `canReopen`(store.canReopen)/ `isReopening`(store.isReopening)/ `handleReopen`(调 `store.reopenCurrentConversation()` + toast 展示后端真实错误);\n - CSS:`.message-bubble__reopen-btn`(企微绿 `#07c160` 圆角胶囊,含 `:active`/`:disabled` 态)。\n2. **`src/frontend-h5/src/components/chat/QueueCapsule.vue`**\n - `visible` computed 新增 `if (currentState.value === 'resolved') return false`,隐藏 resolved 横幅;\n - 纯函数 `computeVisible` / `computeCapsuleState` 保持不变(既有逻辑测试不受影响)。\n\n## 设计决定(透明说明)\nInputBar 的「人工坐席」按钮在 resolved 态仍保留 `reopen` 能力 —— 它仅显示徽标 + tooltip(**无可见重复文案**),作为常驻 reopen 入口;6 态状态机与既有测试不变。若你希望 reopen 入口**唯一收口**到系统消息卡片,可再隐藏该按钮(需同步改 `inputBarCallAgentState.ts` 的 `reopen` 分支,并调整 28 例相关测试)。\n\n## 验证结果\n- **vue-tsc**:仅历史既有类型错误(RecommendCard / SelfDiagnosis / conversation.ts 等),**无本次新增**;模板引用 `handleReopen`/`isResolveMessage`/`canReopen`/`isReopening` 均已正确定义;\n- **vitest**:171 例(inputBarCallAgentState / QueueCapsule / integrationZoneLogic)**全过**;\n- **vite build**:成功(529 模块,built in 2.74s)。\n\n## 回滚能力(满足用户硬约束:微小改动后页面回老版本)\n- 改动前已备份:`D:\\资料\\03-项目开发\\wecom_it_smart_desk\\.backup\\h5-20260807\\src-frontend-h5-src.tar.gz`(171MB,排除 node_modules/dist);\n- 回滚:`tar -xzf .backup/h5-20260807/src-frontend-h5-src.tar.gz -C <项目根>` 还原 `src/frontend-h5/`;\n - ⚠️ 本环境 safe-delete 垫片会**拦截 `rm`**(fail-closed),勿先 `rm -rf`;用 `tar` 直接覆盖即可。\n\n## 部署状态:**已上线生产(2026-08-07 13:15)**\n\n采用既有「版本化 PATH + 302 跳板」体系破除 WAF path 缓存:\n- 新版本入口:`/h5/v20260807a/`(nginx `alias` 指向同一 root `dist/`,仅 URL 路径不同)\n- `/h5/go` 302 目标已由 `v20260806g` 改为 `v20260807a`\n- 改后 `docker exec wecom_it_nginx nginx -t` 通过 → `docker restart wecom_it_nginx`\n\n**验证(内网 + 外网 WAF 双通过)**\n- 内网:`/h5/v20260807a/`=200、`/h5/go`=302→`/h5/v20260807a/`、`/h5/assets/index-C1Q6Rane.js`=200(新 hash)\n- 外网:`https://itsupport.servyou.com.cn/h5/go`=302→`/h5/v20260807a/`;外部 index.html 引用新 hash `index-C1Q6Rane.js`\n- 产物核对:built JS 含「🔄 重新打开」「重新打开中」、CSS 含 `message-bubble__reopen-btn` → 方案A 代码确已生效\n\n**回滚预案(nginx 层,秒级)**\n```\nsudo cp /opt/wecom-it-desk/nginx/nginx.conf.bak-20260807 /opt/wecom-it-desk/nginx/nginx.conf\ndocker restart wecom_it_nginx\n```\n(dist 构建产物回退需重新解上次构建包;源码级备份见 `.backup/h5-20260807/src-frontend-h5-src.tar.gz`)
|
|||
|
|
"docker-compose.yml": "# =============================================================================\n# 企微IT智能服务台 — Docker Compose(公司内网服务器版)\n# =============================================================================\n# 目标服务器:10.90.5.110\n# 域名:itsupport.servyou.com.cn\n#\n# 用法:\n# 1. 上传部署包到服务器\n# 2. cp .env.example .env && vim .env # 填入真实配置\n# 3. docker compose up -d # 启动所有服务\n# 4. docker compose logs -f # 查看日志\n#\n# 架构:\n# 客户端浏览器 → Nginx:80 → { /itdesk/, /itagent/, /itadmin/, /api/, /ws/ }\n# =============================================================================\n\nservices:\n # --------------------------------------------------------------------------\n # PostgreSQL 16 — 持久化数据库\n # --------------------------------------------------------------------------\n postgres:\n image: postgres:16-alpine\n container_name: wecom_it_postgres\n restart: unless-stopped\n environment:\n POSTGRES_USER: ${POSTGRES_USER:-wecom}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-wecom_secret}\n POSTGRES_DB: ${POSTGRES_DB:-wecom_it_desk}\n volumes:\n - postgres_data:/var/lib/postgresql/data\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-wecom}\"]\n interval: 5s\n timeout: 5s\n retries: 5\n networks:\n - it-desk-internal\n logging:\n driver: \"json-file\"\n options:\n max-size: \"10m\"\n max-file: \"3\"\n\n # --------------------------------------------------------------------------\n # Redis 7 — 缓存服务(token、会话、员工信息)\n # --------------------------------------------------------------------------\n redis:\n image: redis:7-alpine\n container_name: wecom_it_redis\n restart: unless-stopped\n command: redis-server --appendonly yes --save 900 1 --save 300 10 --requirepass 'R3d!s@2026#Secure'\n volumes:\n - redis_data:/data\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 5s\n timeout: 5s\n retries: 5\n networks:\n - it-desk-internal\n logging:\n driver: \"json-file\"\n options:\n max-size: \"10m\"\n max-file: \"3\"\n\n # --------------------------------------------------------------------------\n # Neo4j 5 — 知识图谱存储(社区版)\n # --------------------------------------------------------------------------\n neo4j:\n image: neo4j:5-community\n container_name: wecom_it_neo4j\n restart: unless-stopped\n environment:\n NEO4J_AUTH: neo4j/${NEO4J_PASSWORD}\n NEO4J_PLUGINS: '[\"apoc\"]'\n volumes:\n - neo4j_data:/data\n - neo4j_logs:/logs\n healthcheck:\n test: [\"CMD-SHELL\", \"cypher-shell -u neo4j -p ${NEO4J_PASSWORD} 'RETURN 1'\"]\n interval: 10s\n timeout: 5s\n retries: 10\n networks:\n - it-desk-internal\n logging:\n driver: \"json-file\"\n options:\n max-size: \"10m\"\n max-file: \"3\"\n\n # --------------------------------------------------------------------------\n # FastAPI 后端 — 核心业务服务\n # --------------------------------------------------------------------------\n backend:\n build:\n context: ./backend\n dockerfile: Dockerfile\n image: wecom-it-desk-backend:latest\n container_name: wecom_it_backend\n restart: unless-stopped\n environment:\n # 企微凭证\n - WECOM_CORP_ID=${WECOM_CORP_ID}\n - WECOM_AGENT_ID=${WECOM_AGENT_ID}\n - WECOM_SECRET=${WECOM_SECRET}\n - WECOM_APPROVAL_SECRET=${WECOM_APPROVAL_SECRET:-}\n - WECOM_TOKEN=${WECOM_TOKEN}\n - WECOM_ENCODING_AES_KEY=${WECOM_ENCODING_AES_KEY}\n # ITSM 运维平台(app_id/app_secret 待申请,先占位)\n - ITSM_APP_ID=${ITSM_APP_ID:-}\n - ITSM_APP_SECRET=${ITSM_APP_SECRET:-}\n # 数据库(Docker 内部网络,用容器名通信)\n
|
|||
|
|
"docker-compose.dev.yml": "# =============================================================================\n# 企微IT智能服务台 — 本地开发环境 Docker Compose\n# =============================================================================\n# 目标:本地电脑(Windows + Docker Desktop)\n# 用途:开发 + 测试,不依赖企微 OAuth,代码 volume mount 自动 reload\n# 用法:\n# 1. cp .env.example .env.dev (编辑填值,或直接用 .env.dev 模板)\n# 2. docker compose -f docker-compose.dev.yml up -d\n# 3. 访问 http://localhost:80/itdesk/ 等\n# 启动后:\n# - Nginx: http://localhost:80 (统一入口)\n# - Postgres: localhost:5432\n# - Redis: localhost:6379\n# - Backend: localhost:8000 (可选)\n# =============================================================================\n\nservices:\n # --------------------------------------------------------------------------\n # PostgreSQL 16 — 开发数据库\n # --------------------------------------------------------------------------\n postgres:\n image: postgres:16-alpine\n container_name: dev_wecom_postgres\n restart: unless-stopped\n environment:\n POSTGRES_USER: ${POSTGRES_USER:-wecom}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-wecom_dev}\n POSTGRES_DB: ${POSTGRES_DB:-wecom_it_desk_dev}\n ports:\n - \"5432:5432\"\n volumes:\n - postgres_dev_data:/var/lib/postgresql/data\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-wecom}\"]\n interval: 5s\n timeout: 5s\n retries: 5\n networks:\n - dev-net\n\n # --------------------------------------------------------------------------\n # Redis 7 — 开发缓存\n # --------------------------------------------------------------------------\n redis:\n image: redis:7-alpine\n container_name: dev_wecom_redis\n restart: unless-stopped\n command: redis-server --appendonly yes --save 900 1 --save 300 10\n ports:\n - \"6379:6379\"\n volumes:\n - redis_dev_data:/data\n healthcheck:\n test: [\"CMD\", \"redis-cli\", \"ping\"]\n interval: 5s\n timeout: 5s\n retries: 5\n networks:\n - dev-net\n\n # --------------------------------------------------------------------------\n # Neo4j 5 — 知识图谱存储\n # --------------------------------------------------------------------------\n neo4j:\n image: neo4j:5-community\n container_name: dev_wecom_neo4j\n restart: unless-stopped\n environment:\n NEO4J_AUTH: neo4j/${NEO4J_PASSWORD:-password}\n NEO4J_PLUGINS: '[\"apoc\"]'\n ports:\n - \"7474:7474\"\n - \"7687:7687\"\n volumes:\n - neo4j_dev_data:/data\n - neo4j_dev_logs:/logs\n healthcheck:\n test: [\"CMD-SHELL\", \"cypher-shell -u neo4j -p ${NEO4J_PASSWORD:-password} 'RETURN 1'\"]\n interval: 10s\n timeout: 5s\n retries: 10\n networks:\n - dev-net\n\n # --------------------------------------------------------------------------\n # Backend — 开发模式(代码 volume mount + uvicorn --reload)\n # --------------------------------------------------------------------------\n backend:\n build:\n context: ./backend\n dockerfile: Dockerfile.dev\n image: wecom-it-desk-backend:dev\n container_name: dev_wecom_backend\n restart: unless-stopped\n env_file:\n - .env.dev\n environment:\n - DATABASE_URL=postgresql://wecom:wecom_dev@postgres:5432/wecom_it_desk_dev\n - REDIS_URL=redis://redis:6379/0\n - DEV_MODE=true\n - WECOM_SSO_CALLBACK_BASE=http://localhost:80\n - CORS_ORIGINS=http://localhost:80\n # Dify AI 服务(生产环境)\n - DIFY_API_URL=http://yw-dify.dc.servyou-it.com/dify2openai/v1/chat/completions\n - DIFY_API_KEY=app-7jkRkAzvX4QM9v9SM3P8mMEO\n - DIFY_TIMEOUT=30\n - PYTHONPATH=/app\n # Neo4j 知识图谱\n - NEO4J_URI=bolt://neo4j:7687\n - NEO4J_USER=neo4j\n - NEO4J_PASSWORD=${NEO4J_PASSWORD:-password}\n - NEO4J_DATABASE=neo4j\n port
|
|||
|
|
"mkdocs.yml": "site_name: WeCom IT 智能服务台\nsite_description: 企微 IT 智能服务台项目文档\nsite_author: Simon & Claude\ndocs_dir: docs\nsite_dir: site\ntheme:\n name: material\n language: zh\n features:\n - navigation.instant\n - navigation.tabs\n - search.suggest\nnav:\n - 首页: 01-项目总览/01-项目总览与部署手册-20260704.md\n - 文档索引: 01-项目总览/00-索引-20260704.md\n - 总览:\n - 运维手册: 01-项目总览/01-智能IT服务系统运维手册-20260704.md\n - 项目全面评估: 01-项目总览/03-项目全面评估报告-20260625.md\n - 产品需求:\n - PRD v1.2: 02-产品需求/02-产品需求文档PRD-v1.2-20260704.md\n - 架构:\n - 系统架构设计: 03-技术架构/00-系统架构设计文档-v1.3.md\n - 部署:\n - 一键部署操作包: 09-部署运维/deploy/10-一键部署操作包-v0.7.0.md\n - NAS部署指南: 09-部署运维/deploy/09-NAS部署指南-群晖Cloudflare.md\n - 发布说明 v0.7.1: 09-部署运维/deploy/03-RELEASE-NOTES-v0.7.1-20260623.md\n - 安全:\n - OTP 双因素认证: 09-部署运维/deploy/06-OTP二次验证实现.md\n - 安全审计报告: 08-安全审计/审计报告-安全审计/02-安全审计报告-20260614.md\n - 故障排查:\n - 标准故障排查手册: 09-部署运维/00-标准故障排查手册.md\n - 测试质量:\n - E2E 验收清单: 06-测试质量/testing-测试/E2E-CHECKLIST-v0.7.0.md\n - QA 综合报告: 06-测试质量/testing-测试/QA_COMPREHENSIVE_REPORT.md\n - 项目管理:\n - 任务总索引: 10-项目管理/01-任务总索引.md\n - 项目状态看板: 10-项目管理/05-项目状态看板/01-项目状态看板.md\n - 风险跟踪表: 10-项目管理/02-风险跟踪表.md\nmarkdown_extensions:\n - admonition\n - codehilite\n - toc:\n permalink: true\n",
|
|||
|
|
".gitignore": "# Python\n__pycache__/\n*.py[cod]\n*$py.class\n*.egg-info/\ndist/\nbuild/\n.venv/\nvenv/\n.eggs/\n\n# 环境变量\n.env\n.env.local\n.env.*\n\n# IDE\n.vscode/\n.idea/\n*.swp\n*.swo\n\n# 系统\n.DS_Store\nThumbs.db\n\n# Node\nnode_modules/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# 前端构建\nfrontend-agent/dist/\nfrontend-h5/dist/\n\n# 日志\n*.log\nlogs/\n\n# Docker\n*.pid\n*.seed\n*.pid.lock\n\n# =============================================================================\n# P0 安全: SSL 私钥 / 部署包 / 历史日志 (2026-06-14 强化)\n# =============================================================================\n\n# SSL 私钥 + 证书请求\n*.key\n*.pem\n*.csr\n\n# docs/ 下所有 servyou.com.cn 证书(目录 + 文件 + zip 全部,** 匹配任意深度)\ndocs/servyou.com.cn**\ndocs/*证书*/\ndocs/*ssl*/\ndocs/*SSL*/\ndocs/*证书*.zip\n/docs/*证书*.zip\n\n# 部署包 + 部署产物(体积大 + 经常含私钥)\ndeploy-*.tar\ndeploy-*.tar.gz\ndeploy-packages/\ndeploy-patch.tar\ndeploy-admin.tar\ndeploy-agent.tar\ndeploy-backend.tar\ndeploy-h5.tar\ndeploy-portal.tar\n*.tar\n*.tar.gz\n\n# 历史日志 + 构建日志(stderr 噪声)\n*.log.err\nbuild_logs/\nagent_build.log.err\nbuild-agent.log.err\nbuild-agent2.log.err\nbuild-h5.log.err\nbuild-h5-fix.log.err\nbuild_all.log.err\n\n# 本地部署脚本 + 部署目录\nbuild.ps1\nbuild_all.ps1\ndeploy-frontend-nas.bat\ndeploy-nas/\n\n# 部署产物 zip(体积大 + 含 dist)\nfrontend-*-dist-fix*.zip\nfrontend-*-dist-fix-*.zip\nit-smart-desk-*-deploy.zip\n\n# deploy-server/ 部署配置(nginx conf 入仓, .env 排除)\ndeploy-server/**/.env*\ndeploy-server/**/secrets/\ndeploy-server/**/*.pem\ndeploy-server/**/*.key\n\n# SQLite 本地测试库\nit_smart_desk.db\n*.db\n*.sqlite\n*.sqlite3\n\n# Base64 编码凭据(部署脚本用,含 admin token / 证书)\n# 2026-06-22: gen_admin_token.b64 含生产 admin token,不能入仓\n*.b64\n\n# pytest / 临时\n.pytest_cache/\n/tmp/\n*.pid\n.coverage\nhtmlcov/\n\n# 本地开发脚本 + 临时文件(2026-06-14 强化)\ndev-start.bat\ndev-start.ps1\nstart-backend.ps1\ntemp_*.txt\ntemp_*.py\nwecom-it-desk-nas.zip\nwecom-it-desk-server-deploy.zip\n\n# =============================================================================\n# P0 安全: workbuddy 凭据(2026-06-14 强化)\n# =============================================================================\n# workbuddy config 含 Gitea access token,绝对不入仓\n# 类比 .git/config: 工作目录可写,但 git add . 时排除\n.workbuddy/config.json\n.workbuddy/config.local.json\n.workbuddy/*.token\n.workbuddy/credentials*\n.workbuddy/.env*\n# workbuddy 临时日志(评审/任务跑批的中间产物)\n.workbuddy/logs/\n.workbuddy/*.log\n.workbuddy/*.log.err\n# workbuddy 记忆目录(个人上下文,不 入仓)\n.workbuddy/memory/\n\n# =============================================================================\n# 工作树清理 (2026-07-09): 产物 / 临时 / 上传 / 调试 dump 不入仓\n# 说明: 仅停止版本跟踪, 文件保留在磁盘 (git rm --cached), 全部可逆\n# =============================================================================\n\n# 部署/构建产物 zip (体积大, 含 dist)\n*.zip\n*-dist/\n\n# 压缩包 / 备份 dump\n*.tar.xz\n*.dump\n\n# 后端运行时上传 (员工上传的 pdf/png, 非源码)\nbackend/media/files/\nbackend/media/images/\n\n# 调试 dump\nbackend/*_dump.txt\nbackend/all_routes.txt\nbackend/auto_routes.txt\nbackend/route_dump*.txt\nbackend/api_router_dump.txt\n\n# 根目录 scratch 脚本 (一次性修复/检查/测试)\ncheck_*.py\nfix_*.py\nextract_and_migrate.py\nupdate_password.py\nupload_*.py\n_ctrt_transform.py\nencoded_knowledge_suggestion.txt\ndeploy_to_container.py\ntest_login*.py\ntest_login*.json\ntest_login*.sh\ntest_redis*.py\ntest_redis*.sh\ntest_send.sh\ntest_redis_conn.py\nkeep_alive.ps1\nstart_backend.sh\nstart_dev_services.bat\nstart_dev_services.ps1\notp-bind.sh\n\n# 部署 scratch\ndeploy-*.bat\ndeploy-staging/\ndeploy-scripts/\ndeploy-temp/\nchunks/\ndify/\nrag
|
|||
|
|
},
|
|||
|
|
"git_status": " M .workbuddy/automations/automation-1782986180887/memory.md\n M .workbuddy/memory/MEMORY.md\n M backend/app/api/h5.py\n M \"docs/01-\\344\\272\\247\\345\\223\\201\\346\\226\\207\\346\\241\\243/04-\\345\\235\\220\\345\\270\\255\\345\\267\\245\\344\\275\\234\\345\\217\\260/PRD-REQ-\\345\\235\\220\\345\\270\\255-011-\\347\\273\\237\\344\\270\\200\\345\\267\\245\\344\\275\\234\\351\\230\\237\\345\\210\\227\\351\\207\\215\\346\\236\\204-v0.1.md\"\n M \"docs/01-\\344\\272\\247\\345\\223\\201\\346\\226\\207\\346\\241\\243/05-\\347\\224\\250\\346\\210\\267\\347\\253\\257H5/PRD-REQ-\\347\\224\\250\\346\\210\\267-001-\\347\\276\\244\\350\\201\\212\\345\\217\\214\\346\\250\\241\\345\\274\\217-v1.0.md\"\n M \"docs/07-\\351\\241\\271\\347\\233\\256\\347\\256\\241\\347\\220\\206/\\351\\241\\271\\347\\233\\256\\347\\212\\266\\346\\200\\201\\347\\234\\213\\346\\235\\277.html\"\n M \"docs/07-\\351\\241\\271\\347\\233\\256\\347\\256\\241\\347\\220\\206/\\351\\241\\271\\347\\233\\256\\347\\212\\266\\346\\200\\201\\347\\234\\213\\346\\235\\277.md\"\n M frontend-h5/components.d.ts\n M frontend-h5/index.html\n M frontend-h5/src/api/employee.ts\n M frontend-h5/src/components/chat/ChatPanel.vue\n M frontend-h5/src/components/chat/InputBar.vue\n M frontend-h5/src/router/index.ts\n M frontend-h5/src/stores/conversation.ts\n M frontend-h5/src/stores/employee.ts\n M frontend-h5/src/styles/global.css\n M overview.md\n?? .gitea/workflows/\n?? .workbuddy/artifacts/agent-avatar-fix-overview.md\n?? .workbuddy/audit_scan.json\n?? .workbuddy/outputs/\n?? \"IT\\346\\231\\272\\350\\203\\275\\346\\234\\215\\345\\212\\241\\345\\217\\260-\\346\\212\\200\\346\\234\\257\\346\\236\\266\\346\\236\\204\\345\\233\\276-2026-08-07.html\"\n?? \"IT\\346\\231\\272\\350\\203\\275\\346\\234\\215\\345\\212\\241\\345\\217\\260-\\351\\241\\271\\347\\233\\256\\346\\203\\205\\345\\206\\265\\346\\212\\245\\345\\221\\212-2026-08-07.md\"\n?? __deploy_artifacts_20260807/\n?? _analyze_c.py\n?? _check_json.py\n?? _fuzzy_residual.py\n?? _list_c.py\n?? _resolve_residual.py\n?? archives/\n?? cmp_docs.py\n?? cmp_docs2.py\n?? cmp_docs3.py\n?? compose_dev_err.txt\n?? compose_main_err.txt\n?? \"docs/01-\\344\\272\\247\\345\\223\\201\\346\\226\\207\\346\\241\\243/04-\\345\\235\\220\\345\\270\\255\\345\\267\\245\\344\\275\\234\\345\\217\\260/PRD-REQ-\\345\\235\\220\\345\\270\\255-012-\\344\\274\\232\\350\\257\\235\\346\\235\\241\\347\\233\\256\\346\\223\\215\\344\\275\\234\\350\\217\\234\\345\\215\\225-v1.0.md\"\n?? \"docs/01-\\344\\272\\247\\345\\223\\201\\346\\226\\207\\346\\241\\243/04-\\345\\235\\220\\345\\270\\255\\345\\267\\245\\344\\275\\234\\345\\217\\260/\\345\\216\\237\\345\\236\\213-REQ-\\345\\235\\220\\345\\270\\255-000-\\345\\235\\220\\345\\270\\255\\345\\267\\245\\344\\275\\234\\345\\217\\260-v1.7.html\"\n?? \"docs/02-\\346\\212\\200\\346\\234\\257\\346\\226\\207\\346\\241\\243/\\346\\212\\200\\346\\234\\257\\346\\226\\271\\346\\241\\210-REQ-\\347\\224\\250\\346\\210\\267-001-\\347\\276\\244\\350\\201\\212\\345\\205\\245\\345\\217\\243\\346\\216\\245\\347\\272\\277-v1.0.md\"\n?? \"docs/02-\\346\\212\\200\\346\\234\\257\\346\\226\\207\\346\\241\\243/\\346\\212\\200\\346\\234\\257\\346\\236\\266\\346\\236\\204/\\346\\212\\200\\346\\234\\257\\346\\240\\270\\346\\237\\245-\\345\\235\\220\\345\\270\\255\\344\\274\\232\\350\\257\\235\\346\\235\\241\\347\\233\\256\\346\\223\\215\\344\\275\\234\\350\\217\\234\\345\\215\\225-v1.0.md\"\n?? \"docs/07-\\351\\241\\271\\347\\233\\256\\347\\256\\241\\347\\220\\206/\\344\\273\\273\\345\\212\\241\\350\\257\\264\\346\\230\\216\\344\\271\\246/\\344\\273\\273\\345\\212\\241\\350\\257\\264\\346\\230\\216\\344\\271\\246-REQ-\\347\\224\\250\\346\\210\\267-001-\\347\\276\\244\\350\\201\\212\\345\\205\\245\\345\\217\\243\\346\\216\\245\\347\\272\\277.md\"\n?? docs_cmp_result.json\n?? docs_cmp_result2.json\n?? docs_cmp_result3.json\n?? docs_repair_b2.py\n?? docs_repair_c.py\n?? docs_repair_del.py\n?? docs_repair_del2.py\n?? docs_repair_refs.py\n?? docs_repair_refs2.py\n?? docs_repair_rmdir.py\n?? docs_repair_rmdir2.py\n?? frontend-h5/d
|
|||
|
|
}
|