Odoo 地址自动定位到底做了什么:base_geolocalize 的经纬度补全、服务调用与失败回退讲透
结合 base_geolocalize 源码,讲清 Odoo 如何把联系人地址组装成查询字符串、如何选择 OpenStreetMap 或 Google、为什么地址一改就清空旧坐标,以及失败时为什么只发提醒不强写坐标。
ARTICLE LIBRARY
持续记录源码理解、业务流程、模块开发经验与踩坑总结。
结合 base_geolocalize 源码,讲清 Odoo 如何把联系人地址组装成查询字符串、如何选择 OpenStreetMap 或 Google、为什么地址一改就清空旧坐标,以及失败时为什么只发提醒不强写坐标。
基于 attachment_indexation 源码,讲清 Odoo 如何从 docx、pptx、xlsx、OpenDocument 与 PDF 中抽取文本,为什么会按 checksum 做缓存,以及提取失败时系统如何优雅回退。
结合 base_sparse_field 源码,讲清 Odoo 为什么不总是为每个动态配置都新建数据库列,以及 sparse 字段怎样借助 serialized 字段完成读写、清空与反射。
基于 Odoo 19 的 ir.ui.view 源码,聚焦很多人比 XPath 更容易忽略的部分:priority、mode=primary、inherit 树组合顺序与访问边界。理解这些,才能真正解释“为什么我的 patch 生效过,又像没生效”。
从 Odoo 19 的 portal 与 sale portal 控制器源码出发,讲清门户列表页并不是“search 一把然后分页”这么简单。domain、pager、session history 与 access token 彼此有边界,自定义时最容易在这里做出越权或漏单问题。
结合 Odoo 19 的 SQL cursor 与 ORM 源码,讲清 savepoint 不只是“局部回滚”,它还牵涉 flush、脏字段、缓存失效和重算时机。懂这个边界,批处理和容错代码才不会越修越脏。