Replace em-dashes and en-dashes with hyphens across 789 shipped source files (py/xml/js/scss) so the delivered module reads as human-written; em-dashes had become a recognizable AI-generated tell. Internal .md dev notes are excluded. The WO-sticker mojibake strippers keep their dash search targets (now written — / –). No logic changes: comments and display strings only; validated with py_compile + lxml parse. Rewrite the 7 customer notification emails to be intake-neutral (ship-in / drop-off / pickup) and repair-aware, and fix the Shipped email documents line (packing slip vs bill of lading; certificate only when issued). Subjects use a hyphen separator. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
50 lines
2.4 KiB
XML
50 lines
2.4 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright 2026 Nexa Systems Inc.
|
|
License OPL-1 (Odoo Proprietary License v1.0)
|
|
|
|
Daily cron - nudge supervisor for steps stuck in `paused` state
|
|
longer than 24 hours. Schedules a mail.activity on the parent job
|
|
so the manager sees a TODO. Idempotent - re-running the same day
|
|
won't double-schedule.
|
|
-->
|
|
<odoo noupdate="1">
|
|
<record id="ir_cron_nudge_stale_paused_steps" model="ir.cron">
|
|
<field name="name">Fusion Plating: Nudge stale paused steps</field>
|
|
<field name="model_id" ref="fusion_plating.model_fp_job_step"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_nudge_stale_paused(threshold_hours=24)</field>
|
|
<field name="interval_number">1</field>
|
|
<field name="interval_type">days</field>
|
|
<field name="active" eval="True"/>
|
|
</record>
|
|
|
|
<!-- Twin cron for in_progress steps. Lower threshold (8h) because
|
|
an in_progress step has an open timelog row accumulating
|
|
phantom hours every minute it sits idle. -->
|
|
<record id="ir_cron_nudge_stale_in_progress_steps" model="ir.cron">
|
|
<field name="name">Fusion Plating: Nudge stale in-progress steps</field>
|
|
<field name="model_id" ref="fusion_plating.model_fp_job_step"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_nudge_stale_in_progress(threshold_hours=8)</field>
|
|
<field name="interval_number">1</field>
|
|
<field name="interval_type">hours</field>
|
|
<field name="active" eval="True"/>
|
|
</record>
|
|
|
|
<!-- Phase 2 tablet redesign - actual auto-pause (not just nudge).
|
|
Flips in_progress steps idle > N hours to paused with chatter
|
|
audit. Threshold configurable via ir.config_parameter
|
|
`fp.shopfloor.autopause_threshold_hours` (default 8.0). Recipe
|
|
nodes can opt out via long_running=True (e.g. 24h bakes). -->
|
|
<record id="ir_cron_autopause_stale_steps" model="ir.cron">
|
|
<field name="name">Fusion Plating: Auto-pause stale in-progress steps</field>
|
|
<field name="model_id" ref="fusion_plating.model_fp_job_step"/>
|
|
<field name="state">code</field>
|
|
<field name="code">model._cron_autopause_stale_steps()</field>
|
|
<field name="interval_number">30</field>
|
|
<field name="interval_type">minutes</field>
|
|
<field name="active" eval="True"/>
|
|
</record>
|
|
</odoo>
|