generateWardrobePrompt static method

Future<String> generateWardrobePrompt()

生成AI衣橱提示词

Implementation

static Future<String> generateWardrobePrompt() async {
  final items = await getAllClothingItems();
  final stats = await getWardrobeStats();

  if (items.isEmpty) {
    return '\n【用户衣橱】\n用户尚未建立虚拟衣橱。';
  }

  StringBuffer prompt = StringBuffer();
  prompt.writeln('\n【用户虚拟衣橱】');
  prompt.writeln('总计${items.length}件衣物');

  // 分类统计
  final categoryStats = stats['categoryStats'] as Map<String, int>;
  if (categoryStats.isNotEmpty) {
    prompt.write('分类:');
    categoryStats.forEach((category, count) {
      prompt.write('$category${count}件 ');
    });
    prompt.writeln();
  }

  // 风格统计
  final styleStats = stats['styleStats'] as Map<String, int>;
  if (styleStats.isNotEmpty) {
    prompt.write('风格:');
    final topStyles = styleStats.entries.toList()
      ..sort((a, b) => b.value.compareTo(a.value));
    for (var entry in topStyles.take(3)) {
      prompt.write('${entry.key}${entry.value}件 ');
    }
    prompt.writeln();
  }

  // 主要颜色
  final colorStats = stats['colorStats'] as Map<String, int>;
  if (colorStats.isNotEmpty) {
    prompt.write('主要颜色:');
    final topColors = colorStats.entries.toList()
      ..sort((a, b) => b.value.compareTo(a.value));
    for (var entry in topColors.take(5)) {
      prompt.write('${entry.key} ');
    }
    prompt.writeln();
  }

  // 最常穿
  final mostWorn = stats['mostWorn'] as List<ClothingItem>;
  if (mostWorn.isNotEmpty) {
    prompt.write('最爱单品:');
    for (var item in mostWorn.take(3)) {
      prompt.write('${item.name}(穿${item.wearCount}次) ');
    }
    prompt.writeln();
  }

  prompt.writeln('\n请基于用户现有衣橱,提供搭配建议或推荐能与现有单品搭配的新品。');

  return prompt.toString();
}