chore(plating): de-dash shipped code + intake-neutral customer emails

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>
This commit is contained in:
gsinghpal
2026-06-05 00:16:19 -04:00
parent c9eb61ee0c
commit 8c76a16366
789 changed files with 4692 additions and 4692 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2026 Nexa Systems Inc. DEMO DATA (temporary)
Copyright 2026 Nexa Systems Inc. - DEMO DATA (temporary)
Remove this file and its manifest entry before production release.
-->
<odoo noupdate="1">
@@ -13,7 +13,7 @@
<field name="state">containment</field>
<field name="source">inspection</field>
<field name="severity">high</field>
<field name="part_ref">P/N 4422-B Hydraulic Cylinder Rod</field>
<field name="part_ref">P/N 4422-B - Hydraulic Cylinder Rod</field>
<field name="reported_date" eval="(DateTime.today() - timedelta(days=5)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="description" type="html"><p>EN deposit thickness below spec on OD of part. Spec calls for 0.0005" ± 0.0001", measured 0.0003" average across 4 readings. Bath temperature was at low end of range (185°F vs 188°F target). Possible root cause: heater element degradation.</p></field>
<field name="quantity_affected">12</field>
@@ -26,7 +26,7 @@
<field name="state">open</field>
<field name="source">customer</field>
<field name="severity">critical</field>
<field name="part_ref">P/N 7810-A Landing Gear Pin</field>
<field name="part_ref">P/N 7810-A - Landing Gear Pin</field>
<field name="reported_date" eval="(DateTime.today() - timedelta(days=2)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="description" type="html"><p>Customer reported micro-cracking on hard chrome deposit. Parts returned for investigation. Lot of 6 pins from WO-2026-0412. Immediate containment: quarantine remaining stock from same bath run.</p></field>
<field name="quantity_affected">6</field>
@@ -38,12 +38,12 @@
<field name="state">closed</field>
<field name="source">shop_floor</field>
<field name="severity">low</field>
<field name="part_ref">P/N 1133-C Bracket Assembly</field>
<field name="part_ref">P/N 1133-C - Bracket Assembly</field>
<field name="reported_date" eval="(DateTime.today() - timedelta(days=30)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="closed_date" eval="(DateTime.today() - timedelta(days=20)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="description" type="html"><p>Minor cosmetic discolouration on black oxide finish. Traced to elevated bath temperature (147°C vs 141°C target). Thermostat recalibrated. Parts accepted by customer with concession.</p></field>
<field name="root_cause" type="html"><p>Thermostat drift on BOX-01 tank heater. Last calibration was 14 months ago (overdue).</p></field>
<field name="containment" type="html"><p>Segregated affected lot. Verified all parts visually. 4 of 20 showed discolouration reworked.</p></field>
<field name="containment" type="html"><p>Segregated affected lot. Verified all parts visually. 4 of 20 showed discolouration - reworked.</p></field>
<field name="disposition">rework</field>
<field name="quantity_affected">20</field>
</record>
@@ -57,7 +57,7 @@
<field name="state">implementation</field>
<field name="due_date" eval="(DateTime.today() + timedelta(days=15)).strftime('%Y-%m-%d')"/>
<field name="description" type="html"><p>Corrective action for NCR-2026-003: black oxide thermostat drift causing out-of-spec bath temperature.</p></field>
<field name="root_cause_analysis" type="html"><p>Root cause: calibration interval for tank heater thermostats was set to 18 months. Industry best practice for hot-process tanks is 612 months. Maintenance PM schedule did not flag the overdue calibration.</p></field>
<field name="root_cause_analysis" type="html"><p>Root cause: calibration interval for tank heater thermostats was set to 18 months. Industry best practice for hot-process tanks is 6-12 months. Maintenance PM schedule did not flag the overdue calibration.</p></field>
<field name="action_plan" type="html"><p>1. Reduce calibration interval for all hot-process thermostats to 6 months.<br/>2. Add calibration due-date alerts to the maintenance dashboard.<br/>3. Retrain maintenance team on calibration SOP revision.<br/>4. Verify all other hot-process tank thermostats within 30 days.</p></field>
</record>
@@ -72,7 +72,7 @@
<!-- ========== CALIBRATION EQUIPMENT ========== -->
<record id="demo_cal_thickness" model="fusion.plating.calibration.equipment">
<field name="name">XRF Thickness Gauge Fischer XDL-B</field>
<field name="name">XRF Thickness Gauge - Fischer XDL-B</field>
<field name="code">CAL-XRF-01</field>
<field name="facility_id" ref="fusion_plating.demo_facility_main"/>
<field name="equipment_type">xrf</field>
@@ -83,7 +83,7 @@
</record>
<record id="demo_cal_ph" model="fusion.plating.calibration.equipment">
<field name="name">pH Meter Hanna HI-2020</field>
<field name="name">pH Meter - Hanna HI-2020</field>
<field name="code">CAL-PH-01</field>
<field name="facility_id" ref="fusion_plating.demo_facility_main"/>
<field name="equipment_type">ph_meter</field>
@@ -94,7 +94,7 @@
</record>
<record id="demo_cal_temp" model="fusion.plating.calibration.equipment">
<field name="name">Thermocouple Probe Fluke 52 II</field>
<field name="name">Thermocouple Probe - Fluke 52 II</field>
<field name="code">CAL-TC-01</field>
<field name="facility_id" ref="fusion_plating.demo_facility_main"/>
<field name="equipment_type">thermocouple</field>
@@ -106,7 +106,7 @@
<!-- ========== DOC CONTROL ========== -->
<record id="demo_doc_sop_en" model="fusion.plating.doc.control">
<field name="name">SOP-EN-001 Electroless Nickel Plating Procedure</field>
<field name="name">SOP-EN-001 - Electroless Nickel Plating Procedure</field>
<field name="doc_type">procedure</field>
<field name="revision">Rev C</field>
<field name="state">effective</field>
@@ -115,7 +115,7 @@
</record>
<record id="demo_doc_sop_cr" model="fusion.plating.doc.control">
<field name="name">SOP-CR-001 Hard Chrome Plating Procedure</field>
<field name="name">SOP-CR-001 - Hard Chrome Plating Procedure</field>
<field name="doc_type">procedure</field>
<field name="revision">Rev B</field>
<field name="state">effective</field>
@@ -124,7 +124,7 @@
</record>
<record id="demo_doc_qm" model="fusion.plating.doc.control">
<field name="name">QM-001 Quality Manual</field>
<field name="name">QM-001 - Quality Manual</field>
<field name="doc_type">manual</field>
<field name="revision">Rev 5</field>
<field name="state">effective</field>

View File

@@ -19,7 +19,7 @@
<field name="company_id" eval="False"/>
</record>
<!-- ===== Default checklist template (global partner_id blank) =====
<!-- ===== Default checklist template (global - partner_id blank) =====
sequence=5 so it wins over any other global template when
resolve_for_partner falls back from a missing per-customer match. -->
<record id="qc_template_default" model="fp.qc.checklist.template">
@@ -34,7 +34,7 @@
<record id="qc_tpl_line_visual" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_default"/>
<field name="sequence">10</field>
<field name="name">Visual no pits, burns, or bare spots</field>
<field name="name">Visual - no pits, burns, or bare spots</field>
<field name="description">Examine the entire plated surface under shop lighting. Look for pits, burns, dewetting, bare spots, or rough texture. Reject if any defect is visible to the naked eye.</field>
<field name="check_type">visual</field>
<field name="required">True</field>
@@ -43,7 +43,7 @@
<record id="qc_tpl_line_colour" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_default"/>
<field name="sequence">20</field>
<field name="name">Colour uniform finish across part</field>
<field name="name">Colour - uniform finish across part</field>
<field name="description">Finish should be uniform with no streaking, blotching, or dull-vs-bright zones. Compare against the customer colour sample if one is on file.</field>
<field name="check_type">visual</field>
<field name="required">True</field>
@@ -52,7 +52,7 @@
<record id="qc_tpl_line_adhesion" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_default"/>
<field name="sequence">30</field>
<field name="name">Adhesion tape test pass</field>
<field name="name">Adhesion - tape test pass</field>
<field name="description">Apply tape to an inconspicuous area, press firmly for 3 seconds, pull at 90°. No flaking permitted.</field>
<field name="check_type">adhesion</field>
<field name="required">True</field>
@@ -61,7 +61,7 @@
<record id="qc_tpl_line_masking" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_default"/>
<field name="sequence">40</field>
<field name="name">Masking no plating in masked zones</field>
<field name="name">Masking - no plating in masked zones</field>
<field name="description">Areas that were masked per customer print must be free of plating deposit. Light staining acceptable; build-up is not.</field>
<field name="check_type">visual</field>
<field name="required">True</field>
@@ -70,7 +70,7 @@
<record id="qc_tpl_line_quantity" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_default"/>
<field name="sequence">50</field>
<field name="name">Quantity matches WO count</field>
<field name="name">Quantity - matches WO count</field>
<field name="description">Count the parts. Must equal the WO quantity minus any documented rework/scrap.</field>
<field name="check_type">functional</field>
<field name="required">True</field>
@@ -79,13 +79,13 @@
<record id="qc_tpl_line_packaging" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_default"/>
<field name="sequence">60</field>
<field name="name">Packaging parts protected for shipping</field>
<field name="name">Packaging - parts protected for shipping</field>
<field name="description">Parts individually bagged / padded, no direct metal-on-metal contact that could scratch the finish in transit.</field>
<field name="check_type">visual</field>
<field name="required">False</field>
</record>
<!-- ===== Aerospace checklist (stricter used as a starter for
<!-- ===== Aerospace checklist (stricter - used as a starter for
Nadcap customers; admin copies and reassigns to partner) ===== -->
<record id="qc_template_aerospace" model="fp.qc.checklist.template">
<field name="name">Aerospace / Nadcap QC</field>
@@ -99,7 +99,7 @@
<record id="qc_tpl_aero_visual" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_aerospace"/>
<field name="sequence">10</field>
<field name="name">Visual 10× loupe, no discontinuities</field>
<field name="name">Visual - 10× loupe, no discontinuities</field>
<field name="description">Inspect under 10× magnification. Reject any pit, crack, inclusion, or discontinuity visible at that power.</field>
<field name="check_type">visual</field>
<field name="required">True</field>
@@ -109,7 +109,7 @@
<record id="qc_tpl_aero_thickness_1" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_aerospace"/>
<field name="sequence">20</field>
<field name="name">Thickness Fischerscope reading #1</field>
<field name="name">Thickness - Fischerscope reading #1</field>
<field name="description">Fischerscope XDAL 600 XRF measurement at primary inspection point. Value must fall inside the customer spec range. Record the NiP mils reading.</field>
<field name="check_type">thickness</field>
<field name="required">True</field>
@@ -120,8 +120,8 @@
<record id="qc_tpl_aero_thickness_2" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_aerospace"/>
<field name="sequence">30</field>
<field name="name">Thickness Fischerscope reading #2</field>
<field name="description">Second XRF point per customer print's secondary inspection location.</field>
<field name="name">Thickness - Fischerscope reading #2</field>
<field name="description">Second XRF point - per customer print's secondary inspection location.</field>
<field name="check_type">thickness</field>
<field name="required">True</field>
<field name="requires_value">True</field>
@@ -131,8 +131,8 @@
<record id="qc_tpl_aero_thickness_3" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_aerospace"/>
<field name="sequence">40</field>
<field name="name">Thickness Fischerscope reading #3</field>
<field name="description">Third XRF point per customer print's tertiary inspection location.</field>
<field name="name">Thickness - Fischerscope reading #3</field>
<field name="description">Third XRF point - per customer print's tertiary inspection location.</field>
<field name="check_type">thickness</field>
<field name="required">True</field>
<field name="requires_value">True</field>
@@ -142,7 +142,7 @@
<record id="qc_tpl_aero_adhesion" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_aerospace"/>
<field name="sequence">50</field>
<field name="name">Adhesion ASTM B571 tape test</field>
<field name="name">Adhesion - ASTM B571 tape test</field>
<field name="description">Apply ASTM B571 tape to freshly-scribed area, remove at 90° per standard. No flaking of plating permitted.</field>
<field name="check_type">adhesion</field>
<field name="required">True</field>
@@ -151,7 +151,7 @@
<record id="qc_tpl_aero_dimensional" model="fp.qc.checklist.template.line">
<field name="template_id" ref="qc_template_aerospace"/>
<field name="sequence">60</field>
<field name="name">Dimensional critical feature verification</field>
<field name="name">Dimensional - critical feature verification</field>
<field name="description">Caliper / mic any feature marked critical on the customer print. Confirm plating did not push dimensions out of tolerance.</field>
<field name="check_type">dimensional</field>
<field name="required">True</field>

View File

@@ -4,7 +4,7 @@
License OPL-1 (Odoo Proprietary License v1.0)
Part of the Fusion Plating product family.
Sub 12 Phase B seed data for the kanban stage namespace + a small
Sub 12 Phase B - seed data for the kanban stage namespace + a small
starter set of tags, reasons, and one default quality team. All are
`noupdate=1` so a customer's edits survive module upgrades.
-->