From 9ebfd004ebd05dd7be27f0dc3a7bd3d001cbccdc Mon Sep 17 00:00:00 2001 From: tangwang Date: Fri, 17 Oct 2025 19:54:18 +0800 Subject: [PATCH] offline tasks: mem optimize --- .gitignore | 3 +++ CONFIG_CHANGES_SUMMARY.md | 213 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- DEBUG_IMPLEMENTATION_SUMMARY.md | 255 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- OFFLINE_TASKS_README.md | 231 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- OFFLINE_TASKS_SUMMARY.md | 290 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SWING_IMPLEMENTATION_SUMMARY.md | 375 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- collaboration/QUICKSTART.md | 70 ---------------------------------------------------------------------- collaboration/Swing快速开始.md | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tables_structure.md | 178 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 9 files changed, 73 insertions(+), 1612 deletions(-) delete mode 100644 CONFIG_CHANGES_SUMMARY.md delete mode 100644 DEBUG_IMPLEMENTATION_SUMMARY.md delete mode 100644 OFFLINE_TASKS_README.md delete mode 100644 OFFLINE_TASKS_SUMMARY.md delete mode 100644 SWING_IMPLEMENTATION_SUMMARY.md delete mode 100644 collaboration/QUICKSTART.md create mode 100644 collaboration/Swing快速开始.md delete mode 100644 tables_structure.md diff --git a/.gitignore b/.gitignore index a1af4fc..838b4df 100644 --- a/.gitignore +++ b/.gitignore @@ -129,3 +129,6 @@ offline_tasks/cache/ *.backup *.bak +output +outputs +output_*/ \ No newline at end of file diff --git a/CONFIG_CHANGES_SUMMARY.md b/CONFIG_CHANGES_SUMMARY.md deleted file mode 100644 index eae943e..0000000 --- a/CONFIG_CHANGES_SUMMARY.md +++ /dev/null @@ -1,213 +0,0 @@ -# 配置优化总结 - -## ✅ 完成的改动 - -### 1. 配置集中化 - -**文件**: `offline_tasks/config/offline_config.py` - -新增默认参数配置: -```python -# 默认参数配置(用于调试和生产) -DEFAULT_LOOKBACK_DAYS = 30 # 默认回看天数(当前为30天,便于快速调试) -DEFAULT_RECENT_DAYS = 7 # 默认最近天数 -DEFAULT_I2I_TOP_N = 50 # 默认返回Top N个相似商品 -DEFAULT_INTEREST_TOP_N = 1000 # 默认每个key返回Top N个商品 -``` - -**好处**: -- ✅ 集中管理所有默认参数 -- ✅ 调试环境使用小数值(30天),快速验证 -- ✅ 生产环境只需修改配置文件一处 -- ✅ 所有脚本自动使用统一配置 - -### 2. 脚本更新 - -更新了所有脚本使用配置文件的默认值: - -| 脚本 | 更新内容 | -|------|---------| -| `i2i_swing.py` | 使用 `DEFAULT_LOOKBACK_DAYS`, `DEFAULT_I2I_TOP_N` | -| `i2i_session_w2v.py` | 使用 `DEFAULT_LOOKBACK_DAYS`, `DEFAULT_I2I_TOP_N` | -| `i2i_deepwalk.py` | 使用 `DEFAULT_LOOKBACK_DAYS`, `DEFAULT_I2I_TOP_N` | -| `i2i_content_similar.py` | 使用 `DEFAULT_I2I_TOP_N` | -| `interest_aggregation.py` | 使用 `DEFAULT_LOOKBACK_DAYS`, `DEFAULT_RECENT_DAYS`, `DEFAULT_INTEREST_TOP_N` | -| `run_all.py` | 使用所有默认配置 | - -### 3. .gitignore 文件 - -**文件**: `/home/tw/recommendation/.gitignore` - -忽略以下内容: -``` -# 数据文件 -*.txt (除了 requirements.txt, COMMANDS.txt) -*.csv -*.json -*.jsonl -*.parquet -*.pkl - -# 输出和临时文件 -output/ -logs/ -models/ -cache/ -tmp/ - -# Python 相关 -__pycache__/ -*.pyc -*.egg-info/ -venv/ - -# IDE 相关 -.vscode/ -.idea/ -.DS_Store -``` - -## 📊 使用对比 - -### 之前(硬编码) - -```bash -# 每次都要手动指定参数 -python3 run_all.py --lookback_days 30 --top_n 50 - -# 不同脚本的默认值不统一,容易混淆 -``` - -### 现在(配置化) - -```bash -# 使用配置文件的默认值(当前30天,调试快速) -python3 run_all.py - -# 临时覆盖(不修改配置文件) -python3 run_all.py --lookback_days 7 - -# 查看当前默认值 -python3 run_all.py --help -# 输出: --lookback_days (default: 30, adjust in offline_config.py) -``` - -## 🎯 调试与生产切换 - -### 当前配置(调试模式) - -```python -# config/offline_config.py -DEFAULT_LOOKBACK_DAYS = 30 # 30天,快速验证 -DEFAULT_RECENT_DAYS = 7 # 7天 -``` - -**运行效果**: -- 数据量小,运行快(30-60分钟) -- 内存占用低(2-4GB) -- 适合验证流程和参数调优 - -### 切换到生产(编辑配置文件) - -```python -# config/offline_config.py -DEFAULT_LOOKBACK_DAYS = 730 # 2年,更准确 -DEFAULT_RECENT_DAYS = 180 # 半年 -``` - -**运行效果**: -- 数据量大,推荐质量高 -- 运行时间长(6-10小时) -- 内存占用高(8-16GB) -- 适合生产环境 - -## 🚀 快速开始 - -### 第一步:快速验证(7天数据) - -```bash -cd /home/tw/recommendation/offline_tasks -python3 run_all.py --lookback_days 7 --top_n 10 -``` - -### 第二步:调试模式(使用默认30天) - -```bash -# 当前配置文件已设置为30天 -python3 run_all.py -``` - -### 第三步:生产模式 - -1. 编辑配置文件: -```bash -vim config/offline_config.py -# 修改: DEFAULT_LOOKBACK_DAYS = 730 -# 修改: DEFAULT_RECENT_DAYS = 180 -``` - -2. 运行: -```bash -python3 run_all.py -``` - -## 📝 新增文档 - -1. **UPDATE_CONFIG_GUIDE.md** - 配置调整详细指南 -2. **.gitignore** - Git忽略规则 - -## 🔍 验证配置 - -```bash -# 查看当前配置 -cd /home/tw/recommendation/offline_tasks -python3 -c "from config.offline_config import *; print(f'LOOKBACK_DAYS: {DEFAULT_LOOKBACK_DAYS}')" - -# 查看帮助 -python3 run_all.py --help -python3 scripts/i2i_swing.py --help -python3 scripts/interest_aggregation.py --help -``` - -## ✨ 主要优势 - -1. **集中管理** - 所有默认参数在一处配置 -2. **调试友好** - 默认使用小数据量,快速验证 -3. **灵活切换** - 调试/生产环境一键切换 -4. **参数透明** - help信息显示默认值来源 -5. **版本控制** - .gitignore防止数据文件被提交 - -## 📌 注意事项 - -1. **首次运行建议使用小数据量**: - ```bash - python3 run_all.py --lookback_days 7 - ``` - -2. **配置文件修改后立即生效**: - ```bash - # 修改 offline_config.py 后 - python3 run_all.py # 自动使用新配置 - ``` - -3. **临时参数不影响配置文件**: - ```bash - python3 run_all.py --lookback_days 100 # 仅本次有效 - ``` - -## 📅 更新日志 - -**日期**: 2025-10-16 -**版本**: v1.2 -**改动**: -- ✅ 新增默认参数配置(DEFAULT_LOOKBACK_DAYS=30) -- ✅ 更新所有6个脚本使用配置文件 -- ✅ 创建 .gitignore 忽略数据和临时文件 -- ✅ 新增配置调整指南文档 - ---- - -**配置文件**: `config/offline_config.py` -**当前默认**: 30天调试模式 -**生产建议**: 730天 -**状态**: ✅ 已完成并测试 diff --git a/DEBUG_IMPLEMENTATION_SUMMARY.md b/DEBUG_IMPLEMENTATION_SUMMARY.md deleted file mode 100644 index ab3e934..0000000 --- a/DEBUG_IMPLEMENTATION_SUMMARY.md +++ /dev/null @@ -1,255 +0,0 @@ -# 🐛 Debug功能实现总结 - -## ✅ 完成情况 - -### 已实现 ✓ - -1. **Debug工具库** (`scripts/debug_utils.py`) - ✅ 完成 - - 369行完整实现 - - 7个核心函数 - - 支持日志、明文输出、数据统计 - -2. **配置更新** (`config/offline_config.py`) - ✅ 完成 - - 新增DEBUG_CONFIG配置段 - - 默认参数配置(DEFAULT_LOOKBACK_DAYS=30) - -3. **i2i_swing.py** - ✅ 完成 - - 完整debug日志 - - 明文索引输出 - - --debug参数支持 - -4. **run_all.py** - ✅ 完成 - - 支持--debug参数 - - 自动传递给所有子脚本 - -5. **文档** - ✅ 完成 - - DEBUG_GUIDE.md (完整使用指南) - - QUICK_DEBUG_SUMMARY.md (快速总结) - - UPDATE_CONFIG_GUIDE.md (配置调整指南) - -### 待实现(可选) - -其他4个脚本可以按需添加debug支持: -- i2i_session_w2v.py -- i2i_deepwalk.py -- i2i_content_similar.py -- interest_aggregation.py - -**实现模式**:与i2i_swing.py相同,只需: -1. 导入debug_utils -2. 添加--debug参数 -3. 调用log函数记录关键信息 -4. 生成明文文件 - -## 🎯 核心功能 - -### 1. 详细日志 - -```python -# 自动记录的信息: -✓ 算法参数(alpha, top_n, lookback_days等) -✓ SQL查询和数据获取(行数、时间范围) -✓ DataFrame详情(列名、类型、缺失值、统计) -✓ 行为类型分布(百分比) -✓ 用户/商品数量统计 -✓ 处理进度(每N条/每N个商品) -✓ 中间结果采样(Top3展示) -✓ 每个步骤耗时 -✓ 相似度分布统计(min/max/avg) -``` - -### 2. 明文索引 - -``` -ID全部带名称,格式清晰: - -[1] i2i:swing:12345(香蕉干) --------------------------------------------------------------------------------- - 1. ID:67890(芒果干) - Score:0.8567 - 2. ID:11223(菠萝干) - Score:0.7234 - 3. ID:44556(苹果干) - Score:0.6891 - -[2] interest:hot:category_level2:200(水果类) --------------------------------------------------------------------------------- - 1. ID:12345(香蕉干) - 2. ID:67890(芒果干) - 3. ID:11223(菠萝干) -``` - -### 3. 名称映射 - -自动从数据库获取: -- 商品名称 (prd_goods_sku.name) -- 分类名称 (prd_category.name) -- 供应商名称 (sup_supplier.name) -- 平台名称(硬编码映射) - -## 📊 使用示例 - -### 基础使用 - -```bash -# 单个脚本debug -python3 scripts/i2i_swing.py --lookback_days 7 --top_n 10 --debug - -# 所有任务debug -python3 run_all.py --lookback_days 7 --top_n 10 --debug -``` - -### 输出位置 - -``` -offline_tasks/ -├── logs/debug/ -│ └── i2i_swing_20251016_193000.log # 详细日志 -└── output/debug/ - └── i2i_swing_20251016_readable.txt # 明文索引 -``` - -### 查看输出 - -```bash -# 实时查看日志 -tail -f logs/debug/i2i_swing_*.log - -# 查看明文索引 -less output/debug/i2i_swing_*_readable.txt - -# 搜索特定商品 -grep "香蕉干" output/debug/*_readable.txt -A 5 -``` - -## 🔧 技术实现 - -### Debug Logger - -```python -from offline_tasks.scripts.debug_utils import setup_debug_logger - -# 自动设置: -logger = setup_debug_logger('script_name', debug=True) -# - DEBUG级别 -# - 控制台 + 文件双输出 -# - 彩色格式化 -``` - -### 数据统计 - -```python -from offline_tasks.scripts.debug_utils import log_dataframe_info - -# 自动记录: -log_dataframe_info(logger, df, "数据名称", sample_size=10) -# - 行列数 -# - 数据类型 -# - 缺失值 -# - 采样数据 -# - 数值统计 -``` - -### 明文输出 - -```python -from offline_tasks.scripts.debug_utils import ( - save_readable_index, fetch_name_mappings -) - -# 获取名称映射 -name_mappings = fetch_name_mappings(engine, debug=True) - -# 保存明文文件 -readable_file = save_readable_index( - output_file, - index_data, - name_mappings, - description="算法描述" -) -``` - -## 💡 使用建议 - -### 开发阶段 -```bash -# 小数据量 + debug -python3 run_all.py --lookback_days 3 --top_n 10 --debug -``` -✓ 快速验证 -✓ 详细排错 -✓ 检查效果 - -### 调优阶段 -```bash -# 中等数据量 + debug -python3 scripts/i2i_swing.py --lookback_days 30 --top_n 50 --debug -``` -✓ 查看分布 -✓ 评估质量 -✓ 调整参数 - -### 生产阶段 -```bash -# 大数据量 + 正常模式 -python3 run_all.py --lookback_days 730 --top_n 50 -``` -✓ 高效运行 -✓ 必要日志 -✓ 节省空间 - -## 📈 性能影响 - -| 模式 | 运行时间 | 磁盘占用 | 日志详细度 | -|------|---------|---------|-----------| -| 正常 | 基准 | 基准 | INFO | -| Debug | +10-20% | +50MB-500MB | DEBUG | - -**建议**: -- 开发/调试:始终使用debug -- 生产环境:关闭debug -- 定期清理:`rm -rf logs/debug/* output/debug/*` - -## 🎉 主要优势 - -1. **数据可见** - 看清楚每一步的数据流向 -2. **效果可查** - 明文文件直接检查推荐质量 -3. **性能可测** - 每个步骤的耗时统计 -4. **问题可追** - 详细日志快速定位错误 -5. **参数可调** - 对比不同参数的效果 - -## 📚 相关文档 - -1. **DEBUG_GUIDE.md** - 完整使用指南(200+行) -2. **QUICK_DEBUG_SUMMARY.md** - 快速参考 -3. **UPDATE_CONFIG_GUIDE.md** - 配置调整指南 -4. **scripts/debug_utils.py** - 源代码和注释 - -## ✨ 下一步(可选) - -如需为其他脚本添加debug支持,参考i2i_swing.py的模式: - -```python -# 1. 导入 -from offline_tasks.scripts.debug_utils import ( - setup_debug_logger, log_dataframe_info, ... -) - -# 2. 添加参数 -parser.add_argument('--debug', action='store_true') - -# 3. 设置logger -logger = setup_debug_logger('script_name', debug=args.debug) - -# 4. 记录信息 -log_algorithm_params(logger, params) -log_dataframe_info(logger, df, "名称") - -# 5. 生成明文 -if args.debug: - name_mappings = fetch_name_mappings(engine, debug=True) - save_readable_index(output_file, index_data, name_mappings) -``` - ---- - -**状态**: ✅ 核心功能已完成 -**当前**: i2i_swing.py + run_all.py完整支持 -**扩展**: 其他脚本可按需添加(模式已建立) diff --git a/OFFLINE_TASKS_README.md b/OFFLINE_TASKS_README.md deleted file mode 100644 index c8462b4..0000000 --- a/OFFLINE_TASKS_README.md +++ /dev/null @@ -1,231 +0,0 @@ -# 推荐系统离线任务 - 完整交付 - -## 🎯 项目目标 - -根据业务文档要求,构建推荐系统的离线任务部分,建立基于现有用户特征的相应索引。 - -## ✅ 已完成的任务 - -### 1. i2i - 行为相似索引(3种算法) - -参考 `item_sim.py`(真实可运行的代码),改写了以下算法以适配我们的数据: - -#### ✅ Swing算法 -- **文件**: `offline_tasks/scripts/i2i_swing.py` -- **来源**: 改写自 `collaboration/src/swing.cc` -- **特点**: 基于用户共同行为的物品相似度,效果优于传统协同过滤 -- **输出**: `i2i_swing_YYYYMMDD.txt` - -#### ✅ Session Word2Vec -- **文件**: `offline_tasks/scripts/i2i_session_w2v.py` -- **来源**: 改写自 `graphembedding/session_w2v/` -- **特点**: 基于用户会话序列训练Word2Vec,捕获序列关系 -- **输出**: `i2i_session_w2v_YYYYMMDD.txt` + 模型文件 - -#### ✅ DeepWalk -- **文件**: `offline_tasks/scripts/i2i_deepwalk.py` -- **来源**: 改写自 `graphembedding/deepwalk/deepwalk.py` -- **特点**: 基于图随机游走训练Word2Vec,发现图结构特征 -- **输出**: `i2i_deepwalk_YYYYMMDD.txt` + 模型文件 - -### 2. 兴趣点聚合索引 - -按照指定的key生成索引: - -#### ✅ 支持的维度Key -- ✅ **平台**: PC/Mobile/App -- ✅ **国家/销售区域**: US/UK/CN... -- ✅ **客户类型**: retailer/wholesaler... -- ✅ **用户偏好的二级分类**: category_level2 -- ✅ **用户偏好的三级分类**: category_level3 - -#### ✅ 支持的List类型 -- ✅ **热门** (hot): 基于最近180天的高交互商品 -- ✅ **加购** (cart): 基于加购行为的高频商品 -- ✅ **新品** (new): 基于商品创建时间的新品 - -#### ✅ 时间衰减 -- 最近2年数据 -- 权重时间衰减(每30天衰减5%) - -## 📁 项目结构 - -``` -/home/tw/recommendation/ -│ -├── db_service.py # 数据库连接服务(共享) -├── requirements.txt # Python依赖包 -│ -├── offline_tasks/ # 离线任务主目录 -│ │ -│ ├── config/ -│ │ └── offline_config.py # 配置文件 -│ │ -│ ├── scripts/ -│ │ ├── i2i_swing.py # ✅ Swing算法 -│ │ ├── i2i_session_w2v.py # ✅ Session W2V -│ │ ├── i2i_deepwalk.py # ✅ DeepWalk -│ │ ├── interest_aggregation.py # ✅ 兴趣点聚合 -│ │ └── load_index_to_redis.py # Redis加载工具 -│ │ -│ ├── run_all.py # 统一调度脚本 -│ ├── install.sh # 安装脚本 -│ ├── test_connection.py # 连接测试 -│ ├── example_query_redis.py # 查询示例 -│ │ -│ └── 文档/ -│ ├── README.md # 详细文档 -│ ├── QUICKSTART.md # 快速开始 -│ ├── PROJECT_SUMMARY.md # 项目总结 -│ ├── STRUCTURE.md # 目录结构 -│ └── DELIVERY.md # 交付文档 -│ -└── (原有代码参考) - ├── item_sim.py # 参考的实现 - ├── collaboration/ # Swing算法参考 - └── graphembedding/ # 图嵌入算法参考 -``` - -## 🚀 快速开始 - -### 步骤1: 安装依赖 -```bash -cd /home/tw/recommendation/offline_tasks -bash install.sh -``` - -### 步骤2: 测试连接 -```bash -python3 test_connection.py -``` - -### 步骤3: 运行离线任务 -```bash -# 运行所有任务(推荐) -python3 run_all.py --lookback_days 730 --top_n 50 - -# 或单独运行 -python3 scripts/i2i_swing.py --lookback_days 730 --top_n 50 -python3 scripts/i2i_session_w2v.py --lookback_days 730 --top_n 50 -python3 scripts/i2i_deepwalk.py --lookback_days 730 --top_n 50 -python3 scripts/interest_aggregation.py --lookback_days 730 --top_n 1000 -``` - -### 步骤4: 加载到Redis -```bash -python3 scripts/load_index_to_redis.py --redis-host localhost --redis-port 6379 -``` - -## 📊 输出示例 - -### i2i相似度索引 -``` -item_id \t item_name \t similar_item_id1:score1,similar_item_id2:score2,... -``` - -### 兴趣点聚合索引 -``` -platform:PC \t item_id1:score1,item_id2:score2,... -country:US \t item_id1:score1,item_id2:score2,... -customer_type:retailer \t item_id1:score1,item_id2:score2,... -category_level2:100 \t item_id1:score1,item_id2:score2,... -platform_country:PC_US \t item_id1:score1,item_id2:score2,... -``` - -## 🎬 业务场景映射 - -根据文档中的3个业务场景: - -### 1. 首页猜你喜欢 -**使用**: 兴趣点聚合索引 -```python -# 组合查询 -interest:hot:platform_country:{platform}_{country} -interest:hot:customer_type:{customer_type} -interest:global:category_level2:{preferred_category} -``` - -### 2. 详情页的大家都在看 -**使用**: i2i行为相似索引 -```python -# 查询相似商品 -i2i:swing:{item_id} -i2i:session_w2v:{item_id} -i2i:deepwalk:{item_id} -``` - -### 3. 搜索结果页底部的供应商推荐 -**使用**: 兴趣点聚合索引 -```python -# 按分类推荐 -interest:global:category_level2:{category_id} -interest:hot:category_level3:{category_id} -``` - -## ⚙️ 核心特性 - -1. ✅ **数据适配**: 完全适配现有数据库(SelectDB)和表结构 -2. ✅ **时间衰减**: 2年数据,近期行为权重更高 -3. ✅ **行为加权**: 不同行为类型有不同权重(购买>联系工厂>加购>点击) -4. ✅ **多维度**: 支持单维度和组合维度查询 -5. ✅ **多算法**: 3种i2i算法,可融合使用 -6. ✅ **可配置**: 所有参数集中配置,便于调优 -7. ✅ **自动化**: 统一调度,一键运行 -8. ✅ **文档完善**: 提供完整的使用文档和示例 - -## 📚 详细文档 - -- **QUICKSTART.md**: 5分钟快速上手 -- **README.md**: 完整的功能说明 -- **PROJECT_SUMMARY.md**: 技术架构和原理 -- **STRUCTURE.md**: 项目结构和数据流 -- **DELIVERY.md**: 交付清单和状态 - -## 🔧 定时任务 - -建议设置crontab每天运行: - -```bash -# 每天凌晨2点运行离线任务 -0 2 * * * cd /home/tw/recommendation/offline_tasks && /usr/bin/python3 run_all.py >> logs/cron.log 2>&1 - -# 凌晨6点加载到Redis -0 6 * * * cd /home/tw/recommendation/offline_tasks && /usr/bin/python3 scripts/load_index_to_redis.py >> logs/load_redis.log 2>&1 -``` - -## 📈 性能参考 - -基于100万条用户行为数据: - -| 任务 | 时间 | 内存 | -|------|------|------| -| Swing | 2-4小时 | 4-8GB | -| Session W2V | 30-60分钟 | 2-4GB | -| DeepWalk | 1-2小时 | 2-4GB | -| 兴趣点聚合 | 30-60分钟 | 2-4GB | - -## ✨ 与原有代码的关系 - -本项目是对以下原有代码的改写和扩展: - -1. **item_sim.py** → 数据格式参考,保持一致性 -2. **collaboration/src/swing.cc** → 改写为Python版本的 `i2i_swing.py` -3. **graphembedding/session_w2v/** → 改写为 `i2i_session_w2v.py` -4. **graphembedding/deepwalk/** → 改写为 `i2i_deepwalk.py` -5. **hot/main.py** → 参考其聚合逻辑,扩展为多维度的 `interest_aggregation.py` - -所有改写都保持了与现有数据格式的兼容性。 - -## 🎉 交付状态 - -**状态**: ✅ 已完成并可用 - -所有功能已实现、测试并文档化。可以立即部署使用。 - ---- - -**目录**: `/home/tw/recommendation/offline_tasks/` -**入口**: `run_all.py` -**文档**: `QUICKSTART.md` -**日期**: 2025-10-16 - diff --git a/OFFLINE_TASKS_SUMMARY.md b/OFFLINE_TASKS_SUMMARY.md deleted file mode 100644 index 16a0c04..0000000 --- a/OFFLINE_TASKS_SUMMARY.md +++ /dev/null @@ -1,290 +0,0 @@ -# 📊 推荐系统离线任务 - 完整总结 - -## ✅ 项目状态:已完成 - ---- - -## 📦 交付内容 - -### 1. 核心算法(5个脚本) - -| 脚本 | 功能 | 代码行数 | -|------|------|---------| -| `i2i_swing.py` | Swing算法(行为相似) | ~240行 | -| `i2i_session_w2v.py` | Session W2V(行为相似) | ~240行 | -| `i2i_deepwalk.py` | DeepWalk(行为相似) | ~330行 | -| `i2i_content_similar.py` | 内容相似(新增) | ~320行 | -| `interest_aggregation.py` | 兴趣点聚合 | ~310行 | - -### 2. 工具脚本(5个) - -| 脚本 | 功能 | -|------|------| -| `run_all.py` | 统一调度所有任务 | -| `load_index_to_redis.py` | 加载索引到Redis | -| `test_connection.py` | 测试数据库和Redis连接 | -| `example_query_redis.py` | Redis查询示例 | -| `check_table_structure.py` | 检查表结构 | - -### 3. 配置文件(2个) - -| 文件 | 功能 | -|------|------| -| `config/offline_config.py` | 离线任务配置 | -| `requirements.txt` | Python依赖包 | - -### 4. 文档(14份) - -| 文档 | 说明 | -|------|------| -| **START_HERE.md** | 开始文档(推荐阅读) | -| **QUICKSTART.md** | 快速开始指南 | -| **README.md** | 详细使用文档 | -| **CURRENT_STATUS.md** | 当前功能状态 | -| **FINAL_UPDATE.md** | 最终更新说明 | -| **COMPLETE_INDEX_LIST.md** | 完整索引清单 | -| **PROJECT_SUMMARY.md** | 技术架构总结 | -| **FIELD_MAPPING.md** | 字段映射说明 | -| **DATABASE_SETUP.md** | 数据库配置指南 | -| **STRUCTURE.md** | 目录结构说明 | -| **TROUBLESHOOTING.md** | 故障排除指南 | -| **CHANGELOG.md** | 更新日志 | -| **COMMANDS.txt** | 常用命令参考 | -| **FINAL_SUMMARY.txt** | 交付总结 | - ---- - -## 🎯 功能清单 - -### i2i 相似度索引 - -#### 行为相似(3种) -✅ **Swing** - 基于用户共同行为 -✅ **Session W2V** - 基于会话序列 -✅ **DeepWalk** - 基于图随机游走 - -#### 内容相似(1种,3个方法) -✅ **Content-based** - 基于商品属性 -- TF-IDF方法 -- 分类方法 -- 混合方法(推荐) - -### 兴趣点聚合索引 - -#### 单维度(7个) -✅ 业务平台(platform) -✅ 客户端平台(client_platform) -✅ 供应商(supplier) -✅ 一级分类(category_level1) -✅ 二级分类(category_level2) -✅ 三级分类(category_level3) -✅ 四级分类(category_level4) - -#### 组合维度(4个) -✅ 平台 + 客户端 -✅ 平台 + 二级分类 -✅ 平台 + 三级分类 -✅ 客户端 + 二级分类 - -#### 列表类型(3种) -✅ 热门(hot) -✅ 加购(cart) -✅ 新品(new) - ---- - -## 📊 数据依赖 - -### 数据库表 -- `sensors_events` - 用户行为事件(必需) -- `prd_goods_sku` - 商品SKU信息(必需) -- `prd_goods` - 商品主表(必需) -- `prd_category` - 分类信息(用于分类维度) -- `sup_supplier` - 供应商信息(用于供应商维度) -- `prd_goods_sku_attribute` - 商品属性(用于内容相似) -- `prd_option` - 属性选项(用于内容相似) - -### 关键字段 -- `anonymous_id` - 用户ID -- `item_id` - 商品ID -- `event` - 事件类型 -- `create_time` - 时间戳 -- `business_platform` - 业务平台 -- `category_id` - 分类ID(通过path解析出1-4级) -- `supplier_id` - 供应商ID - ---- - -## 🚀 使用指南 - -### 快速开始 -```bash -cd /home/tw/recommendation/offline_tasks -bash install.sh -python3 test_connection.py -python3 run_all.py --lookback_days 730 --top_n 50 -``` - -### 单独运行 -```bash -# i2i算法 -python3 scripts/i2i_swing.py --lookback_days 730 --top_n 50 -python3 scripts/i2i_content_similar.py --top_n 50 --method hybrid - -# 兴趣点聚合 -python3 scripts/interest_aggregation.py --lookback_days 730 --top_n 1000 -``` - -### 加载到Redis -```bash -python3 scripts/load_index_to_redis.py --redis-host localhost -``` - ---- - -## 📈 性能指标 - -| 任务 | 数据量 | 预估时间 | 内存占用 | -|------|--------|---------|---------| -| Swing | 730天行为数据 | 2-4小时 | 4-8GB | -| Session W2V | 730天行为数据 | 30-60分钟 | 2-4GB | -| DeepWalk | 730天行为数据 | 1-2小时 | 2-4GB | -| Content-based | 全量商品属性 | 10-30分钟 | 2-4GB | -| 兴趣点聚合 | 730天行为数据 | 30-60分钟 | 2-4GB | -| **总计** | - | **6-10小时** | **8-16GB** | - ---- - -## 💾 输出数据 - -### 文件格式 -``` -i2i_swing_20251016.txt -i2i_session_w2v_20251016.txt -i2i_deepwalk_20251016.txt -i2i_content_hybrid_20251016.txt -interest_aggregation_hot_20251016.txt -interest_aggregation_cart_20251016.txt -interest_aggregation_new_20251016.txt -interest_aggregation_global_20251016.txt -``` - -### 索引数量 -- i2i索引:6种方法 × 商品数量 -- 兴趣点聚合:10000-50000条索引 - ---- - -## 🎬 业务场景 - -### 1. 首页猜你喜欢 -``` -interest:hot:platform:pc -interest:hot:category_level2:200 -interest:hot:platform_category2:pc_200 -``` - -### 2. 详情页大家都在看 -``` -i2i:swing:12345 -i2i:content_hybrid:12345 -``` - -### 3. 搜索结果页推荐 -``` -interest:global:category_level2:200 -interest:hot:supplier:10001 -``` - ---- - -## ✨ 核心优势 - -### 1. 完整性 -- 行为 + 内容双重相似度 -- 短期热门 + 长期稳定 -- 粗粒度 + 细粒度查询 - -### 2. 灵活性 -- 4级分类查询 -- 供应商维度 -- 多维度组合 - -### 3. 可扩展性 -- 易于添加新维度 -- 易于添加新算法 -- 配置化管理 - -### 4. 实用性 -- 完全适配真实数据库 -- 参考现有可运行代码 -- 文档详细完善 - ---- - -## 📖 推荐阅读顺序 - -1. **START_HERE.md** ← 从这里开始 -2. **QUICKSTART.md** - 快速上手 -3. **COMPLETE_INDEX_LIST.md** - 了解所有索引 -4. **FINAL_UPDATE.md** - 了解完整功能 -5. **README.md** - 详细使用说明 - ---- - -## 🔍 关键数字 - -| 指标 | 数值 | -|------|------| -| 总代码行数 | ~2500行 | -| 算法数量 | 4种(3行为+1内容) | -| 维度数量 | 11个(7单+4组合) | -| 分类层级 | 4级 | -| 文档数量 | 14份 | -| 脚本数量 | 10个 | -| 预计索引总数 | 10000-50000条 | - ---- - -## 📅 项目时间线 - -- **2025-10-16 上午**: 创建基础框架和配置 -- **2025-10-16 中午**: 实现3种行为相似算法 -- **2025-10-16 下午**: 实现兴趣点聚合 -- **2025-10-16 下午**: 根据实际表结构适配 -- **2025-10-16 傍晚**: 新增内容相似算法 -- **2025-10-16 傍晚**: 完善分类和供应商维度 -- **2025-10-16 晚上**: 完成所有文档 - ---- - -## 🎉 交付状态 - -**✅ 已完成并可用!** - -所有代码、配置、文档均已完成,可以立即部署使用。 - ---- - -## 📞 支持 - -### 文档 -- 完整文档在 `offline_tasks/` 目录 -- 从 `START_HERE.md` 开始 - -### 日志 -- 查看 `offline_tasks/logs/` 目录 -- `tail -f logs/run_all_*.log` - -### 帮助 -- 各个脚本都支持 `--help` 参数 -- 查看 `TROUBLESHOOTING.md` 排查问题 - ---- - -**项目目录**: `/home/tw/recommendation/offline_tasks/` -**入口文档**: `START_HERE.md` -**主脚本**: `run_all.py` -**版本**: v1.1 -**日期**: 2025-10-16 -**状态**: ✅ 交付完成 diff --git a/SWING_IMPLEMENTATION_SUMMARY.md b/SWING_IMPLEMENTATION_SUMMARY.md deleted file mode 100644 index c663ea5..0000000 --- a/SWING_IMPLEMENTATION_SUMMARY.md +++ /dev/null @@ -1,375 +0,0 @@ -# Swing算法实现总结 - -## 完成的任务 - -本次实现完成了以下功能: - -### 1. Session生成脚本 ✓ - -**文件**: `offline_tasks/scripts/generate_session.py` - -**功能**: -- 从数据库提取用户行为数据 -- 聚合用户session(按商品维度累加权重) -- 支持两种输出格式: - - 标准格式:`uid \t {"item_id":score,...}` - - C++格式:`{"item_id":score,...}` (每行一个用户) - -**主要参数**: -- `--lookback_days`: 回看天数(默认730天) -- `--format`: 输出格式(standard/cpp/both) -- `--output`: 输出文件路径 -- `--debug`: 启用debug模式 - -**使用示例**: -```bash -cd /home/tw/recommendation/offline_tasks -python3 scripts/generate_session.py --lookback_days 730 --format both -``` - -### 2. Swing运行脚本 ✓ - -**文件**: `collaboration/run.sh` - -**改进内容**: -- ✓ 适配新的数据路径(`../offline_tasks/output/`) -- ✓ 自动检测session文件格式(带uid或纯json) -- ✓ 增加配置区域,便于修改参数 -- ✓ 添加错误检查和友好的输出信息 -- ✓ 自动调用debug脚本生成可读文件 -- ✓ 支持自定义Python环境 - -**配置项**: -```bash -SESSION_DATA_DIR="../offline_tasks/output" # session文件目录 -ALPHA=0.7 # Swing alpha参数 -THRESHOLD1=1 # 交互强度阈值1 -THRESHOLD2=3 # 交互强度阈值2 -THREAD_NUM=4 # 线程数 -SHOW_PROGRESS=1 # 显示进度 -PYTHON_CMD="python3" # Python命令 -``` - -**执行流程**: -1. 编译C++程序 -2. 查找session文件 -3. 运行Swing算法(多线程) -4. 合并结果 -5. 生成可读版本(自动调用debug脚本) - -### 3. Debug脚本 ✓ - -**文件**: `offline_tasks/scripts/add_names_to_swing.py` - -**功能**: -- 读取Swing算法输出结果 -- 从数据库获取商品名称映射 -- 生成可读版本:`item_id:name \t similar_id1:name1:score1,...` - -**使用示例**: -```bash -cd /home/tw/recommendation/offline_tasks -python3 scripts/add_names_to_swing.py \ - ../collaboration/output/swing_similar.txt \ - ../collaboration/output/swing_similar_readable.txt \ - --debug -``` - -### 4. 使用文档 ✓ - -**文件**: -- `offline_tasks/SWING_USAGE.md` - 完整使用指南 -- `collaboration/QUICKSTART.md` - 快速开始指南 - -**包含内容**: -- 详细的使用步骤 -- 参数说明和调优建议 -- 故障排查指南 -- 性能优化建议 -- 完整示例 - -## 数据流程 - -``` -┌─────────────────────────────────────────────────────────────┐ -│ 步骤1: 生成Session文件 │ -│ generate_session.py │ -│ ↓ │ -│ 数据库 → 用户行为数据 → 聚合权重 → session.txt.YYYYMMDD │ -└─────────────────────────────────────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────────────────────┐ -│ 步骤2: 运行Swing算法 │ -│ collaboration/run.sh │ -│ ↓ │ -│ session文件 → C++ Swing → sim_matrx.* → swing_similar.txt │ -└─────────────────────────────────────────────────────────────┘ - ↓ -┌─────────────────────────────────────────────────────────────┐ -│ 步骤3: 生成Debug文件 │ -│ add_names_to_swing.py (自动调用) │ -│ ↓ │ -│ swing_similar.txt → 添加商品名 → swing_similar_readable.txt│ -└─────────────────────────────────────────────────────────────┘ -``` - -## 文件格式说明 - -### Session文件格式 - -**标准格式** (`session.txt.YYYYMMDD`): -``` -user_id1 {"123":10.0,"456":5.0,"789":3.0} -user_id2 {"123":8.0,"999":12.0} -``` - -**C++格式** (`session.txt.YYYYMMDD.cpp`): -``` -{"123":10.0,"456":5.0,"789":3.0} -{"123":8.0,"999":12.0} -``` - -### Swing结果格式 - -**原始格式** (`swing_similar.txt`): -``` -12345 67890:0.8523,23456:0.7234,34567:0.6891 -``` - -**可读格式** (`swing_similar_readable.txt`): -``` -12345:iPhone 15 Pro 67890:iPhone 15:0.8523,23456:iPhone 14 Pro:0.7234 -``` - -## 行为权重配置 - -当前配置(在`generate_session.py`中): - -| 行为类型 | 权重 | 说明 | -|---------|------|------| -| purchase | 10.0 | 购买行为(最强信号) | -| contactFactory | 5.0 | 联系厂家 | -| addToCart | 3.0 | 加入购物车 | -| addToPool | 2.0 | 加入询价池 | - -## 快速开始 - -```bash -# 1. 生成session文件(730天数据) -cd /home/tw/recommendation/offline_tasks -python3 scripts/generate_session.py --lookback_days 730 - -# 2. 运行Swing算法 -cd /home/tw/recommendation/collaboration -bash run.sh - -# 3. 查看结果 -cat output/swing_similar_readable.txt | head -20 -``` - -## 项目结构 - -``` -recommendation/ -├── offline_tasks/ -│ ├── scripts/ -│ │ ├── generate_session.py # 新增:生成session -│ │ ├── add_names_to_swing.py # 新增:添加商品名 -│ │ ├── i2i_swing.py # 已有:Python版Swing -│ │ └── debug_utils.py # 已有:Debug工具 -│ ├── config/ -│ │ └── offline_config.py # 配置文件 -│ ├── output/ -│ │ ├── session.txt.YYYYMMDD # 生成的session文件 -│ │ └── session.txt.YYYYMMDD.cpp # C++格式session -│ ├── SWING_USAGE.md # 新增:详细使用文档 -│ └── ... -├── collaboration/ -│ ├── run.sh # 修改:适配新数据格式 -│ ├── QUICKSTART.md # 新增:快速开始 -│ ├── src/ -│ │ ├── swing.cc # C++ Swing实现 -│ │ ├── swing_symmetric.cc # 对称Swing -│ │ ├── icf_simple.cc # 简单协同过滤 -│ │ └── ucf.py # 用户协同 -│ ├── bin/ # 编译后的可执行文件 -│ ├── output_YYYYMMDD/ # 输出目录 -│ │ ├── sim_matrx.* # 多线程输出 -│ │ ├── swing_similar.txt # 合并结果 -│ │ └── swing_similar_readable.txt # 可读结果 -│ └── output -> output_YYYYMMDD # 软链接 -└── SWING_IMPLEMENTATION_SUMMARY.md # 本文档 -``` - -## 参数调优建议 - -### 针对B2B低频场景 - -```bash -# Session生成 ---lookback_days 730 # 2年数据(B2B交互频次低) - -# Swing算法 -ALPHA=0.5-0.7 # 关注用户共同行为的多样性 -THRESHOLD1=1 # 低阈值,保留更多数据 -THRESHOLD2=3 # 中等阈值,过滤噪音 -THREAD_NUM=4-8 # 根据服务器配置 -``` - -### 针对大数据量场景 - -```bash -# 增加线程数 -THREAD_NUM=8 - -# 修改C++代码参数 -max_sim_list_len=300 # 相似列表长度 -max_session_list_len=100 # session截断长度 -``` - -## 与现有系统集成 - -### 1. 定时任务 - -```bash -# 每天凌晨2点运行 -0 2 * * * cd /home/tw/recommendation/offline_tasks && \ - python3 scripts/generate_session.py && \ - cd ../collaboration && bash run.sh -``` - -### 2. 结果导入Redis - -可使用现有的 `load_index_to_redis.py` 脚本导入结果。 - -### 3. 与Python版Swing对比 - -- **C++版本**(本次实现):性能更好,适合大数据量 -- **Python版本**(`i2i_swing.py`):易于调试,支持时间衰减 - -可以运行两个版本对比效果: -```bash -# Python版本 -python3 offline_tasks/scripts/i2i_swing.py --debug - -# C++版本 -cd collaboration && bash run.sh -``` - -## 测试验证 - -### 1. 小数据量测试 - -```bash -# 生成小范围数据(30天) -python3 scripts/generate_session.py --lookback_days 30 - -# 运行Swing -cd ../collaboration -bash run.sh -``` - -### 2. 查看结果质量 - -```bash -# 查看可读版本前100行 -head -100 output/swing_similar_readable.txt - -# 检查相似度分布 -cat output/swing_similar.txt | awk -F'\t' '{print NF-1}' | sort -n | uniq -c -``` - -### 3. 性能测试 - -```bash -# 记录运行时间 -time bash run.sh -``` - -## 故障排查 - -### 常见问题 - -1. **Session文件不存在** - - 先运行 `generate_session.py` - -2. **编译失败** - - 检查g++版本:`g++ --version` - - 手动编译:`cd collaboration && make` - -3. **数据库连接失败** - - 检查配置:`offline_tasks/config/offline_config.py` - - 测试连接:`python3 offline_tasks/test_connection.py` - -4. **结果为空** - - 降低threshold参数 - - 增加lookback_days - - 检查数据量:`wc -l output/session.txt.*` - -详细故障排查参见:`offline_tasks/SWING_USAGE.md` - -## 后续优化方向 - -1. **性能优化** - - 支持分布式计算 - - 增量更新机制 - - 结果缓存 - -2. **功能增强** - - 支持多种相似度算法 - - 在线实时更新 - - A/B测试框架 - -3. **可观测性** - - 添加监控指标 - - 结果质量评估 - - 自动报警 - -## 相关文档 - -- **详细使用指南**: `offline_tasks/SWING_USAGE.md` -- **快速开始**: `collaboration/QUICKSTART.md` -- **配置说明**: `offline_tasks/config/offline_config.py` -- **Debug工具**: `offline_tasks/scripts/debug_utils.py` -- **Swing算法原理**: `collaboration/README.md` - -## 维护说明 - -### 代码维护 - -- **Session生成**: `offline_tasks/scripts/generate_session.py` -- **Swing执行**: `collaboration/run.sh` -- **Debug脚本**: `offline_tasks/scripts/add_names_to_swing.py` - -### 配置维护 - -- **数据库配置**: `offline_tasks/config/offline_config.py` -- **行为权重**: `generate_session.py` 中的 `behavior_weights` -- **Swing参数**: `collaboration/run.sh` 中的配置区域 - -### 日志查看 - -```bash -# Session生成日志 -ls offline_tasks/logs/debug/generate_session_*.log - -# Swing运行日志 -ls collaboration/logs/ -``` - -## 总结 - -本次实现完成了一套完整的C++ Swing算法工作流: - -1. ✓ **前置任务**:Session文件生成(`generate_session.py`) -2. ✓ **核心算法**:C++ Swing执行(改进的`run.sh`) -3. ✓ **后处理**:Debug文件生成(`add_names_to_swing.py`) -4. ✓ **文档完善**:详细使用指南和快速开始 - -所有脚本都支持debug模式,便于调试和监控。整体流程自动化程度高,只需一条命令即可完成全流程。 - ---- - -**实现时间**: 2024-10-17 -**状态**: ✅ 已完成 - diff --git a/collaboration/QUICKSTART.md b/collaboration/QUICKSTART.md deleted file mode 100644 index 8efd347..0000000 --- a/collaboration/QUICKSTART.md +++ /dev/null @@ -1,70 +0,0 @@ -# Swing算法快速开始 - -## 快速运行(3步) - -### 1. 生成Session文件 - -```bash -cd /home/tw/recommendation/offline_tasks -python3 scripts/generate_session.py --lookback_days 730 -``` - -这会生成: -- `output/session.txt.YYYYMMDD` - 标准格式(uid \t json) -- `output/session.txt.YYYYMMDD.cpp` - C++格式(纯json) - -### 2. 运行Swing算法 - -```bash -cd /home/tw/recommendation/collaboration -bash run.sh -``` - -### 3. 查看结果 - -```bash -# 查看可读版本(带商品名称) -cat output/swing_similar_readable.txt | head -20 - -# 或查看原始版本(仅ID) -cat output/swing_similar.txt | head -20 -``` - -## 输出文件 - -- `output_YYYYMMDD/swing_similar.txt` - Swing相似度结果(ID格式) -- `output_YYYYMMDD/swing_similar_readable.txt` - 可读版本(ID:名称格式) - -## 配置修改 - -如需调整参数,编辑 `run.sh`: - -```bash -# 数据路径 -SESSION_DATA_DIR="../offline_tasks/output" - -# Swing参数 -ALPHA=0.7 # 0.5-1.0,越小越关注用户共同行为 -THRESHOLD1=1 # 1-5,交互强度阈值 -THRESHOLD2=3 # 1-10,相似度计算阈值 -THREAD_NUM=4 # 线程数 -``` - -## 详细文档 - -查看完整文档:`../offline_tasks/SWING_USAGE.md` - -## 常见问题 - -**Q: 如何查看商品名称?** -A: 结果文件 `swing_similar_readable.txt` 已自动添加商品名称 - -**Q: 如何调整相似商品数量?** -A: 修改 `src/swing.cc` 中的 `max_sim_list_len`(默认300) - -**Q: Session文件找不到?** -A: 先运行步骤1生成session文件 - -**Q: 运行时间?** -A: 1万商品约1-5分钟,10万商品约10-30分钟 - diff --git a/collaboration/Swing快速开始.md b/collaboration/Swing快速开始.md new file mode 100644 index 0000000..8efd347 --- /dev/null +++ b/collaboration/Swing快速开始.md @@ -0,0 +1,70 @@ +# Swing算法快速开始 + +## 快速运行(3步) + +### 1. 生成Session文件 + +```bash +cd /home/tw/recommendation/offline_tasks +python3 scripts/generate_session.py --lookback_days 730 +``` + +这会生成: +- `output/session.txt.YYYYMMDD` - 标准格式(uid \t json) +- `output/session.txt.YYYYMMDD.cpp` - C++格式(纯json) + +### 2. 运行Swing算法 + +```bash +cd /home/tw/recommendation/collaboration +bash run.sh +``` + +### 3. 查看结果 + +```bash +# 查看可读版本(带商品名称) +cat output/swing_similar_readable.txt | head -20 + +# 或查看原始版本(仅ID) +cat output/swing_similar.txt | head -20 +``` + +## 输出文件 + +- `output_YYYYMMDD/swing_similar.txt` - Swing相似度结果(ID格式) +- `output_YYYYMMDD/swing_similar_readable.txt` - 可读版本(ID:名称格式) + +## 配置修改 + +如需调整参数,编辑 `run.sh`: + +```bash +# 数据路径 +SESSION_DATA_DIR="../offline_tasks/output" + +# Swing参数 +ALPHA=0.7 # 0.5-1.0,越小越关注用户共同行为 +THRESHOLD1=1 # 1-5,交互强度阈值 +THRESHOLD2=3 # 1-10,相似度计算阈值 +THREAD_NUM=4 # 线程数 +``` + +## 详细文档 + +查看完整文档:`../offline_tasks/SWING_USAGE.md` + +## 常见问题 + +**Q: 如何查看商品名称?** +A: 结果文件 `swing_similar_readable.txt` 已自动添加商品名称 + +**Q: 如何调整相似商品数量?** +A: 修改 `src/swing.cc` 中的 `max_sim_list_len`(默认300) + +**Q: Session文件找不到?** +A: 先运行步骤1生成session文件 + +**Q: 运行时间?** +A: 1万商品约1-5分钟,10万商品约10-30分钟 + diff --git a/tables_structure.md b/tables_structure.md deleted file mode 100644 index 91aedd8..0000000 --- a/tables_structure.md +++ /dev/null @@ -1,178 +0,0 @@ - -check_table_structure.py 的输出 - -================================================================================ -检查 prd_goods_sku 表结构 -================================================================================ - -表字段列表: - Field Type Null Key Default Extra -0 id bigint Yes true None -1 buyer_id bigint Yes false None REPLACE -2 proxy_buyer_id bigint Yes false None REPLACE -3 goods_id bigint Yes false None REPLACE -4 name varchar(1536) Yes false None REPLACE -5 name_pinyin varchar(3072) Yes false None REPLACE -6 accessories varchar(1536) Yes false None REPLACE -7 factory_no_buyer varchar(192) Yes false None REPLACE -8 factory_no varchar(765) Yes false None REPLACE -9 is_has_sample smallint Yes false None REPLACE -10 is_has_pkg_age_label smallint Yes false None REPLACE -11 pkg_age_label varchar(384) Yes false None REPLACE -12 onway_total int Yes false None REPLACE -13 onway_use_total int Yes false None REPLACE -14 onway_unuse_total int Yes false None REPLACE -15 deliver_day int Yes false None REPLACE -16 dev_level varchar(96) Yes false None REPLACE -17 length decimal(12,2) Yes false None REPLACE -18 width decimal(12,2) Yes false None REPLACE -19 height decimal(12,2) Yes false None REPLACE -20 volume decimal(12,8) Yes false None REPLACE -21 out_box_length decimal(12,2) Yes false None REPLACE -22 out_box_width decimal(12,2) Yes false None REPLACE -23 out_box_height decimal(12,2) Yes false None REPLACE -24 out_box_volume decimal(12,8) Yes false None REPLACE -25 out_box_cruft decimal(15,8) Yes false None REPLACE -26 package_length decimal(12,2) Yes false None REPLACE -27 package_width decimal(12,2) Yes false None REPLACE -28 package_height decimal(12,2) Yes false None REPLACE -29 package_volume decimal(12,8) Yes false None REPLACE -30 total_volume decimal(12,8) Yes false None REPLACE -31 gross_weight decimal(12,2) Yes false None REPLACE -32 net_weight decimal(12,2) Yes false None REPLACE -33 is_package_depart smallint Yes false None REPLACE -34 is_fixed_sale smallint Yes false None REPLACE -35 inbox_count int Yes false None REPLACE -36 no varchar(192) Yes false None REPLACE -37 hs_no varchar(192) Yes false None REPLACE -38 erp_old_no varchar(192) Yes false None REPLACE -39 factory_first_price decimal(12,3) Yes false None REPLACE -40 factory_first_price_unit varchar(96) Yes false None REPLACE -41 factory_first_price_date datetime Yes false None REPLACE -42 bar_code varchar(192) Yes false None REPLACE -43 count int Yes false None REPLACE -44 unit varchar(96) Yes false None REPLACE -45 price_supplier decimal(12,3) Yes false None REPLACE -46 gross_profit decimal(12,5) Yes false None REPLACE -47 price_base decimal(12,3) Yes false None REPLACE -48 bulk_result varchar(96) Yes false None REPLACE -49 bulk_type varchar(96) Yes false None REPLACE -50 purchase_moq int Yes false None REPLACE -51 capacity int Yes false None REPLACE -52 package_type_id bigint Yes false None REPLACE -53 package_type_name varchar(192) Yes false None REPLACE -54 package_type_value varchar(96) Yes false None REPLACE -55 sale_price decimal(12,3) Yes false None REPLACE -56 has_quote_rang smallint Yes false None REPLACE -57 is_stop_product smallint Yes false None REPLACE -58 is_upload_pic smallint Yes false None REPLACE -59 status varchar(96) Yes false None REPLACE -60 sku_compose_md5 varchar(192) Yes false None REPLACE -61 sku_compose varchar(6144) Yes false None REPLACE -62 src varchar(96) Yes false None REPLACE -63 price_bom_total decimal(12,3) Yes false None REPLACE -64 bom_id bigint Yes false None REPLACE -65 off_sell_time datetime Yes false None REPLACE -66 off_sell_user_id bigint Yes false None REPLACE -67 sort_time datetime Yes false None REPLACE -68 fir_on_sell_time datetime Yes false None REPLACE -69 on_sell_time datetime Yes false None REPLACE -70 on_sell_user_id bigint Yes false None REPLACE -71 is_draft smallint Yes false None REPLACE -72 per_pcs_price decimal(12,3) Yes false None REPLACE -73 fcl_price decimal(12,3) Yes false None REPLACE -74 init_price decimal(12,3) Yes false None REPLACE -75 last_pic_update_user_Id bigint Yes false None REPLACE -76 last_pic_update_time datetime Yes false None REPLACE -77 hide smallint Yes false None REPLACE -78 supplier_source varchar(192) Yes false None REPLACE -79 ref_sku_id bigint Yes false None REPLACE -80 ref_season_type varchar(192) Yes false None REPLACE -81 is_category_error smallint Yes false None REPLACE -82 is_attribute_error smallint Yes false None REPLACE -83 is_option_error smallint Yes false None REPLACE -84 price_protection_time datetime Yes false None REPLACE -85 remark varchar(6144) Yes false None REPLACE -86 audit_remark varchar(1536) Yes false None REPLACE -87 attribute_uid varchar(96) Yes false None REPLACE -88 refact_count int Yes false None REPLACE -89 last_refact_time datetime Yes false None REPLACE -90 last_refact_by bigint Yes false None REPLACE -91 is_delete smallint Yes false None REPLACE -92 soft_delete_time datetime Yes false None REPLACE -93 version bigint Yes false None REPLACE -94 last_update_by bigint Yes false None REPLACE -95 last_update_time datetime Yes false None REPLACE -96 create_by bigint Yes false None REPLACE -97 create_time datetime Yes false None REPLACE -98 ref_count bigint Yes false None REPLACE -99 can_update smallint Yes false None REPLACE -100 can_delete smallint Yes false None REPLACE -101 mig_old_id varchar(384) Yes false None REPLACE -102 mig_update_time datetime Yes false None REPLACE -103 mig_migrate_log_id bigint Yes false None REPLACE -104 create_platform varchar(150) Yes false None REPLACE -105 create_user_id bigint Yes false None REPLACE -106 last_update_platform varchar(150) Yes false None REPLACE -107 last_update_user_id bigint Yes false None REPLACE -108 is_market_sku smallint Yes false None REPLACE -109 is_star smallint Yes false None REPLACE -110 good_type tinyint Yes false None REPLACE -111 bom_config_id bigint Yes false None REPLACE -112 source_sku_id bigint Yes false None REPLACE - -================================================================================ -检查 sensors_events 表结构 -================================================================================ - -表字段列表: - Field Type Null Key Default Extra -0 id bigint No true None -1 ip varchar(128) Yes false None NONE -2 create_time datetime No false None NONE -3 last_update_time datetime Yes false None NONE -4 business_platform varchar(128) No false None NONE -5 client_platform varchar(128) No false None NONE -6 distinct_id varchar(128) No false None NONE -7 login_id int Yes false None NONE -8 anonymous_id varchar(128) Yes false None NONE -9 item_id int Yes false None NONE -10 item_type varchar(255) Yes false None NONE -11 event varchar(128) No false None NONE -12 location_src_type varchar(255) Yes false None NONE -13 location_src varchar(512) Yes false None NONE -14 search_content varchar(512) Yes false None NONE -15 page_type varchar(255) Yes false None NONE -16 module_name varchar(255) Yes false None NONE -17 position_name varchar(255) Yes false None NONE -18 channel_type varchar(512) Yes false None NONE -19 channel_mode varchar(1024) Yes false None NONE -20 channel_source varchar(512) Yes false None NONE -21 request_id bigint Yes false None NONE -22 session_id varchar(128) Yes false None NONE -23 session_duration int Yes false None NONE -24 stay_duration int Yes false None NONE -25 __properties json Yes false None NONE -26 __lib json Yes false None NONE -27 __identities json Yes false None NONE -28 __url_path varchar(1024) Yes false None NONE -29 __title varchar(2048) Yes false None NONE -30 __referrer_host varchar(128) Yes false None NONE -31 __is_first_day boolean Yes false None NONE -32 __is_first_time boolean Yes false None NONE -33 __os varchar(512) Yes false None NONE -34 __os_version varchar(512) Yes false None NONE -35 __browser varchar(512) Yes false None NONE -36 __browser_version varchar(255) Yes false None NONE -37 __browser_language varchar(255) Yes false None NONE -38 __screen_height int Yes false None NONE -39 __screen_width int Yes false None NONE -40 __user_agent varchar(512) Yes false None NONE -41 __url varchar(2048) Yes false None NONE -42 __element_type varchar(256) Yes false None NONE -43 __element_content varchar(1024) Yes false None NONE -44 __referrer varchar(1024) Yes false None NONE - -================================================================================ -检查完成 -================================================================================ -- libgit2 0.21.2