package entitys

import (
	"ai_scheduler/internal/data/model"
	"ai_scheduler/internal/data/mongo_model"
)

type WordAnaReq struct {
	WordFileUrl string `json:"wordFileUrl"`
	ProjectId   int32  `json:"projectId"`
}

type AdvicerInitReq struct {
	AdvicerID    int32  `json:"advicerId"`
	ProjectID    int32  `json:"projectId"`
	Name         string `json:"name"`         // 姓名
	Birth        string `json:"birth"`        // 用户名称
	Gender       int32  `json:"gender"`       // 1:男，2：女
	WorkingYears int32  `json:"workingYears"` // 工作年限
}

type AdvicerInfoReq struct {
	AdvicerID int32 `json:"AdvicerId"`
}

type AdvicerListReq struct {
	ProjectId int32 `json:"projectId"`
}

type AdvicerVersionAddReq struct {
	AdvicerID          int32                          `json:"advicerId"`
	VersionDesc        string                         `json:"versionDesc"`
	DialectFeatures    mongo_model.DialectFeatures    `json:"dialectFeatures"`
	PersonalityTags    mongo_model.PersonalityTags    `json:"personalityTags"`
	SentencePatterns   mongo_model.SentencePatterns   `json:"sentencePatterns"`
	SignatureDialogues mongo_model.SignatureDialogues `json:"signatureDialogues"`
	ToneTags           mongo_model.ToneTags           `json:"toneTags"`
}

type AdvicerVersionUpdateReq struct {
	Id                 string                         `json:"id"`
	AdvicerID          int32                          `json:"advicerId"`
	VersionDesc        string                         `json:"versionDesc"`
	DialectFeatures    mongo_model.DialectFeatures    `json:"dialectFeatures"`
	PersonalityTags    mongo_model.PersonalityTags    `json:"personalityTags"`
	SentencePatterns   mongo_model.SentencePatterns   `json:"sentencePatterns"`
	SignatureDialogues mongo_model.SignatureDialogues `json:"signatureDialogues"`
	ToneTags           mongo_model.ToneTags           `json:"toneTags"`
}

type AdvicerVersionListReq struct {
	Id          string `json:"id"`
	AdvicerId   int32  `json:"advicerId"`
	VersionDesc string `json:"versionDesc"`
}

type AdvicerVersionDelReq struct {
	Id string `json:"id"`
}

type AdvicerVersionInfoReq struct {
	Id string `json:"id"`
}

type AdvicerTalkSkillAddReq struct {
	ProjectId           int32                           `json:"projectId" bson:"projectId"`
	AdvicerId           int32                           `json:"advicerId" bson:"advicerId"`
	Desc                string                          `json:"desc" bson:"desc"`
	NeedsMining         mongo_model.NeedsMining         `json:"needsMining" bson:"needsMining"`
	PainPointResponse   mongo_model.PainPointResponse   `json:"painPointResponse" bson:"painPointResponse"`
	ValueBuilding       mongo_model.ValueBuilding       `json:"valueBuilding" bson:"valueBuilding"`
	ClosingTechniques   mongo_model.ClosingTechniques   `json:"closingTechniques" bson:"closingTechniques"`
	CommunicationRhythm mongo_model.CommunicationRhythm `json:"communicationRhythm" bson:"communicationRhythm"`
}

type AdvicerTalkSkillUpdateReq struct {
	Id                  string                          `json:"id"`
	ProjectId           int32                           `json:"projectId" bson:"projectId"`
	AdvicerId           int32                           `json:"advicerId" bson:"advicerId" :"advicer-id"`
	Desc                string                          `json:"desc" bson:"desc" :"desc"`
	NeedsMining         mongo_model.NeedsMining         `json:"needsMining" bson:"needsMining" :"needs-mining"`
	PainPointResponse   mongo_model.PainPointResponse   `json:"painPointResponse" bson:"painPointResponse" :"pain-point-response"`
	ValueBuilding       mongo_model.ValueBuilding       `json:"valueBuilding" bson:"valueBuilding" :"value-building"`
	ClosingTechniques   mongo_model.ClosingTechniques   `json:"closingTechniques" bson:"closingTechniques" :"closing-techniques"`
	CommunicationRhythm mongo_model.CommunicationRhythm `json:"communicationRhythm" bson:"communicationRhythm" :"communication-rhythm"`
}

type AdvicerTalkSkillListReq struct {
	Id        string `json:"id"`
	ProjectId int32  `json:"projectId" bson:"projectId"`
	AdvicerId int32  `json:"advicerId" bson:"advicerId"`
	Desc      string `json:"desc" bson:"desc"`
}

type AdvicerTalkSkillDelReq struct {
	Id string `json:"id"`
}

type AdvicerTalkSkillInfoReq struct {
	Id string `json:"id"`
}

type AdvicerProjectBaseAddReq struct {
	Name       string `json:"name"`
	ModelSupId int32  `json:"modelSupId"`
}

type AdvicerProjectBaseAddRes struct {
	ProjectId int32 `json:"projectId"`
}

type AdvicerProjectBaseUpdateReq struct {
	ProjectId  int32  `json:"projectId"`
	Name       string `json:"name"`
	ModelSupId int32  `json:"modelSupId"`
}

type AdvicerProjectAddReq struct {
	ProjectId             int32                             `json:"projectId" bson:"projectId"`
	ProjectInfo           mongo_model.ProjectInfo           `json:"projectInfo" bson:"projectInfo"`
	RegionValue           mongo_model.RegionValue           `json:"regionValue" bson:"regionValue"`
	CompetitionComparison mongo_model.CompetitionComparison `json:"competitionComparison" bson:"competitionComparison"`
	CoreSellingPoints     mongo_model.CoreSellingPoints     `json:"coreSellingPoints" bson:"coreSellingPoints"`
	SupportingFacilities  mongo_model.SupportingFacilities  `json:"supportingFacilities" bson:"supportingFacilities"`
	DeveloperBacking      mongo_model.DeveloperBacking      `json:"developerBacking" bson:"developerBacking"`
}

type AdvicerrProjectUpdateReq struct {
	Id                    string                            `json:"id"`
	ProjectId             int32                             `json:"projectId" bson:"projectId"`
	ProjectInfo           mongo_model.ProjectInfo           `json:"projectInfo" bson:"projectInfo"`
	RegionValue           mongo_model.RegionValue           `json:"regionValue" bson:"regionValue"`
	CompetitionComparison mongo_model.CompetitionComparison `json:"competitionComparison" bson:"competitionComparison"`
	CoreSellingPoints     mongo_model.CoreSellingPoints     `json:"coreSellingPoints" bson:"coreSellingPoints"`
	SupportingFacilities  mongo_model.SupportingFacilities  `json:"supportingFacilities" bson:"supportingFacilities"`
	DeveloperBacking      mongo_model.DeveloperBacking      `json:"developerBacking" bson:"developerBacking"`
}

type AdvicerProjectInfoReq struct {
	Id        string `json:"id"`
	ProjectId int32  `json:"projectId" bson:"projectId"`
}

type AdvicerProjectInfoRes struct {
	Base       model.AiAdviceProject
	ConfigInfo mongo_model.AdvicerProjectMongo
	ModelInfo  model.AiAdviceModelSup
}

type AdvicerClientAddReq struct {
	ProjectId       int32                       `json:"projectId" bson:"projectId"`
	AdvicerId       int32                       `json:"advicerId" bson:"advicerId"`
	PersonalInfo    mongo_model.PersonalInfo    `json:"personalInfo" bson:"personalInfo"`
	PurchasePurpose mongo_model.PurchasePurpose `json:"purchasePurpose" bson:"purchasePurpose"`
	CoreDemands     mongo_model.CoreDemands     `json:"coreDemands" bson:"coreDemands"`
	Concerns        []string                    `json:"concerns" bson:"concerns"`
	DecisionProfile []string                    `json:"decisionProfile" bson:"decisionProfile"`
}

type AdvicerrClientUpdateReq struct {
	Id              string                      `json:"id"`
	ProjectId       int32                       `json:"projectId" bson:"projectId"`
	AdvicerId       int32                       `json:"advicerId" bson:"advicerId"`
	PersonalInfo    mongo_model.PersonalInfo    `json:"personalInfo" bson:"personalInfo"`
	PurchasePurpose mongo_model.PurchasePurpose `json:"purchasePurpose" bson:"purchasePurpose"`
	CoreDemands     mongo_model.CoreDemands     `json:"coreDemands" bson:"coreDemands"`
	Concerns        []string                    `json:"concerns" bson:"concerns"`
	DecisionProfile []string                    `json:"decisionProfile" bson:"decisionProfile"`
}

type AdvicerClientListReq struct {
	Id        string `json:"id"`
	ProjectId int32  `json:"projectId" bson:"projectId"`
	AdvicerId int32  `json:"advicerId" bson:"advicerId"`
}

type AdvicerClientDelReq struct {
	Id string `json:"id"`
}

type AdvicerClientInfoReq struct {
	Id string `json:"id"`
}

type AdvicerChatRegistReq struct {
	AdvicerVersionId string `json:"advicerVersionId"`
	ClientId         string `json:"clientId"`
	TalkSkillId      string `json:"talkSkillId"`
	Mission          string `json:"mission"`
}

type AdvicerChatRegistRes struct {
	SessionId string `json:"sessionId"`
}

type AdvicerChatReq struct {
	SessionId string `json:"sessionId"`
	Content   string `json:"content"`
}

type AdvicerChatRes struct {
	Content int32 `json:"content"`
}
