Files
AIPortPilot/backend/app/schemas/company.py
T
selfrelease fad458b2a7 docs(uiux): UIUX 设计方案大改 + 5 份作业指导书对齐 + 开发任务文档
- UIUX 文档:填充 19 个缺口(多主体画像/健康度/AI+看板/增长域/洞察域/创始人端/OODA/助推/商密)
- UIUX 文档:插入 6 个新章节(十四~十九),旧章节重编号为二十~三十一,更新目录和交叉引用
- 作业指导书 x5:导航改为 6 域分组,新增 Context Bar/工作模式/Insight Rail/决策线程/多工作区等 UI 概念
- 新建 docs/2-task-uiux.md:50 个代码落地开发任务,按 P0-P6 分优先级 + 8 Sprint 规划
- 后端/前端:大量新增模型、路由、组件(来自之前 Phase 开发)
2026-07-19 11:53:38 +08:00

145 lines
3.7 KiB
Python

"""企业相关 Pydantic schema。"""
from datetime import datetime
from pydantic import BaseModel, Field
class CompanyCreate(BaseModel):
"""创建企业请求。"""
name: str = Field(..., min_length=1, max_length=200)
industry: str | None = Field(default=None, max_length=100)
stage: str | None = Field(default=None, max_length=50)
logo_url: str | None = Field(default=None, max_length=500)
description: str | None = None
total_funding: str | None = Field(default=None, max_length=50)
website: str | None = Field(default=None, max_length=500)
class CompanyUpdate(BaseModel):
"""更新企业请求。"""
name: str | None = Field(default=None, min_length=1, max_length=200)
industry: str | None = Field(default=None, max_length=100)
stage: str | None = Field(default=None, max_length=50)
logo_url: str | None = Field(default=None, max_length=500)
description: str | None = None
total_funding: str | None = Field(default=None, max_length=50)
website: str | None = Field(default=None, max_length=500)
class CompanyResponse(BaseModel):
"""企业信息响应。"""
id: str
tenant_id: str
name: str
industry: str | None = None
stage: str | None = None
logo_url: str | None = None
description: str | None = None
founded_at: datetime | None = None
total_funding: str | None = None
website: str | None = None
created_at: datetime
updated_at: datetime
class CompanyListResponse(BaseModel):
"""企业列表响应。"""
items: list[CompanyResponse]
total: int
page: int
page_size: int
class HealthScoreBrief(BaseModel):
"""健康度评分摘要。"""
total_score: float
financial_score: float | None = None
operational_score: float | None = None
ai_commercial_score: float | None = None
ai_cost_score: float | None
# T2.9 扩展维度
org_talent_score: float | None = None
product_tech_score: float | None = None
market_compete_score: float | None = None
governance_score: float | None = None
financing_score: float | None = None
# T3.11 扩展维度
synergy_score: float | None = None
ai_model_product_score: float | None = None
data_compliance_score: float | None = None
team_tech_score: float | None = None
customer_success_score: float | None = None
trend: str | None = None
calculated_at: datetime
class ReportBrief(BaseModel):
"""月报摘要。"""
id: str
period_year: int
period_month: int
status: str
ai_summary: str | None = None
submitted_at: datetime | None = None
class RiskBrief(BaseModel):
"""风险摘要。"""
id: str
type: str
severity: str
status: str
title: str
identified_at: datetime
class WeakSignalBrief(BaseModel):
"""弱信号摘要。"""
id: str
signal_type: str
content: str
confidence: float
risk_probability: float | None = None
status: str
detected_at: datetime
class AgreementBrief(BaseModel):
"""协议摘要。"""
id: str
title: str
status: str
signed_at: datetime | None = None
class BoardMeetingBrief(BaseModel):
"""董事会会议摘要。"""
id: str
title: str
status: str
meeting_at: datetime | None = None
class CompanyDetailResponse(BaseModel):
"""企业详情聚合响应 — 工作台使用。"""
company: CompanyResponse
health_score: HealthScoreBrief | None = None
recent_reports: list[ReportBrief] = []
open_risks: list[RiskBrief] = []
recent_weak_signals: list[WeakSignalBrief] = []
active_agreements: list[AgreementBrief] = []
recent_board_meetings: list[BoardMeetingBrief] = []
financial_data_count: int = 0
latest_financial: dict | None = None