feat: 实现用户画像、占卜历史与后端用户管理模块

This commit is contained in:
ZL-Q
2026-04-06 01:28:10 +08:00
parent d87b2e1e3a
commit 8a18b3528b
77 changed files with 5850 additions and 2604 deletions
+13 -4
View File
@@ -135,6 +135,7 @@ class SqlAlchemyEventStore:
"result_type",
"suggested_actions",
"error",
"divination_derived",
"ui_hints",
)
worker_output_payload: dict[str, object] = {}
@@ -187,7 +188,9 @@ class SqlAlchemyEventStore:
content=content,
model_code=model_code if isinstance(model_code, str) else None,
tool_name=tool_name_value,
metadata=metadata_model.model_dump(mode="json", exclude_none=True),
metadata=metadata_model.model_dump(
mode="json", by_alias=True, exclude_none=True
),
input_tokens=input_tokens,
output_tokens=output_tokens,
cost=cost,
@@ -200,7 +203,9 @@ class SqlAlchemyEventStore:
visibility_mask=visibility_mask,
role=role.value,
content=content,
metadata=metadata_model.model_dump(mode="json", exclude_none=True),
metadata=metadata_model.model_dump(
mode="json", by_alias=True, exclude_none=True
),
timestamp=self._resolve_message_timestamp(persisted),
)
@@ -272,7 +277,9 @@ class SqlAlchemyEventStore:
role=AgentChatMessageRole.TOOL,
content=content,
tool_name=tool_output.tool_name,
metadata=metadata_model.model_dump(mode="json", exclude_none=True),
metadata=metadata_model.model_dump(
mode="json", by_alias=True, exclude_none=True
),
visibility_mask=visibility_mask,
)
await self._append_context_cache_message(
@@ -281,7 +288,9 @@ class SqlAlchemyEventStore:
visibility_mask=visibility_mask,
role=AgentChatMessageRole.TOOL.value,
content=content,
metadata=metadata_model.model_dump(mode="json", exclude_none=True),
metadata=metadata_model.model_dump(
mode="json", by_alias=True, exclude_none=True
),
timestamp=self._resolve_message_timestamp(persisted),
)
@@ -60,7 +60,7 @@ def _worker_rules(llm_config: SystemAgentLLMConfig | None) -> list[str]:
"[六爻分析流程]",
"- 第1步:准确复述用户问题,确认问题类型与诉求焦点。",
"- 第2步:围绕用神、世应、动爻、月建日辰、旺衰关系形成核心判断。",
"- 第3步:给出签级,仅允许 上上签 / 中上签 / 中下签。",
"- 第3步:给出签级,仅允许 上上签 / 中上签 / 中下签 / 下下签",
"- 第4步:输出结论与重点,解释外部阻力或有利转机出现条件。",
"- 第5步:给出可执行建议,避免空泛正确话。",
"- 第6步:提炼关键词,优先四字表达,简洁且可复述。",
@@ -232,8 +232,10 @@ class AgentScopeRunner:
pipeline=pipeline,
runtime_client_time=runtime_client_time,
runtime_mode=runtime_mode,
derived_divination=derived_divination,
)
worker_output = worker_output_model.model_validate(worker_result.payload)
worker_output.divination_derived = derived_divination
await self._emit_step_event(
pipeline=pipeline,
run_input=run_input,
@@ -255,6 +257,7 @@ class AgentScopeRunner:
pipeline: PipelineLike,
runtime_client_time: ClientTimeContext | None,
runtime_mode: RuntimeMode,
derived_divination: DerivedDivinationData,
) -> StageExecutionResult:
tracking_model = self._build_model(stage_config=stage_config)
formatter = OpenAIChatFormatter()
@@ -290,7 +293,12 @@ class AgentScopeRunner:
usage_summary=tracking_model.usage_summary(),
)
await emitter.emit_final_text_end(
worker_output=worker_payload.model_dump(mode="json", exclude_none=True),
worker_output={
**worker_payload.model_dump(mode="json", exclude_none=True),
"divination_derived": derived_divination.model_dump(
mode="json", by_alias=True, exclude_none=True
),
},
response_metadata=response_metadata,
)
return StageExecutionResult(
@@ -70,6 +70,7 @@ class PipelineStageEmitter:
"suggested_actions": worker_output.get("suggested_actions")
or worker_output.get("advice", []),
"error": worker_output.get("error"),
"divination_derived": worker_output.get("divination_derived"),
**response_metadata,
}
ui_hints = worker_output.get("ui_hints")