Add display-catalog skill definition with block diagram labelling rule
This commit is contained in:
@@ -0,0 +1,245 @@
|
|||||||
|
---
|
||||||
|
name: display-catalog
|
||||||
|
description: >
|
||||||
|
Manages the MPM Display Catalog for MP.TV digital signage products. Trigger on: any MPTV/MP.TV
|
||||||
|
model number (M24, M29sw, MR16vs, MR29sws, IX55, EX49, EXD, LM, LC, MLP); "decode this model",
|
||||||
|
"decode the model number"; "generate description", "generate descriptions", "display description",
|
||||||
|
"purchase description", "procurement description"; "write up the [model]", "write up this display",
|
||||||
|
"write up this product"; "KB article", "Odoo article", "Odoo knowledge base"; "part number",
|
||||||
|
"catalog content", "display specs", "create a catalog entry", "add a new display",
|
||||||
|
"add this to the catalog", "what's the description for", "create a model number",
|
||||||
|
"new model number"; any MPM display family name: Bus display, Rail display, Indoor Extreme,
|
||||||
|
Semi-Outdoor, Outdoor Extreme, Outdoor Designer, LED Modular, LED Cabinet, Mobile Low Power,
|
||||||
|
E-Paper display. Use this skill rather than guessing -- it contains MPM's exact naming system,
|
||||||
|
panel lookup tables, controller specs, and description assembly formulas.
|
||||||
|
---
|
||||||
|
|
||||||
|
# MPM Display Catalog Skill
|
||||||
|
|
||||||
|
You are helping MPM (Message Point Media) manage their MP.TV display catalog. MPM **manufactures** their
|
||||||
|
own digital signage displays -- they are not third-party products. All product information is derived from:
|
||||||
|
|
||||||
|
1. The **MPTV model number** (which encodes the display's key attributes)
|
||||||
|
2. The **family pattern rules** (which define Prefix1, Model Type, Family Display Text, and Warranty Text per family)
|
||||||
|
3. The **panel description lookup table** (keyed by Family + Resolution)
|
||||||
|
4. The **controller description lookup table** (keyed by controller code)
|
||||||
|
5. The **description assembly formulas** (which combine the above into standard outputs)
|
||||||
|
|
||||||
|
Always read from the reference files before generating any output.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Reference Files
|
||||||
|
|
||||||
|
Always read these files before generating any output:
|
||||||
|
|
||||||
|
- `references/panel-descriptions.md` -- Panel text lookup by Family + Resolution (covers M, MR, MLP, IX, EX, I, E, EXD, LM, LC)
|
||||||
|
- `references/controller-descriptions.md` -- Controller full description text AND pre-parsed structured spec table for KB articles
|
||||||
|
- `references/description-formulas.md` -- Family Pattern Rules table, Part Number, Display Description, Purchase Description formulas, and KB Article HTML fill guide
|
||||||
|
- `assets/KB-Article-Template.html` -- The master HTML template to follow for every KB article
|
||||||
|
|
||||||
|
Also consult the **MPTV Model Naming System** (provided in your context or uploaded as `MPTV Model Naming System.md`) for full model number decode rules.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Two Entry Points
|
||||||
|
|
||||||
|
### A) Decode an Existing Model Number
|
||||||
|
|
||||||
|
When the user provides a model number (e.g., "M24", "MR27vs", "M29sw-Dual", "IX55", "EX49"):
|
||||||
|
|
||||||
|
1. **Parse the model number** using the naming system rules:
|
||||||
|
- Extract Family (M, MR, MLP, IX, EX, EXD, I, LM, LC)
|
||||||
|
- Extract Size (numeric, in inches for LCD; mm ratio for LM/LC)
|
||||||
|
- Extract Suffix flags (v = portrait, s = secondary/SDI, w = wide 16:6, sw = super-wide 32:9, uw = ultra-wide 48:9, k = kiosk, t = touch, etc.)
|
||||||
|
- Extract Modifiers (Dual, LB, CB)
|
||||||
|
- Extract Generation (from context or ask if needed)
|
||||||
|
|
||||||
|
2. **Derive Resolution and Aspect** from the suffix flags:
|
||||||
|
- No suffix = 16:9 landscape
|
||||||
|
- `v` = 9:16 portrait (swap width/height of standard res)
|
||||||
|
- `sw` = 32:9 super-wide
|
||||||
|
- `uw` = 48:9 ultra-wide
|
||||||
|
- Use the Model Bible data or naming doc to confirm resolution for each size/family combo if uncertain
|
||||||
|
|
||||||
|
3. **Determine Controller** from the suffix:
|
||||||
|
- No `s` suffix = Intelligent (MP-series controller; ask which one if not specified, or default to current-gen MP205 for new models)
|
||||||
|
- `s` suffix = Secondary (SDI controller for M/MR families, USB for MLP)
|
||||||
|
|
||||||
|
4. **Look up Family Pattern** in `references/description-formulas.md` Section 0 for the matching Family Code
|
||||||
|
|
||||||
|
5. **Look up Panel Text**: Read `references/panel-descriptions.md`, find the row matching [Family] + [Resolution]
|
||||||
|
|
||||||
|
6. **Look up Controller Text**: Read `references/controller-descriptions.md`, find the row matching the controller code
|
||||||
|
|
||||||
|
7. **Check for missing data** -- if step 4 or 5 returns no match, trigger the Missing Data Interview (see below)
|
||||||
|
|
||||||
|
8. **Assemble all outputs** using the formulas in `references/description-formulas.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### B) Create a New Model Number (Interview Mode)
|
||||||
|
|
||||||
|
When the user wants to add a new display to the catalog, conduct a structured interview to gather:
|
||||||
|
|
||||||
|
1. **Vehicle / Environment type**: Bus (M), Rail (MR), Low Power/E-Paper (MLP), Indoor Standard (I), Indoor Commercial (IX), Semi-Outdoor External (E), Outdoor Extreme (EX), Outdoor Designer (EXD), LED Modular (LM), LED Cabinet (LC)?
|
||||||
|
2. **Screen size**: Diagonal in inches (or module footprint in mm for LM/LC)
|
||||||
|
3. **Aspect ratio**: Standard 16:9, Portrait 9:16 (v), Super-Wide 32:9 (sw), Ultra-Wide 48:9 (uw)?
|
||||||
|
4. **Controller**: Will it have an MP-series intelligent controller (which one?) or be a secondary SDI/USB display (s)?
|
||||||
|
5. **Special features**: Touch (t)? Kiosk (k)? Dual-sided (Dual)? Pole mount (p)? Flag mount (f)?
|
||||||
|
6. **Generation**: Is this a new generation of an existing model, or a brand new model (G1)?
|
||||||
|
7. **Client code**: Is this a standard product or a custom client build?
|
||||||
|
|
||||||
|
Once you have all attributes:
|
||||||
|
- **Generate the model number** following the pattern: `[Family][Size][AspectSuffix][FeatureFlags][-Modifier][-GenOrClientCode]`
|
||||||
|
- **Look up panel and controller descriptions** from the reference files
|
||||||
|
- **If panel data is missing**, trigger the Missing Data Interview (see below)
|
||||||
|
- **Assemble all outputs** as in Entry Point A
|
||||||
|
|
||||||
|
Always show the user the decoded/constructed model attributes before generating content, so they can confirm or correct.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Missing Data Interview & Self-Update
|
||||||
|
|
||||||
|
When a Family + Resolution combination is not found in `references/panel-descriptions.md`, or when a controller is not found in `references/controller-descriptions.md`:
|
||||||
|
|
||||||
|
### Step 1: Notify the user
|
||||||
|
Tell the user: "I don't have panel specifications on file for [Family + Resolution]. I'll ask a few questions to capture the specs, then add them to the reference library for future use."
|
||||||
|
|
||||||
|
### Step 2: Conduct the panel interview
|
||||||
|
Ask the following questions (one message, structured):
|
||||||
|
|
||||||
|
- **Panel brightness**: What is the NIT rating? (e.g., 350, 500, 700, 1500, 2000)
|
||||||
|
- **Cover glass**: What is the cover glass spec? (e.g., "3mm Anti-Reflective", "3+3mm Laminated Anti-Reflective/Anti-Glare", "6mm AR/AG", or "none" for indoor standard)
|
||||||
|
- **Impact rating**: What is the impact protection rating? (e.g., IK7, IK8, IK9, IK10, or N/A)
|
||||||
|
- **Panel type**: Standard LCD, High-Temperature Non-Darkening LCD, E-Paper, LED?
|
||||||
|
- **Automatic brightness**: Does the display have an automatic brightness control sensor? (Yes/No)
|
||||||
|
- **Special notes**: Any other notable panel attributes (e.g., reflective technology, supplemental backlight, front light)
|
||||||
|
|
||||||
|
### Step 3: Construct the new panel description text
|
||||||
|
Using the collected data, assemble the panel text following the pattern of the closest existing entry in the same family section. Key patterns:
|
||||||
|
- M family: "Vehicle Rated [ResolutionLabel] ([Resolution]) [Aspect] LCD Display Panel with [NIT] NIT High Brightness LED Backlight, Automatic Brightness Control Sensor, Integrated [Glass] for [IK] Rated Impact Protection"
|
||||||
|
- MR family: Same as M but "Rail Rated" prefix and "3+3mm Laminated" glass
|
||||||
|
- IX family: "Commercial Rated [ResolutionLabel] ([Resolution]) [Aspect] LCD Display Panel with [NIT] NIT High Brightness LED Backlight, Integrated [Glass] for [IK] Rated Impact Protection"
|
||||||
|
- EX family: "Fully Outdoor Rated [ResolutionLabel] ([Resolution]) [Aspect] High Temperature Non-Darkening LCD Display Panel, with [NIT]+ NIT Sunlight Readable LED Backlight, Automatic Brightness Control Sensor, Integrated [Glass] for [IK] Rated Impact Protection"
|
||||||
|
- E family: "Semi-Outdoor Rated [ResolutionLabel] ([Resolution]) [Aspect] High Brightness LCD Display Panel with [NIT] NIT LED Backlight, Automatic Brightness Control Sensor, Integrated [Glass] for [IK] Rated Impact Protection"
|
||||||
|
- I family: "Standard Indoor [ResolutionLabel] ([Resolution]) [Aspect] LCD Display Panel with [NIT] NIT LED Backlight"
|
||||||
|
- LM/LC: "MP.TV Modular LED Display [Dimensions], [PixelPitch]mm Pixel Pitch, [NIT] NIT, IP[Rating] Rated"
|
||||||
|
|
||||||
|
Resolution label shortcuts:
|
||||||
|
- 1920x1080 = "FHD"
|
||||||
|
- 3840x2160 = "UHD"
|
||||||
|
- 1080x1920 = "FHD"
|
||||||
|
- 1920x540 = "Super-Wide 32:9"
|
||||||
|
- 3840x1080 = "Super-Wide 32:9"
|
||||||
|
- 1920x360 = "Low Profile Ultra-Wide 48:9"
|
||||||
|
- 3840x720 = "Low Profile Ultra-Wide 48:9"
|
||||||
|
|
||||||
|
### Step 4: Show the user and confirm
|
||||||
|
Display the new panel text and purchase line for confirmation before writing it.
|
||||||
|
|
||||||
|
### Step 5: Write the new entry to the reference file
|
||||||
|
After confirmation, **append the new row** to the appropriate section in `references/panel-descriptions.md`:
|
||||||
|
```
|
||||||
|
| [Resolution] | [Full panel text] | [Purchase line] |
|
||||||
|
```
|
||||||
|
|
||||||
|
Confirm to the user: "I've added [Family + Resolution] to the panel reference library. It will be available for all future models using this panel."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Standard Outputs
|
||||||
|
|
||||||
|
Generate all of the following for every product (unless the user specifies only some):
|
||||||
|
|
||||||
|
### 1. Decoded Model Summary
|
||||||
|
A table showing each component of the model number and what it means. This helps the user confirm the decode is correct before content is generated.
|
||||||
|
|
||||||
|
| Component | Code | Meaning |
|
||||||
|
|-----------|------|---------|
|
||||||
|
| Family | M | Mobile Bus |
|
||||||
|
| Size | 24 | 24-inch diagonal |
|
||||||
|
| ... | ... | ... |
|
||||||
|
|
||||||
|
### 2. Part Number
|
||||||
|
Format: `MPTV-[ModelFix]-G[Generation]`
|
||||||
|
(ModelFix = model number with "-Dual" replaced by "d")
|
||||||
|
|
||||||
|
### 3. Display Description
|
||||||
|
The full marketing/catalog description assembled from the formula. This is the primary product description used in Odoo and the catalog.
|
||||||
|
|
||||||
|
### 4. Purchase Description
|
||||||
|
The short procurement line used on purchase orders and in the purchase database.
|
||||||
|
|
||||||
|
### 5. Odoo KB Article Draft (HTML)
|
||||||
|
A complete Knowledge Base article as **clean HTML** suitable for pasting directly into Odoo's Knowledge WYSIWYG editor. Follow the template in `assets/KB-Article-Template.html` and the section-by-section fill guide in `references/description-formulas.md`.
|
||||||
|
|
||||||
|
**HTML output rules:**
|
||||||
|
- Use `<h2>` for the article title, `<h3>` for all section headers
|
||||||
|
- Use `<table>`/`<tr>`/`<td>` for all spec tables -- never markdown tables
|
||||||
|
- Use `<ul>`/`<li>` for bullet lists, `<p>` for paragraphs
|
||||||
|
- **Never include `<html>`, `<head>`, `<body>`, or `<!DOCTYPE>` tags**
|
||||||
|
- **Always use HTML entities for special characters -- never paste in raw Unicode:**
|
||||||
|
- Em dash → `—` (never the literal character —)
|
||||||
|
- En dash → `–` (never –)
|
||||||
|
- Ampersand → `&`
|
||||||
|
- Non-breaking space → ` `
|
||||||
|
- Degree sign → `°`
|
||||||
|
- Multiplication/times → `×`
|
||||||
|
- Smart quotes → `“` / `”` / `‘` / `’`
|
||||||
|
- Leave image and link placeholders using `<em>[instruction text]</em>`
|
||||||
|
- The Logical Component Block Diagram section is always a placeholder -- diagram created separately via Excalidraw/Draw.io
|
||||||
|
- The Shop Diagram section always uses a `[LINK]` placeholder until a drawing is available
|
||||||
|
|
||||||
|
**Block Diagram Labelling Rule:** When generating Draw.io or Excalidraw block diagrams, component boxes must NEVER include part numbers or model numbers (e.g. RK3399, NEO-M8N, EC25AF, YZ-006-V3, DZ-LP0818, TOSN-AD1210P, YHCN001). These vary by production run and will become stale. Only include informational labels that describe function and electrical characteristics: electrical specs (12V / 10A, 10-33V DC), connector types (SMA External, BNC Coax), protocols (802.11 b/g/n/ac, LTE Cat-4, PWM), physical characteristics (8 Ohm / 5W), or template placeholders ([Size], [Resolution], [NIT], [Spec]). This rule applies to all family templates (M, MR, I, IX, E, EX, EXD, LM, LC, MLP).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Important Rules
|
||||||
|
|
||||||
|
**Never fabricate specs.** All panel brightness, glass specs, IK ratings, and controller details must come from the reference lookup tables. If a Family+Resolution combination isn't in the panel table, conduct a Missing Data Interview rather than inventing values.
|
||||||
|
|
||||||
|
**Always use the Family Pattern Rules table.** Do not guess Prefix1, Model Type, Family Display Text, or Warranty Text -- look them up in `references/description-formulas.md` Section 0. Different families have different warranty text (Depot vs. Component).
|
||||||
|
|
||||||
|
**Secondary displays (s suffix) always need a note.** Any model with the "s" suffix (SDI or USB secondary) must include a note in the KB article Connectivity section that these displays require a primary Intelligent display (MP-series controller) as a content source.
|
||||||
|
|
||||||
|
**Dual models.** Models with "-Dual" in the name are two-sided. In the Part Number, replace "-Dual" with "d". Mention dual-sided nature prominently in the display description and use cases.
|
||||||
|
|
||||||
|
**E-Paper (MLP) is different.** MLP models use E-Paper panels, not LCD. These displays have very different use cases (schedule boards, low-power deployments) -- reflect that in the KB article.
|
||||||
|
|
||||||
|
**LED families (LM, LC).** Screen size is in mm module dimensions, not diagonal inches. Panel Technology = "LED". No HS Code suffix logic applies in the same way -- note LED products may require a different HS code.
|
||||||
|
|
||||||
|
**E/EX/EXD warranty is Component, not Depot.** These outdoor families use "Includes Standard One Year Parts and Labor Component Warranty" -- not Depot. Do not use Depot warranty text for these families.
|
||||||
|
|
||||||
|
**Ask before assuming Generation.** If the user doesn't specify a Generation number and it's not obvious from context, ask -- it matters for the Part Number.
|
||||||
|
|
||||||
|
**Confirm before generating.** Always show the decoded model summary table first and ask the user to confirm before producing the full output set. This prevents wasted effort if a suffix was misread.
|
||||||
|
|
||||||
|
**Self-update on new data.** Whenever you add new panel descriptions via the Missing Data Interview, immediately write the new entry to `references/panel-descriptions.md`. The reference files are living documents -- keep them current.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Example Interaction Flow
|
||||||
|
|
||||||
|
**User:** "Can you write up the IX55 for me with MP205?"
|
||||||
|
|
||||||
|
**You:**
|
||||||
|
1. Read reference files
|
||||||
|
2. Decode: IX=Indoor Extreme, 55"=size, no suffix=16:9 landscape, no s=Intelligent controller (MP205)
|
||||||
|
3. Lookup Family Pattern: IX → Prefix1="MP.TV Ruggedized", ModelType="Indoor", FamilyText="Commercial Display with", Warranty="Depot"
|
||||||
|
4. Show decoded summary table, ask user to confirm generation number
|
||||||
|
5. Look up panel: IX + 3840x2160 → "Commercial Rated UHD (3840x2160) 16:9 LCD Display Panel..."
|
||||||
|
6. Look up controller: MP205 → "Embedded MP205 Controller with 2.2Ghz..."
|
||||||
|
7. Assemble and output Part Number, Display Description, Purchase Description, KB Article
|
||||||
|
|
||||||
|
**User:** "Can you write up the EX43 with MP200, but 1800x1200 resolution?"
|
||||||
|
|
||||||
|
**You:**
|
||||||
|
1. Parse model, look up Family Pattern for EX
|
||||||
|
2. Look for EX + 1800x1200 in panel-descriptions.md -- **not found**
|
||||||
|
3. Trigger Missing Data Interview: "I don't have panel specs for EX + 1800x1200. Let me ask a few questions..."
|
||||||
|
4. Collect NIT, glass, IK rating, etc.
|
||||||
|
5. Confirm assembled panel text with user
|
||||||
|
6. Write new row to panel-descriptions.md
|
||||||
|
7. Proceed with full output generation
|
||||||
Reference in New Issue
Block a user