Просмотр исходного кода

Merge branch 'main' of https://git.yishihui.com/howard/Agent

guantao 5 часов назад
Родитель
Сommit
68f5fc36e0
100 измененных файлов с 2562 добавлено и 7 удалено
  1. 7 7
      agent/trace/models.py
  2. 0 0
      examples/plan/input/descriptions/写生油画__img_1_制作表.json
  3. 0 0
      examples/plan/input/descriptions/写生油画__img_2_制作表.json
  4. 0 0
      examples/plan/input/descriptions/写生油画__img_3_制作表.json
  5. 0 0
      examples/plan/input/descriptions/写生油画__img_4_制作表.json
  6. 0 0
      examples/plan/input/descriptions/写生油画__img_5_制作表.json
  7. BIN
      examples/plan/input/features/background_asset/background_bokeh_img2.png
  8. BIN
      examples/plan/input/features/background_asset/background_green_img1.png
  9. BIN
      examples/plan/input/features/background_asset/background_green_img4.png
  10. 62 0
      examples/plan/input/features/background_asset/mapping.json
  11. BIN
      examples/plan/input/features/character_asset/character_ref_back.png
  12. BIN
      examples/plan/input/features/character_asset/character_ref_img1.png
  13. BIN
      examples/plan/input/features/character_asset/character_ref_kneel.png
  14. BIN
      examples/plan/input/features/character_asset/character_ref_main.png
  15. BIN
      examples/plan/input/features/character_asset/character_ref_side.png
  16. 65 0
      examples/plan/input/features/character_asset/mapping.json
  17. 2 0
      examples/plan/input/features/color_scheme/color_scheme.json
  18. 150 0
      examples/plan/input/features/color_scheme/color_scheme_complete.json
  19. BIN
      examples/plan/input/features/color_scheme/color_scheme_visual.png
  20. BIN
      examples/plan/input/features/color_scheme/color_swatch.png
  21. 132 0
      examples/plan/input/features/color_scheme/img_1_colors.json
  22. BIN
      examples/plan/input/features/color_scheme/img_1_palette.png
  23. 132 0
      examples/plan/input/features/color_scheme/img_2_colors.json
  24. BIN
      examples/plan/input/features/color_scheme/img_2_palette.png
  25. 132 0
      examples/plan/input/features/color_scheme/img_3_colors.json
  26. BIN
      examples/plan/input/features/color_scheme/img_3_palette.png
  27. 132 0
      examples/plan/input/features/color_scheme/img_4_colors.json
  28. BIN
      examples/plan/input/features/color_scheme/img_4_palette.png
  29. 132 0
      examples/plan/input/features/color_scheme/img_5_colors.json
  30. BIN
      examples/plan/input/features/color_scheme/img_5_palette.png
  31. 56 0
      examples/plan/input/features/color_scheme/mapping.json
  32. 87 0
      examples/plan/input/features/costume_description/costume_description.json
  33. BIN
      examples/plan/input/features/depth_map/depth_img_1.png
  34. BIN
      examples/plan/input/features/depth_map/depth_img_1_colored.png
  35. BIN
      examples/plan/input/features/depth_map/depth_img_2.png
  36. BIN
      examples/plan/input/features/depth_map/depth_img_2_colored.png
  37. BIN
      examples/plan/input/features/depth_map/depth_img_3.png
  38. BIN
      examples/plan/input/features/depth_map/depth_img_3_colored.png
  39. BIN
      examples/plan/input/features/depth_map/depth_img_4.png
  40. BIN
      examples/plan/input/features/depth_map/depth_img_4_colored.png
  41. BIN
      examples/plan/input/features/depth_map/depth_img_5.png
  42. BIN
      examples/plan/input/features/depth_map/depth_img_5_colored.png
  43. BIN
      examples/plan/input/features/depth_map/img_1_depth.png
  44. BIN
      examples/plan/input/features/depth_map/img_2_depth.png
  45. BIN
      examples/plan/input/features/depth_map/img_3_depth.png
  46. BIN
      examples/plan/input/features/depth_map/img_4_depth.png
  47. BIN
      examples/plan/input/features/depth_map/img_5_depth.png
  48. 79 0
      examples/plan/input/features/depth_map/mapping.json
  49. BIN
      examples/plan/input/features/easel_asset/easel_blank_canvas_img4.png
  50. BIN
      examples/plan/input/features/easel_asset/easel_with_painting_img3.png
  51. 57 0
      examples/plan/input/features/easel_asset/mapping.json
  52. BIN
      examples/plan/input/features/edge_map/img_1_canny.png
  53. BIN
      examples/plan/input/features/edge_map/img_2_canny.png
  54. BIN
      examples/plan/input/features/edge_map/img_3_canny.png
  55. BIN
      examples/plan/input/features/edge_map/img_4_canny.png
  56. BIN
      examples/plan/input/features/edge_map/img_5_canny.png
  57. 45 0
      examples/plan/input/features/edge_map/mapping.json
  58. 189 0
      examples/plan/input/features/feature_index.json
  59. 155 0
      examples/plan/input/features/lighting_bokeh/lighting_analysis.json
  60. 28 0
      examples/plan/input/features/lighting_bokeh/lighting_img_2.json
  61. 26 0
      examples/plan/input/features/lighting_bokeh/lighting_img_3.json
  62. 27 0
      examples/plan/input/features/lighting_bokeh/lighting_img_5.json
  63. BIN
      examples/plan/input/features/lighting_bokeh/lighting_visual.png
  64. 49 0
      examples/plan/input/features/lighting_bokeh/mapping.json
  65. 125 0
      examples/plan/input/features/lighting_description/lighting_description.json
  66. BIN
      examples/plan/input/features/natural_background_asset/background_ref_img1.png
  67. BIN
      examples/plan/input/features/natural_background_asset/background_ref_img4.png
  68. 51 0
      examples/plan/input/features/natural_background_asset/mapping.json
  69. 61 0
      examples/plan/input/features/painting_in_painting/mapping.json
  70. 12 0
      examples/plan/input/features/painting_in_painting/painting_in_painting_img_1.json
  71. 13 0
      examples/plan/input/features/painting_in_painting/painting_in_painting_img_2.json
  72. 155 0
      examples/plan/input/features/painting_in_painting/pip_analysis.json
  73. BIN
      examples/plan/input/features/painting_in_painting/pip_structure_visual.png
  74. BIN
      examples/plan/input/features/painting_tools_asset/easel_ref_img3.png
  75. BIN
      examples/plan/input/features/painting_tools_asset/easel_ref_img4.png
  76. BIN
      examples/plan/input/features/painting_tools_asset/easel_ref_img4_v2.png
  77. 69 0
      examples/plan/input/features/painting_tools_asset/mapping.json
  78. 79 0
      examples/plan/input/features/palette_asset/mapping.json
  79. BIN
      examples/plan/input/features/palette_asset/palette_impasto_img1_v2.png
  80. BIN
      examples/plan/input/features/palette_asset/palette_impasto_img5_v2.png
  81. BIN
      examples/plan/input/features/palette_asset/palette_ref_img1.png
  82. BIN
      examples/plan/input/features/palette_asset/palette_ref_img5.png
  83. BIN
      examples/plan/input/features/pose_skeleton/img_1_openpose.png
  84. BIN
      examples/plan/input/features/pose_skeleton/img_2_openpose.png
  85. BIN
      examples/plan/input/features/pose_skeleton/img_3_openpose.png
  86. BIN
      examples/plan/input/features/pose_skeleton/img_4_openpose.png
  87. 99 0
      examples/plan/input/features/pose_skeleton/mapping.json
  88. 31 0
      examples/plan/input/features/rose_asset/mapping.json
  89. BIN
      examples/plan/input/features/rose_asset/white_rose_img1.png
  90. BIN
      examples/plan/input/features/soft_edge_map/img_1_soft_edge.png
  91. BIN
      examples/plan/input/features/soft_edge_map/img_2_soft_edge.png
  92. BIN
      examples/plan/input/features/soft_edge_map/img_3_soft_edge.png
  93. BIN
      examples/plan/input/features/soft_edge_map/img_4_soft_edge.png
  94. BIN
      examples/plan/input/features/soft_edge_map/img_5_soft_edge.png
  95. 45 0
      examples/plan/input/features/soft_edge_map/mapping.json
  96. BIN
      examples/plan/input/features/white_dress_asset/dress_ref_back.png
  97. BIN
      examples/plan/input/features/white_dress_asset/dress_ref_back_v2.png
  98. BIN
      examples/plan/input/features/white_dress_asset/dress_ref_backless.png
  99. BIN
      examples/plan/input/features/white_dress_asset/dress_ref_full.png
  100. 78 0
      examples/plan/input/features/white_dress_asset/mapping.json

+ 7 - 7
agent/trace/models.py

@@ -363,15 +363,15 @@ class Message:
         - tool: 使用 tool name
         """
         if role == "system":
-            # system 消息:直接截取文本
+            # system 消息:直接返回文本
             if isinstance(content, str):
-                return content[:200] + "..." if len(content) > 200 else content
+                return content
             return "system prompt"
 
         elif role == "user":
-            # user 消息:直接截取文本
+            # user 消息:直接返回文本
             if isinstance(content, str):
-                return content[:200] + "..." if len(content) > 200 else content
+                return content
             return "user message"
 
         elif role == "assistant":
@@ -380,8 +380,8 @@ class Message:
                 # 优先返回文本内容
                 if content.get("text"):
                     text = content["text"]
-                    # 截断过长的文本
-                    return text[:200] + "..." if len(text) > 200 else text
+                    # 返回完整文本
+                    return text
 
                 # 如果没有文本,检查 tool_calls
                 if content.get("tool_calls"):
@@ -405,7 +405,7 @@ class Message:
 
             # 如果 content 是字符串
             if isinstance(content, str):
-                return content[:200] + "..." if len(content) > 200 else content
+                return content
 
             return "assistant message"
 

+ 0 - 0
examples/plan/input/写生油画__img_1_制作表.json → examples/plan/input/descriptions/写生油画__img_1_制作表.json


+ 0 - 0
examples/plan/input/写生油画__img_2_制作表.json → examples/plan/input/descriptions/写生油画__img_2_制作表.json


+ 0 - 0
examples/plan/input/写生油画__img_3_制作表.json → examples/plan/input/descriptions/写生油画__img_3_制作表.json


+ 0 - 0
examples/plan/input/写生油画__img_4_制作表.json → examples/plan/input/descriptions/写生油画__img_4_制作表.json


+ 0 - 0
examples/plan/input/写生油画__img_5_制作表.json → examples/plan/input/descriptions/写生油画__img_5_制作表.json


BIN
examples/plan/input/features/background_asset/background_bokeh_img2.png


BIN
examples/plan/input/features/background_asset/background_green_img1.png


BIN
examples/plan/input/features/background_asset/background_green_img4.png


+ 62 - 0
examples/plan/input/features/background_asset/mapping.json

@@ -0,0 +1,62 @@
+{
+  "dimension": "background_asset",
+  "type": "实质",
+  "highlight_cluster": "清新雅致的白绿配色 / 唯美梦幻的光影与景深",
+  "description": "户外自然背景素材,包含三种典型状态:清晰绿色草地+树木(img_1)、高饱和绿色背景(img_4)、逆光+散景梦幻背景(img_2)",
+  "files": {
+    "background_green_img1.png": {
+      "source_image": "img_1",
+      "state": "clear green trees and grass, soft natural light",
+      "purpose": "清晰自然绿色背景参考,白绿配色基础"
+    },
+    "background_green_img4.png": {
+      "source_image": "img_4",
+      "state": "vivid saturated green trees and grass, bright daylight",
+      "purpose": "高饱和绿色背景参考,白绿配色最典型"
+    },
+    "background_bokeh_img2.png": {
+      "source_image": "img_2",
+      "state": "backlit green trees with lens flare and bokeh light spots",
+      "purpose": "逆光散景梦幻背景参考,光影景深亮点"
+    }
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.3",
+      "type": "实质",
+      "feature": "自然绿色背景(草地+树木)",
+      "highlight": "清新雅致的白绿配色"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2.3",
+      "type": "实质",
+      "feature": "逆光散景自然背景",
+      "highlight": "唯美梦幻的光影与景深"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3.3",
+      "type": "实质",
+      "feature": "自然背景(含远处建筑)",
+      "highlight": "唯美梦幻的光影与景深"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4.3",
+      "type": "实质",
+      "feature": "高饱和绿色自然背景",
+      "highlight": "清新雅致的白绿配色"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5.3",
+      "type": "实质",
+      "feature": "虚化绿色草地背景",
+      "highlight": "唯美梦幻的光影与景深"
+    }
+  ],
+  "consistency_elements": ["自然背景"],
+  "generation_notes": "背景主色调为高饱和度草木绿(HSV: 100-120°, S>150, V>100),包含草地(下半部分)和树木(上半部分),img_2/3/5有逆光散景效果"
+}

BIN
examples/plan/input/features/character_asset/character_ref_back.png


BIN
examples/plan/input/features/character_asset/character_ref_img1.png


BIN
examples/plan/input/features/character_asset/character_ref_kneel.png


BIN
examples/plan/input/features/character_asset/character_ref_main.png


BIN
examples/plan/input/features/character_asset/character_ref_side.png


+ 65 - 0
examples/plan/input/features/character_asset/mapping.json

@@ -0,0 +1,65 @@
+{
+  "dimension": "character_asset",
+  "type": "实质",
+  "highlight_cluster": "优雅的白裙写生少女",
+  "description": "白裙写生少女人物角色素材,作为图集一致性基座。棕色长直发,纯白宽松长袖连衣裙,手持画笔和调色板。",
+  "files": {
+    "character_ref_back.png": {
+      "source_image": "img_1",
+      "view": "3/4 back view",
+      "purpose": "IP-Adapter主参考图"
+    },
+    "character_ref_side.png": {
+      "source_image": "img_4",
+      "view": "side profile",
+      "purpose": "侧面参考"
+    },
+    "character_ref_kneel.png": {
+      "source_image": "img_3",
+      "view": "kneeling pose",
+      "purpose": "跪坐姿态参考"
+    }
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.1",
+      "type": "实质",
+      "feature": "人物角色基座",
+      "highlight": "优雅的白裙写生少女"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2.1",
+      "type": "实质",
+      "feature": "人物角色基座",
+      "highlight": "优雅的白裙写生少女"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3.1",
+      "type": "实质",
+      "feature": "人物角色基座",
+      "highlight": "优雅的白裙写生少女"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4.1.1",
+      "type": "实质",
+      "feature": "人物角色基座",
+      "highlight": "优雅的白裙写生少女"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5.1",
+      "type": "实质",
+      "feature": "人物角色基座",
+      "highlight": "优雅的白裙写生少女"
+    }
+  ],
+  "consistency_elements": [
+    "女性",
+    "女性衣物"
+  ],
+  "generation_notes": "使用IP-Adapter注入人物一致性,配合DWPose控制姿态"
+}

Разница между файлами не показана из-за своего большого размера
+ 2 - 0
examples/plan/input/features/color_scheme/color_scheme.json


+ 150 - 0
examples/plan/input/features/color_scheme/color_scheme_complete.json

@@ -0,0 +1,150 @@
+{
+  "dimension": "color_scheme",
+  "type": "形式",
+  "highlight_cluster": "清新雅致的白绿配色",
+  "description": "大面积高饱和度自然草木绿背景与人物衣着纯白形成鲜明对比,确立清新自然治愈感的森系视觉基调",
+  "core_contrast": {
+    "formula": "Pure White (#FFFFFF) vs Vivid Green (HSV: 100-120°, S>60%, V>40%)",
+    "contrast_ratio": ">4:1",
+    "sd_tokens": "pure white dress, vivid green background, high contrast, fresh natural color palette, forest aesthetic"
+  },
+  "color_groups": {
+    "white_green_contrast": {
+      "primary_white": {
+        "hex": "#FFFFFF",
+        "rgb": [
+          255,
+          255,
+          255
+        ],
+        "role": "人物白裙 - 纯净主体色"
+      },
+      "vivid_green_1": {
+        "hex": "#4A7C3F",
+        "rgb": [
+          74,
+          124,
+          63
+        ],
+        "role": "自然草木绿 - 高饱和背景"
+      },
+      "vivid_green_2": {
+        "hex": "#6C9255",
+        "rgb": [
+          108,
+          146,
+          85
+        ],
+        "role": "浅草绿 - 中景草地"
+      },
+      "deep_green": {
+        "hex": "#1F2D1E",
+        "rgb": [
+          31,
+          45,
+          30
+        ],
+        "role": "深绿 - 树木阴影"
+      }
+    },
+    "warm_light_accent": {
+      "golden_hour": {
+        "hex": "#D4A853",
+        "rgb": [
+          212,
+          168,
+          83
+        ],
+        "role": "逆光金色 - 光晕暖色"
+      },
+      "warm_skin": {
+        "hex": "#E8C4A0",
+        "rgb": [
+          232,
+          196,
+          160
+        ],
+        "role": "肤色暖调"
+      }
+    },
+    "palette_colors": {
+      "palette_green": {
+        "hex": "#4A8C3F",
+        "rgb": [
+          74,
+          140,
+          63
+        ],
+        "role": "调色板绿色颜料"
+      },
+      "palette_blue": {
+        "hex": "#2E5FA3",
+        "rgb": [
+          46,
+          95,
+          163
+        ],
+        "role": "调色板蓝色颜料"
+      },
+      "palette_red": {
+        "hex": "#C0392B",
+        "rgb": [
+          192,
+          57,
+          43
+        ],
+        "role": "调色板红色颜料"
+      },
+      "palette_yellow": {
+        "hex": "#F1C40F",
+        "rgb": [
+          241,
+          196,
+          15
+        ],
+        "role": "调色板黄色颜料"
+      },
+      "palette_purple": {
+        "hex": "#8E44AD",
+        "rgb": [
+          142,
+          68,
+          173
+        ],
+        "role": "调色板紫色颜料"
+      }
+    }
+  },
+  "per_image_dominant": {
+    "img_1": {
+      "primary": "#3C4C34",
+      "secondary": "#FFFFFF",
+      "accent": "#8E9E9F",
+      "mood": "清新自然"
+    },
+    "img_2": {
+      "primary": "#2D4A2A",
+      "secondary": "#FFFFFF",
+      "accent": "#D4A853",
+      "mood": "逆光梦幻"
+    },
+    "img_3": {
+      "primary": "#4A7C3F",
+      "secondary": "#FFFFFF",
+      "accent": "#C8A870",
+      "mood": "温暖田园"
+    },
+    "img_4": {
+      "primary": "#5A8A45",
+      "secondary": "#FFFFFF",
+      "accent": "#7AB060",
+      "mood": "清新明亮"
+    },
+    "img_5": {
+      "primary": "#4A7C3F",
+      "secondary": "#FFFFFF",
+      "accent": "#8B6914",
+      "mood": "艺术创作"
+    }
+  }
+}

BIN
examples/plan/input/features/color_scheme/color_scheme_visual.png


BIN
examples/plan/input/features/color_scheme/color_swatch.png


+ 132 - 0
examples/plan/input/features/color_scheme/img_1_colors.json

@@ -0,0 +1,132 @@
+{
+  "dominant_colors": [
+    {
+      "hex": "#1f2d1e",
+      "rgb": [
+        31,
+        45,
+        30
+      ],
+      "hsv": [
+        58,
+        85,
+        45
+      ],
+      "ratio": 0.199,
+      "percentage": "19.9%"
+    },
+    {
+      "hex": "#3c4c34",
+      "rgb": [
+        60,
+        76,
+        52
+      ],
+      "hsv": [
+        50,
+        81,
+        76
+      ],
+      "ratio": 0.1802,
+      "percentage": "18.0%"
+    },
+    {
+      "hex": "#567642",
+      "rgb": [
+        86,
+        118,
+        66
+      ],
+      "hsv": [
+        48,
+        112,
+        118
+      ],
+      "ratio": 0.1618,
+      "percentage": "16.2%"
+    },
+    {
+      "hex": "#6c9255",
+      "rgb": [
+        108,
+        146,
+        85
+      ],
+      "hsv": [
+        49,
+        107,
+        146
+      ],
+      "ratio": 0.1498,
+      "percentage": "15.0%"
+    },
+    {
+      "hex": "#8e9e9f",
+      "rgb": [
+        142,
+        158,
+        159
+      ],
+      "hsv": [
+        92,
+        27,
+        159
+      ],
+      "ratio": 0.1126,
+      "percentage": "11.3%"
+    },
+    {
+      "hex": "#a6b6bd",
+      "rgb": [
+        166,
+        182,
+        189
+      ],
+      "hsv": [
+        99,
+        31,
+        189
+      ],
+      "ratio": 0.0862,
+      "percentage": "8.6%"
+    },
+    {
+      "hex": "#607d7e",
+      "rgb": [
+        96,
+        125,
+        126
+      ],
+      "hsv": [
+        91,
+        61,
+        126
+      ],
+      "ratio": 0.0554,
+      "percentage": "5.5%"
+    },
+    {
+      "hex": "#c5d3dd",
+      "rgb": [
+        197,
+        211,
+        221
+      ],
+      "hsv": [
+        103,
+        28,
+        221
+      ],
+      "ratio": 0.055,
+      "percentage": "5.5%"
+    }
+  ],
+  "color_temperature": "neutral",
+  "saturation_level": "medium",
+  "brightness_level": "dark",
+  "white_green_contrast": {
+    "description": "High contrast between pure white (dress) and vivid green (natural background)",
+    "white_ratio": 0,
+    "green_ratio": 0.3116
+  }
+}

BIN
examples/plan/input/features/color_scheme/img_1_palette.png


+ 132 - 0
examples/plan/input/features/color_scheme/img_2_colors.json

@@ -0,0 +1,132 @@
+{
+  "dominant_colors": [
+    {
+      "hex": "#94b164",
+      "rgb": [
+        148,
+        177,
+        100
+      ],
+      "hsv": [
+        41,
+        111,
+        177
+      ],
+      "ratio": 0.1993,
+      "percentage": "19.9%"
+    },
+    {
+      "hex": "#edf0ee",
+      "rgb": [
+        237,
+        240,
+        238
+      ],
+      "hsv": [
+        70,
+        3,
+        240
+      ],
+      "ratio": 0.1808,
+      "percentage": "18.1%"
+    },
+    {
+      "hex": "#c7d4d4",
+      "rgb": [
+        199,
+        212,
+        212
+      ],
+      "hsv": [
+        90,
+        16,
+        212
+      ],
+      "ratio": 0.1391,
+      "percentage": "13.9%"
+    },
+    {
+      "hex": "#454233",
+      "rgb": [
+        69,
+        66,
+        51
+      ],
+      "hsv": [
+        25,
+        67,
+        69
+      ],
+      "ratio": 0.1192,
+      "percentage": "11.9%"
+    },
+    {
+      "hex": "#808a5f",
+      "rgb": [
+        128,
+        138,
+        95
+      ],
+      "hsv": [
+        37,
+        79,
+        138
+      ],
+      "ratio": 0.1177,
+      "percentage": "11.8%"
+    },
+    {
+      "hex": "#5f604b",
+      "rgb": [
+        95,
+        96,
+        75
+      ],
+      "hsv": [
+        31,
+        56,
+        96
+      ],
+      "ratio": 0.1042,
+      "percentage": "10.4%"
+    },
+    {
+      "hex": "#c5b994",
+      "rgb": [
+        197,
+        185,
+        148
+      ],
+      "hsv": [
+        23,
+        63,
+        197
+      ],
+      "ratio": 0.0879,
+      "percentage": "8.8%"
+    },
+    {
+      "hex": "#8aa6a4",
+      "rgb": [
+        138,
+        166,
+        164
+      ],
+      "hsv": [
+        88,
+        43,
+        166
+      ],
+      "ratio": 0.0518,
+      "percentage": "5.2%"
+    }
+  ],
+  "color_temperature": "neutral",
+  "saturation_level": "low",
+  "brightness_level": "bright",
+  "white_green_contrast": {
+    "description": "High contrast between pure white (dress) and vivid green (natural background)",
+    "white_ratio": 0.1808,
+    "green_ratio": 0.5496
+  }
+}

BIN
examples/plan/input/features/color_scheme/img_2_palette.png


+ 132 - 0
examples/plan/input/features/color_scheme/img_3_colors.json

@@ -0,0 +1,132 @@
+{
+  "dominant_colors": [
+    {
+      "hex": "#f5f6f3",
+      "rgb": [
+        245,
+        246,
+        243
+      ],
+      "hsv": [
+        40,
+        3,
+        246
+      ],
+      "ratio": 0.1762,
+      "percentage": "17.6%"
+    },
+    {
+      "hex": "#839c56",
+      "rgb": [
+        131,
+        156,
+        86
+      ],
+      "hsv": [
+        41,
+        114,
+        156
+      ],
+      "ratio": 0.1738,
+      "percentage": "17.4%"
+    },
+    {
+      "hex": "#6b744d",
+      "rgb": [
+        107,
+        116,
+        77
+      ],
+      "hsv": [
+        37,
+        86,
+        116
+      ],
+      "ratio": 0.1655,
+      "percentage": "16.6%"
+    },
+    {
+      "hex": "#a1bd67",
+      "rgb": [
+        161,
+        189,
+        103
+      ],
+      "hsv": [
+        40,
+        116,
+        189
+      ],
+      "ratio": 0.1475,
+      "percentage": "14.8%"
+    },
+    {
+      "hex": "#4f5139",
+      "rgb": [
+        79,
+        81,
+        57
+      ],
+      "hsv": [
+        33,
+        76,
+        81
+      ],
+      "ratio": 0.1119,
+      "percentage": "11.2%"
+    },
+    {
+      "hex": "#cadee1",
+      "rgb": [
+        202,
+        222,
+        225
+      ],
+      "hsv": [
+        94,
+        26,
+        225
+      ],
+      "ratio": 0.1059,
+      "percentage": "10.6%"
+    },
+    {
+      "hex": "#c2c0a4",
+      "rgb": [
+        194,
+        192,
+        164
+      ],
+      "hsv": [
+        28,
+        39,
+        194
+      ],
+      "ratio": 0.0803,
+      "percentage": "8.0%"
+    },
+    {
+      "hex": "#749da1",
+      "rgb": [
+        116,
+        157,
+        161
+      ],
+      "hsv": [
+        93,
+        71,
+        161
+      ],
+      "ratio": 0.0389,
+      "percentage": "3.9%"
+    }
+  ],
+  "color_temperature": "neutral",
+  "saturation_level": "low",
+  "brightness_level": "medium",
+  "white_green_contrast": {
+    "description": "High contrast between pure white (dress) and vivid green (natural background)",
+    "white_ratio": 0.2821,
+    "green_ratio": 0.6629999999999999
+  }
+}

BIN
examples/plan/input/features/color_scheme/img_3_palette.png


+ 132 - 0
examples/plan/input/features/color_scheme/img_4_colors.json

@@ -0,0 +1,132 @@
+{
+  "dominant_colors": [
+    {
+      "hex": "#5e6f3f",
+      "rgb": [
+        94,
+        111,
+        63
+      ],
+      "hsv": [
+        41,
+        110,
+        111
+      ],
+      "ratio": 0.2054,
+      "percentage": "20.5%"
+    },
+    {
+      "hex": "#7a7b4c",
+      "rgb": [
+        122,
+        123,
+        76
+      ],
+      "hsv": [
+        31,
+        97,
+        123
+      ],
+      "ratio": 0.1574,
+      "percentage": "15.7%"
+    },
+    {
+      "hex": "#968e58",
+      "rgb": [
+        150,
+        142,
+        88
+      ],
+      "hsv": [
+        26,
+        105,
+        150
+      ],
+      "ratio": 0.1407,
+      "percentage": "14.1%"
+    },
+    {
+      "hex": "#dce2e2",
+      "rgb": [
+        220,
+        226,
+        226
+      ],
+      "hsv": [
+        90,
+        7,
+        226
+      ],
+      "ratio": 0.1277,
+      "percentage": "12.8%"
+    },
+    {
+      "hex": "#50562a",
+      "rgb": [
+        80,
+        86,
+        42
+      ],
+      "hsv": [
+        34,
+        130,
+        86
+      ],
+      "ratio": 0.127,
+      "percentage": "12.7%"
+    },
+    {
+      "hex": "#ad9d7a",
+      "rgb": [
+        173,
+        157,
+        122
+      ],
+      "hsv": [
+        21,
+        75,
+        173
+      ],
+      "ratio": 0.0945,
+      "percentage": "9.4%"
+    },
+    {
+      "hex": "#c2bcac",
+      "rgb": [
+        194,
+        188,
+        172
+      ],
+      "hsv": [
+        22,
+        29,
+        194
+      ],
+      "ratio": 0.0868,
+      "percentage": "8.7%"
+    },
+    {
+      "hex": "#2e321c",
+      "rgb": [
+        46,
+        50,
+        28
+      ],
+      "hsv": [
+        35,
+        112,
+        50
+      ],
+      "ratio": 0.0605,
+      "percentage": "6.0%"
+    }
+  ],
+  "color_temperature": "neutral",
+  "saturation_level": "medium",
+  "brightness_level": "medium",
+  "white_green_contrast": {
+    "description": "High contrast between pure white (dress) and vivid green (natural background)",
+    "white_ratio": 0.1277,
+    "green_ratio": 0.3628
+  }
+}

BIN
examples/plan/input/features/color_scheme/img_4_palette.png


+ 132 - 0
examples/plan/input/features/color_scheme/img_5_colors.json

@@ -0,0 +1,132 @@
+{
+  "dominant_colors": [
+    {
+      "hex": "#3d5c2a",
+      "rgb": [
+        61,
+        92,
+        42
+      ],
+      "hsv": [
+        49,
+        139,
+        92
+      ],
+      "ratio": 0.2671,
+      "percentage": "26.7%"
+    },
+    {
+      "hex": "#e9ecef",
+      "rgb": [
+        233,
+        236,
+        239
+      ],
+      "hsv": [
+        105,
+        6,
+        239
+      ],
+      "ratio": 0.2276,
+      "percentage": "22.8%"
+    },
+    {
+      "hex": "#c2cace",
+      "rgb": [
+        194,
+        202,
+        206
+      ],
+      "hsv": [
+        100,
+        15,
+        206
+      ],
+      "ratio": 0.195,
+      "percentage": "19.5%"
+    },
+    {
+      "hex": "#2d7065",
+      "rgb": [
+        45,
+        112,
+        101
+      ],
+      "hsv": [
+        85,
+        153,
+        112
+      ],
+      "ratio": 0.0843,
+      "percentage": "8.4%"
+    },
+    {
+      "hex": "#b0aba5",
+      "rgb": [
+        176,
+        171,
+        165
+      ],
+      "hsv": [
+        16,
+        16,
+        176
+      ],
+      "ratio": 0.0753,
+      "percentage": "7.5%"
+    },
+    {
+      "hex": "#1e2f1e",
+      "rgb": [
+        30,
+        47,
+        30
+      ],
+      "hsv": [
+        60,
+        92,
+        47
+      ],
+      "ratio": 0.0533,
+      "percentage": "5.3%"
+    },
+    {
+      "hex": "#927756",
+      "rgb": [
+        146,
+        119,
+        86
+      ],
+      "hsv": [
+        17,
+        105,
+        146
+      ],
+      "ratio": 0.0524,
+      "percentage": "5.2%"
+    },
+    {
+      "hex": "#6196b6",
+      "rgb": [
+        97,
+        150,
+        182
+      ],
+      "hsv": [
+        101,
+        119,
+        182
+      ],
+      "ratio": 0.045,
+      "percentage": "4.5%"
+    }
+  ],
+  "color_temperature": "neutral",
+  "saturation_level": "low",
+  "brightness_level": "medium",
+  "white_green_contrast": {
+    "description": "High contrast between pure white (dress) and vivid green (natural background)",
+    "white_ratio": 0.2276,
+    "green_ratio": 0.0843
+  }
+}

BIN
examples/plan/input/features/color_scheme/img_5_palette.png


+ 56 - 0
examples/plan/input/features/color_scheme/mapping.json

@@ -0,0 +1,56 @@
+{
+  "dimension": "color_scheme",
+  "type": "形式",
+  "highlight_cluster": "清新雅致的白绿配色",
+  "description": "大面积高饱和度自然草木绿背景与人物衣着纯白形成鲜明对比,确立清新自然治愈感的森系视觉基调",
+  "files": {
+    "color_scheme_visual.png": {
+      "type": "视觉参考图",
+      "purpose": "完整色彩方案可视化,包含白绿对比、暖光色调、调色板颜料色三组配色",
+      "tool": "Python PIL生成"
+    },
+    "color_scheme_complete.json": {
+      "type": "完整色彩数据",
+      "purpose": "包含所有颜色组的HEX值、RGB值、角色描述和SD提示词"
+    },
+    "img_1_palette.png": "img_1色板可视化(白绿配色典型)",
+    "img_4_palette.png": "img_4色板可视化(白绿配色最典型)"
+  },
+  "key_colors": {
+    "primary_white": {
+      "hex": "#FFFFFF",
+      "role": "人物白裙,纯净主体色",
+      "sd_token": "pure white dress, white clothing"
+    },
+    "primary_green": {
+      "hex": "#4A7C3F",
+      "role": "自然草木绿背景,高饱和度",
+      "sd_token": "lush green grass, vivid green trees, saturated green background"
+    },
+    "accent_warm": {
+      "hex": "#D4A853",
+      "role": "阳光暖色调,逆光光晕",
+      "sd_token": "warm sunlight, golden hour light"
+    }
+  },
+  "color_contrast_formula": "High contrast: Pure white (#FFFFFF) vs Vivid green (HSV: 100-120°, S>60%, V>40%)",
+  "sd_tokens": "pure white dress, vivid green background, high contrast, fresh natural color palette, forest aesthetic, white and green color scheme",
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1",
+      "type": "形式",
+      "feature": "白绿配色",
+      "specific": "白裙+绿色草地背景",
+      "path": "output/features/color_scheme/color_scheme_visual.png"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4",
+      "type": "形式",
+      "feature": "白绿配色",
+      "specific": "白裙+高饱和绿色背景(最典型)",
+      "path": "output/features/color_scheme/color_scheme_visual.png"
+    }
+  ]
+}

+ 87 - 0
examples/plan/input/features/costume_description/costume_description.json

@@ -0,0 +1,87 @@
+{
+  "dimension": "costume_description",
+  "type": "形式",
+  "highlight_cluster": "优雅的白裙写生少女",
+  "description": "白色长袖连衣裙的款式、材质、褶皱等形式特征的专业文字描述,用于生成模型的服装控制信号",
+  "consistency_note": "5张图均为同一件或同款白裙,核心特征一致:纯白色、宽松长袖、飘逸裙摆、腰部收腰",
+  "per_image": {
+    "img_1": {
+      "paragraph": "段落1.1.2.1",
+      "highlight": "优雅的白裙写生少女",
+      "features": {
+        "color": "pure white, no pattern or decoration",
+        "silhouette": "long-sleeve A-line maxi dress, V-neckline, loose sleeves, flowing skirt to ankle",
+        "back_design": "V-back with tie/lace-up detail at back",
+        "waist": "slightly cinched waist with tie",
+        "fabric": "lightweight cotton-linen or silk blend, excellent drape and breathability",
+        "texture": "soft, slightly sheer, natural wrinkle texture",
+        "wrinkles": "natural flowing wrinkles at skirt hem and sleeves, especially at waist and arm bends",
+        "sd_prompt": "pure white long sleeve maxi dress, loose flowing sleeves, V-back backless design with tie, cinched waist, flowing skirt, lightweight cotton linen fabric, natural drape, elegant wrinkles"
+      }
+    },
+    "img_2": {
+      "paragraph": "段落2.1.2.1",
+      "highlight": "优雅的白裙写生少女",
+      "features": {
+        "color": "pure white, slightly warm ivory tone in sunlight",
+        "silhouette": "long-sleeve A-line maxi dress, V-back backless design, loose sleeves",
+        "back_design": "deep V-back with tie/lace-up, backless",
+        "waist": "tie-cinched waist",
+        "fabric": "silk or cotton-silk blend, smooth surface with slight sheen, lightweight",
+        "texture": "smooth, slightly lustrous, soft drape",
+        "wrinkles": "natural vertical drape wrinkles at skirt, subtle wrinkles at V-back",
+        "sd_prompt": "pure white long sleeve maxi dress, deep V-back backless with lace-up tie, cinched waist, flowing A-line skirt to ankle, silk-like fabric with slight sheen, elegant drape"
+      }
+    },
+    "img_3": {
+      "paragraph": "段落3.1.2.1",
+      "highlight": "优雅的白裙写生少女",
+      "features": {
+        "color": "pure white, clean and bright",
+        "silhouette": "long-sleeve maxi dress, V-back backless, loose flowing skirt to floor",
+        "back_design": "V-back with white cross-lace tie detail, backless",
+        "waist": "tie-cinched waist",
+        "fabric": "lightweight soft cotton-linen or chiffon, excellent drape",
+        "texture": "soft, flowing, natural",
+        "wrinkles": "multiple soft natural wrinkles at skirt due to kneeling pose, layered and airy",
+        "sd_prompt": "pure white long sleeve maxi dress, V-back backless with cross lace-up tie, cinched waist, floor-length flowing skirt, soft cotton chiffon fabric, multiple natural wrinkles from kneeling pose"
+      }
+    },
+    "img_4": {
+      "paragraph": "段落4.1.2.1",
+      "highlight": "优雅的白裙写生少女",
+      "features": {
+        "color": "pure white, clean and bright",
+        "silhouette": "long-sleeve maxi dress, round neckline, loose sleeves, loose flowing skirt to ankle",
+        "back_design": "round neck, modest back",
+        "waist": "slightly cinched waist",
+        "fabric": "cotton-linen or chiffon, lightweight breathable",
+        "texture": "soft, flowing, natural",
+        "wrinkles": "natural vertical drape wrinkles at skirt and sleeves, smooth flowing lines",
+        "sd_prompt": "pure white long sleeve maxi dress, round neckline, loose flowing sleeves, slightly cinched waist, ankle-length flowing skirt, lightweight cotton linen fabric, natural smooth drape"
+      }
+    },
+    "img_5": {
+      "paragraph": "段落5.1.2",
+      "highlight": "优雅的白裙写生少女",
+      "features": {
+        "color": "pure white, no pattern",
+        "silhouette": "long-sleeve shirt + long skirt combination, loose fit, cinched waist",
+        "back_design": "not visible (upper body close-up)",
+        "waist": "cinched waist design",
+        "fabric": "soft cotton-linen or silk blend, slight sheen, good drape",
+        "texture": "soft, slightly lustrous",
+        "wrinkles": "natural wrinkles at arm bends and waist, adds dimensionality",
+        "sd_prompt": "pure white long sleeve top and long skirt, loose fit, cinched waist, soft cotton linen fabric with slight sheen, natural wrinkles at arm bends"
+      }
+    }
+  },
+  "unified_sd_prompt": "pure white long sleeve maxi dress, backless V-back with lace-up tie detail, cinched waist, loose flowing sleeves, floor-length flowing skirt, lightweight cotton linen or silk blend fabric, natural elegant drape, soft wrinkles",
+  "mapping": [
+    {"image": "img_1", "paragraph": "段落1.1.2.1", "type": "形式", "feature": "白裙服装形式描述"},
+    {"image": "img_2", "paragraph": "段落2.1.2.1", "type": "形式", "feature": "白裙服装形式描述(露背)"},
+    {"image": "img_3", "paragraph": "段落3.1.2.1", "type": "形式", "feature": "白裙服装形式描述(跪坐褶皱)"},
+    {"image": "img_4", "paragraph": "段落4.1.2.1", "type": "形式", "feature": "白裙服装形式描述(圆领款)"},
+    {"image": "img_5", "paragraph": "段落5.1.2",   "type": "形式", "feature": "白裙服装形式描述(上半身特写)"}
+  ]
+}

BIN
examples/plan/input/features/depth_map/depth_img_1.png


BIN
examples/plan/input/features/depth_map/depth_img_1_colored.png


BIN
examples/plan/input/features/depth_map/depth_img_2.png


BIN
examples/plan/input/features/depth_map/depth_img_2_colored.png


BIN
examples/plan/input/features/depth_map/depth_img_3.png


BIN
examples/plan/input/features/depth_map/depth_img_3_colored.png


BIN
examples/plan/input/features/depth_map/depth_img_4.png


BIN
examples/plan/input/features/depth_map/depth_img_4_colored.png


BIN
examples/plan/input/features/depth_map/depth_img_5.png


BIN
examples/plan/input/features/depth_map/depth_img_5_colored.png


BIN
examples/plan/input/features/depth_map/img_1_depth.png


BIN
examples/plan/input/features/depth_map/img_2_depth.png


BIN
examples/plan/input/features/depth_map/img_3_depth.png


BIN
examples/plan/input/features/depth_map/img_4_depth.png


BIN
examples/plan/input/features/depth_map/img_5_depth.png


+ 79 - 0
examples/plan/input/features/depth_map/mapping.json

@@ -0,0 +1,79 @@
+{
+  "dimension": "depth_map",
+  "type": "形式",
+  "description": "深度图,用于ControlNet深度控制,反映场景空间层次和浅景深效果",
+  "valid_files": {
+    "img_1_depth.png": {
+      "source": "img_1",
+      "method": "局部方差法(清晰度代理深度)",
+      "mean": 72.3
+    },
+    "img_2_depth.png": {
+      "source": "img_2",
+      "method": "局部方差法(清晰度代理深度)",
+      "mean": 79.1
+    },
+    "img_3_depth.png": {
+      "source": "img_3",
+      "method": "局部方差法(清晰度代理深度)",
+      "mean": 93.1
+    },
+    "img_4_depth.png": {
+      "source": "img_4",
+      "method": "局部方差法(清晰度代理深度)",
+      "mean": 82.5
+    },
+    "img_5_depth.png": {
+      "source": "img_5",
+      "method": "局部方差法(清晰度代理深度)",
+      "mean": 65.8
+    }
+  },
+  "tool_limitation": "当前使用OpenCV局部方差法(清晰度作为深度代理),非真实深度估计。建议生产环境使用MiDaS/DPT-Large/Depth-Anything-V2模型获取更精准的深度图。",
+  "recommended_tool": "Depth-Anything-V2 (2024年最新,精度最高) 或 MiDaS v3.1",
+  "depth_interpretation": {
+    "white": "近景(清晰区域)- 人物、画架、调色板",
+    "gray": "中景",
+    "black": "远景(虚化区域)- 背景树木草地"
+  },
+  "mapping": [
+    {
+      "image": "img_2",
+      "paragraph": "段落2",
+      "type": "形式",
+      "feature": "景深空间关系",
+      "highlight": "唯美梦幻的光影与景深",
+      "path": "output/features/depth_map/img_2_depth.png"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3",
+      "type": "形式",
+      "feature": "景深空间关系",
+      "highlight": "唯美梦幻的光影与景深",
+      "path": "output/features/depth_map/img_3_depth.png"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5",
+      "type": "形式",
+      "feature": "景深空间关系",
+      "highlight": "唯美梦幻的光影与景深",
+      "path": "output/features/depth_map/img_5_depth.png"
+    },
+    {
+      "image": "img_1",
+      "paragraph": "段落1",
+      "type": "形式",
+      "feature": "景深空间关系",
+      "path": "output/features/depth_map/img_1_depth.png"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4",
+      "type": "形式",
+      "feature": "景深空间关系",
+      "path": "output/features/depth_map/img_4_depth.png"
+    }
+  ]
+}

BIN
examples/plan/input/features/easel_asset/easel_blank_canvas_img4.png


BIN
examples/plan/input/features/easel_asset/easel_with_painting_img3.png


+ 57 - 0
examples/plan/input/features/easel_asset/mapping.json

@@ -0,0 +1,57 @@
+{
+  "dimension": "easel_asset",
+  "type": "实质",
+  "highlight_cluster": "构建叙事的写生道具",
+  "description": "木质三脚画架本体素材,包含两种状态:承载进行中油画的画架(img_3)和承载空白画布+白玫瑰的画架(img_4)",
+  "files": {
+    "easel_with_painting_img3.png": {
+      "source_image": "img_3",
+      "state": "easel with impressionistic oil painting on canvas",
+      "purpose": "画架+进行中油画参考,用于画中画叙事场景"
+    },
+    "easel_blank_canvas_img4.png": {
+      "source_image": "img_4",
+      "state": "easel with blank white canvas + white rose on crossbar",
+      "purpose": "画架+空白画布+白玫瑰参考,用于写生道具叙事场景"
+    }
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.2",
+      "type": "实质",
+      "feature": "木质三脚画架",
+      "highlight": "构建叙事的写生道具"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2.2",
+      "type": "实质",
+      "feature": "木质三脚画架",
+      "highlight": "构建叙事的写生道具"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3.2",
+      "type": "实质",
+      "feature": "木质三脚画架(含油画)",
+      "highlight": "构建叙事的写生道具"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4.2",
+      "type": "实质",
+      "feature": "木质三脚画架(空白画布+白玫瑰)",
+      "highlight": "构建叙事的写生道具"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5.2",
+      "type": "实质",
+      "feature": "木质三脚画架(局部可见)",
+      "highlight": "构建叙事的写生道具"
+    }
+  ],
+  "consistency_elements": ["画架与画布", "画架与油画"],
+  "generation_notes": "画架为浅棕色木质三脚架结构,高约150-180cm,宽约60-80cm,顶部有可调节画板支撑架,底部有横向支撑杆"
+}

BIN
examples/plan/input/features/edge_map/img_1_canny.png


BIN
examples/plan/input/features/edge_map/img_2_canny.png


BIN
examples/plan/input/features/edge_map/img_3_canny.png


BIN
examples/plan/input/features/edge_map/img_4_canny.png


BIN
examples/plan/input/features/edge_map/img_5_canny.png


+ 45 - 0
examples/plan/input/features/edge_map/mapping.json

@@ -0,0 +1,45 @@
+{
+  "dimension": "edge_map",
+  "type": "形式",
+  "description": "Canny边缘检测图,用于ControlNet结构控制,保留人物轮廓、画架结构等关键线条",
+  "tool": "OpenCV Canny边缘检测 (threshold: 50-150)",
+  "files": {
+    "img_1_canny.png": "img_1 Canny边缘图",
+    "img_2_canny.png": "img_2 Canny边缘图",
+    "img_3_canny.png": "img_3 Canny边缘图",
+    "img_4_canny.png": "img_4 Canny边缘图",
+    "img_5_canny.png": "img_5 Canny边缘图"
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1",
+      "type": "形式",
+      "feature": "结构边缘控制"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2",
+      "type": "形式",
+      "feature": "结构边缘控制"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3",
+      "type": "形式",
+      "feature": "结构边缘控制"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4",
+      "type": "形式",
+      "feature": "结构边缘控制"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5",
+      "type": "形式",
+      "feature": "结构边缘控制"
+    }
+  ]
+}

+ 189 - 0
examples/plan/input/features/feature_index.json

@@ -0,0 +1,189 @@
+{
+  "project": "户外白裙写生少女",
+  "version": "2.0",
+  "description": "多模态特征空间,支持无损还原与高自由度改写",
+  "total_dimensions": 12,
+  "total_files": 89,
+  "dimensions": {
+    "实质维度": {
+      "character_asset": {
+        "type": "实质",
+        "highlight": "优雅的白裙写生少女",
+        "consistency_element": "女性",
+        "primary_files": [
+          "character_ref_back.png",
+          "character_ref_main.png",
+          "character_ref_side.png",
+          "character_ref_kneel.png"
+        ],
+        "usage": "IP-Adapter人物一致性",
+        "quality": "★★★★★",
+        "path": "output/features/character_asset/"
+      },
+      "white_dress_asset": {
+        "type": "实质",
+        "highlight": "优雅的白裙写生少女",
+        "consistency_element": "女性衣物",
+        "primary_files": [
+          "dress_ref_back_v2.png",
+          "dress_ref_full.png"
+        ],
+        "usage": "服装一致性控制",
+        "quality": "★★★★",
+        "path": "output/features/white_dress_asset/"
+      },
+      "palette_asset": {
+        "type": "实质",
+        "highlight": "斑斓厚重的油画颜料",
+        "consistency_element": "绘画工具",
+        "primary_files": [
+          "palette_impasto_img5_v2.png",
+          "palette_impasto_img1_v2.png"
+        ],
+        "usage": "调色板Impasto质感参考",
+        "quality": "★★★★★",
+        "path": "output/features/palette_asset/"
+      },
+      "painting_tools_asset": {
+        "type": "实质",
+        "highlight": "构建叙事的写生道具",
+        "consistency_element": "画架与画布",
+        "primary_files": [
+          "easel_ref_img4_v2.png",
+          "easel_ref_img3.png"
+        ],
+        "usage": "画架画布道具参考",
+        "quality": "★★★★",
+        "path": "output/features/painting_tools_asset/"
+      },
+      "natural_background_asset": {
+        "type": "实质",
+        "highlight": "清新雅致的白绿配色",
+        "consistency_element": "自然背景",
+        "primary_files": [
+          "background_ref_img4.png",
+          "background_ref_img1.png"
+        ],
+        "usage": "自然背景环境参考",
+        "quality": "★★★★★",
+        "path": "output/features/natural_background_asset/"
+      }
+    },
+    "形式维度": {
+      "pose_skeleton": {
+        "type": "形式",
+        "highlight": "优雅的白裙写生少女",
+        "primary_files": [
+          "img_1_pose.png",
+          "img_2_pose.png",
+          "img_3_pose.png",
+          "img_4_pose.png",
+          "img_5_pose.png"
+        ],
+        "usage": "ControlNet OpenPose姿态控制",
+        "quality": "★★★★★",
+        "validation": "已通过一致性校验",
+        "path": "output/features/pose_skeleton/"
+      },
+      "painting_in_painting": {
+        "type": "形式",
+        "highlight": "虚实呼应的画中画结构",
+        "primary_files": [
+          "pip_structure_visual.png",
+          "pip_analysis.json"
+        ],
+        "usage": "构图叙事结构控制",
+        "quality": "★★★★",
+        "path": "output/features/painting_in_painting/"
+      },
+      "color_scheme": {
+        "type": "形式",
+        "highlight": "清新雅致的白绿配色",
+        "primary_files": [
+          "color_scheme_visual.png",
+          "color_scheme_complete.json"
+        ],
+        "usage": "色彩方案控制",
+        "quality": "★★★★★",
+        "key_formula": "Pure White (#FFFFFF) vs Vivid Green (HSV: 100-120°, S>60%, V>40%)",
+        "path": "output/features/color_scheme/"
+      },
+      "lighting_bokeh": {
+        "type": "形式",
+        "highlight": "唯美梦幻的光影与景深",
+        "primary_files": [
+          "lighting_visual.png",
+          "lighting_analysis.json"
+        ],
+        "usage": "光影景深参数控制",
+        "quality": "★★★★★",
+        "sd_tokens": "backlit, rim lighting, bokeh, shallow DOF, golden hour, dreamy atmosphere",
+        "path": "output/features/lighting_bokeh/"
+      },
+      "edge_map": {
+        "type": "形式",
+        "primary_files": [
+          "img_1_canny.png",
+          "img_2_canny.png",
+          "img_3_canny.png",
+          "img_4_canny.png",
+          "img_5_canny.png"
+        ],
+        "usage": "ControlNet Canny结构控制",
+        "quality": "★★★★",
+        "path": "output/features/edge_map/"
+      },
+      "soft_edge_map": {
+        "type": "形式",
+        "primary_files": [
+          "img_1_soft_edge.png",
+          "img_2_soft_edge.png",
+          "img_3_soft_edge.png",
+          "img_4_soft_edge.png",
+          "img_5_soft_edge.png"
+        ],
+        "usage": "ControlNet软边缘控制",
+        "quality": "★★★★",
+        "path": "output/features/soft_edge_map/"
+      },
+      "depth_map": {
+        "type": "形式",
+        "primary_files": [
+          "img_1_depth.png",
+          "img_2_depth.png",
+          "img_3_depth.png",
+          "img_4_depth.png",
+          "img_5_depth.png"
+        ],
+        "usage": "ControlNet深度控制",
+        "quality": "★★★",
+        "limitation": "局部方差法,非真实深度。建议使用Depth-Anything-V2重新提取",
+        "path": "output/features/depth_map/"
+      }
+    }
+  },
+  "sd_generation_config": {
+    "controlnet_stack": [
+      {
+        "type": "OpenPose",
+        "source": "pose_skeleton/img_*_pose.png",
+        "weight": 0.8
+      },
+      {
+        "type": "Canny",
+        "source": "edge_map/img_*_canny.png",
+        "weight": 0.4
+      },
+      {
+        "type": "Depth",
+        "source": "depth_map/img_*_depth.png",
+        "weight": 0.3
+      }
+    ],
+    "ip_adapter": {
+      "source": "character_asset/character_ref_*.png",
+      "weight": 0.6
+    },
+    "base_prompt": "masterpiece, best quality, female artist painting outdoors, white dress, lush green background, natural light, oil painting supplies, wooden easel"
+  }
+}

+ 155 - 0
examples/plan/input/features/lighting_bokeh/lighting_analysis.json

@@ -0,0 +1,155 @@
+{
+  "dimension": "lighting_bokeh",
+  "type": "形式",
+  "highlight_cluster": "唯美梦幻的光影与景深",
+  "description": "逆光/轮廓光与大光圈浅景深(Bokeh)的组合,营造梦幻浪漫的视觉氛围",
+  "per_image_analysis": {
+    "img_2": {
+      "paragraph": "段落2",
+      "analysis": {
+        "lighting_type": {
+          "direction": "Backlit, approximately 45° upper-left from the subject's perspective, emanating from behind the subject and slightly to the left, filtering through foliage.",
+          "quality": "Soft and diffused, originating from a large, natural light source (the sun), with localized hard spots and flaring where direct rays penetrate foliage.",
+          "color_temperature": "Approximately 4500K-5000K, consistent with golden hour or late afternoon sunlight, exhibiting a warm golden hue.",
+          "intensity_ratio": "High key-to-fill ratio, estimated 8:1 to 10:1. The key light (sun) is directly behind, creating significant backlighting and leaving the subject's front in deep shadow. Fill light is minimal, likely ambient bounce from the surroundings, allowing for soft detail in the shadows.",
+          "special_effects": "Pronounced lens flare emanating from the upper-left behind the subject, characterized by bright, amorphous glows and some visible starbursts. Strong rim lighting outlining the subject's hair, shoulders, and parts of the easel, providing separation from the background. Sun rays are partially visible filtering through leaves, creating bright light spots and specular highlights in the background bokeh."
+        },
+        "bokeh_dof": {
+          "estimated_aperture": "f/1.8-f/2.8, indicated by the extremely shallow depth of field, especially in the background foliage and the immediate foreground of the grass.",
+          "focus_plane_description": "The primary focus plane is on the subject's hair and back, extending to the canvas on the easel. The subject's dress and the easel are within the area of acceptable sharpness.",
+          "bokeh_quality": "Circular and smooth, characteristic of a wide aperture and quality lens. The background light sources are rendered as large, soft, circular or slightly elliptical disks of light (bokeh balls).",
+          "background_blur_intensity": "Heavy blur, almost entirely obscuring the detail of distant trees and foliage, rendering them as abstract shapes and colors.",
+          "foreground_blur": "Moderate blur in the grass immediately in front of the subject, softening the texture without completely dissolving it."
+        },
+        "atmosphere": {
+          "overall_mood_keywords": [
+            "dreamy",
+            "serene",
+            "ethereal",
+            "romantic",
+            "artistic"
+          ],
+          "haze_level": "Slight atmospheric haze, contributing to the soft diffusion of light and some reduction in overall contrast, particularly in the background.",
+          "contrast_ratio": "Medium-high contrast due to the strong backlighting and resultant shadow areas on the subject, balanced by the soft, diffused background. Overall image tone leans towards a luminous, slightly desaturated aesthetic."
+        },
+        "sd_prompt_tokens": [
+          "backlit",
+          "rim lighting",
+          "lens flare",
+          "bokeh",
+          "shallow depth of field",
+          "golden hour",
+          "warm light",
+          "f/2.0 aperture",
+          "dreamy atmosphere",
+          "painterly light",
+          "soft focus",
+          "diffused sunlight",
+          "cinematic lighting",
+          "portrait photography",
+          "85mm lens"
+        ]
+      }
+    },
+    "img_3": {
+      "paragraph": "段落3",
+      "analysis": {
+        "lighting_type": {
+          "direction": "15° upper-left backlight (implied sun position)",
+          "quality": "Direct, somewhat diffused by atmospheric haze/distance",
+          "color_temperature": "3200K-3800K warm golden (golden hour)",
+          "intensity_ratio": "Key:fill 4:1 (strong backlight, soft fill from ambient bounce)",
+          "special_effects": "pronounced rim light on subject (hair, dress edges), subtle lens flare top-left, atmospheric glow"
+        },
+        "bokeh_dof": {
+          "estimated_aperture": "f/2.2-f/3.5",
+          "focus_plane_description": "Sharpest focus is on the back of the subject's head/upper back and the painting on the easel. The ground immediately around the subject is also within the acceptable sharpness depth.",
+          "bokeh_quality": "Smooth, circular (implied) for distant background highlights, generally creamy.",
+          "background_blur_intensity": "Heavy for distant trees/structures, moderate for closer trees.",
+          "foreground_blur_if_any": "Slight to moderate blur on the grass immediately in front of the subject's knees, becoming sharper closer to the subject's body."
+        },
+        "atmosphere": {
+          "overall_mood_keywords": [
+            "dreamy",
+            "serene",
+            "idyllic",
+            "romantic",
+            "artistic"
+          ],
+          "haze_fog_level": "Low atmospheric haze, contributing to the soft glow and light diffusion.",
+          "contrast_ratio": "Moderate-low (due to strong backlight and ambient fill, shadows are lifted)"
+        },
+        "sd_prompt_tokens": [
+          "backlit",
+          "rim lighting",
+          "lens flare",
+          "bokeh",
+          "shallow depth of field",
+          "golden hour",
+          "warm light",
+          "f/2.8 aperture",
+          "85mm lens",
+          "dreamy atmosphere",
+          "outdoor portrait",
+          "natural light",
+          "soft focus",
+          "creamy bokeh",
+          "glowing edges"
+        ]
+      }
+    },
+    "img_5": {
+      "paragraph": "段落5",
+      "analysis": {
+        "lighting_type": {
+          "direction": "Approximately 75° upper-right backlight (over-the-shoulder light for the subject's left (our right) side, providing rim light to the right shoulder and subtle glow on the left shoulder and upper arm)",
+          "quality": "Soft and moderately diffused. While the source is direct sunlight, the angle inherently diffuses it for the front of the subject. The grass background suggests an open-sky condition rather than direct harsh sunlight on the primary subject.",
+          "color_temperature": "6000K-6500K cool daylight with a subtle warm undertone from the environment (e.g., golden hour nearing completion, or light reflecting off warm surfaces). There's no distinct 'golden hour' warmth, but a slight warmth compared to pure overcast.",
+          "intensity_ratio": "Key:Fill approximately 3:1 to 4:1. The backlighting creates a slightly higher contrast on the back/rim, but the subject's front is still well-lit by environmental fill, suggesting a relatively bright ambient scene.",
+          "special_effects": "Subtle top-right rim light on the subject's right arm and shoulder, and a gentle glow on the fabric. No discernable lens flare or light leaks."
+        },
+        "bokeh_dof": {
+          "estimated_aperture": "f/2.8-f/4.0",
+          "focus_plane_description": "The primary focus is sharply on the artist's hands and the paint palette. The artist's upper body (torso and arms) is also acceptably sharp, indicating a relatively wide focus plane. The easel (left edge) is slightly softer than the palette, and the background grass is distinctly blurred.",
+          "bokeh_quality": "Smooth, creamy, and uniform bokeh. The highlights in the grass are subtly rendered, suggesting well-rounded aperture blades. No noticeable hexagonal or busy artifacts.",
+          "background_blur_intensity": "Heavy. The background grass is rendered as a soft wash of green tones, completely indistinct, indicating a very shallow depth of field.",
+          "foreground_blur": "Minimal to none, with the exception of the very bottom-left corner of the easel stand being slightly less sharp than the palette."
+        },
+        "atmosphere": {
+          "overall_mood_keywords": [
+            "Serene",
+            "Artistic",
+            "Calm",
+            "Ethereal",
+            "Fresh"
+          ],
+          "haze_fog_level": "None",
+          "contrast_ratio": "Medium-low (soft shadows, highlights are not blown out, good detail retention across mid-tones, but the backlighting does create some subtle contrast on edges)."
+        },
+        "sd_prompt_tokens": [
+          "backlit",
+          "soft light",
+          "rim lighting",
+          "shallow depth of field",
+          "bokeh",
+          "creamy bokeh",
+          "f/2.8",
+          "natural light",
+          "outdoor photography",
+          "daylight",
+          "green background",
+          "artistic",
+          "painter",
+          "close-up",
+          "ethereal atmosphere"
+        ]
+      }
+    }
+  },
+  "common_features": {
+    "lighting_style": "Natural backlight / rim light from upper-left, warm golden hour quality",
+    "bokeh_style": "Shallow DOF with smooth circular bokeh, heavy background blur",
+    "atmosphere": "Dreamy, romantic, ethereal, air-like, warm",
+    "sd_tokens_base": "backlit, rim lighting, bokeh, shallow depth of field, golden hour, warm sunlight, dreamy atmosphere, soft light, lens flare, f/1.8, 85mm lens, outdoor natural light"
+  }
+}

+ 28 - 0
examples/plan/input/features/lighting_bokeh/lighting_img_2.json

@@ -0,0 +1,28 @@
+{
+  "light_source": {
+    "direction": "Predominantly backlight. The sun is positioned behind the subject, acting as a strong backlight and creating a rim light effect.",
+    "quality": "Soft. The strong backlight is somewhat diffused, most likely due to atmospheric conditions or the presence of clouds dispersing the direct sunlight.",
+    "color_temperature": "Approximately 5500-6000K. Suggesting golden hour or late afternoon light."
+  },
+  "bokeh_dof": {
+    "aperture_estimate": "f/2.8 - f/4. The background exhibits noticeable blur, but not extreme. This suggests a moderate aperture.",
+    "bokeh_shape": "Circular. The highlights in the blurry background of tree leves appear round and smooth.",
+    "background_blur_intensity": "7",
+    "foreground_sharpness": "Soft, not a major emphasis on maximum microcontrast. Appears in focus but softened."
+  },
+  "light_interaction": {
+    "dress": "The white dress glows due to the backlight, producing highlights along its edges. Some translucency may be present if the fabric is thin. The texture is well defined.",
+    "hair": "The hair has significant highlights from the backlight, creating separation from the background creating a visual edge of light.",
+    "rim_light_effect": "Effective rim light creates a glowing outline around the subject, separating the figure from the background."
+  },
+  "atmosphere": {
+    "overall_mood": "Dreamy, romantic, and ethereal. The soft, golden light creates the mood that evokes nostalgia and a sense of peace.",
+    "atmosphere_description": "Relaxed and serene. Warm golden light creates a sense of peacefulness."
+  },
+  "controlnet_params": {
+    "brightness": "1.1",
+    "contrast": "0.95",
+    "saturation": "1.05",
+    "color_temperature": "5800"
+  }
+}

+ 26 - 0
examples/plan/input/features/lighting_bokeh/lighting_img_3.json

@@ -0,0 +1,26 @@
+{
+  "light_source": {
+    "direction": "Backlight/Rim Light, slightly from the side",
+    "quality": "Soft",
+    "color_temperature": "Approximately 5800K-6200K (Golden Hour, warm)"
+  },
+  "bokeh_dof": {
+    "aperture_estimate": "Around f/2.8 to f/4",
+    "bokeh_shape": "Indiscernible, due to strong blur",
+    "background_blur_intensity": "7",
+    "foreground_sharpness": "The grass in the foreground is moderately sharp but becomes progressively softer with distance from the camera."
+  },
+  "light_interaction": {
+    "dress": "The white dress has a gentle glow and is almost translucent where light contacts it, showing the texture of the garment and creating subtle rim lighting along its edges. There is separation between the dress and the background.",
+    "hair_highlight": "Highlights catch the top layer of the hair and outlines it, creating nice separation. "
+  },
+  "atmosphere": {
+    "mood": "Dreamy, romantic, gentle, nostalgic"
+  },
+  "controlnet_params": {
+    "brightness": "1.05",
+    "contrast": "0.98",
+    "saturation": "1.02",
+    "color_temperature": "6000"
+  }
+}

+ 27 - 0
examples/plan/input/features/lighting_bokeh/lighting_img_5.json

@@ -0,0 +1,27 @@
+{
+  "light_source": {
+    "direction": "Predominantly soft, diffused backlight from the left.",
+    "quality": "Soft light, lacking hard shadows. Likely overcast sky or large diffusion panel used",
+    "color_temperature": "Approximately 5800K-6000K (daylight)"
+  },
+  "bokeh_dof": {
+    "aperture_estimate": "Estimate of f/2.8 to f/4. The background is moderately blurred.",
+    "bokeh_shape": "Not applicable due to soft focus. What bokeh is discernible has a roundish quality.",
+    "background_blur_intensity": "4/10 (Moderate blur)",
+    "foreground_sharpness": "The artist's palette details and the dress are sharp."
+  },
+  "light_interaction": {
+    "white_dress": "The white dress reflects a significant amount of soft light. There is a slight rim light effect on the edges of the shoulder and sleeves giving it shape and dimension. Some folds show specular highlights due to satin finish. The dress also has some translucency due to the light coming from the other side",
+    "hair_highlight": "Minimal highlights on the hair. Light is even and diffused",
+    "paint_color": "The color looks natural and true."
+  },
+  "atmosphere": {
+    "overall_mood": "The lighting imparts a relaxed and natural tone. It's a bright, daytime scene with a soft, gentle ambiance."
+  },
+  "controlnet_params": {
+    "brightness": "0.9",
+    "contrast": "0.75",
+    "saturation": "0.9",
+    "color_temperature": "5900"
+  }
+}

BIN
examples/plan/input/features/lighting_bokeh/lighting_visual.png


+ 49 - 0
examples/plan/input/features/lighting_bokeh/mapping.json

@@ -0,0 +1,49 @@
+{
+  "dimension": "lighting_bokeh",
+  "type": "形式",
+  "highlight_cluster": "唯美梦幻的光影与景深",
+  "description": "逆光/轮廓光与大光圈浅景深(Bokeh)的组合,营造梦幻浪漫的视觉氛围",
+  "files": {
+    "lighting_visual.png": {
+      "type": "视觉参考图",
+      "purpose": "三张图的光影参数对比图,展示光照方向、光圈、色温、散景特征",
+      "tool": "Python PIL生成"
+    },
+    "lighting_analysis.json": {
+      "type": "详细分析",
+      "purpose": "各图光影景深专业分析,包含SD提示词"
+    }
+  },
+  "common_features": {
+    "lighting_style": "Natural backlight / rim light from upper-left, warm golden hour quality",
+    "bokeh_style": "Shallow DOF with smooth circular bokeh, heavy background blur",
+    "atmosphere": "Dreamy, romantic, ethereal, air-like, warm",
+    "sd_tokens_base": "backlit, rim lighting, bokeh, shallow depth of field, golden hour, warm sunlight, dreamy atmosphere, soft light, lens flare, f/1.8, 85mm lens, outdoor natural light"
+  },
+  "mapping": [
+    {
+      "image": "img_2",
+      "paragraph": "段落2",
+      "type": "形式",
+      "feature": "光影景深",
+      "specific": "强逆光+光斑光晕+浅景深 (f/1.8-2.8, 4500K-5000K)",
+      "path": "output/features/lighting_bokeh/lighting_visual.png"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3",
+      "type": "形式",
+      "feature": "光影景深",
+      "specific": "逆光+背景光晕+温暖氛围 (f/2.2-3.5, 3200K-3800K)",
+      "path": "output/features/lighting_bokeh/lighting_visual.png"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5",
+      "type": "形式",
+      "feature": "光影景深",
+      "specific": "自然光+背景虚化+浅景深 (f/2.8-4.0, 6000K-6500K)",
+      "path": "output/features/lighting_bokeh/lighting_visual.png"
+    }
+  ]
+}

+ 125 - 0
examples/plan/input/features/lighting_description/lighting_description.json

@@ -0,0 +1,125 @@
+{
+  "dimension": "lighting_description",
+  "type": "形式",
+  "highlight_cluster": "唯美梦幻的光影与景深",
+  "description": "各图光照方向、质量、色温、景深等形式特征的专业文字描述,用于生成模型的光照控制信号",
+  "per_image": {
+    "img_1": {
+      "paragraph": "段落1",
+      "highlight": "清新雅致的白绿配色",
+      "lighting": {
+        "type": "natural soft light",
+        "direction": "upper-left, slightly front-side",
+        "quality": "soft, diffused, no harsh shadows",
+        "color_temperature": "neutral to slightly cool, ~5500K",
+        "intensity": "medium, well-balanced exposure",
+        "shadows": "gentle shadows on right side of subject and left side of easel",
+        "special_effects": "none (no lens flare, no bokeh)",
+        "dof": "shallow depth of field, background trees slightly blurred",
+        "atmosphere": "fresh, natural, clear"
+      },
+      "sd_prompt_tokens": [
+        "soft natural light", "diffused sunlight", "upper left lighting",
+        "gentle shadows", "neutral color temperature", "clear atmosphere",
+        "shallow depth of field", "outdoor daylight", "fresh natural lighting"
+      ]
+    },
+    "img_2": {
+      "paragraph": "段落2",
+      "highlight": "唯美梦幻的光影与景深",
+      "lighting": {
+        "type": "strong backlight / contre-jour",
+        "direction": "upper-left backlight, sun behind subject",
+        "quality": "direct sunlight filtered through foliage, creates hard spots and flare",
+        "color_temperature": "warm golden, ~4500-5000K, golden hour quality",
+        "intensity": "high key-to-fill ratio 8:1~10:1, strong backlight",
+        "shadows": "subject front in deep shadow, rim light outlines hair and shoulders",
+        "special_effects": "pronounced lens flare upper-left, starburst, rim lighting, sun rays through leaves, bokeh balls in background",
+        "dof": "extremely shallow DOF, f/1.8-2.8, heavy background blur, bokeh circles",
+        "atmosphere": "dreamy, ethereal, romantic, backlit glow"
+      },
+      "sd_prompt_tokens": [
+        "backlit", "contre-jour", "rim lighting", "lens flare", "starburst",
+        "bokeh", "shallow depth of field", "golden hour", "warm sunlight",
+        "f/2.0 aperture", "dreamy atmosphere", "ethereal glow", "85mm lens",
+        "sun rays through leaves", "cinematic lighting"
+      ]
+    },
+    "img_3": {
+      "paragraph": "段落3",
+      "highlight": "唯美梦幻的光影与景深",
+      "lighting": {
+        "type": "backlight / rim light",
+        "direction": "15° upper-left backlight",
+        "quality": "direct but slightly diffused by atmospheric haze",
+        "color_temperature": "warm golden, ~3200-3800K, golden hour",
+        "intensity": "key:fill 4:1, strong backlight with soft ambient fill",
+        "shadows": "subject slightly underexposed front, lifted shadows from ambient bounce",
+        "special_effects": "pronounced rim light on hair and dress edges, subtle lens flare top-left, atmospheric glow",
+        "dof": "shallow DOF f/2.2-3.5, heavy blur for distant trees, moderate for closer trees",
+        "atmosphere": "dreamy, serene, idyllic, romantic, warm glow"
+      },
+      "sd_prompt_tokens": [
+        "backlit", "rim lighting", "lens flare", "bokeh", "shallow depth of field",
+        "golden hour", "warm light", "f/2.8 aperture", "85mm lens",
+        "dreamy atmosphere", "outdoor portrait", "natural light", "creamy bokeh",
+        "glowing edges", "atmospheric haze"
+      ]
+    },
+    "img_4": {
+      "paragraph": "段落4",
+      "highlight": "清新雅致的白绿配色",
+      "lighting": {
+        "type": "natural front-side light",
+        "direction": "upper-right, front-side",
+        "quality": "bright, clear, direct natural sunlight",
+        "color_temperature": "neutral daylight, ~5500-6000K",
+        "intensity": "bright, high key, well-exposed",
+        "shadows": "clear bright highlights on right side, soft shadows on left",
+        "special_effects": "none (no lens flare, minimal bokeh)",
+        "dof": "moderate depth of field, background slightly blurred but still recognizable",
+        "atmosphere": "fresh, bright, clear, natural"
+      },
+      "sd_prompt_tokens": [
+        "natural daylight", "bright sunlight", "upper right lighting",
+        "clear shadows", "neutral color temperature", "outdoor bright light",
+        "fresh atmosphere", "moderate depth of field", "vivid colors"
+      ]
+    },
+    "img_5": {
+      "paragraph": "段落5",
+      "highlight": "唯美梦幻的光影与景深",
+      "lighting": {
+        "type": "soft backlight / over-the-shoulder light",
+        "direction": "75° upper-right backlight",
+        "quality": "soft, moderately diffused, open sky condition",
+        "color_temperature": "cool daylight with subtle warm undertone, ~6000-6500K",
+        "intensity": "key:fill 3:1~4:1, well-lit ambient scene",
+        "shadows": "subtle rim light on right arm and shoulder, gentle fabric glow",
+        "special_effects": "subtle top-right rim light, no lens flare",
+        "dof": "shallow DOF f/2.8-4.0, heavy background grass blur, smooth creamy bokeh",
+        "atmosphere": "serene, artistic, calm, ethereal, fresh"
+      },
+      "sd_prompt_tokens": [
+        "backlit", "soft light", "rim lighting", "shallow depth of field",
+        "bokeh", "creamy bokeh", "f/2.8", "natural light", "outdoor photography",
+        "daylight", "green background", "artistic", "ethereal atmosphere",
+        "close-up portrait"
+      ]
+    }
+  },
+  "common_features": {
+    "lighting_style": "Natural backlight / rim light, warm golden hour quality (img_2/3/5) or soft natural daylight (img_1/4)",
+    "bokeh_style": "Shallow DOF with smooth circular bokeh, heavy background blur (img_2/3/5)",
+    "atmosphere": "Dreamy, romantic, ethereal, air-like, warm (img_2/3/5) / Fresh, natural, clear (img_1/4)",
+    "unified_sd_tokens_bokeh": "backlit, rim lighting, bokeh, shallow depth of field, golden hour, warm sunlight, dreamy atmosphere, soft light, lens flare, f/1.8, 85mm lens, outdoor natural light",
+    "unified_sd_tokens_clear": "soft natural light, diffused sunlight, neutral color temperature, shallow depth of field, fresh atmosphere, outdoor daylight"
+  },
+  "mapping": [
+    {"image": "img_1", "paragraph": "段落1", "type": "形式", "feature": "光照形式描述(柔和自然光)", "highlight": "清新雅致的白绿配色"},
+    {"image": "img_2", "paragraph": "段落2", "type": "形式", "feature": "光照形式描述(强逆光+光斑+Bokeh)", "highlight": "唯美梦幻的光影与景深"},
+    {"image": "img_3", "paragraph": "段落3", "type": "形式", "feature": "光照形式描述(逆光+轮廓光+暖色调)", "highlight": "唯美梦幻的光影与景深"},
+    {"image": "img_4", "paragraph": "段落4", "type": "形式", "feature": "光照形式描述(明亮正侧光)", "highlight": "清新雅致的白绿配色"},
+    {"image": "img_5", "paragraph": "段落5", "type": "形式", "feature": "光照形式描述(柔和逆光+奶油Bokeh)", "highlight": "唯美梦幻的光影与景深"}
+  ]
+}

BIN
examples/plan/input/features/natural_background_asset/background_ref_img1.png


BIN
examples/plan/input/features/natural_background_asset/background_ref_img4.png


+ 51 - 0
examples/plan/input/features/natural_background_asset/mapping.json

@@ -0,0 +1,51 @@
+{
+  "dimension": "natural_background_asset",
+  "type": "实质",
+  "highlight_cluster": "清新雅致的白绿配色",
+  "description": "高饱和度自然草木绿背景,草坪、树木和阳光构成的户外环境,是白绿配色形式的实质载体",
+  "files": {
+    "background_ref_img4.png": {
+      "source_image": "img_4",
+      "purpose": "自然背景参考(白绿配色最典型)"
+    },
+    "background_ref_img1.png": {
+      "source_image": "img_1",
+      "purpose": "自然背景参考(绿色草地+树木)"
+    }
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.3",
+      "type": "实质",
+      "feature": "自然草木背景"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2.2",
+      "type": "实质",
+      "feature": "自然草木背景(含阳光)"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3.2",
+      "type": "实质",
+      "feature": "自然草木背景(含远处建筑)"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4.2.1",
+      "type": "实质",
+      "feature": "自然草木背景"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5.3",
+      "type": "实质",
+      "feature": "自然草木背景(虚化)"
+    }
+  ],
+  "consistency_elements": [
+    "自然背景"
+  ]
+}

+ 61 - 0
examples/plan/input/features/painting_in_painting/mapping.json

@@ -0,0 +1,61 @@
+{
+  "dimension": "painting_in_painting",
+  "type": "形式",
+  "highlight_cluster": "虚实呼应的画中画结构",
+  "description": "画布上的内容与现实场景形成镜像或互文关系,增加叙事深度的画中画结构",
+  "files": {
+    "pip_structure_visual.png": {
+      "type": "视觉参考图",
+      "purpose": "画中画三层叙事结构示意图,展示img_1和img_2的构图逻辑",
+      "tool": "Python PIL生成"
+    },
+    "pip_analysis.json": {
+      "type": "详细分析",
+      "purpose": "画中画结构专业分析,包含每张图的层次关系和生成信号"
+    }
+  },
+  "structure_template": {
+    "layer_1": "Foreground: Girl in white dress + painting tools (sharp, 40% frame)",
+    "layer_2": "Mid-ground: Canvas on easel showing painted scene (sharp, 30% frame)",
+    "layer_3": "Background: Real natural scene (blurred bokeh, 30% frame)",
+    "narrative_echo": "Canvas content mirrors/echoes the real background, creating meta-artistic narrative",
+    "composition_key": "Side-back angle allows simultaneous view of painter, canvas, and real scene"
+  },
+  "per_image_composition": {
+    "img_1": {
+      "camera_angle": "3/4 side-rear (侧后方视角)",
+      "canvas_content": "Impressionist woman in blue-green flower field",
+      "narrative_type": "Artist's vision of surrounding nature",
+      "sd_composition": "female artist from side-rear, easel with painting visible, lush green background"
+    },
+    "img_2": {
+      "camera_angle": "Direct rear (正后方视角)",
+      "canvas_content": "Impressionist girl in garden with purple flowers",
+      "narrative_type": "Idealized interpretation of real scene",
+      "sd_composition": "female artist from direct rear, canvas with painting in front, backlit natural scene"
+    }
+  },
+  "sd_prompt_template": {
+    "base": "female artist painting outdoors, painting-within-painting composition, canvas visible with impressionist artwork",
+    "img_1": "three-quarter rear view, artist to right, easel with canvas to left, impressionist painting on canvas, lush green background",
+    "img_2": "direct rear view, artist centered, canvas directly in front, backlit golden hour, impressionist painting visible on canvas"
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.2.1",
+      "type": "形式",
+      "feature": "画中画结构",
+      "specific": "侧后方视角,画布内容与现实场景镜像",
+      "path": "output/features/painting_in_painting/pip_structure_visual.png"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2.1.2",
+      "type": "形式",
+      "feature": "画中画结构",
+      "specific": "正后方视角,画布与背景互文",
+      "path": "output/features/painting_in_painting/pip_structure_visual.png"
+    }
+  ]
+}

+ 12 - 0
examples/plan/input/features/painting_in_painting/painting_in_painting_img_1.json

@@ -0,0 +1,12 @@
+{
+  "canvas_content": "The canvas depicts a painting of a young woman from behind, wearing a white dress and holding a parasol. She appears to be standing in a green field with blue flowers, echoing the surrounding natural environment.",
+  "mirror_relationship": "The painted subject (the woman from behind in a white dress) loosely mirrors the painter herself, who is also a woman wearing a white dress. The scene within the painting attempts to recreate what the painter may be seeing, suggesting a painting of the environment she is in however is incomplete.",
+  "spatial_layers": "There are three clear spatial layers: 1. The real world (the woman, the easel, the grass, the background trees). 2. The canvas itself, acting as a barrier between the real and the painted. 3. The painted world within the canvas (the woman in the painting and the field).",
+  "narrative_depth": "The image creates a meta-narrative effect. It is self-referential, a comment on the act of painting itself. It invites the viewer to consider the relationship between reality and representation, truth and artifice, and the subjective perspective of the artist. The incompleteness of the painted canvas creates an ambiguity; is the painting unfinished because the artist has not completed her work, or because representation will always fall short of reality?",
+  "composition_analysis": "The canvas is positioned directly in front of the artist, and slightly off-center to account for the painters position. It occupies roughly 20% of the total frame surface.",
+  "visual_echo_points": [
+    "The woman's white dress: Both the artist and the subject in the painting wear white dresses, though one appears to be painting the image with the other present in the real world",
+    "The field setting: The real background and the painted field share green/greenblue grass. The painting appears to emulate the real foliage",
+    "Brushstrokes: There is a literal and figurative crossing the point from real world to canvas world via her paint brush"
+  ]
+}

+ 13 - 0
examples/plan/input/features/painting_in_painting/painting_in_painting_img_2.json

@@ -0,0 +1,13 @@
+{
+  "canvas_content": "The painting on the canvas depicts a scene that seems to mirror the real scene surrounding the artist.  There's a suggestion of a figure, possibly a woman in a white dress, standing in what appears to be a garden or park setting, amidst foliage and possibly flowers. The style of the painting appears impressionistic or expressive, using loose brushstrokes and vibrant colors.",
+  "mirror_relationship": "The painted subject has a loose mirror relationship to the real subject. The painted figure seems to be in the same type of environment as the real woman. While the poses are difficult to compare due to the angle and painted style, a figure depicted in the artwork hints that the painting mirrors the larger outdoor setting. It creates a self-referential link where the artist is painting her surroundings--or even herself.",
+  "spatial_layers": "There are three distinct visual layers: 1. The real world (grass, trees, sunlight, the woman in white). 2. The canvas itself, acting as a portal or filter. 3. The painted world, showing the artist's interpretation of the landscape.",
+  "narrative_depth": "The \"painting-within-painting\" structure creates a strong narrative depth by adding layers of interpretation and perspective. It's self-referential, suggesting themes of artistic creation, representation vs. reality, and the subjective nature of perception. The viewer becomes aware of process of constructing the image, the artist's selection of what to emphasize. It has a meta-narrative quality where the painting comments on or refers to the art of painting itself.",
+  "composition_analysis": "The canvas is positioned centrally in the frame, slightly off-center to the right. It occupies approximately 20-25% of the total frame. The real subject (the woman) directly foregrounds the canvas, placing it in the middle ground of the perspective. The positioning emphasizes the act of creation because it has the audience looking into the canvas. The location is outside, and this composition is an extremely simple art exercise.",
+  "visual_echo_points": [
+    "The white dress is suggested in both the painting and the real subject.",
+    "The background greenery (trees, grass) is echoed in the paint strokes of the canvas.",
+    "Hints of sunlight or bright areas are present in both the real scene and on the canvas.",
+    "The figure in the painted depiction is implied to be standing in the same scenery as the artist is."
+  ]
+}

+ 155 - 0
examples/plan/input/features/painting_in_painting/pip_analysis.json

@@ -0,0 +1,155 @@
+{
+  "dimension": "painting_in_painting",
+  "type": "形式",
+  "highlight_cluster": "虚实呼应的画中画结构",
+  "description": "画布上的内容与现实场景形成镜像或互文关系,通过现实与艺术创作之间的视觉呼应构建叙事深度",
+  "per_image_analysis": {
+    "img_1": {
+      "paragraph": "段落1",
+      "analysis": {
+        "canvas_content": {
+          "depiction_on_canvas": "The canvas depicts a young woman, seen from behind, walking through a vibrant, impressionistic field of blue and green flowers. She is wearing a light-colored dress, similar in style to the artist's. The brushwork is loose and textural, characteristic of a painting rather than a photorealistic rendering.",
+          "relation_to_real_scene": "The painting on the canvas appears to be an artistic interpretation of the 'real' background scene, potentially imagining a figure within it. While the specific person depicted on the canvas is not directly visible in the background, the painter's current location (outdoors, with lush greenery) strongly suggests she is painting the environment around her. The context suggests it's not a mirror reflection, but an artist's vision inspired by or placed within the general character of the surrounding landscape.",
+          "spatial_relationship": "The canvas is positioned on an easel slightly to the left of the central axis of the image, prominently in the mid-ground. The artist is standing to the right of the canvas, actively painting. The canvas is oriented to directly face the viewer, while the artist is seen from a three-quarters rear view, facing towards the canvas. The 'real' background scene extends behind the canvas, providing the natural environment that inspires the painting."
+        },
+        "visual_layers": {
+          "layer_1_foreground": {
+            "elements": "The artist, captured from a precise side-rear (侧后方) three-quarters view, occupies approximately 40% of the frame's width on the right side. She holds a palette (approximately 15% of frame width) in her left hand and a brush in her right hand, actively touching the canvas. A white rose is casually draped on the easel's crossbar, just to the left of the canvas. The immediate grassy ground where the easel stands is also part of this layer.",
+            "depth_effect": "This layer establishes the immediate foreground interaction and the human element, drawing the viewer's eye into the act of creation. The close-up of the artist and her tools creates a sense of intimacy and immediacy."
+          },
+          "layer_2_mid_ground": {
+            "elements": "The canvas on the easel, occupying approximately 25-30% of the frame's width and a significant portion of its height, is the central focus of this layer. The easel itself, a wooden tripod structure, anchors this layer. The painted scene within the canvas shows a figure amidst flowers.",
+            "depth_effect": "This layer serves as the narrative bridge between the artist and the external world. Its deliberate placement and size emphasize the 'painting-within-painting' concept. The painting's content subtly echoes the background, reinforcing the connection."
+          },
+          "layer_3_background": {
+            "elements": "A lush, verdant natural scene featuring dense green trees and a soft, slightly out-of-focus lawn stretching into the distance. The sky is not visible, implying a somewhat enclosed natural setting under diffused light.",
+            "depth_effect": "This layer provides the context and inspiration for the entire scene. Its soft focus contrasts with the sharp detail of the foreground and mid-ground, enhancing the sense of depth. The uniformity of the green acts as a calming backdrop, allowing the brighter colors of the canvas and the artist's white dress to stand out."
+          },
+          "overall_depth_creation": "The composition masterfully uses overlapping elements (artist over canvas, canvas over background) and varying levels of sharpness (sharp foreground/mid-ground, soft background) to create a strong sense of spatial depth. The angle of the artist relative to the canvas also contributes to this layering, guiding the viewer's gaze from the act of painting, to the painting itself, and finally to the environment that inspired it."
+        },
+        "narrative_structure": {
+          "meta_quality": "The image possesses a strong 'meta' quality, as it depicts art (the photograph) showing art (the painting) being created. This self-referential aspect highlights the artistic process itself, making the act of creation a central theme. The photograph becomes a commentary on the artist's engagement with their environment and their expression through paint.",
+          "emotional_conceptual_connection": "There is a subtle, almost poetic connection between the real and the painted. While not a direct mirror, the painting on the canvas reflects the aesthetic and thematic essence of the natural surroundings. The vibrant and textured natural background suggests the inspiration for the impressionistic style and content of the canvas. The serene posture of the artist, her white dress contrasting with the green, and the tranquil setting evoke a sense of peaceful artistic immersion and a harmonious relationship between human creativity and nature. The painted figure may represent the artist's imaginative self or a metaphorical embodiment of her presence within this idealized natural space.",
+          "compositional_echo_or_contrast": "The most prominent compositional echo is the overall theme of lush greenery. The 'real' trees and grass in the background are abstractly echoed in the green and blue hues and organic forms within the canvas painting. There's a contrast in specificity: the background is a general natural setting, while the canvas offers a focused, albeit stylized, narrative 'within' that setting. The artist's white attire provides a clean contrast against both the dense green background and the colorful palette, drawing attention to her and the act of painting."
+        },
+        "generation_signals": {
+          "composition_description": "A female artist, wearing a flowing white dress, is captured from a three-quarters side-rear view (侧后方视角) as she paints outdoors. She stands to the right of an easel. The easel holds a canvas which depicts an impressionistic scene of a woman in a light dress walking through a field of blue and green flowers. The artist is actively painting with a brush in her right hand and holds a colorful palette in her left. A single white rose rests on the easel's middle bar. The background is a gently blurred, lush green landscape of trees and grass, indicative of a peaceful natural setting.",
+          "key_visual_elements_positions": {
+            "artist_body": "Right side of frame, approximately 40% width, extending from bottom edge to upper mid-frame (head). Arm extends towards canvas.",
+            "palette": "Held by artist's left hand, mid-right, below canvas, approximately 15% width.",
+            "easel": "Centered to slightly left of frame's vertical axis, supporting canvas. Extends from bottom edge to mid-upper frame.",
+            "canvas_with_painting": "Prominently displayed on easel, centrally located in mid-ground, occupying approximately 25-30% of frame's width and 30-40% of its height. The painted woman within the canvas should be in the lower-mid section of the canvas, facing away from the viewer.",
+            "white_rose_on_easel": "Small element, resting on the easel's crossbar, just left of the canvas's bottom edge.",
+            "background_greenery": "Filling approximately 60% of the upper frame and extending behind the easel and artist, appearing softly blurred to enhance depth.",
+            "foreground_grass": "Filling approximately 40% of the lower frame, a vibrant green, slightly sharper than background."
+          },
+          "depth_cues": [
+            "**Focus & Blur**: Sharp focus on the artist, easel, canvas, and palette. Progressive Gaussian blur applied to the background greenery to simulate shallow depth of field.",
+            "**Color & Contrast**: Artist and canvas elements are brightly lit and have high contrast. Background elements are slightly desaturated and have softer contrast.",
+            "**Overlapping Elements**: Artist's arm and palette overlapping the canvas. The canvas overlapping the background trees. The white rose overlapping the easel.",
+            "**Scale Variation**: The artist is large in the foreground, the painted figure on the canvas is smaller, and the distant background elements are vast and diffused.",
+            "**Lighting**: Diffused, soft outdoor lighting, possibly overcast or late afternoon, creating gentle shadows and minimizing harsh highlights and shadows to enhance the serene mood."
+          ]
+        }
+      }
+    },
+    "img_2": {
+      "paragraph": "段落2",
+      "analysis": {
+        "canvas_content": {
+          "depicted_on_canvas": "The canvas depicts a young girl in a light-colored dress (possibly white or very pale) standing amidst what appears to be a garden or natural setting with wildflowers, particularly notable are purple and green hues suggesting foliage and flowers. The style is impressionistic and somewhat simplified, with soft brushstrokes and a bright, airy feeling.",
+          "relation_to_reality": "The painting on the canvas is an artistic interpretation of the scene or a similar scene. It's not a mirror reflection; while it shares the general theme of a natural environment and potentially similar lighting, the content within the painting (a figure) is not directly present in the immediate 'real' background visible from the painter's perspective. It could be an imagined figure within the scene, or a figure from a past observation, or even the artist themselves if they were painting a self-portrait or a scene they were part of. The background behind the painted figure seems to echo the broader natural environment (trees, leaves) but is rendered with artistic license rather than being a literal copy.",
+          "spatial_relationship": "The canvas is positioned on an easel in the midground, directly in front of the artist, blocking a portion of the real background scene. Its top edge aligns roughly with the upper third of the background tree line, and its base is in the grassy midground. This placement allows the artist to simultaneously view both her work and the inspiring environment around her."
+        },
+        "visual_layers": {
+          "layer_1_foreground": "The person (artist) is the primary foreground element, viewed from a 正后方视角 (direct rear perspective). Her long, brown hair cascades down her back, obscuring much of her head and shoulders. She wears a light-colored, flowing dress. Her right hand (partially visible) holds a paintbrush, and her left hand (partially visible) holds a palette. The bottom half of her body and the tools occupy approximately the bottom 60% of the horizontal frame width and extend vertically from the bottom edge upwards, with her head nearing the middle of the vertical frame. This layer establishes intimacy and focuses on the act of creation.",
+          "layer_2_midground": "The canvas on the easel is situated directly in front of the artist, slightly to the right of the central vertical axis. It measures approximately 25-30% of the image's height and 15-20% of its width. The easel's legs extend downwards into the grassy midground. This layer serves as the 'painting-within-painting' element, drawing the viewer's eye to the artwork in progress.",
+          "layer_3_background": "The real natural scene comprises a lush green grassy field in the lower half of the background, transitioning to a dense canopy of trees and foliage in the upper half. The sun is beaming brightly from the upper left, creating lens flares and bright highlights, indicating either a sunrise or sunset. This background provides the context and inspiration for the artist and adds a sense of depth and natural beauty. This layer occupies the entire background, extending behind both the artist and the easel.",
+          "depth_and_narrative": "These layers create a strong sense of depth through occlusion (artist partially blocking easel, easel blocking background). The layering also builds a narrative: the foreground artist's act of creation, the midground canvas showcasing the nascent art, and the background revealing the inspiring reality. The arrangement invites the viewer to ponder the connection between the artist's perception, her interpretation, and the world around her, effectively framing the creative process."
+        },
+        "narrative_structure": {
+          "meta_quality": "The image possesses a strong 'meta' quality by depicting art about art. It's an image of an artist creating a painting, inviting reflection on the artistic process itself, visual representation, and the relationship between reality and its interpretation. This self-referential aspect elevates the basic scene to a commentary on creation and perception.",
+          "emotional_conceptual_connection": "There's a palpable emotional and conceptual connection between the painted and real elements. The painting on the canvas, with its impressionistic depiction of a girl in a natural setting, feels like a poetic distillation or idealization of the peaceful, sun-drenched natural environment in which the artist is situated. It suggests that the artist is capturing the 'spirit' or an idealized moment of her surroundings, rather than a literal copy. The sun's warm glow permeates both the real scene and seems to be reflected in the bright, light colors used in the painting, creating a harmonious and idyllic mood.",
+          "compositional_echo_contrast": "There is a subtle compositional echo: the general form of the painted figure (standing, central in its own frame) might subtly echo the artist's own stance (implied, as she is behind the easel) or the general impression of a human presence within a natural setting. The contrast lies in the simplification and artistic rendering within the canvas versus the photographic realism of the larger scene. The softness and blur of the painted background within the canvas echo the blurred sun-drenched lushness of the real background, suggesting a continuity of light and atmosphere."
+        },
+        "generation_signals": {
+          "composition_description": "A 正后方视角 (direct rear perspective) of a lone female artist standing in a sunlit grassy field, painting on an easel. The artist's back is to the viewer, her long brown hair flowing. She wears a flowing light-colored dress and holds a paintbrush and palette. An impressionistic painting of a young girl in a garden is visible on the canvas, positioned directly in front of her. The background is a vibrant, sun-drenched natural landscape with lush green trees and foliage, with soft sunlight filtering through the leaves from the upper left, creating a warm, ethereal glow. The scene conveys a peaceful, creative atmosphere.",
+          "key_visual_elements_positions": [
+            {
+              "element": "Artist's head/hair (top of head)",
+              "position_x_center": "50%",
+              "position_y_center": "35%",
+              "coverage_vertical": "30%",
+              "coverage_horizontal": "40%"
+            },
+            {
+              "element": "Artist's torso/dress (mid-chest to waist)",
+              "position_x_center": "50%",
+              "position_y_center": "60%",
+              "coverage_vertical": "40%",
+              "coverage_horizontal": "70%"
+            },
+            {
+              "element": "Painting palette (left hand)",
+              "position_x_center": "20%",
+              "position_y_center": "80%",
+              "coverage_vertical": "15%",
+              "coverage_horizontal": "10%"
+            },
+            {
+              "element": "Paintbrush (right hand)",
+              "position_x_center": "35%",
+              "position_y_center": "70%",
+              "coverage_vertical": "20%",
+              "coverage_horizontal": "5%"
+            },
+            {
+              "element": "Canvas on easel",
+              "position_x_center": "68%",
+              "position_y_center": "55%",
+              "coverage_vertical": "30%",
+              "coverage_horizontal": "20%"
+            },
+            {
+              "element": "Painted figure on canvas",
+              "position_x_center_on_canvas": "50%",
+              "position_y_center_on_canvas": "60%",
+              "coverage_vertical_on_canvas": "60%",
+              "coverage_horizontal_on_canvas": "40%"
+            },
+            {
+              "element": "Grassy foreground/midground",
+              "position_y_coverage": "bottom 40%",
+              "coverage_horizontal": "100%"
+            },
+            {
+              "element": "Tree line/foliage background",
+              "position_y_coverage": "top 60%",
+              "coverage_horizontal": "100%"
+            },
+            {
+              "element": "Sun/light source",
+              "position_x_center": "25%",
+              "position_y_center": "10%",
+              "effect": "strong lens flare, glowing sunbeams"
+            }
+          ],
+          "depth_cues": [
+            "Foreground blur (subtle, on extreme edges of artist's hair/dress if present)",
+            "Midground sharpness (artist, easel, canvas should be in sharp focus)",
+            "Background blur (bokeh effect on trees and distant foliage to emphasize depth and sunlight)",
+            "Layering: Artist occludes easel, easel occludes background.",
+            "Atmospheric perspective (slight haziness in distant background due to sunlight)."
+          ]
+        }
+      }
+    }
+  },
+  "structure_template": {
+    "layer_1": "Foreground: Girl in white dress + painting tools (sharp, 40% frame)",
+    "layer_2": "Mid-ground: Canvas on easel showing painted scene (sharp, 30% frame)",
+    "layer_3": "Background: Real natural scene (blurred bokeh, 30% frame)",
+    "narrative_echo": "Canvas content mirrors/echoes the real background, creating meta-artistic narrative",
+    "composition_key": "Side-back angle allows simultaneous view of painter, canvas, and real scene"
+  }
+}

BIN
examples/plan/input/features/painting_in_painting/pip_structure_visual.png


BIN
examples/plan/input/features/painting_tools_asset/easel_ref_img3.png


BIN
examples/plan/input/features/painting_tools_asset/easel_ref_img4.png


BIN
examples/plan/input/features/painting_tools_asset/easel_ref_img4_v2.png


+ 69 - 0
examples/plan/input/features/painting_tools_asset/mapping.json

@@ -0,0 +1,69 @@
+{
+  "dimension": "painting_tools_asset",
+  "type": "实质",
+  "highlight_cluster": "构建叙事的写生道具",
+  "description": "木质三脚画架、画布(含进行中的油画)、画笔及白玫瑰,构建户外写生叙事场景的关键道具",
+  "files": {
+    "easel_ref_img4_v2.png": {
+      "source_image": "img_4",
+      "purpose": "画架画布道具参考(主要),空白画布+白玫瑰",
+      "quality": "有效,木质棕色内容清晰",
+      "tool": "gemini-2.5-flash-image"
+    },
+    "easel_ref_img3.png": {
+      "source_image": "img_3",
+      "purpose": "画架画布道具参考(含进行中的画作)"
+    },
+    "easel_ref_img4.png": {
+      "source_image": "img_4",
+      "purpose": "画架画布道具参考(旧版)"
+    }
+  },
+  "easel_characteristics": {
+    "material": "light-colored wood, natural grain",
+    "structure": "tripod easel with adjustable canvas holder",
+    "canvas_state": {
+      "img_3": "in-progress oil painting (impressionist style)",
+      "img_4": "blank white canvas with white rose on crossbar"
+    },
+    "sd_tokens": "wooden easel, artist easel, canvas on easel, outdoor painting setup, white rose on easel, art supplies"
+  },
+  "mapping": [
+    {
+      "image": "img_3",
+      "paragraph": "段落3.1.2",
+      "type": "实质",
+      "feature": "画架画布写生道具(含油画)",
+      "highlight": "构建叙事的写生道具",
+      "path": "output/features/painting_tools_asset/easel_ref_img3.png"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4.1.2.1",
+      "type": "实质",
+      "feature": "画架画布写生道具(空白画布)",
+      "highlight": "构建叙事的写生道具",
+      "path": "output/features/painting_tools_asset/easel_ref_img4_v2.png"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4.1.2.2",
+      "type": "实质",
+      "feature": "白玫瑰道具",
+      "highlight": "构建叙事的写生道具",
+      "path": "output/features/painting_tools_asset/easel_ref_img4_v2.png"
+    },
+    {
+      "image": "img_1",
+      "paragraph": "段落1.2",
+      "type": "实质",
+      "feature": "画架结构",
+      "highlight": "构建叙事的写生道具",
+      "path": "output/features/painting_tools_asset/easel_ref_img3.png"
+    }
+  ],
+  "consistency_elements": [
+    "画架与画布",
+    "画架与油画"
+  ]
+}

+ 79 - 0
examples/plan/input/features/palette_asset/mapping.json

@@ -0,0 +1,79 @@
+{
+  "dimension": "palette_asset",
+  "type": "实质",
+  "highlight_cluster": "斑斓厚重的油画颜料",
+  "description": "木质调色盘上堆积的厚重油画颜料(Impasto),杂乱而鲜艳的色彩肌理,与白色衣物形成强烈视觉反差",
+  "files": {
+    "palette_impasto_img5_v2.png": {
+      "source_image": "img_5",
+      "view": "close-up",
+      "purpose": "调色板颜料特写(主要参考),展示Impasto厚涂质感,颜色最丰富",
+      "quality": "高质量,38%非白色内容,颜色多样性强",
+      "tool": "gemini-2.5-flash-image"
+    },
+    "palette_impasto_img1_v2.png": {
+      "source_image": "img_1",
+      "view": "medium",
+      "purpose": "调色板整体形态参考",
+      "quality": "有效,20%非白色内容",
+      "tool": "gemini-2.5-flash-image"
+    },
+    "palette_ref_img5.png": {
+      "source_image": "img_5",
+      "view": "close-up",
+      "purpose": "调色板颜料特写(旧版参考)",
+      "quality": "有效,47%非白色内容"
+    },
+    "palette_ref_img1.png": {
+      "source_image": "img_1",
+      "view": "medium",
+      "purpose": "调色板整体形态参考(旧版)",
+      "quality": "有效,33%非白色内容"
+    }
+  },
+  "impasto_characteristics": {
+    "texture": "thick, textured paint buildup with visible brushstroke marks",
+    "colors": [
+      "deep green",
+      "light green",
+      "blue",
+      "red",
+      "yellow",
+      "white",
+      "purple",
+      "black",
+      "pink",
+      "brown"
+    ],
+    "sd_tokens": "impasto oil paint, thick paint texture, colorful palette, artist palette, oil painting supplies, vibrant paint colors"
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.1.2.3",
+      "type": "实质",
+      "feature": "调色板颜料Impasto质感",
+      "highlight": "斑斓厚重的油画颜料",
+      "path": "output/features/palette_asset/palette_impasto_img1_v2.png"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5.1.3",
+      "type": "实质",
+      "feature": "调色板颜料Impasto质感(特写)",
+      "highlight": "斑斓厚重的油画颜料",
+      "path": "output/features/palette_asset/palette_impasto_img5_v2.png"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5.1.3.1",
+      "type": "实质",
+      "feature": "颜料色彩种类与分布",
+      "highlight": "斑斓厚重的油画颜料",
+      "path": "output/features/palette_asset/palette_impasto_img5_v2.png"
+    }
+  ],
+  "consistency_elements": [
+    "绘画工具"
+  ]
+}

BIN
examples/plan/input/features/palette_asset/palette_impasto_img1_v2.png


BIN
examples/plan/input/features/palette_asset/palette_impasto_img5_v2.png


BIN
examples/plan/input/features/palette_asset/palette_ref_img1.png


BIN
examples/plan/input/features/palette_asset/palette_ref_img5.png


BIN
examples/plan/input/features/pose_skeleton/img_1_openpose.png


BIN
examples/plan/input/features/pose_skeleton/img_2_openpose.png


BIN
examples/plan/input/features/pose_skeleton/img_3_openpose.png


BIN
examples/plan/input/features/pose_skeleton/img_4_openpose.png


+ 99 - 0
examples/plan/input/features/pose_skeleton/mapping.json

@@ -0,0 +1,99 @@
+{
+  "dimension": "pose_skeleton",
+  "type": "形式",
+  "highlight_cluster": "优雅的白裙写生少女",
+  "description": "各图人物姿态骨骼图,用于ControlNet姿态控制,每张图姿态不同",
+  "valid_files": {
+    "img_1_pose.png": {
+      "source_image": "img_1",
+      "format": "黑底彩色骨骼图 (DWPose标准格式)",
+      "pose": "站立侧后方,右臂举起持笔,左臂弯曲持调色板",
+      "colored_pixels": 27332,
+      "quality": "✓ 有效"
+    },
+    "img_2_pose.png": {
+      "source_image": "img_2",
+      "format": "黑底彩色骨骼图 (DWPose标准格式)",
+      "pose": "站立正后方,双臂持绘画工具",
+      "colored_pixels": 23513,
+      "quality": "✓ 有效"
+    },
+    "img_3_pose.png": {
+      "source_image": "img_3",
+      "format": "黑底彩色骨骼图 (DWPose标准格式)",
+      "pose": "跪坐/蹲坐,后方视角,双臂伸向画架",
+      "colored_pixels": 45531,
+      "quality": "✓ 有效"
+    },
+    "img_4_pose.png": {
+      "source_image": "img_4",
+      "format": "黑底彩色骨骼图 (DWPose标准格式)",
+      "pose": "站立侧面,面向画架,绘画姿态",
+      "colored_pixels": 41132,
+      "quality": "✓ 有效"
+    },
+    "img_5_pose.png": {
+      "source_image": "img_5",
+      "format": "黑底彩色骨骼图 (DWPose标准格式)",
+      "pose": "上半身特写,持调色板,略俯视角度",
+      "colored_pixels": 79351,
+      "quality": "✓ 有效"
+    }
+  },
+  "deprecated_files": {
+    "pose_img_1.png": "几乎全白(>99%),提取失败,已废弃",
+    "pose_img_3.png": "几乎全白(>99%),提取失败,已废弃",
+    "pose_img_4.png": "几乎全白(>99%),提取失败,已废弃",
+    "pose_img_2.png": "白底骨骼图,部分有效(8.3%非白色)",
+    "pose_img_5.png": "白底骨骼图,部分有效(17.6%非白色)"
+  },
+  "consistency_validation": {
+    "img_1": "骨骼质心x=464/864=54%(右侧),符合人物在右侧的构图",
+    "img_3": "骨骼质心y=883/1184=75%(偏下),符合跪坐姿态",
+    "img_4": "骨骼质心x=534/864=62%(偏左),符合侧面视角",
+    "img_5": "骨骼覆盖100%y范围,符合上半身特写"
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.1.2",
+      "type": "形式",
+      "feature": "人物姿态骨骼",
+      "specific": "站立侧后方绘画姿态",
+      "path": "output/features/pose_skeleton/img_1_pose.png"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2.1.2",
+      "type": "形式",
+      "feature": "人物姿态骨骼",
+      "specific": "站立正后方绘画姿态",
+      "path": "output/features/pose_skeleton/img_2_pose.png"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3.1.2",
+      "type": "形式",
+      "feature": "人物姿态骨骼",
+      "specific": "跪坐绘画姿态",
+      "path": "output/features/pose_skeleton/img_3_pose.png"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4.1.1.2",
+      "type": "形式",
+      "feature": "人物姿态骨骼",
+      "specific": "站立侧面绘画姿态",
+      "path": "output/features/pose_skeleton/img_4_pose.png"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5.1.1",
+      "type": "形式",
+      "feature": "人物姿态骨骼",
+      "specific": "上半身持调色板姿态",
+      "path": "output/features/pose_skeleton/img_5_pose.png"
+    }
+  ],
+  "tool_note": "DWPose骨骼图(黑底彩色格式),用于ControlNet OpenPose条件控制。img_*_pose.png为有效文件。"
+}

+ 31 - 0
examples/plan/input/features/rose_asset/mapping.json

@@ -0,0 +1,31 @@
+{
+  "dimension": "rose_asset",
+  "type": "实质",
+  "highlight_cluster": "构建叙事的写生道具",
+  "description": "画架横杆上放置的白色玫瑰花,作为写生场景的点缀道具,增添浪漫文艺气息",
+  "files": {
+    "white_rose_img1.png": {
+      "source_image": "img_1",
+      "state": "fully bloomed white rose with green leaves",
+      "purpose": "白玫瑰道具参考,用于写生场景点缀"
+    }
+  },
+  "flower_description": {
+    "color": "pure white petals, petal edges slightly tinged with green",
+    "shape": "fully bloomed rose, layered petals, full and plump shape, slightly inward-curled center",
+    "leaves": "deep green, serrated leaf edges",
+    "placement": "resting on easel crossbar, below the canvas",
+    "sd_prompt": "single white rose, fully bloomed, layered petals, pure white, deep green leaves, serrated edges, soft natural light, elegant"
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.2.2",
+      "type": "实质",
+      "feature": "白色玫瑰花道具",
+      "highlight": "构建叙事的写生道具"
+    }
+  ],
+  "consistency_elements": ["绘画工具"],
+  "generation_notes": "白玫瑰仅出现在img_1的画架横杆上,是写生场景的点缀元素,img_4的easel_blank_canvas图中也可见"
+}

BIN
examples/plan/input/features/rose_asset/white_rose_img1.png


BIN
examples/plan/input/features/soft_edge_map/img_1_soft_edge.png


BIN
examples/plan/input/features/soft_edge_map/img_2_soft_edge.png


BIN
examples/plan/input/features/soft_edge_map/img_3_soft_edge.png


BIN
examples/plan/input/features/soft_edge_map/img_4_soft_edge.png


BIN
examples/plan/input/features/soft_edge_map/img_5_soft_edge.png


+ 45 - 0
examples/plan/input/features/soft_edge_map/mapping.json

@@ -0,0 +1,45 @@
+{
+  "dimension": "soft_edge_map",
+  "type": "形式",
+  "description": "Sobel软边缘图(HED风格近似),保留更多细节和渐变信息,适合人物和自然场景的柔和控制",
+  "tool": "OpenCV Sobel算子 + 高斯模糊",
+  "files": {
+    "img_1_soft_edge.png": "img_1软边缘图",
+    "img_2_soft_edge.png": "img_2软边缘图",
+    "img_3_soft_edge.png": "img_3软边缘图",
+    "img_4_soft_edge.png": "img_4软边缘图",
+    "img_5_soft_edge.png": "img_5软边缘图"
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1",
+      "type": "形式",
+      "feature": "软边缘结构控制"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2",
+      "type": "形式",
+      "feature": "软边缘结构控制"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3",
+      "type": "形式",
+      "feature": "软边缘结构控制"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4",
+      "type": "形式",
+      "feature": "软边缘结构控制"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5",
+      "type": "形式",
+      "feature": "软边缘结构控制"
+    }
+  ]
+}

BIN
examples/plan/input/features/white_dress_asset/dress_ref_back.png


BIN
examples/plan/input/features/white_dress_asset/dress_ref_back_v2.png


BIN
examples/plan/input/features/white_dress_asset/dress_ref_backless.png


BIN
examples/plan/input/features/white_dress_asset/dress_ref_full.png


+ 78 - 0
examples/plan/input/features/white_dress_asset/mapping.json

@@ -0,0 +1,78 @@
+{
+  "dimension": "white_dress_asset",
+  "type": "实质",
+  "highlight_cluster": "优雅的白裙写生少女",
+  "description": "纯白宽松长袖连衣裙,露背设计,优雅垂坠感,是人物形象的核心服装元素",
+  "files": {
+    "dress_ref_back_v2.png": {
+      "source_image": "img_2",
+      "view": "back view",
+      "purpose": "白裙背面参考(主要),展示露背设计和整体轮廓",
+      "quality": "有效,白色裙子内容清晰",
+      "tool": "gemini-2.5-flash-image"
+    },
+    "dress_ref_backless.png": {
+      "source_image": "img_2",
+      "view": "back view",
+      "purpose": "白裙背面参考(旧版),展示露背设计"
+    },
+    "dress_ref_full.png": {
+      "source_image": "img_1",
+      "view": "3/4 back view",
+      "purpose": "白裙整体参考,展示宽松袖子和裙摆"
+    }
+  },
+  "dress_characteristics": {
+    "color": "pure white",
+    "style": "loose-fitting long-sleeve dress",
+    "design_features": [
+      "backless design",
+      "tie details at back",
+      "loose sleeves",
+      "flowing skirt",
+      "V-neck"
+    ],
+    "fabric": "lightweight cotton-linen or silk blend, good drape",
+    "sd_tokens": "pure white dress, backless dress, flowing white dress, loose sleeves, elegant white gown, cottagecore dress"
+  },
+  "mapping": [
+    {
+      "image": "img_1",
+      "paragraph": "段落1.1.2.1",
+      "type": "实质",
+      "feature": "白色长裙服装",
+      "path": "output/features/white_dress_asset/dress_ref_full.png"
+    },
+    {
+      "image": "img_2",
+      "paragraph": "段落2.1.2.1",
+      "type": "实质",
+      "feature": "白色长裙服装(露背)",
+      "path": "output/features/white_dress_asset/dress_ref_back_v2.png"
+    },
+    {
+      "image": "img_3",
+      "paragraph": "段落3.1.2.1",
+      "type": "实质",
+      "feature": "白色长裙服装(露背)",
+      "path": "output/features/white_dress_asset/dress_ref_back_v2.png"
+    },
+    {
+      "image": "img_4",
+      "paragraph": "段落4.1.1.1",
+      "type": "实质",
+      "feature": "白色长裙服装",
+      "path": "output/features/white_dress_asset/dress_ref_full.png"
+    },
+    {
+      "image": "img_5",
+      "paragraph": "段落5.1.2",
+      "type": "实质",
+      "feature": "白色长裙服装",
+      "path": "output/features/white_dress_asset/dress_ref_full.png"
+    }
+  ],
+  "consistency_elements": [
+    "女性衣物"
+  ]
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов