Code review fixes: wardrobe migration, response validation, path traversal guard, deduplication
- Migrate 11 character JSONs from old wardrobe keys to _BODY_GROUP_KEYS format - Add is_favourite/is_nsfw columns to Preset model - Add HTTP response validation and timeouts to ComfyUI client - Add path traversal protection on replace cover route - Deduplicate services/mcp.py (4 functions → 2 generic + 2 wrappers) - Extract apply_library_filters() and clean_html_text() shared helpers - Add named constants for 17 ComfyUI workflow node IDs - Fix bare except clauses in services/llm.py - Fix tags schema in ensure_default_outfit() (list → dict) - Convert f-string logging to lazy % formatting - Add 5-minute polling timeout to frontend waitForJob() - Improve migration error handling (non-duplicate errors log at WARNING) - Update CLAUDE.md to reflect all changes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -16,14 +16,13 @@
|
||||
"scene": ""
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "black_dress, lace-trimmed_dress, gothic_lolita",
|
||||
"headwear": "blindfold",
|
||||
"top": "black_dress, cleavage_cutout, feather_trim",
|
||||
"bottom": "short_dress",
|
||||
"legwear": "thighhighs",
|
||||
"footwear": "thigh_boots, black_boots, high_heels",
|
||||
"hands": "black_gloves",
|
||||
"accessories": "katana, sword_on_back"
|
||||
"base": "black_dress, lace-trimmed_dress, gothic_lolita",
|
||||
"head": "blindfold",
|
||||
"upper_body": "black_dress, cleavage_cutout, feather_trim",
|
||||
"lower_body": "short_dress",
|
||||
"additional": "katana, sword_on_back",
|
||||
"feet": "thighhighs, thigh_boots, black_boots, high_heels",
|
||||
"hands": "black_gloves"
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "gothic_lolita, science_fiction, dark_atmosphere",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": "space_station"
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "off-shoulder_dress, two-tone_dress",
|
||||
"headwear": "circlet, hair_ring",
|
||||
"top": "neck_bell, white_collar, long_sleeves, cleavage",
|
||||
"bottom": "black_belt",
|
||||
"legwear": "pantyhose, thigh_strap",
|
||||
"footwear": "",
|
||||
"hands": "bracelets",
|
||||
"accessories": "bell"
|
||||
"base": "off-shoulder_dress, two-tone_dress",
|
||||
"head": "circlet, hair_ring",
|
||||
"upper_body": "neck_bell, white_collar, long_sleeves, cleavage",
|
||||
"lower_body": "black_belt",
|
||||
"additional": "bell",
|
||||
"feet": "pantyhose, thigh_strap",
|
||||
"hands": "bracelets"
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "retro_anime, 1990s_(style), outlaw_star",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": "indoors, laboratory"
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "lab_coat, dress, checkered_pattern",
|
||||
"headwear": "",
|
||||
"top": "lab_coat, dress",
|
||||
"bottom": "",
|
||||
"legwear": "thighhighs, black_thighhighs",
|
||||
"footwear": "high_heels",
|
||||
"hands": "",
|
||||
"accessories": "earrings, ring"
|
||||
"base": "lab_coat, dress, checkered_pattern",
|
||||
"head": "",
|
||||
"upper_body": "lab_coat, dress",
|
||||
"lower_body": "",
|
||||
"additional": "earrings, ring",
|
||||
"feet": "thighhighs, black_thighhighs, high_heels",
|
||||
"hands": ""
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "anime",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": ""
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "eden_academy_school_uniform, black_dress, gold_trim",
|
||||
"headwear": "hair_ornament",
|
||||
"top": "",
|
||||
"bottom": "",
|
||||
"legwear": "white_socks",
|
||||
"footwear": "loafers",
|
||||
"hands": "",
|
||||
"accessories": ""
|
||||
"base": "eden_academy_school_uniform, black_dress, gold_trim",
|
||||
"head": "hair_ornament",
|
||||
"upper_body": "",
|
||||
"lower_body": "",
|
||||
"additional": "",
|
||||
"feet": "white_socks, loafers",
|
||||
"hands": ""
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "anime_style",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": "cityscape, daytime, sky"
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "pink_dress, sleeveless_dress, a-line_dress",
|
||||
"headwear": "red_hair_bow, oversized_bow",
|
||||
"top": "",
|
||||
"bottom": "",
|
||||
"legwear": "white_leggings, white_tights",
|
||||
"footwear": "black_shoes, mary_janes",
|
||||
"hands": "",
|
||||
"accessories": "black_waist_belt"
|
||||
"base": "pink_dress, sleeveless_dress, a-line_dress",
|
||||
"head": "red_hair_bow, oversized_bow",
|
||||
"upper_body": "",
|
||||
"lower_body": "",
|
||||
"additional": "black_waist_belt",
|
||||
"feet": "white_leggings, white_tights, black_shoes, mary_janes",
|
||||
"hands": ""
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "modern_cartoon, cel_shading, vibrant",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": ""
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "blue_dress",
|
||||
"headwear": "",
|
||||
"top": "",
|
||||
"bottom": "black_belt",
|
||||
"legwear": "thighhighs, white_socks",
|
||||
"footwear": "mary_janes",
|
||||
"hands": "",
|
||||
"accessories": ""
|
||||
"base": "blue_dress",
|
||||
"head": "",
|
||||
"upper_body": "",
|
||||
"lower_body": "black_belt",
|
||||
"additional": "",
|
||||
"feet": "thighhighs, white_socks, mary_janes",
|
||||
"hands": ""
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "vibrant_colors",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": ""
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "",
|
||||
"headwear": "",
|
||||
"top": "green_crop_top, sleeveless",
|
||||
"bottom": "black_belt, green_shorts",
|
||||
"legwear": "white_thighhighs",
|
||||
"footwear": "black_boots",
|
||||
"hands": "fingerless_gloves",
|
||||
"accessories": ""
|
||||
"base": "",
|
||||
"head": "",
|
||||
"upper_body": "green_crop_top, sleeveless",
|
||||
"lower_body": "black_belt, green_shorts",
|
||||
"additional": "",
|
||||
"feet": "white_thighhighs, black_boots",
|
||||
"hands": "fingerless_gloves"
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "high_contrast, vibrant",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": ""
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "red_bodysuit, latex_bodysuit",
|
||||
"headwear": "",
|
||||
"top": "",
|
||||
"bottom": "",
|
||||
"legwear": "",
|
||||
"footwear": "boots, high_heels",
|
||||
"hands": "",
|
||||
"accessories": "belt, silver_belt"
|
||||
"base": "red_bodysuit, latex_bodysuit",
|
||||
"head": "",
|
||||
"upper_body": "",
|
||||
"lower_body": "",
|
||||
"additional": "belt, silver_belt",
|
||||
"feet": "boots, high_heels",
|
||||
"hands": ""
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "anime_style, 2000s_(style)",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": ""
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "torn_clothes",
|
||||
"headwear": "",
|
||||
"top": "yellow_shirt, crop_top",
|
||||
"bottom": "jeans, torn_jeans, open_fly, loose_belt",
|
||||
"legwear": "",
|
||||
"footwear": "boots",
|
||||
"hands": "arm_belt",
|
||||
"accessories": "leg_belt"
|
||||
"base": "torn_clothes",
|
||||
"head": "",
|
||||
"upper_body": "yellow_shirt, crop_top",
|
||||
"lower_body": "jeans, torn_jeans, open_fly, loose_belt",
|
||||
"additional": "leg_belt",
|
||||
"feet": "boots",
|
||||
"hands": "arm_belt"
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "anime, video_game",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": ""
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "black_dress, frilled_dress, gothic_lolita",
|
||||
"headwear": "black_hat, mini_hat",
|
||||
"top": "",
|
||||
"bottom": "",
|
||||
"legwear": "thighhighs, black_thighhighs",
|
||||
"footwear": "black_footwear",
|
||||
"hands": "",
|
||||
"accessories": "cross_necklace, scythe"
|
||||
"base": "black_dress, frilled_dress, gothic_lolita",
|
||||
"head": "black_hat, mini_hat",
|
||||
"upper_body": "",
|
||||
"lower_body": "",
|
||||
"additional": "cross_necklace, scythe",
|
||||
"feet": "thighhighs, black_thighhighs, black_footwear",
|
||||
"hands": ""
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "gothic_lolita",
|
||||
|
||||
@@ -16,14 +16,13 @@
|
||||
"scene": "starry_sky, space, night"
|
||||
},
|
||||
"wardrobe": {
|
||||
"full_body": "",
|
||||
"headwear": "",
|
||||
"top": "crop_top",
|
||||
"bottom": "purple_skirt, miniskirt",
|
||||
"legwear": "",
|
||||
"footwear": "thigh_boots, purple_boots",
|
||||
"hands": "vambraces",
|
||||
"accessories": "gorget, belt, armlet"
|
||||
"base": "",
|
||||
"head": "",
|
||||
"upper_body": "crop_top",
|
||||
"lower_body": "purple_skirt, miniskirt",
|
||||
"additional": "gorget, belt, armlet",
|
||||
"feet": "thigh_boots, purple_boots",
|
||||
"hands": "vambraces"
|
||||
},
|
||||
"styles": {
|
||||
"aesthetic": "cartoon, superhero, dc_comics",
|
||||
|
||||
Reference in New Issue
Block a user