| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337 |
- using System.Text.Json.Serialization;
- namespace OASystem.Domain.Entities.Resource
- {
- /// <summary>
- /// 商邀公务AI
- /// </summary>
- [SugarTable("Res_InvitationAI", "商邀公务AI")]
- public class Res_InvitationAI : EntityBase
- {
- /// <summary>
- /// 名称
- /// </summary>
- [SugarColumn(ColumnName = "InvName", ColumnDescription = "名称", IsNullable = true, ColumnDataType = "varchar(150)")]
- public string InvName { get; set; }
- /// <summary>
- /// 团组ID
- /// 注:自定义命名时,GroupID = 0;使用团组名称时,GroupID = Grp_DelegationInfo.Id
- /// </summary>
- [SugarColumn(ColumnName = "GroupId", ColumnDescription = "团组ID", IsNullable = true, ColumnDataType = "int")]
- public int GroupId { get; set; }
- /// <summary>
- /// ai 抓取信息存储(含本地数据信息)
- /// </summary>
- [SugarColumn(ColumnName = "AiCrawledDetails", ColumnDescription = "ai 抓取信息存储(含本地数据信息)", IsJson = true, IsNullable = true, ColumnDataType = "varchar(max)")]
- public List<InvitationAIInfo> AiCrawledDetails { get; set; } = new List<InvitationAIInfo>();
- /// <summary>
- /// 词条信息
- /// </summary>
- [SugarColumn(ColumnName = "Entries", ColumnDescription = "词条信息", IsJson = true, IsNullable = true, ColumnDataType = "varchar(max)")]
- public EntryInfo EntryInfo { get; set; } = new EntryInfo();
- }
- /// <summary>
- /// 单位信息
- /// </summary>
- public class InvitationAIInfo
- {
- /// <summary>
- /// Guid
- /// </summary>
- public string Guid { get; set; }
- /// <summary>
- /// 复选框是否选中
- /// </summary>
- public bool IsChecked { get; set; } = false;
- /// <summary>
- /// 数据来源
- /// 0-本地数据;1-第三方AI接口数据;2-用户手动输入数据
- /// </summary>
- public int Source { get; set; } = 0;
- /// <summary>
- /// 归属区域
- /// </summary>
- public string Region { get; set; }
- /// <summary>
- /// 标准行业:信息技术、金融与财会、工业制造、医疗保健、政府与公共服务、消费与贸易
- /// </summary>
- public string Industry { get; set; }
- /// <summary>
- /// 名称(中文)
- /// </summary>
- public string NameCn { get; set; }
- /// <summary>
- /// 名称(英文)
- /// </summary>
- public string NameEn { get; set; }
- /// <summary>
- /// 地址
- /// </summary>
- public string Address { get; set; }
- /// <summary>
- /// 经营范围
- /// </summary>
- public string Scope { get; set; }
- /// <summary>
- /// 联系人
- /// </summary>
- public string Contact { get; set; }
- /// <summary>
- /// 联系电话
- /// </summary>
- public string Phone { get; set; }
- /// <summary>
- /// 联系邮箱
- /// </summary>
- public string Email { get; set; }
- /// <summary>
- /// 官网地址
- /// </summary>
- public string SiteUrl { get; set; }
- /// <summary>
- /// 文章地址
- /// </summary>
- public List<PostNewsItem> PostUrl { get; set; } = new List<PostNewsItem>();
- /// <summary>
- /// 推荐等级
- /// </summary>
- public string RecLevel { get; set; }
- /// <summary>
- /// 对接建议
- /// </summary>
- public string IntgAdvice { get; set; }
- /// <summary>
- /// 邮件信息
- /// </summary>
- public EmailInfo EmailInfo { get; set; } = new EmailInfo();
- /// <summary>
- /// 备注
- /// </summary>
- public string Remark { get; set; }
- /// <summary>
- /// 操作时间
- /// </summary>
- public DateTime OperatedAt { get; set; }
- /// <summary>
- /// 操作人
- /// </summary>
- public string Operator { get; set; }
- }
- /// <summary>
- /// 新闻链接信息
- /// </summary>
- public class PostNewsItem
- {
- public string Date { get; set; }
- public string Description { get; set; }
- public string Url { get; set; }
- }
- public class EntryInfo
- {
- /// <summary>
- /// 出访单位
- /// </summary>
- public string OriginUnit { get; set; }
- /// <summary>
- /// 拜访国家
- /// </summary>
- public List<string> TargetCountry { get; set; } = new List<string>();
- /// <summary>
- /// 行业信息
- /// 信息技术、金融与财会、工业制造、医疗保健、政府与公共服务、消费与贸易
- /// </summary>
- public List<string> Industries { get; set; } = new List<string>();
- /// <summary>
- /// 规模类型
- /// </summary>
- public List<string> ScaleTypes { get; set; } = new List<string>();
- /// <summary>
- /// 是否需要华人单位背景
- /// </summary>
- public bool IsBackground { get; set; } = false;
- /// <summary>
- /// 公司类型
- /// 全部、总部、分公司
- /// 默认:总部
- /// </summary>
- public string OrgLevel { get; set; } = "总部";
- /// <summary>
- /// 出访目的
- /// </summary>
- public string Objective { get; set; }
- /// <summary>
- /// 数据条数
- /// 每个国家获取数据总条数,默认20条
- /// </summary>
- public int NeedCount { get; set; } = 20;
- /// <summary>
- /// 其他规则
- /// </summary>
- public string OtherConstraints { get; set; }
- /// <summary>
- /// 操作时间
- /// </summary>
- public DateTime OperatedAt { get; set; } = new DateTime();
- /// <summary>
- /// 操作人
- /// </summary>
- public string Operator { get; set; }
- }
- public class EmailInfo
- {
- /// <summary>
- /// 邮件标题
- /// </summary>
- public string EmailTitle { get; set; }
- /// <summary>
- /// 邮箱内容
- /// </summary>
- public string EmailContent { get; set; }
- /// <summary>
- /// 附件地址
- /// </summary>
- public List<string> AttachmentPaths { get; set; } = new List<string>();
- /// <summary>
- /// 发送状态
- /// 1.未开始
- /// 2.AI生成成功
- /// 3.手动编辑
- /// 4.发送完成
- /// 5.发送失败
- /// </summary>
- public int Status { get; set; } = 1;
- /// <summary>
- /// 操作时间
- /// </summary>
- public DateTime OperatedAt { get; set; }
- /// <summary>
- /// 操作人
- /// </summary>
- public string Operator { get; set; }
- }
- public class AICreateEmailInfo
- {
- public string Guid { get; set; }
- public string NameCn { get; set; }
- public string Scope { get; set; }
- public string Subject { get; set; }
- public string Content { get; set; }
- }
- public class CountryAIPormptInfo
- {
- public string Country { get; set; }
- public int Count { get; set; }
- }
- public class AITaskItem
- {
- public string Region { get; set; } // 如 "North America"
- public string Industry { get; set; } // 如 "Software"
- public string Scale { get; set; } // 如 "Large"
- }
- #region 单位规模信息
- /// <summary>
- /// 单位规模
- /// </summary>
- public class OrgScale
- {
- public string Name { get; init; }
- public int MinStaff { get; init; }
- public int MaxStaff { get; init; }
- public static List<OrgScale> BuildInitialData() => new()
- {
- new() { Name = "微型 (1-10人)", MinStaff = 1, MaxStaff = 10 },
- new() { Name = "小型 (11-50人)", MinStaff = 11, MaxStaff = 50 },
- new() { Name = "中型 (51-200人)", MinStaff = 51, MaxStaff = 200 },
- new() { Name = "大型 (201-1000人)", MinStaff = 201, MaxStaff = 1000 },
- new() { Name = "超大型 (1000人以上)", MinStaff = 1001, MaxStaff = int.MaxValue }
- };
- /// <summary>
- /// 根据人数自动匹配规模标签
- /// </summary>
- public static string GetLabel(int count) =>
- BuildInitialData().FirstOrDefault(s => count >= s.MinStaff && count <= s.MaxStaff)?.Name ?? "未知规模";
- }
- #endregion
- #region AI 行业匹配结果实体
- /// <summary>
- /// AI 行业匹配结果实体
- /// </summary>
- public class IndustryMatchResult
- {
- /// <summary>
- /// 原始出访单位名称
- /// </summary>
- public string SourceUnitName { get; set; } = string.Empty;
- /// <summary>
- /// 匹配到的目标单位名称(必须与输入 NameCn 一致)
- /// </summary>
- public string TargetUnitName { get; set; } = string.Empty;
- /// <summary>
- /// 目标单位所属国家
- /// </summary>
- public string TargetCountry { get; set; } = string.Empty;
- /// <summary>
- /// 识别出的行业分类(来自动态传入的行业标准)
- /// </summary>
- public string MatchedIndustry { get; set; } = string.Empty;
- /// <summary>
- /// 匹配置信度 (0.0 - 1.0)
- /// </summary>
- public double ConfidenceScore { get; set; }
- /// <summary>
- /// AI 给出的匹配理由说明
- /// </summary>
- public string MatchReason { get; set; } = string.Empty;
- // --- 辅助属性 (非 AI 返回内容) ---
- /// <summary>
- /// 判断是否为高价值匹配(业务逻辑判定)
- /// </summary>
- [JsonIgnore]
- public bool IsHighValue => ConfidenceScore >= 0.8;
- }
- #endregion
- }
|