Files
hms/crates/erp-health/src/entity/article.rs
iven e6f036eaf4
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
feat(health): patient_service 集成 PiiCrypto — 电话/过敏史/病史加密
- HealthState.crypto: HealthCrypto → PiiCrypto (erp-core)
- create_patient: 加密 phone/allergy/medical_history + HMAC 索引
- update_patient: 同上,同步加密
- model_to_resp_decrypted: 解密所有 Tier 1 字段
- model_to_resp (列表): Tier 1 字段返回 None
- list_patients 搜索: 新增 phone hash 精确搜索
- article handler: 适配新 list_articles 签名
- article 迁移: 添加 category_id 列
- error.rs: From<String> for HealthError
- 集成测试: HealthCrypto → PiiCrypto::dev_default()
2026-04-26 10:37:52 +08:00

59 lines
2.1 KiB
Rust

use sea_orm::entity::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Serialize, Deserialize)]
#[sea_orm(table_name = "article")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
pub id: Uuid,
pub tenant_id: Uuid,
pub title: String,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub summary: Option<String>,
pub content: String,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub cover_image: Option<String>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub category_id: Option<Uuid>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub author: Option<String>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub published_at: Option<DateTimeUtc>,
/// 状态: draft / pending_review / approved / rejected / published
pub status: String,
/// URL 友好标识
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
/// 内容类型: rich_text / markdown
pub content_type: String,
/// 审核人
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub reviewed_by: Option<Uuid>,
/// 审核时间
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub reviewed_at: Option<DateTimeUtc>,
/// 审核备注
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub review_note: Option<String>,
/// 浏览次数
pub view_count: i32,
/// 排序权重
pub sort_order: i32,
pub created_at: DateTimeUtc,
pub updated_at: DateTimeUtc,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub created_by: Option<Uuid>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub updated_by: Option<Uuid>,
#[sea_orm(skip_serializing_if = "Option::is_none")]
pub deleted_at: Option<DateTimeUtc>,
pub version: i32,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {}
impl ActiveModelBehavior for ActiveModel {}