Python 现代开发学习笔记

18-03 检查另一用户的数据

本章题解 · 全部练习

题目

为 Bob 增加一份私人笔记,用 Alice、Bob 分别检索;再从两个 HTTP 身份读取同一显示任务号,核对材料、检查点和计划的归属。

推导与做法

Bob 的私人块携带 owner=bob,过滤发生在取前 k 项之前。Alice 的结果不含这块,Bob 可以检索到。

HTTP 再检查同一显示任务号:Alice 已建立 shared-name 时,Bob 先读得到 404;Bob 自己建立后,两份内部 thread_id 分别带各自身份。批准后 plans 也只返回当前用户的行,不能因显示编号相同而共用检查点或正式计划。

过程图

%% 每个节点保留输入、执行位置或执行后的实际状态。 flowchart TD S0["Bob私人块带owner=bob"] S1["Alice检索前先过滤:不可读到"] S0 --> S1 S2["同显示号保存为alice号与bob号"] S1 --> S2 S3["各自批准后,计划表仍按当前用户读取"] S2 --> S3 classDef default fill:#EEF0FB,stroke:#4657B5,color:#24324A linkStyle default stroke:#4657B5

实现与运行

查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。

在配套目录的 LangChain与AgentRuntime/study_agent 中运行。先按项目 README 执行 uv sync --locked。本章先执行 uv sync --locked --all-extras。18-06 还需执行 uv pip install -e "../../FastAPI/api_project",接入前面 API 声明的依赖;之后使用 --no-sync 保留这份组合环境。

# 使用项目解释器运行本题,题号决定执行哪一组演示。
uv run --no-sync python "../../学习索引/参考实现/代码/ch18.py" 18-03

程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。

查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
{
  "alice_sources": [],
  "bob_sources": [
    "bob-private"
  ],
  "bob_before_own_run": 404,
  "alice_plans": [
    {
      "id": 1,
      "owner": "alice",
      "operation_id": "69cca10daab5414fb35758d418bb2e4a",
      "question": "NumPy 切片怎样避免改动原数组?",
      "minutes": 35
    }
  ],
  "bob_plans": [
    {
      "id": 2,
      "owner": "bob",
      "operation_id": "82c61ed055534ed397b2a3fa75006485",
      "question": "NumPy 切片怎样避免改动原数组?",
      "minutes": 35
    }
  ]
}

笔记正文与全部题解 · Ctrl / ⌘ K