Files
AgentLab/backend/requirements.lock
T
ThearchyHelios 050bea4b72 可点击证据第五期:老工作流一键升级为可追溯结构;受管问数据图的 cells 一键选;pytest 并行
一、一键升级(只给预览,不自动保存)

- engine/upgrade.py:确定性改写,纯函数、重复执行结果不变
  - R1 契约的叙述指向模型调用节点 → 换成报告撰写节点(system 和 prompt 合成写作要求,模型配置照搬),契约改成 report_from
  - R2 没有契约、但模型写的文字进了出口,而且上游有取数 → 同样换成报告撰写
  - R3 input → 智能体 → 出口(问数据的典型图)→ 中间插入报告撰写节点,出口字段接报告的正文;
    只改直接相连的出口,经过别的节点读它的出口原样保留并写明原因
  - R4 配了 output_schema 的智能体 → 打开 cite_fields
  - R5 代码节点的产出被口径卡读 → 不改,只建议标成取数,等人确认
  - 一个叙述里混了几个写作者的,不猜,整步不做并写明原因
- POST /api/copilot/upgrade-evidence:返回改动、说明和改完的检查结果;assist 时再交给 Copilot 把纯算术的代码节点
  改写成口径卡表达式,不是纯算术的保留并给警告
- 升级和发布前修复走同一道「不许降低要求」的检查,只多两个由升级点名的例外:模型调用换成报告撰写、R3 改接的那条连线;
  改完不能更糟
- 校验对符合 R1–R4 的旧结构给一条建议「可以升级为可追溯结构」,不算提示、不挡发布
- Copilot 自查:报告撰写节点上游没有任何能引用数字的来源时打回

二、界面

- 问题面板的快速修复「升级为可追溯结构(预览改动)」:逐项写「节点 · 字段:原值 → 新值」,节点类型的变化写成
  「模型调用 → 报告撰写」,新插的节点和改接的连线另外写明;「应用」后走现有的保存,全图默认不丢
- 画布改过、存失败、画布被锁都有明确状态;保存失败后手动存成功会清掉「没存上」的提示,
  画布和预览对不上时「重试保存」不再盲存;校验接口失败时升级块照样在
- 记录页里没有逐段证据的运行给横幅「这次的报告没有逐段证据 → 升级这张图」,跳到编排页并打开升级预览
- 修掉一处旧缺陷:应用修复时只换配置、不换节点类型,模型调用换成报告撰写后存下去的还是模型调用

三、受管门禁:cells 一键选

- 图里没有口径卡、契约又没写 cells: true 的受管图,以前能过门禁、正式运行却每次失败;现在门禁拦下,
  发布弹窗给两个选项:写 cells: true,或交给 Copilot 改成口径卡指标(人亲手选的不算替人打开,Copilot 自己打开照样拦)
- 「修完要更好」的复核不再把改完才冒出来、只能由人拍板的这一处算作改坏:Copilot 补上契约、把 cells 留给人问,
  这一步会被采用,不再被判「冒出新的问题」作废

四、测试

- 开发依赖加上 pytest-xdist(锁文件只多了 pytest-xdist 和 execnet):全量后端测试 -n auto 约 16 秒,原来串行约 2 分钟
- 修掉并行下暴露的一处测试竞态:运行先落终态、再另一个事务封存,测试改成等封存完成再核对
2026-09-29 13:27:27 +08:00

337 lines
7.1 KiB
Plaintext

# This file was autogenerated by uv via the following command:
# ./scripts/lock-deps.sh
aiomysql==0.3.2
# via agentlab-backend (pyproject.toml)
aiosqlite==0.22.1
# via
# agentlab-backend (pyproject.toml)
# langgraph-checkpoint-sqlite
annotated-doc==0.0.5
# via fastapi
annotated-types==0.8.0
# via pydantic
anthropic==1.5.0
# via langchain-anthropic
anyio==4.15.1
# via
# anthropic
# httpx
# httpx2
# langsmith
# mcp
# openai
# sse-starlette
# starlette
# watchfiles
asyncpg==0.31.0
# via agentlab-backend (pyproject.toml)
attrs==26.1.0
# via
# jsonschema
# referencing
beautifulsoup4==4.15.0
# via agentlab-backend (pyproject.toml)
certifi==2026.7.22
# via
# httpcore
# httpx
# langchain-openai
# requests
cffi==2.1.1 ; platform_python_implementation != 'PyPy'
# via cryptography
charset-normalizer==3.5.1
# via requests
click==8.5.0
# via uvicorn
colorama==0.4.6 ; sys_platform == 'win32'
# via pytest
cryptography==50.0.1
# via
# agentlab-backend (pyproject.toml)
# oracledb
# pyjwt
distro==1.9.0
# via langsmith
docstring-parser==0.18.0
# via anthropic
et-xmlfile==2.0.0
# via openpyxl
execnet==2.1.2
# via pytest-xdist
fastapi==0.141.1
# via agentlab-backend (pyproject.toml)
greenlet==3.5.5
# via
# agentlab-backend (pyproject.toml)
# sqlalchemy
h11==0.16.0
# via
# httpcore
# httpcore2
# uvicorn
httpcore==1.0.9
# via httpx
httpcore2==2.12.0 ; sys_platform != 'emscripten'
# via httpx2
httptools==0.8.0
# via uvicorn
httpx==0.28.1
# via
# agentlab-backend (pyproject.toml)
# langchain-core
# langgraph-sdk
# mcp
httpx-sse==0.4.3
# via mcp
httpx2==2.12.0
# via
# anthropic
# langsmith
# openai
httpx2-jsfetch==1.0 ; sys_platform == 'emscripten'
# via httpx2
idna==3.19
# via
# anyio
# httpx
# httpx2
# requests
iniconfig==2.3.0
# via pytest
jiter==0.17.0
# via
# anthropic
# openai
jsonpatch==1.33
# via langchain-core
jsonpointer==3.1.1
# via jsonpatch
jsonschema==4.26.0
# via
# agentlab-backend (pyproject.toml)
# mcp
jsonschema-specifications==2025.9.1
# via jsonschema
langchain-anthropic==1.7.2
# via agentlab-backend (pyproject.toml)
langchain-core==1.6.3
# via
# agentlab-backend (pyproject.toml)
# langchain-anthropic
# langchain-mcp-adapters
# langchain-openai
# langgraph
# langgraph-checkpoint
# langgraph-prebuilt
# langgraph-sdk
langchain-mcp-adapters==0.3.2
# via agentlab-backend (pyproject.toml)
langchain-openai==1.6.2
# via agentlab-backend (pyproject.toml)
langchain-protocol==0.0.19
# via
# langchain-core
# langgraph-sdk
langgraph==1.2.11
# via agentlab-backend (pyproject.toml)
langgraph-checkpoint==4.2.0
# via
# langgraph
# langgraph-checkpoint-sqlite
# langgraph-prebuilt
langgraph-checkpoint-sqlite==3.1.1
# via agentlab-backend (pyproject.toml)
langgraph-prebuilt==1.1.0
# via langgraph
langgraph-sdk==0.4.4
# via langgraph
langsmith==0.12.4
# via langchain-core
lxml==6.1.3
# via
# python-docx
# python-pptx
mcp==1.30.0
# via
# agentlab-backend (pyproject.toml)
# langchain-mcp-adapters
microsandbox==0.6.18
# via agentlab-backend (pyproject.toml)
numpy==2.5.3
# via agentlab-backend (pyproject.toml)
openai==3.13.0
# via langchain-openai
openpyxl==3.1.5
# via agentlab-backend (pyproject.toml)
oracledb==26.0.0
# via agentlab-backend (pyproject.toml)
orjson==3.12.0
# via
# langgraph-sdk
# langsmith
ormsgpack==1.12.2
# via langgraph-checkpoint
packaging==26.3
# via
# langchain-core
# langsmith
# pytest
pillow==12.3.0
# via python-pptx
pluggy==1.6.0
# via pytest
pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy'
# via cffi
pydantic==2.13.5
# via
# agentlab-backend (pyproject.toml)
# anthropic
# fastapi
# langchain-anthropic
# langchain-core
# langgraph
# langsmith
# mcp
# openai
# pydantic-settings
pydantic-core==2.46.5
# via pydantic
pydantic-settings==2.15.0
# via
# agentlab-backend (pyproject.toml)
# mcp
pygments==2.21.0
# via pytest
pyjwt==2.14.0
# via mcp
pymysql==1.2.0
# via aiomysql
pypdf==6.19.0
# via agentlab-backend (pyproject.toml)
pytest==9.1.1
# via
# agentlab-backend (pyproject.toml)
# pytest-asyncio
# pytest-xdist
pytest-asyncio==1.4.0
# via agentlab-backend (pyproject.toml)
pytest-xdist==3.8.0
# via agentlab-backend (pyproject.toml)
python-docx==1.2.0
# via agentlab-backend (pyproject.toml)
python-dotenv==1.2.3
# via
# pydantic-settings
# uvicorn
python-multipart==0.0.32
# via
# agentlab-backend (pyproject.toml)
# mcp
python-pptx==1.0.2
# via agentlab-backend (pyproject.toml)
pywin32==312 ; sys_platform == 'win32'
# via mcp
pyyaml==6.0.3
# via
# langchain-core
# uvicorn
referencing==0.37.0
# via
# jsonschema
# jsonschema-specifications
regex==2026.9.10
# via tiktoken
requests==2.34.2
# via
# langsmith
# requests-toolbelt
# tiktoken
requests-toolbelt==1.0.0
# via langsmith
rpds-py==2026.6.3
# via
# jsonschema
# referencing
sniffio==1.3.1
# via
# anthropic
# langsmith
# openai
soupsieve==2.9.2
# via beautifulsoup4
sqlalchemy==2.0.52
# via agentlab-backend (pyproject.toml)
sqlite-vec==0.1.9
# via langgraph-checkpoint-sqlite
sse-starlette==3.4.11
# via mcp
starlette==1.6.0
# via
# fastapi
# mcp
# sse-starlette
tenacity==9.1.4
# via langchain-core
tiktoken==0.14.0
# via langchain-openai
truststore==0.10.4 ; sys_platform != 'emscripten'
# via
# httpcore2
# httpx2
typing-extensions==4.16.0
# via
# anthropic
# anyio
# beautifulsoup4
# fastapi
# httpx2
# langchain-core
# langchain-mcp-adapters
# langchain-protocol
# langsmith
# mcp
# openai
# oracledb
# pydantic
# pydantic-core
# pytest-asyncio
# python-docx
# python-pptx
# referencing
# sqlalchemy
# starlette
# typing-inspection
typing-inspection==0.4.4
# via
# fastapi
# mcp
# pydantic
# pydantic-settings
urllib3==2.7.0
# via requests
uuid-utils==0.17.1
# via
# langchain-core
# langsmith
uvicorn==0.52.4
# via
# agentlab-backend (pyproject.toml)
# mcp
uvloop==0.22.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'
# via uvicorn
watchfiles==1.2.0
# via uvicorn
websockets==16.1.1
# via
# langgraph-sdk
# langsmith
# uvicorn
xlsxwriter==3.2.9
# via python-pptx
xxhash==4.0.1
# via
# langgraph
# langsmith
zstandard==0.25.0
# via langsmith