Tracking issue for the larger items in the "make tier definitions easier
to author & verify" effort. The cheap first batch (plain-language
summary, inline help, group-by-model overview, save-time domain lint)
shipped in OCA#48.
Problem
- Authoring is technical. Raw Odoo domains, technical model/field
names, opaque sequence/approve_sequence/approve_sequence_bypass
interactions, no view of how rules combine into an ordered chain.
- Verifying a rule eats time. The only way to confirm behaviour is
the live loop: create a matching record -> request_validation() ->
log in as each reviewer -> approve -> repeat. No preview/dry-run.
Clean, side-effect-free reusable seams already exist:
TierValidation.evaluate_tier() (pure domain match),
the definition-search + sequence loop in request_validation(),
TierReview._get_reviewers(), _can_review_value(),
_compute_need_validation(). comment.wizard is a clean
TransientModel + modal template. base_tier_validation_formula already
adds expression authoring (more technical, not less);
base_tier_validation_board visualises reviews, not definitions.
R1 — Simulation / dry-run engine + preview (recommended: core)
New non-persisting TierValidation._simulate_validation() mirroring the
request_validation() definition-search + evaluate_tier() + sequence
loop, returning a structured chain (per tier: definition, sequence,
review_type, resolved reviewers, would-be pending/waiting status) with
zero writes / message_post / _update_counter / notify*. Surfaced
as a record-level "Preview validation" button and a definition-level
"Test this rule" wizard (pick an existing record or enter field
values). Highest value / lowest risk; good fast follow-up PR.
R2 — Guided rule-creation wizard (recommended: new opt-in module)
New module e.g. base_tier_validation_wizard: plain-language steps
(document -> when -> who -> order) generating the tier.definition
rows. Opinionated, so kept separate; technical admins keep the raw form.
R3 — Visual / no-code flow view (recommended: spike first)
Feasibility:
- Reuse the "product routes" view? No. Odoo's old arrow-flow
diagram view type was removed years ago; stock's route picture is
bespoke, not a reusable generic view.
- Reuse an org-chart? Partially yes. Odoo's native
hierarchy
view (web_hierarchy, the HR org-chart, present in 19) renders cards
with connectors and is the realistic free building block to show an
ordered tier chain (Tier 1 -> Tier 2 -> ..., branching by
review_type). Best applied to the simulation result / per-model
chain.
- n8n-style drag-and-drop editor: large custom OWL component
(canvas, nodes, edges, persistence). Roadmap/stretch only; needs a
dedicated spike + design before any estimate.
Next action: small spike prototyping the hierarchy view over a
simulation/definition chain, then decide placement
(base_tier_validation_board 19.0, or a new module).
R4 — Self-check extensions (recommended: core + formula module)
Overlap/no-op detection across a model's definitions (which rules fire
together, ordering conflicts) and formula-compile validation in
base_tier_validation_formula.
Placement matrix (recommended, open to discussion)
| Item |
Placement |
| summary / help / overview / domain lint (OCA#48) |
core base_tier_validation |
| R1 engine + preview |
core |
| R2 guided wizard |
new opt-in module |
| R3 visual flow |
spike -> board module or new module |
| R4 overlap lint / formula compile |
core + base_tier_validation_formula |
Status
Tracking issue for the larger items in the "make tier definitions easier
to author & verify" effort. The cheap first batch (plain-language
summary, inline help, group-by-model overview, save-time domain lint)
shipped in OCA#48.
Problem
names, opaque
sequence/approve_sequence/approve_sequence_bypassinteractions, no view of how rules combine into an ordered chain.
the live loop: create a matching record ->
request_validation()->log in as each reviewer -> approve -> repeat. No preview/dry-run.
Clean, side-effect-free reusable seams already exist:
TierValidation.evaluate_tier()(pure domain match),the definition-search + sequence loop in
request_validation(),TierReview._get_reviewers(),_can_review_value(),_compute_need_validation().comment.wizardis a cleanTransientModel + modal template.
base_tier_validation_formulaalreadyadds expression authoring (more technical, not less);
base_tier_validation_boardvisualises reviews, not definitions.R1 — Simulation / dry-run engine + preview (recommended: core)
New non-persisting
TierValidation._simulate_validation()mirroring therequest_validation()definition-search +evaluate_tier()+ sequenceloop, returning a structured chain (per tier: definition, sequence,
review_type, resolved reviewers, would-be pending/waiting status) with
zero writes / message_post / _update_counter / notify*. Surfaced
as a record-level "Preview validation" button and a definition-level
"Test this rule" wizard (pick an existing record or enter field
values). Highest value / lowest risk; good fast follow-up PR.
R2 — Guided rule-creation wizard (recommended: new opt-in module)
New module e.g.
base_tier_validation_wizard: plain-language steps(document -> when -> who -> order) generating the
tier.definitionrows. Opinionated, so kept separate; technical admins keep the raw form.
R3 — Visual / no-code flow view (recommended: spike first)
Feasibility:
diagramview type was removed years ago; stock's route picture isbespoke, not a reusable generic view.
hierarchyview (
web_hierarchy, the HR org-chart, present in 19) renders cardswith connectors and is the realistic free building block to show an
ordered tier chain (Tier 1 -> Tier 2 -> ..., branching by
review_type). Best applied to the simulation result / per-modelchain.
(canvas, nodes, edges, persistence). Roadmap/stretch only; needs a
dedicated spike + design before any estimate.
Next action: small spike prototyping the
hierarchyview over asimulation/definition chain, then decide placement
(
base_tier_validation_board19.0, or a new module).R4 — Self-check extensions (recommended: core + formula module)
Overlap/no-op detection across a model's definitions (which rules fire
together, ordering conflicts) and formula-compile validation in
base_tier_validation_formula.Placement matrix (recommended, open to discussion)
Status