# 项目长期记忆：Inkreach POD 数据库同步

## PG 库连接
- host=localhost, port=5432, user=postgres, password=inkreach, dbname=inkreach
- Python 驱动 psycopg2 装在隔离 venv：`C:/Users/Admin/.workbuddy/binaries/python/envs/default/Scripts/python.exe`

## 国家货盘映射（plates 表 id → 国家）
- 美国 2/3/4/5、墨西哥 6、日本 7、韩国 8、沙特 9、巴西 10、英国 11、加拿大 12、波兰 13、西班牙 14、德国 15、澳洲 16、意大利 17

## SPU/SKU 表结构（SQLite spu_sku.db，字段不可改）
- SPU（25+ 业务字段 + country + mark）：code/material/component_1~3/比例/pattern/details/collar_style/style/care_Instructions/fabric/target_audience/season/is_transparent/layout/weaving_method/printing_type/fabric_texture_1/fabric_weight_1/fabric_weight_unit_1/lining_texture/country/mark
- SPU 固定模板值（不随 PG 变）：pattern=印花、details=无、collar_style=圆领、style=休闲、care_Instructions=数码印花类可机洗且不可干洗、fabric=微弹、target_audience=成人、season=四季、is_transparent=否、layout=常规、weaving_method=针织(含钩织、毛织面料)、printing_type=定位印花、fabric_texture_1=光面、fabric_weight_unit_1=g/㎡、lining_texture=无里料/无内衬、mark=1
- SKU（19 字段）：spu_id/code/price/color/size/size_group/size_type/shoulder_width/bust/clothing_length/sleeve_length/longest_side/secondary_long_side/shortest_side/package_weight/img_url_2~5

## 同步脚本 sync_from_pg.py 规律
- SPU = categories（按 code 去重）；SKU = colors × product_size/ size_chart 尺码（颜色×尺码粒度）
- 业务模板固定值写入 SPU，PG 仅提供 material、component、fabric_weight（从 name 提取克重）、country
- SKU code = colors.code（脏数据兜底为 品类code-颜色名）；color = 清洗后颜色名；price = 该品类 prices 首条；包装尺寸/重量 = product_extra.packaging_spec JSON；尺码表 = product_extra.product_size JSON（缺则回退 size_chart）
- 切换国家：改顶部 `PLATE_IDS` 与 `COUNTRY` 后重跑（会 DELETE 两表再插入）
- 脏颜色 code 处理：clean_color_name() 去尺码前缀；is_clean_code() 判断规范，不规范则 品类code-颜色名 兜底（源库无拉丁编码时 code 含中文属必然）

## 已知数据坑
- 部分品类 colors.code 为脏数据（如 'METB001-S-3XL黑色'、'5000B-黑色'、'SFB-黑色'）→ 兜底补全
- 部分品类无 product_extra（如 SFB/5000B）→ 尺码走 size_chart 回退，包装/重量留空
- 家居类尺码格式不一致（'30*40/76.2*101.6' vs '30*40'）、均码叫法不同（Onesize vs 均码）→ 已加归一化兜底
