MCPcopy Create free account
hub / github.com/OpenRaiser/PaperFlow / build_seed_profile

Function build_seed_profile

scripts/clear_database.py:138–176  ·  view source on GitHub ↗

Build a fresh cold-start profile from role metadata.

(role_name: str, role_data: Dict[str, Any])

Source from the content-addressed store, hash-verified

136
137
138def build_seed_profile(role_name: str, role_data: Dict[str, Any]) -> Dict[str, Any]:
139 """Build a fresh cold-start profile from role metadata."""
140 coldstart_agent = importlib.import_module("agents.coldstart-agent.main")
141
142 user_id = role_data.get("user_id") or f"user_{role_name}"
143 bootstrap_text = (
144 role_data.get("natural_language")
145 or role_data.get("description")
146 or ""
147 ).strip()
148
149 profile = coldstart_agent.build_empty_profile(user_id)
150 parsed = coldstart_agent.parse_natural_language(bootstrap_text) if bootstrap_text else {}
151 selected_directions = _extract_seed_directions_from_role(role_data) or _select_seed_directions(role_name, parsed)
152
153 profile["core_directions"] = selected_directions
154 profile["topic_weights"] = {
155 direction_key: round(
156 float(((parsed.get("topic_weights") or {}).get(direction_key, weight))),
157 4,
158 )
159 for direction_key, weight in selected_directions.items()
160 }
161 profile["methodology_preferences"] = role_data.get("methodology_preferences") or parsed.get("methodology_preferences") or {}
162 profile["taste_profile"] = parsed.get("taste_profile") or {}
163 profile["must_read"] = {
164 "authors": list(role_data.get("must_read_authors", []) or []),
165 "institutions": list(role_data.get("must_read_institutions", []) or []),
166 "keywords": list(role_data.get("must_read_keywords", []) or []),
167 }
168 profile["interest_vector"] = coldstart_agent.generate_interest_vector(selected_directions)
169 profile["description"] = role_data.get("description") or bootstrap_text
170 profile["bootstrap_summary"] = role_data.get("bootstrap_summary") or bootstrap_text
171 profile["secondary_topics"] = list(role_data.get("secondary_topics", []) or [])
172 profile["report_preferences"] = copy.deepcopy(role_data.get("report_preferences") or {})
173 profile["drift_plan"] = copy.deepcopy(role_data.get("drift_plan") or {})
174 profile["feishu_chat_id"] = role_data.get("feishu_chat_id")
175
176 return profile
177
178
179def reset_user_profiles(

Callers 1

reset_user_profilesFunction · 0.85

Calls 3

_select_seed_directionsFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected