Refine member context profiling detail
This commit is contained in:
@@ -130,10 +130,18 @@ class MemberContextService:
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["identity_traits", "identity_clues"], limit=5
|
||||
),
|
||||
"common_scenarios": self._extract_scored_items(
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["common_scenarios", "discussion_scenarios"], limit=5
|
||||
),
|
||||
"skill_profile": self._extract_scored_items(
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["skill_profile", "skill_signals"], limit=6
|
||||
),
|
||||
"problem_solving_profile": self._extract_scored_items(
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["problem_solving_profile", "problem_solving_signals"], limit=5
|
||||
),
|
||||
"family_profile": self._extract_scored_items(
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["family_profile", "family_signals"], limit=4
|
||||
@@ -153,6 +161,14 @@ class MemberContextService:
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["habit_patterns", "habit_signals"], limit=self.stable_max_items
|
||||
),
|
||||
"expression_profile": self._extract_scored_items(
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["expression_profile", "expression_markers"], limit=5
|
||||
),
|
||||
"reply_entry_profile": self._extract_scored_items(
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["reply_entry_profile", "reply_entry_points"], limit=4
|
||||
),
|
||||
"long_term_reply_preferences": self._extract_scored_items(
|
||||
monthly_structured + weekly_structured, ["long_term_reply_preferences", "reply_preferences"], limit=4
|
||||
),
|
||||
@@ -538,12 +554,16 @@ class MemberContextService:
|
||||
"confidence": max(0.0, min(1.0, confidence)),
|
||||
"meta": {
|
||||
"identity_traits": norm_list(data.get("identity_traits"), 5),
|
||||
"common_scenarios": norm_list(data.get("common_scenarios"), 5),
|
||||
"skill_profile": norm_list(data.get("skill_profile"), 6),
|
||||
"problem_solving_profile": norm_list(data.get("problem_solving_profile"), 5),
|
||||
"family_profile": norm_list(data.get("family_profile"), 4),
|
||||
"life_stage_profile": norm_list(data.get("life_stage_profile"), 4),
|
||||
"value_profile": norm_list(data.get("value_profile"), 5),
|
||||
"stable_traits": norm_list(data.get("stable_traits"), self.stable_max_items),
|
||||
"habit_patterns": norm_list(data.get("habit_patterns"), self.stable_max_items),
|
||||
"expression_profile": norm_list(data.get("expression_profile"), 5),
|
||||
"reply_entry_profile": norm_list(data.get("reply_entry_profile"), 4),
|
||||
"long_term_reply_preferences": norm_list(data.get("long_term_reply_preferences"), 4),
|
||||
"group_role": str(data.get("group_role", "")).strip(),
|
||||
"decision_profile": str(data.get("decision_profile", "")).strip(),
|
||||
@@ -586,11 +606,21 @@ class MemberContextService:
|
||||
meta.get("identity_traits", []),
|
||||
current_context.get("confidence", 0) * 0.75,
|
||||
)
|
||||
merged_common_scenario_scores = self._merge_scored_items(
|
||||
existing_meta.get("common_scenario_scores", {}),
|
||||
meta.get("common_scenarios", []),
|
||||
current_context.get("confidence", 0) * 0.85,
|
||||
)
|
||||
merged_skill_scores = self._merge_scored_items(
|
||||
existing_meta.get("skill_profile_scores", {}),
|
||||
meta.get("skill_profile", []),
|
||||
current_context.get("confidence", 0) * 0.85,
|
||||
)
|
||||
merged_problem_solving_scores = self._merge_scored_items(
|
||||
existing_meta.get("problem_solving_profile_scores", {}),
|
||||
meta.get("problem_solving_profile", []),
|
||||
current_context.get("confidence", 0) * 0.9,
|
||||
)
|
||||
merged_family_scores = self._merge_scored_items(
|
||||
existing_meta.get("family_profile_scores", {}),
|
||||
meta.get("family_profile", []),
|
||||
@@ -606,6 +636,16 @@ class MemberContextService:
|
||||
meta.get("value_profile", []),
|
||||
current_context.get("confidence", 0) * 0.75,
|
||||
)
|
||||
merged_expression_scores = self._merge_scored_items(
|
||||
existing_meta.get("expression_profile_scores", {}),
|
||||
meta.get("expression_profile", []),
|
||||
current_context.get("confidence", 0) * 0.95,
|
||||
)
|
||||
merged_reply_entry_scores = self._merge_scored_items(
|
||||
existing_meta.get("reply_entry_profile_scores", {}),
|
||||
meta.get("reply_entry_profile", []),
|
||||
current_context.get("confidence", 0),
|
||||
)
|
||||
merged_reply_pref_scores = self._merge_scored_items(
|
||||
existing_meta.get("long_term_reply_preference_scores", {}),
|
||||
meta.get("long_term_reply_preferences", []),
|
||||
@@ -621,32 +661,48 @@ class MemberContextService:
|
||||
meta["stable_trait_scores"] = merged_trait_scores
|
||||
meta["habit_pattern_scores"] = merged_habit_scores
|
||||
meta["identity_trait_scores"] = merged_identity_scores
|
||||
meta["common_scenario_scores"] = merged_common_scenario_scores
|
||||
meta["skill_profile_scores"] = merged_skill_scores
|
||||
meta["problem_solving_profile_scores"] = merged_problem_solving_scores
|
||||
meta["family_profile_scores"] = merged_family_scores
|
||||
meta["life_stage_profile_scores"] = merged_life_stage_scores
|
||||
meta["value_profile_scores"] = merged_value_scores
|
||||
meta["expression_profile_scores"] = merged_expression_scores
|
||||
meta["reply_entry_profile_scores"] = merged_reply_entry_scores
|
||||
meta["long_term_reply_preference_scores"] = merged_reply_pref_scores
|
||||
meta["temperament_tendency_scores"] = merged_temperament_scores
|
||||
meta["identity_traits"] = self._top_scored_items(merged_identity_scores, limit=5)
|
||||
meta["common_scenarios"] = self._top_scored_items(merged_common_scenario_scores, limit=5)
|
||||
meta["skill_profile"] = self._top_scored_items(merged_skill_scores, limit=6)
|
||||
meta["problem_solving_profile"] = self._top_scored_items(merged_problem_solving_scores, limit=5)
|
||||
meta["family_profile"] = self._top_scored_items(merged_family_scores, limit=4)
|
||||
meta["life_stage_profile"] = self._top_scored_items(merged_life_stage_scores, limit=4)
|
||||
meta["value_profile"] = self._top_scored_items(merged_value_scores, limit=5)
|
||||
meta["stable_traits"] = self._top_scored_items(merged_trait_scores, limit=self.stable_max_items)
|
||||
meta["habit_patterns"] = self._top_scored_items(merged_habit_scores, limit=self.stable_max_items)
|
||||
meta["expression_profile"] = self._top_scored_items(merged_expression_scores, limit=5)
|
||||
meta["reply_entry_profile"] = self._top_scored_items(merged_reply_entry_scores, limit=4)
|
||||
meta["long_term_reply_preferences"] = self._top_scored_items(merged_reply_pref_scores, limit=4)
|
||||
temperament = self._top_scored_items(merged_temperament_scores, limit=1)
|
||||
meta["temperament_tendency"] = temperament[0] if temperament else meta.get("temperament_tendency", "")
|
||||
if not meta["identity_traits"]:
|
||||
meta["identity_traits"] = (existing_meta.get("identity_traits") or [])[:5]
|
||||
if not meta["common_scenarios"]:
|
||||
meta["common_scenarios"] = (existing_meta.get("common_scenarios") or [])[:5]
|
||||
if not meta["skill_profile"]:
|
||||
meta["skill_profile"] = (existing_meta.get("skill_profile") or [])[:6]
|
||||
if not meta["problem_solving_profile"]:
|
||||
meta["problem_solving_profile"] = (existing_meta.get("problem_solving_profile") or [])[:5]
|
||||
if not meta["family_profile"]:
|
||||
meta["family_profile"] = (existing_meta.get("family_profile") or [])[:4]
|
||||
if not meta["life_stage_profile"]:
|
||||
meta["life_stage_profile"] = (existing_meta.get("life_stage_profile") or [])[:4]
|
||||
if not meta["value_profile"]:
|
||||
meta["value_profile"] = (existing_meta.get("value_profile") or [])[:5]
|
||||
if not meta["expression_profile"]:
|
||||
meta["expression_profile"] = (existing_meta.get("expression_profile") or [])[:5]
|
||||
if not meta["reply_entry_profile"]:
|
||||
meta["reply_entry_profile"] = (existing_meta.get("reply_entry_profile") or [])[:4]
|
||||
meta["group_role"] = meta.get("group_role") or existing_meta.get("group_role") or ""
|
||||
meta["decision_profile"] = meta.get("decision_profile") or existing_meta.get("decision_profile") or ""
|
||||
meta["engagement_traits"] = (meta.get("engagement_traits") or existing_meta.get("engagement_traits") or [])[:4]
|
||||
@@ -706,6 +762,13 @@ class MemberContextService:
|
||||
)
|
||||
if preferences:
|
||||
return "更适合:" + "、".join(preferences[:3])
|
||||
entry_points = self._extract_scored_items(
|
||||
monthly_structured + weekly_structured + daily_structured,
|
||||
["reply_entry_profile", "reply_entry_points"],
|
||||
limit=3,
|
||||
)
|
||||
if entry_points:
|
||||
return "优先从这些点接话:" + "、".join(entry_points[:3])
|
||||
return "保持自然口语化,结论和解释尽量平衡"
|
||||
|
||||
def _calc_digest_confidence(self, monthly_digests: List[Dict], weekly_digests: List[Dict],
|
||||
@@ -745,12 +808,18 @@ class MemberContextService:
|
||||
if meta.get("temperament_tendency"):
|
||||
label = "长期沟通倾向" if meta.get("stable_ready") else "阶段性沟通倾向"
|
||||
parts.append(f"{label}:{meta.get('temperament_tendency')}")
|
||||
if meta.get("common_scenarios"):
|
||||
parts.append(f"常见场景:{'、'.join(meta.get('common_scenarios')[:3])}")
|
||||
if meta.get("problem_solving_profile"):
|
||||
parts.append(f"处理方式:{'、'.join(meta.get('problem_solving_profile')[:3])}")
|
||||
if meta.get("stable_traits"):
|
||||
parts.append(f"长期特征:{'、'.join(meta.get('stable_traits')[:3])}")
|
||||
if meta.get("identity_traits"):
|
||||
parts.append(f"身份线索:{'、'.join(meta.get('identity_traits')[:2])}")
|
||||
if meta.get("skill_profile"):
|
||||
parts.append(f"技能画像:{'、'.join(meta.get('skill_profile')[:3])}")
|
||||
if meta.get("expression_profile"):
|
||||
parts.append(f"表达标记:{'、'.join(meta.get('expression_profile')[:3])}")
|
||||
if meta.get("value_profile"):
|
||||
parts.append(f"判断偏好:{'、'.join(meta.get('value_profile')[:2])}")
|
||||
if meta.get("habit_patterns"):
|
||||
|
||||
Reference in New Issue
Block a user