feat: 试用过程中的细节优化
This commit is contained in:
@@ -134,11 +134,28 @@ def build_context(raw: dict, fallback_name: str = "", fallback_desc: str = "") -
|
||||
break
|
||||
|
||||
dimensions = raw.get("dimensions") or {}
|
||||
dimension_values = (dimensions.get("length"), dimensions.get("width"), dimensions.get("height")) if isinstance(dimensions, dict) else ()
|
||||
dimensions_line = ""
|
||||
if len(dimension_values) == 3 and all(value is not None for value in dimension_values):
|
||||
unit = dimensions.get("unit") or "mm"
|
||||
dimensions_line = "L × W × H: " + " × ".join(str(value) for value in dimension_values) + f" {unit}"
|
||||
known_dimensions: list[tuple[str, object]] = []
|
||||
if isinstance(dimensions, dict):
|
||||
known_dimensions = [
|
||||
(label, dimensions[key]) for key, label in (("length", "length"), ("width", "width"), ("height", "height"))
|
||||
if dimensions.get(key) is not None
|
||||
]
|
||||
unit = (dimensions.get("unit") or "mm") if isinstance(dimensions, dict) else "mm"
|
||||
dimensions_line = "; ".join(f"{label}: {value} {unit}" for label, value in known_dimensions)
|
||||
known_labels = [label for label, _ in known_dimensions]
|
||||
missing_labels = [label for label in ("length", "width", "height") if label not in known_labels]
|
||||
dimension_annotation_instruction = (
|
||||
"STRICT MEASUREMENT OUTPUT RULE: render exactly "
|
||||
+ str(len(known_labels))
|
||||
+ " measurement arrows and labels, only for: "
|
||||
+ ", ".join(known_labels)
|
||||
+ ". The only permitted dimension values are: "
|
||||
+ dimensions_line
|
||||
+ ". Do not infer product measurements. Do not draw, label, or show an arrow for: "
|
||||
+ ", ".join(missing_labels or ["any additional direction"])
|
||||
+ ", depth, thickness, diameter, or any other unlisted dimension."
|
||||
if known_dimensions else ""
|
||||
)
|
||||
params_line = "; ".join(
|
||||
f"{p.get('key')}: {p.get('value')}" for p in (raw.get("params") or [])[:8]
|
||||
)
|
||||
@@ -158,6 +175,7 @@ def build_context(raw: dict, fallback_name: str = "", fallback_desc: str = "") -
|
||||
dimensions_line,
|
||||
))),
|
||||
"price": raw.get("price") or "",
|
||||
"dimension_annotation_instruction": dimension_annotation_instruction,
|
||||
}
|
||||
|
||||
def selling_point_lines(ctx: dict, lang: str, max_n: int = 3) -> str:
|
||||
|
||||
Reference in New Issue
Block a user