feat(data-ana): docker 本地测试通过 + gRPC 修复 + nextstep 上下游依赖文档

This commit is contained in:
SpecialX
2026-07-13 23:57:48 +08:00
parent b745443b6d
commit 5b06bdbc52
14 changed files with 2061 additions and 42 deletions

View File

@@ -0,0 +1,632 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
import warnings
from generated_proto import analytics_pb2 as analytics__pb2
GRPC_GENERATED_VERSION = "1.82.1"
GRPC_VERSION = grpc.__version__
_version_not_supported = False
try:
from grpc._utilities import first_version_is_lower
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
except ImportError:
_version_not_supported = True
if _version_not_supported:
raise RuntimeError(
f"The grpc package installed is at version {GRPC_VERSION},"
+ " but the generated code in analytics_pb2_grpc.py depends on"
+ f" grpcio>={GRPC_GENERATED_VERSION}."
+ f" Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}"
+ f" or downgrade your generated code using grpcio-tools<={GRPC_VERSION}."
)
class AnalyticsServiceStub:
"""AnalyticsService 数据分析服务契约D6 智能洞察领域).
P4 启用 gRPC server 端口 50055HTTP 3006 保留作 Gateway 直连降级.
所有 RPC 返回 ActionState 信封success/data/error/details.degraded.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.GetClassPerformance = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetClassPerformance",
request_serializer=analytics__pb2.GetClassPerformanceRequest.SerializeToString,
response_deserializer=analytics__pb2.ClassPerformance.FromString,
_registered_method=True,
)
self.GetStudentWeakness = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetStudentWeakness",
request_serializer=analytics__pb2.GetStudentWeaknessRequest.SerializeToString,
response_deserializer=analytics__pb2.StudentWeakness.FromString,
_registered_method=True,
)
self.GetLearningTrend = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetLearningTrend",
request_serializer=analytics__pb2.GetLearningTrendRequest.SerializeToString,
response_deserializer=analytics__pb2.LearningTrend.FromString,
_registered_method=True,
)
self.GetTeacherDashboard = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetTeacherDashboard",
request_serializer=analytics__pb2.GetTeacherDashboardRequest.SerializeToString,
response_deserializer=analytics__pb2.TeacherDashboard.FromString,
_registered_method=True,
)
self.GetStudentDashboard = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetStudentDashboard",
request_serializer=analytics__pb2.GetStudentDashboardRequest.SerializeToString,
response_deserializer=analytics__pb2.StudentDashboard.FromString,
_registered_method=True,
)
self.GetParentDashboard = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetParentDashboard",
request_serializer=analytics__pb2.GetParentDashboardRequest.SerializeToString,
response_deserializer=analytics__pb2.ParentDashboard.FromString,
_registered_method=True,
)
self.GetAdminDashboard = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetAdminDashboard",
request_serializer=analytics__pb2.GetAdminDashboardRequest.SerializeToString,
response_deserializer=analytics__pb2.AdminDashboard.FromString,
_registered_method=True,
)
self.GetWarnings = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetWarnings",
request_serializer=analytics__pb2.GetWarningsRequest.SerializeToString,
response_deserializer=analytics__pb2.WarningList.FromString,
_registered_method=True,
)
self.TriggerWarning = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/TriggerWarning",
request_serializer=analytics__pb2.TriggerWarningRequest.SerializeToString,
response_deserializer=analytics__pb2.TriggerWarningResponse.FromString,
_registered_method=True,
)
self.GetMasteryDistribution = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetMasteryDistribution",
request_serializer=analytics__pb2.GetMasteryDistributionRequest.SerializeToString,
response_deserializer=analytics__pb2.MasteryDistribution.FromString,
_registered_method=True,
)
self.GetStudentMastery = channel.unary_unary(
"/next_edu_cloud.analytics.v1.AnalyticsService/GetStudentMastery",
request_serializer=analytics__pb2.GetStudentMasteryRequest.SerializeToString,
response_deserializer=analytics__pb2.StudentMastery.FromString,
_registered_method=True,
)
self.SubscribeMasteryUpdate = channel.unary_stream(
"/next_edu_cloud.analytics.v1.AnalyticsService/SubscribeMasteryUpdate",
request_serializer=analytics__pb2.SubscribeMasteryUpdateRequest.SerializeToString,
response_deserializer=analytics__pb2.MasteryUpdateEvent.FromString,
_registered_method=True,
)
class AnalyticsServiceServicer:
"""AnalyticsService 数据分析服务契约D6 智能洞察领域).
P4 启用 gRPC server 端口 50055HTTP 3006 保留作 Gateway 直连降级.
所有 RPC 返回 ActionState 信封success/data/error/details.degraded.
"""
def GetClassPerformance(self, request, context):
"""班级成绩分析(平均分/及格率/参考人数)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetStudentWeakness(self, request, context):
"""学生薄弱知识点mastery_level < 0.6."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetLearningTrend(self, request, context):
"""学习趋势(历史成绩曲线)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetTeacherDashboard(self, request, context):
"""教师仪表盘聚合(班级概览 + 待办 + 预警)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetStudentDashboard(self, request, context):
"""学生仪表盘(个人学情 + 排名 + 薄弱点)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetParentDashboard(self, request, context):
"""家长仪表盘(孩子学情概览)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetAdminDashboard(self, request, context):
"""管理员仪表盘(全校统计 + AI 用量)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetWarnings(self, request, context):
"""预警列表查询(按班级/严重度/时间过滤)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def TriggerWarning(self, request, context):
"""手动触发预警(管理员/教师主动标记关注)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetMasteryDistribution(self, request, context):
"""班级掌握度分布mastered/progressing/weak 三档)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetStudentMastery(self, request, context):
"""学生知识点掌握度明细."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def SubscribeMasteryUpdate(self, request, context):
"""订阅掌握度更新server-streamingP5+ AI 个性化推荐实时推送通道)."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def add_AnalyticsServiceServicer_to_server(servicer, server):
rpc_method_handlers = {
"GetClassPerformance": grpc.unary_unary_rpc_method_handler(
servicer.GetClassPerformance,
request_deserializer=analytics__pb2.GetClassPerformanceRequest.FromString,
response_serializer=analytics__pb2.ClassPerformance.SerializeToString,
),
"GetStudentWeakness": grpc.unary_unary_rpc_method_handler(
servicer.GetStudentWeakness,
request_deserializer=analytics__pb2.GetStudentWeaknessRequest.FromString,
response_serializer=analytics__pb2.StudentWeakness.SerializeToString,
),
"GetLearningTrend": grpc.unary_unary_rpc_method_handler(
servicer.GetLearningTrend,
request_deserializer=analytics__pb2.GetLearningTrendRequest.FromString,
response_serializer=analytics__pb2.LearningTrend.SerializeToString,
),
"GetTeacherDashboard": grpc.unary_unary_rpc_method_handler(
servicer.GetTeacherDashboard,
request_deserializer=analytics__pb2.GetTeacherDashboardRequest.FromString,
response_serializer=analytics__pb2.TeacherDashboard.SerializeToString,
),
"GetStudentDashboard": grpc.unary_unary_rpc_method_handler(
servicer.GetStudentDashboard,
request_deserializer=analytics__pb2.GetStudentDashboardRequest.FromString,
response_serializer=analytics__pb2.StudentDashboard.SerializeToString,
),
"GetParentDashboard": grpc.unary_unary_rpc_method_handler(
servicer.GetParentDashboard,
request_deserializer=analytics__pb2.GetParentDashboardRequest.FromString,
response_serializer=analytics__pb2.ParentDashboard.SerializeToString,
),
"GetAdminDashboard": grpc.unary_unary_rpc_method_handler(
servicer.GetAdminDashboard,
request_deserializer=analytics__pb2.GetAdminDashboardRequest.FromString,
response_serializer=analytics__pb2.AdminDashboard.SerializeToString,
),
"GetWarnings": grpc.unary_unary_rpc_method_handler(
servicer.GetWarnings,
request_deserializer=analytics__pb2.GetWarningsRequest.FromString,
response_serializer=analytics__pb2.WarningList.SerializeToString,
),
"TriggerWarning": grpc.unary_unary_rpc_method_handler(
servicer.TriggerWarning,
request_deserializer=analytics__pb2.TriggerWarningRequest.FromString,
response_serializer=analytics__pb2.TriggerWarningResponse.SerializeToString,
),
"GetMasteryDistribution": grpc.unary_unary_rpc_method_handler(
servicer.GetMasteryDistribution,
request_deserializer=analytics__pb2.GetMasteryDistributionRequest.FromString,
response_serializer=analytics__pb2.MasteryDistribution.SerializeToString,
),
"GetStudentMastery": grpc.unary_unary_rpc_method_handler(
servicer.GetStudentMastery,
request_deserializer=analytics__pb2.GetStudentMasteryRequest.FromString,
response_serializer=analytics__pb2.StudentMastery.SerializeToString,
),
"SubscribeMasteryUpdate": grpc.unary_stream_rpc_method_handler(
servicer.SubscribeMasteryUpdate,
request_deserializer=analytics__pb2.SubscribeMasteryUpdateRequest.FromString,
response_serializer=analytics__pb2.MasteryUpdateEvent.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
"next_edu_cloud.analytics.v1.AnalyticsService", rpc_method_handlers
)
server.add_generic_rpc_handlers((generic_handler,))
server.add_registered_method_handlers(
"next_edu_cloud.analytics.v1.AnalyticsService", rpc_method_handlers
)
# This class is part of an EXPERIMENTAL API.
class AnalyticsService:
"""AnalyticsService 数据分析服务契约D6 智能洞察领域).
P4 启用 gRPC server 端口 50055HTTP 3006 保留作 Gateway 直连降级.
所有 RPC 返回 ActionState 信封success/data/error/details.degraded.
"""
@staticmethod
def GetClassPerformance(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetClassPerformance",
analytics__pb2.GetClassPerformanceRequest.SerializeToString,
analytics__pb2.ClassPerformance.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetStudentWeakness(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetStudentWeakness",
analytics__pb2.GetStudentWeaknessRequest.SerializeToString,
analytics__pb2.StudentWeakness.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetLearningTrend(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetLearningTrend",
analytics__pb2.GetLearningTrendRequest.SerializeToString,
analytics__pb2.LearningTrend.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetTeacherDashboard(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetTeacherDashboard",
analytics__pb2.GetTeacherDashboardRequest.SerializeToString,
analytics__pb2.TeacherDashboard.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetStudentDashboard(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetStudentDashboard",
analytics__pb2.GetStudentDashboardRequest.SerializeToString,
analytics__pb2.StudentDashboard.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetParentDashboard(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetParentDashboard",
analytics__pb2.GetParentDashboardRequest.SerializeToString,
analytics__pb2.ParentDashboard.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetAdminDashboard(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetAdminDashboard",
analytics__pb2.GetAdminDashboardRequest.SerializeToString,
analytics__pb2.AdminDashboard.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetWarnings(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetWarnings",
analytics__pb2.GetWarningsRequest.SerializeToString,
analytics__pb2.WarningList.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def TriggerWarning(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/TriggerWarning",
analytics__pb2.TriggerWarningRequest.SerializeToString,
analytics__pb2.TriggerWarningResponse.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetMasteryDistribution(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetMasteryDistribution",
analytics__pb2.GetMasteryDistributionRequest.SerializeToString,
analytics__pb2.MasteryDistribution.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def GetStudentMastery(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_unary(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/GetStudentMastery",
analytics__pb2.GetStudentMasteryRequest.SerializeToString,
analytics__pb2.StudentMastery.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)
@staticmethod
def SubscribeMasteryUpdate(
request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None,
):
return grpc.experimental.unary_stream(
request,
target,
"/next_edu_cloud.analytics.v1.AnalyticsService/SubscribeMasteryUpdate",
analytics__pb2.SubscribeMasteryUpdateRequest.SerializeToString,
analytics__pb2.MasteryUpdateEvent.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
_registered_method=True,
)