Extract interaction role graph wording
This commit is contained in:
@@ -1217,6 +1217,114 @@ def smoke_climax_position_routes() -> None:
|
||||
_expect_formatter_outputs(row, name, target="single")
|
||||
|
||||
|
||||
def smoke_interaction_role_graph_routes() -> None:
|
||||
cases = [
|
||||
(
|
||||
"interaction_manual",
|
||||
"Manual stimulation",
|
||||
"manual_only",
|
||||
"manual",
|
||||
"fingering",
|
||||
4301,
|
||||
_character_cast(),
|
||||
1,
|
||||
1,
|
||||
("reclines with thighs open", "fingers visibly stimulating"),
|
||||
("fingers visibly stimulating", "between her legs"),
|
||||
),
|
||||
(
|
||||
"interaction_clothing_transition",
|
||||
"Clothing and position transitions",
|
||||
"interaction_only",
|
||||
"interaction",
|
||||
"position_transition",
|
||||
4302,
|
||||
_character_cast(),
|
||||
1,
|
||||
1,
|
||||
("mid-transition", "moving clothing aside"),
|
||||
("mid-transition", "guiding the woman's hips"),
|
||||
),
|
||||
(
|
||||
"interaction_body_worship",
|
||||
"Body worship and touching",
|
||||
"interaction_only",
|
||||
"interaction",
|
||||
"body_worship",
|
||||
4301,
|
||||
_character_cast(),
|
||||
1,
|
||||
1,
|
||||
("kisses down her body", "hands tracing"),
|
||||
("kisses down her body", "hands tracing"),
|
||||
),
|
||||
(
|
||||
"interaction_camera_performance",
|
||||
"Camera performance",
|
||||
"interaction_only",
|
||||
"interaction",
|
||||
"camera_showing",
|
||||
4301,
|
||||
_character_cast(),
|
||||
1,
|
||||
1,
|
||||
("faces the camera", "creator-shot reveal"),
|
||||
("faces the camera", "creator-shot reveal"),
|
||||
),
|
||||
(
|
||||
"interaction_aftercare",
|
||||
"Aftercare and cleanup",
|
||||
"interaction_only",
|
||||
"interaction",
|
||||
"aftercare",
|
||||
4301,
|
||||
_character_cast(),
|
||||
1,
|
||||
1,
|
||||
("lie close together after sex", "post-sex cuddle"),
|
||||
("lie close together after sex", "post-sex cuddle"),
|
||||
),
|
||||
(
|
||||
"interaction_group_coordination",
|
||||
"Group coordination",
|
||||
"interaction_only",
|
||||
"interaction",
|
||||
"watching",
|
||||
4301,
|
||||
_character_cast_two_men(),
|
||||
1,
|
||||
2,
|
||||
("is centered", "hold and present"),
|
||||
("is centered", "each role clearly visible"),
|
||||
),
|
||||
]
|
||||
for name, subcategory, focus, family, position_key, seed, cast, women_count, men_count, role_terms, krea_terms in cases:
|
||||
row = _prompt_row(
|
||||
name=name,
|
||||
category="Hardcore sexual poses",
|
||||
subcategory=subcategory,
|
||||
seed=seed,
|
||||
character_cast=cast,
|
||||
women_count=women_count,
|
||||
men_count=men_count,
|
||||
hardcore_position_config=_position_filter(focus, family, [position_key]),
|
||||
)
|
||||
_expect_custom_row(row, name)
|
||||
_expect(row.get("action_family") == "foreplay", f"{name} action_family should stay formatter foreplay")
|
||||
_expect(row.get("position_family") == family, f"{name} position_family mismatch: {row.get('position_family')}")
|
||||
_expect(position_key in (row.get("position_keys") or []), f"{name} lost position key {position_key!r}")
|
||||
role_graph = _expect_text(f"{name}.source_role_graph", row.get("source_role_graph"), 40).lower()
|
||||
for term in role_terms:
|
||||
_expect(term in role_graph, f"{name} role graph missing {term!r}: {role_graph}")
|
||||
krea = krea_formatter.format_krea2_prompt("", metadata_json=_json(row), target="single")
|
||||
prompt = _expect_text(f"{name}.krea_prompt", krea.get("krea_prompt"), 60).lower()
|
||||
_expect("metadata" in krea.get("method", ""), f"{name}.krea did not use metadata")
|
||||
_expect("role graph:" not in prompt and "sexual scene:" not in prompt, f"{name} Krea leaked raw labels")
|
||||
for term in krea_terms:
|
||||
_expect(term in prompt, f"{name} Krea prompt missing {term!r}: {prompt}")
|
||||
_expect_formatter_outputs(row, name, target="single")
|
||||
|
||||
|
||||
def smoke_no_expression_fallback() -> None:
|
||||
cast = pb.build_character_slot_json(
|
||||
subject_type="woman",
|
||||
@@ -1354,6 +1462,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
|
||||
("pov_anal_position_routes", smoke_pov_anal_position_routes),
|
||||
("double_front_back_route", smoke_double_front_back_route),
|
||||
("climax_position_routes", smoke_climax_position_routes),
|
||||
("interaction_role_graph_routes", smoke_interaction_role_graph_routes),
|
||||
("expression_disabled", smoke_no_expression_fallback),
|
||||
("formatter_metadata_fixtures", smoke_formatter_metadata_fixtures),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user