# ฐานข้อมูลชิปความจำบอร์ดโทรศัพท์ — ปฐมรีไซเคิล

ไฟล์ชุดนี้ใช้สร้างระบบ "ตรวจชิปบอร์ด" บนเว็บปฐมรีไซเคิล ผู้ใช้พิมพ์รหัสที่พิมพ์อยู่บนชิปความจำ (eMMC, eMCP, UFS, uMCP) แล้วระบบบอกความจุ, RAM, ชนิดชิป และราคารับซื้อบอร์ดโดยประมาณ

ข้อมูล ณ วันที่ 17 ต.ค. 2569 · 3,691 รายการ

## ไฟล์ในชุด

| ไฟล์ | ใช้ทำอะไร |
|---|---|
| `chips.csv` | ตารางชิปทั้งหมด (UTF-8 มี BOM เปิดใน Excel ได้ภาษาไทยไม่เพี้ยน) นำเข้าฐานข้อมูลหลังบ้านได้ตรง ๆ |
| `chips.json` | ข้อมูลชุดเดียวกับ CSV + ราคาเริ่มต้นต่อความจุ + รายการรหัสที่ข้อมูลไม่ตรงกัน |
| `conflicts.csv` | รหัสที่แต่ละแหล่งบอกความจุไม่เท่ากัน ควรแสดงคำเตือนให้ผู้ใช้เช็กในเครื่องก่อนตีราคา |
| `decode-rules.js` | ตัวถอดความจุจากกฎตั้งชื่อของผู้ผลิต ใช้กับรหัสที่ไม่มีในตาราง (JavaScript ใช้ได้ทั้งเบราว์เซอร์และ Node.js) |

## คอลัมน์ใน chips.csv / chips.json

| คอลัมน์ | ความหมาย | ตัวอย่าง |
|---|---|---|
| `code` | รหัสที่ผู้ใช้เห็นบนชิป (Micron ใช้รหัส 5 ตัวบรรทัดที่ 2, ยี่ห้ออื่นใช้เลขชิ้นส่วน) | `JZ386`, `KMDV6001DA-B620` |
| `code_key` | รหัสแบบตัดช่องว่าง ขีด จุด ทับ และเป็นตัวพิมพ์ใหญ่ ใช้เป็นคีย์ค้นหา | `KMDV6001DAB620` |
| `brand` | ยี่ห้อ | Micron, Samsung, SK hynix, Kioxia, SanDisk ฯลฯ |
| `type` | ชนิดชิป: `eMMC`, `eMCP` (eMMC+RAM), `UFS`, `uMCP` (UFS+RAM) ว่าง = ไม่ทราบ | `uMCP` |
| `storage` | ความจุที่เก็บข้อมูล ว่าง = ไม่ทราบ | `128GB` |
| `ram` | RAM ในชิปเดียวกัน (มีเฉพาะ eMCP/uMCP) | `6GB` |
| `part_number` | เลขชิ้นส่วนเต็มจากผู้ผลิต | `MT29VZZZBD91SLSM-046W17X` |
| `storage_interface` | รุ่นมาตรฐาน | `UFS 3.1`, `eMMC 5.1` |
| `ram_type` | ชนิด RAM | `LPDDR4X` |
| `package` | จำนวนขาบอล | `BGA254` |
| `nand_cell` | ชนิดเซลล์ NAND | `TLC` |
| `source` | ที่มาของค่าความจุ (ดูตารางด้านล่าง) | `micron_fbga_decoder` |
| `capacity_known` | `true` ถ้ามีค่าความจุ | |
| `note` | คำเตือนเฉพาะรหัส แสดงให้ผู้ใช้เห็นได้เลย | |
| `market_claims` | สิ่งที่โพสต์ผู้รับซื้อ/ตัวแทนจำหน่ายบอกไว้ คั่นด้วย ` \| ` | `ADB PCB&SCRAP (FB): A++128` |

**ค่าใน `source`**

| ค่า | ความหมาย | ความน่าเชื่อถือ |
|---|---|---|
| `micron_fbga_decoder` | แปลงรหัส 5 ตัวของ Micron เป็นเลขชิ้นส่วนจากตารางของผู้ผลิต | สูง |
| `manufacturer_decoder` | ถอดจากเลขชิ้นส่วนและแคตตาล็อกผู้ผลิต | สูง |
| `distributor` | ตัวแทนจำหน่าย (Preduo, GlobalizeX) เทียบกับตัวถอดรหัสแล้ว | สูง–กลาง |
| `cn_8gb_table` | ตารางชิป 8GB ภาษาจีนที่แชร์ในเฟซบุ๊ก | กลาง |
| `buyer_post` | โพสต์ผู้รับซื้อบอร์ด/ตารางราคาต่างประเทศ ยังไม่ยืนยันจากผู้ผลิต | ต่ำ |

จำนวนตามชนิด: eMMC 1,300 · eMCP 1,249 · UFS 510 · uMCP 410 · ไม่ทราบชนิด 222 (ส่วนใหญ่เป็นรหัส Micron รุ่นเก่าที่ไม่ใช่ชิปมือถือ)

## วิธีค้นหาที่แนะนำ (ลำดับสำคัญ)

1. **ทำรหัสให้เป็นมาตรฐาน:** ตัวพิมพ์ใหญ่ ตัดช่องว่าง `-` `.` `_` `/` ออก ถ้าเป็นรูป `J` + ตัวอักษร + ตัวเลข 1–3 หลัก ให้เติม 0 ข้างหน้าให้ครบ 3 หลัก (`JZ99` → `JZ099`)
2. **ค้นตรงตัว** ที่ `code_key` ถ้าเจอและ `storage` ไม่ว่าง ใช้ค่านั้น
3. **ถ้าไม่เจอ หรือเจอแต่ไม่มีความจุ** เรียก `decodeByRule(รหัสที่ผู้ใช้พิมพ์)` จาก `decode-rules.js` (ต้องเรียก `buildKmMap(chips)` หนึ่งครั้งตอนโหลดข้อมูล) ผลจากกฎให้แสดงป้ายว่า "อ่านจากกฎตั้งชื่อ"
4. **ถ้ายังไม่เจอ** แสดงรายการที่ `code_key` ขึ้นต้นด้วยสิ่งที่พิมพ์ (ไม่เกิน 50 รายการ) ให้ผู้ใช้เลือก
5. ถ้ารหัสอยู่ใน `conflicts.csv` หรือมี `note` ให้แสดงคำเตือนสีส้มใต้ผลลัพธ์

ตัวอย่างใช้กฎ:

```js
const { decodeByRule, buildKmMap } = require("./decode-rules.js");
const data = require("./chips.json");
buildKmMap(data.chips);
decodeByRule("H9HP52ADAMADAR"); // { brand:"SK hynix", type:"eMCP", cap:"64GB", ram:"3GB", ... }
```

## ราคารับซื้อบอร์ด

`chips.json` → `default_board_price_thb` เป็นราคาบอร์ดต่อความจุ (บาท) ค่าเริ่มต้นมาจากโพสต์รับซื้อใน TikTok (8 ส.ค.) **ให้หลังบ้านแก้ราคาได้** และคำนวณราคาจาก `storage` ของชิป เช่น 128GB → 250 บาท ความจุที่เป็น `null` ยังไม่ได้ตั้งราคา

## หมายเหตุสำคัญ

- ความจุในตารางเป็นความจุของชิป ไม่ใช่การรับประกันว่าบอร์ดใช้งานได้ ควรเขียนไว้บนเว็บว่าเป็นราคาประเมิน
- รหัสบางตัวมีหลายแหล่งบอกไม่ตรงกัน (ดู `conflicts.csv`) ระบบเลือกค่าที่แหล่งส่วนใหญ่ตรงกัน
- **เรื่องสิทธิ์ข้อมูล:** ข้อมูลส่วนใหญ่สร้างจากฐานข้อมูลโอเพนซอร์ส iTXTech fdnext (github.com/iTXTech/fdnext) ซึ่งใช้สัญญาอนุญาต AGPL-3.0 ถ้าเผยแพร่บนเว็บสาธารณะ ควรใส่เครดิตและลิงก์ไปยังโปรเจกต์นี้ในหน้าเกี่ยวกับ/แหล่งข้อมูล และถ้าจะใช้เชิงพาณิชย์ควรตรวจเงื่อนไข AGPL เพิ่มเติม ข้อมูลส่วนอื่นมาจากแคตตาล็อกผู้ผลิต (Samsung, Micron, SK hynix, Kioxia), ตัวแทนจำหน่าย (Preduo, GlobalizeX, Puris) และโพสต์ผู้รับซื้อในเฟซบุ๊ก/TikTok

## คำแนะนำสำหรับคนทำหลังบ้าน

- เก็บ `chips.csv` เป็นตาราง `chips` โดยตั้ง `code_key` เป็น index
- ทำหน้าแอดมินให้แก้/เพิ่มชิปได้ และเก็บรหัสที่ผู้ใช้ค้นแล้วไม่เจอไว้ในตาราง `missing_codes` (รหัส, วันที่, จำนวนครั้ง) เพื่อเติมข้อมูลรอบต่อไป
- ฐานข้อมูลทั้งชุดเล็ก (JSON ~1.4MB, บีบอัดแล้วประมาณ 65KB) ส่งไปให้เบราว์เซอร์ค้นเองได้ ทำให้ค้นได้แม้เน็ตไม่ดี
