Compare commits

..

4 Commits

Author SHA1 Message Date
litianxiang
29b4f43a27 debug:推荐接口
All checks were successful
git commit AiDA python develop 分支构建部署 / scheduled_deploy (push) Has been skipped
2026-01-12 13:34:56 +08:00
litianxiang
69dc20207d debug:推荐接口
All checks were successful
git commit AiDA python develop 分支构建部署 / scheduled_deploy (push) Has been skipped
2026-01-12 13:03:58 +08:00
litianxiang
18979af604 debug:推荐接口返回redis值
All checks were successful
git commit AiDA python develop 分支构建部署 / scheduled_deploy (push) Has been skipped
2026-01-12 13:01:26 +08:00
litianxiang
74406f9be4 推荐接口更新向量接口注册
All checks were successful
git commit AiDA python develop 分支构建部署 / scheduled_deploy (push) Has been skipped
2026-01-12 11:59:01 +08:00
3 changed files with 21 additions and 43 deletions

View File

@@ -178,47 +178,23 @@ async def recommend(
@router.get("/redis/user_pref") @router.get("/redis/user_pref")
async def get_all_user_preferences(): async def get_all_user_preferences():
""" """
获取所有以 user_pref 为前缀的 Redis key 信息,按 account_id 分组 获取所有以 user_pref 为前缀的 Redis key 信息
""" """
try: try:
from app.service.utils.redis_utils import Redis from app.service.utils.redis_utils import Redis
from app.service.recommendation_system.config import REDIS_KEY_USER_PREF_PREFIX from app.service.recommendation_system.config import REDIS_KEY_USER_PREF_PREFIX
import json
# 扫描所有匹配 user_pref:* 的 key # 扫描所有匹配 user_pref:* 的 key
pattern = f"{REDIS_KEY_USER_PREF_PREFIX}:*" pattern = f"{REDIS_KEY_USER_PREF_PREFIX}:*"
keys = Redis.scan_keys(pattern) keys = Redis.scan_keys(pattern)
# 按 account_id 分组 # 直接返回所有 key 和原始 value
result = {} result = {}
for key in keys: for key in keys:
# 解析 key 格式: user_pref:{account_id}:{category}
parts = key.split(':')
if len(parts) >= 3:
account_id = parts[1]
category = parts[2]
# 读取对应的值 # 读取对应的值
value = Redis.read(key) value = Redis.read(key)
if value: if value:
try: result[key] = value
vector = json.loads(value)
if account_id not in result:
result[account_id] = {}
result[account_id][category] = {
'key': key,
'preference_vector': vector,
'vector_length': len(vector)
}
except json.JSONDecodeError:
# 如果 JSON 解析失败,保存原始值
if account_id not in result:
result[account_id] = {}
result[account_id][category] = {
'key': key,
'raw_value': value,
'error': 'JSON decode failed'
}
return result return result

View File

@@ -7,6 +7,7 @@ from app.api import api_design_pre_processing
from app.api import api_generate_image from app.api import api_generate_image
from app.api import api_mannequins_edit from app.api import api_mannequins_edit
from app.api import api_pose_transform from app.api import api_pose_transform
from app.api import api_precompute
from app.api import api_prompt_generation from app.api import api_prompt_generation
from app.api import api_recommendation from app.api import api_recommendation
from app.api import api_test from app.api import api_test
@@ -21,6 +22,7 @@ router.include_router(api_prompt_generation.router, tags=['prompt_generation'],
router.include_router(api_design_pre_processing.router, tags=['design_pre_processing'], prefix="/api") router.include_router(api_design_pre_processing.router, tags=['design_pre_processing'], prefix="/api")
router.include_router(api_brand_dna.router, tags=['api_brand_dna'], prefix="/api") router.include_router(api_brand_dna.router, tags=['api_brand_dna'], prefix="/api")
router.include_router(api_recommendation.router, tags=['api_recommendation'], prefix="/api") router.include_router(api_recommendation.router, tags=['api_recommendation'], prefix="/api")
router.include_router(api_precompute.router, tags=['api_precompute'], prefix="/api")
router.include_router(api_mannequins_edit.router, tags=['api_mannequins_edit'], prefix="/api") router.include_router(api_mannequins_edit.router, tags=['api_mannequins_edit'], prefix="/api")
router.include_router(api_pose_transform.router, tags=['api_pose_transform'], prefix="/api") router.include_router(api_pose_transform.router, tags=['api_pose_transform'], prefix="/api")
router.include_router(api_clothing_seg.router, tags=['api_clothing_seg'], prefix="/api") router.include_router(api_clothing_seg.router, tags=['api_clothing_seg'], prefix="/api")

View File

@@ -318,8 +318,8 @@ def precompute_system_sketch_vectors(batch_size: int = 1000, retry_times: int =
def compute_user_preference_vector( def compute_user_preference_vector(
account_id: int, account_id: int,
category: str, category: str,
conn: Optional[pymysql.connections.Connection] = None conn: Optional[pymysql.connections.Connection] = None,
# max_date: Optional[datetime] = None max_date: Optional[datetime] = None
) -> Optional[np.ndarray]: ) -> Optional[np.ndarray]:
""" """
计算用户偏好向量 计算用户偏好向量
@@ -519,16 +519,16 @@ def run_precompute():
logger.info("=" * 50) logger.info("=" * 50)
# 1. 优化数据库表结构 # 1. 优化数据库表结构
logger.info("\n[1/5] 优化数据库表结构...") # logger.info("\n[1/5] 优化数据库表结构...")
optimize_database_table() # optimize_database_table()
# # 2. 创建 Milvus 集合 # # 2. 创建 Milvus 集合
# logger.info("\n[2/5] 创建 Milvus 集合...") # logger.info("\n[2/5] 创建 Milvus 集合...")
# create_collection() # create_collection()
# 3. 历史数据迁移 # 3. 历史数据迁移
logger.info("\n[3/5] 历史数据迁移...") # logger.info("\n[3/5] 历史数据迁移...")
migrate_historical_data() # migrate_historical_data()
# # 4. 系统图向量预计算 # # 4. 系统图向量预计算
# logger.info("\n[4/5] 系统图向量预计算...") # logger.info("\n[4/5] 系统图向量预计算...")
@@ -544,13 +544,13 @@ def run_precompute():
if __name__ == "__main__": if __name__ == "__main__":
# 1. 优化数据库表结构 # # 1. 优化数据库表结构
logger.info("\n[1/5] 优化数据库表结构...") # logger.info("\n[1/5] 优化数据库表结构...")
optimize_database_table() # optimize_database_table()
#
# 3. 历史数据迁移 # # 3. 历史数据迁移
logger.info("\n[3/5] 历史数据迁移...") # logger.info("\n[3/5] 历史数据迁移...")
migrate_historical_data() # migrate_historical_data()
# 5. 初始用户偏好向量生成 # 5. 初始用户偏好向量生成
logger.info("\n[5/5] 初始用户偏好向量生成...") logger.info("\n[5/5] 初始用户偏好向量生成...")