跳到主要内容

第 1.8.4 节:把异常、日志、测试和 README 做成交接证据

本节围绕“把异常、日志、测试和 README 做成交接证据”展开,先建立直观判断,再进入工程细节。完成本节后,你应该能够把异常、日志、测试和 README整理成证据材料、复核标准和可展示检查项。

权限、状态和日志​

Python(编程语言)工程底座里的权限、状态和日志不只是安全章节才讲的内容。本章要先建立基本口径。

权限​

权限对象本章处理方式客服工作台例子
配置权限不同 env_profile(环境配置) 使用不同配置开发环境不能误连生产工单系统。
密钥权限代码只使用 secret_ref(密钥引用)开发者不需要知道生产模型 API Key(接口密钥)明文。
工具权限工具客户端执行前依赖上层权限判断普通用户不能查询他人订单。
日志权限日志不记录密钥和敏感原文排查时可看错误类型,不泄露用户隐私。
任务权限高影响任务要标明环境和影响范围资料重建索引不能误跑到生产环境。

状态​

状态对象推荐状态用途
配置状态已加载、缺失、格式错误、密钥不可用启动时快速发现环境问题。
依赖状态已锁定、未锁定、版本冲突、待升级判断问题是否来自依赖变化。
文件任务状态待处理、处理中、成功、失败、可重试、已跳过管理资料解析和索引任务。
工具调用状态待调用、成功、超时、无权限、业务拒绝、异常支撑订单查询和工单创建兜底。
测试状态未运行、通过、失败、跳过交付前知道验证边界。

日志​

日志内容记录什么不记录什么
请求日志trace_id(追踪编号)、project_id(项目编号)、入口、耗时用户完整隐私原文和密钥。
模块日志module_name(模块名称)、task_name(任务名称)、关键状态大量无意义调试噪声。
错误日志error_type(错误类型)、可读错误、是否可重试真实密钥、完整内部凭证。
配置日志env_profile(环境配置)、缺失的 config_key(配置键)配置值中的敏感内容。
测试日志test_entry(测试入口)、通过/失败、验证范围让人误以为未覆盖部分也已验证。

日志的目标是让问题可复盘,不是把所有内容都打印出来。客服工作台尤其要注意:用户隐私、企业内部资料、API Key(接口密钥)和数据库凭证都不能进入普通日志。

失败场景与兜底​

真实项目一定会失败。Python(编程语言)工程底座的价值就在于:失败时系统能给出清楚状态,而不是突然崩掉或沉默。

失败场景表现可能原因兜底策略验收方式
虚拟环境不一致本地运行缺库或版本冲突未使用独立环境或依赖未锁定README(项目说明文件)说明环境要求,保留依赖锁定新环境能按说明复现。
依赖升级破坏接口模型调用或数据校验突然失败SDK(软件开发工具包)或框架版本变化锁定依赖,升级前先跑测试入口能定位到依赖变化。
配置缺失启动失败或模型调用失败缺少 config_key(配置键)启动时检查配置并给出可读错误错误日志包含缺失键,不包含密钥。
密钥失效外部模型或系统返回认证失败secret_ref(密钥引用) 指向失效密钥返回认证错误类型,提醒更新密钥日志不泄露密钥值。
订单系统超时用户查不到订单状态外部 HTTP(超文本传输协议)接口无响应有限重试,失败后转人工或提示稍后不让模型编造订单结果。
文件解析失败知识库资料无法进入索引文件损坏、格式复杂、依赖缺失标记资料失败状态,记录错误和可重试信息失败资料不会进入正式回答。
异步任务部分失败批量任务只成功一部分某些文件或接口失败记录每个子任务状态,允许重试失败项成功和失败范围清楚。
日志缺少追踪编号无法还原用户问题链路入口未生成 trace_id(追踪编号)请求和任务入口统一生成追踪编号任一错误能按追踪编号检索。
测试入口缺失改动后只能手动试没有模块级验证为关键模块补测试入口能单独验证配置、客户端和工具。
README(项目说明文件)过期新成员无法启动项目文档未随工程更新把 README(项目说明文件)列入交付检查文档与当前模块结构一致。

兜底原则很简单:失败可以发生,但失败必须有状态、有日志、有下一步。

不适合展开语法学习的场景​

本章不是说语法不重要,而是说下面这些场景不适合把重点放在语法细节上。

场景为什么不适合讲语法本章应该讲什么
解释客服工作台项目结构语法不能决定模块边界讲模块职责、输入输出、测试入口。
设计配置和密钥重点不是如何读取字符串讲配置键、密钥引用、环境隔离和日志脱敏。
封装模型客户端重点不是请求语法讲超时、重试、错误类型、供应商替换边界。
处理企业资料文件重点不是文件读取方法讲资料状态、解析失败、重试和引用追踪。
引入异步 I/O(输入输出)语法容易掩盖业务顺序讲 I/O(输入输出)密集场景、超时、取消、部分失败和日志。
设计测试入口重点不是测试框架语法讲验证范围、失败样例和交付边界。
写 README(项目说明文件)不是文档格式问题讲项目如何交接、配置、运行和排查。

真正需要系统学 Python(编程语言)语法时,可以单独找语法课程。本章只讲 AI Agent(人工智能体)项目最先用得上的工程能力。

工程检查清单​

  • 是否明确本项目负责的客服工作台范围和不负责的高风险动作?
  • 是否有清晰项目结构,区分应用入口、模型客户端、工具客户端、文件处理、配置、任务、测试和文档?
  • 是否使用独立虚拟环境,避免和其他项目依赖混用?
  • 是否有依赖锁定,并能说明当前验证过的依赖版本组合?
  • 是否区分普通配置、敏感密钥和密钥引用?
  • 是否避免把真实 API Key(接口密钥)、数据库凭证和客户资料写进代码或日志?
  • 是否设计 project_id(项目编号)、module_name(模块名称)、env_profile(环境配置) 和 trace_id(追踪编号)?
  • 是否把模型服务、订单系统、物流系统和工单系统封装成客户端模块?
  • 是否为文件处理设计状态、失败原因和重试策略?
  • 是否只在合适的 I/O(输入输出)密集场景引入异步,并保留错误收集和日志?
  • 是否定义 error_type(错误类型) 和 log_level(日志等级)?
  • 是否为关键模块准备 test_entry(测试入口)?
  • 是否为资料索引、批量导入、健康检查等操作设计 task_name(任务名称)?
  • 是否让 README(项目说明文件)覆盖项目简介、结构、环境、配置、密钥、任务、测试、日志和风险?
  • 是否能向面试官说明 Python(编程语言)在本项目里承担的工程职责,而不是只讲语法?

继续学习​