# Device Mapper Usage

This tool builds a cross-platform lookup index from `workspace/brands/*.md`.

## 1) Build index

```bash
python3 tools/device_mapper.py build
```

Output file: `dist/device_index.json`

## 2) Query from command line

```bash
python3 tools/device_mapper.py find --name 'iPhone14,5' --brand Apple
python3 tools/device_mapper.py find --name 'M2102J2SC' --brand Xiaomi
python3 tools/device_mapper.py find --name 'L55M5-AD' --brand Xiaomi
```

## 3) JSON structure

- `records`: normalized device records
  - `device_name`: standard marketing name
  - `brand`: normalized brand
  - `manufacturer_brand`: manufacturer-level brand
  - `market_brand`: market sub-brand
  - `device_type`: `phone | tablet | wear | tv | computer | other`
  - `aliases`: all searchable aliases
- `lookup`: normalized alias -> candidate `record.id[]`
- `brand_aliases`: normalized brand aliases to filter by app-provided brand
- `brand_management`: brand governance metadata

## 4) App-side integration

1. Load `dist/device_index.json` into memory.
2. Normalize input `name` and optional `brand`.
3. Use `lookup[normalized_name]` to fetch candidate records.
4. Normalize brand via `brand_management`.
5. Filter records by normalized manufacturer or market brand when needed.
6. Return first candidate or all candidates.

Normalization rule:

- lower-case
- keep only `[0-9a-z\u4e00-\u9fff]`
- remove spaces, hyphens, underscores and punctuation

## 5) Device type mapping

Supported categories:

- `phone`
- `tablet`
- `wear`
- `tv`
- `computer`
- `other`
