refactor: unify douban module contracts

This commit is contained in:
jxxghp
2026-08-24 01:42:34 +08:00
parent 8f6456be6c
commit ce27732064
3 changed files with 164 additions and 78 deletions
@@ -138,6 +138,14 @@ _METHOD_CONTRACTS = {
"tv_hot": ModuleMethodContract(family="media-discovery", input_contract="MediaRankingRequest", result_contract="list[MediaInfo]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("page", "count")),
"tv_weekly_chinese": ModuleMethodContract(family="media-discovery", input_contract="MediaRankingRequest", result_contract="list[MediaInfo]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("page", "count")),
"tv_weekly_global": ModuleMethodContract(family="media-discovery", input_contract="MediaRankingRequest", result_contract="list[MediaInfo]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("page", "count")),
"douban_discover": ModuleMethodContract(family="douban", input_contract="DoubanDiscoverRequest", result_contract="list[MediaInfo]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("mtype", "sort", "tags", "page", "count")),
"douban_info": ModuleMethodContract(family="douban", input_contract="DoubanInfoRequest", result_contract="dict | None", result_shape=ModuleResultShape.MAPPING, aggregation=ModuleResultAggregation.FIRST_NON_EMPTY, required_parameters=("doubanid", "mtype", "raise_exception")),
"douban_movie_credits": ModuleMethodContract(family="douban", input_contract="DoubanMediaRequest", result_contract="list[MediaPerson]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("doubanid",)),
"douban_movie_recommend": ModuleMethodContract(family="douban", input_contract="DoubanMediaRequest", result_contract="list[MediaInfo]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("doubanid",)),
"douban_person_credits": ModuleMethodContract(family="douban", input_contract="DoubanPersonCreditsRequest", result_contract="list[MediaInfo]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("person_id", "page")),
"douban_person_detail": ModuleMethodContract(family="douban", input_contract="DoubanPersonRequest", result_contract="MediaPerson | None", aggregation=ModuleResultAggregation.FIRST_NON_EMPTY, required_parameters=("person_id",)),
"douban_tv_credits": ModuleMethodContract(family="douban", input_contract="DoubanMediaRequest", result_contract="list[MediaPerson]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("doubanid",)),
"douban_tv_recommend": ModuleMethodContract(family="douban", input_contract="DoubanMediaRequest", result_contract="list[MediaInfo]", result_shape=ModuleResultShape.LIST, aggregation=ModuleResultAggregation.ORDERED_LIST_MERGE, required_parameters=("doubanid",)),
"send_message": ModuleMethodContract(family="messaging", input_contract="MessageSendRequest", result_contract="Message | None", aggregation=ModuleResultAggregation.FIRST_NON_EMPTY),
"finalize_message": ModuleMethodContract(family="messaging", input_contract="MessageFinalizeRequest", result_contract="Message | None", aggregation=ModuleResultAggregation.FIRST_NON_EMPTY, required_parameters=("response",)),
"register_commands": ModuleMethodContract(family="messaging", input_contract="CommandRegistrationRequest", result_contract="None", required_parameters=("commands",)),
@@ -184,6 +192,14 @@ _METHOD_CONTRACTS.update({
"async_tv_hot": _METHOD_CONTRACTS["tv_hot"],
"async_tv_weekly_chinese": _METHOD_CONTRACTS["tv_weekly_chinese"],
"async_tv_weekly_global": _METHOD_CONTRACTS["tv_weekly_global"],
"async_douban_discover": _METHOD_CONTRACTS["douban_discover"],
"async_douban_info": _METHOD_CONTRACTS["douban_info"],
"async_douban_movie_credits": _METHOD_CONTRACTS["douban_movie_credits"],
"async_douban_movie_recommend": _METHOD_CONTRACTS["douban_movie_recommend"],
"async_douban_person_credits": _METHOD_CONTRACTS["douban_person_credits"],
"async_douban_person_detail": _METHOD_CONTRACTS["douban_person_detail"],
"async_douban_tv_credits": _METHOD_CONTRACTS["douban_tv_credits"],
"async_douban_tv_recommend": _METHOD_CONTRACTS["douban_tv_recommend"],
})
_PREFIX_CONTRACTS = (