generateWardrobePrompt static method
生成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();
}