适用 backend/,与根规则同时生效。环境与命令见 README。
app/core/config.py 的 pydantic-settings 与环境文件读取。app/services/,持久化在 app/crud/,模型与 Schema 在 app/models/、app/schemas/;既有 API 内联 Schema 按周边方式维护。app/api/__init__.py 导出并在 app/main.py 注册;保持鉴权、API 加密和请求审计。API_V1_PREFIX 控制,默认 /api;实际模块主要使用 /web/...、/mini/...,以路由定义为准。create_time DESC。id VARCHAR(64) NOT NULL,值为 UUID。id → 业务字段 → tenant_no、order_num、remark、create_by、create_dept_id、create_time、update_by、update_time、del_flag;del_flag 默认 0。del_flag=1;写入租户从当前用户取得。禁止业务物理删除。sys_role_data_scope_detail.scope_type(dept/user)和 scope_value。app/services/web_auth_roles.py、app/core/data_scope.py,不要另造单角色判断。../docs/sql/,区分结构迁移、种子数据与一次性数据修复;有写库行为的 scripts/ 不是普通检查命令。app/crud/child_row_sync.py 的 sync_child_rows 按行保存,已有行保持原 ID。production_step_output_id、protocol_sample_id、donation_sample_id 等外部引用。tenant_no + sample_code,不使用 collection_protocol_id 或 protocol_sample_id 作为跨表匹配键。_row_to_dict 是实体可读字段基准;CreateBody、UpdateBody、前端 formData 必须包含其中所有可写字段。id、tenantNo、createTime、updateTime、stockQty 等服务端或计算字段;租户不能成为客户端可写字段。python backend/scripts/check_field_consistency.py,并按指南核对受影响实体。检查器只覆盖注册实体,不能代替新增实体检查。app/services/workflow_engine.py 与 app/services/oa_engine.py 均有实现;不得将其描述为尚未实现或当作重复文件删除。requirements.txt 保存运行依赖,venv/、.venv/ 是本地环境,不能纳入 Git。测试工具安装在开发环境,不为清理改动覆盖现有环境。