Commit 9ebfd004ebd05dd7be27f0dc3a7bd3d001cbccdc

Authored by tangwang
1 parent 12118125

offline tasks: mem optimize

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