作者 郑周

1.任务记录 新增反馈内容字段

2.任务记录 新增任务创建来源字段
3.获取、编辑自评输入输出 调整
4.缓存调整
@@ -22,7 +22,9 @@ type AssessInfoResp struct { @@ -22,7 +22,9 @@ type AssessInfoResp struct {
22 SupperUser string `json:"superUser"` //目标用户的上级 22 SupperUser string `json:"superUser"` //目标用户的上级
23 DutyTime string `json:"dutyTime"` //入职时间 23 DutyTime string `json:"dutyTime"` //入职时间
24 AssessContent []*domain.StaffAssessContent `json:"assessContent"` //评估内容 24 AssessContent []*domain.StaffAssessContent `json:"assessContent"` //评估内容
25 - TaskRecords []*domain.TaskRecord `json:"taskRecords"` //里程碑内容 25 + //CategoryTaskRecords []*domain.TaskRecord `json:"categoryTaskRecords"` //类别任务反馈记录
  26 + //AssessTaskRecords []*domain.TaskRecord `json:"assessTaskRecords"` //评估任务反馈记录
  27 + TaskRecords []*domain.TaskRecord `json:"taskRecords"` //里程碑内容
26 } 28 }
27 29
28 // 周期内的每日自评小结 30 // 周期内的每日自评小结
@@ -10,6 +10,7 @@ type SaveAssessCacheCommand struct { @@ -10,6 +10,7 @@ type SaveAssessCacheCommand struct {
10 AssessId int64 `cname:"评估项ID" json:"assessId,string"` 10 AssessId int64 `cname:"评估项ID" json:"assessId,string"`
11 AssessContent []domain.AssessContent `cname:"评估数据" json:"assessContent"` 11 AssessContent []domain.AssessContent `cname:"评估数据" json:"assessContent"`
12 AssessTaskStages []domain.AssessTaskStage `cname:"里程碑内容" json:"assessTaskStages"` 12 AssessTaskStages []domain.AssessTaskStage `cname:"里程碑内容" json:"assessTaskStages"`
  13 + //CategoryTaskStages []domain.AssessTaskStage `cname:"里程碑内容" json:"categoryTaskStages"`
13 } 14 }
14 15
15 func (in *SaveAssessCacheCommand) Valid(validation *validation.Validation) { 16 func (in *SaveAssessCacheCommand) Valid(validation *validation.Validation) {
@@ -16,5 +16,5 @@ type SaveSelfAssessCommand struct { @@ -16,5 +16,5 @@ type SaveSelfAssessCommand struct {
16 ExecutorId int `json:"executorId" comment:"填写人ID"` 16 ExecutorId int `json:"executorId" comment:"填写人ID"`
17 CompanyId int `json:"companyId" comment:"公司ID"` 17 CompanyId int `json:"companyId" comment:"公司ID"`
18 AssessContent []domain.AssessContent `json:"assessContent" comment:"填写内容"` 18 AssessContent []domain.AssessContent `json:"assessContent" comment:"填写内容"`
19 - AssessTaskStages []domain.AssessTaskStage `json:"assessTaskStages" comment:"里程碑内容"` 19 + AssessTaskStages []domain.AssessTaskStage `json:"assessTaskStages" comment:"评估反馈填写内容"`
20 } 20 }
@@ -3,6 +3,7 @@ package query @@ -3,6 +3,7 @@ package query
3 //获取评估任务详情 3 //获取评估任务详情
4 type AssessInfoQuery struct { 4 type AssessInfoQuery struct {
5 AssessId int `json:"assessId"` // 评估项ID 5 AssessId int `json:"assessId"` // 评估项ID
  6 + UserId int `json:"userId"` // 用户ID
6 CompanyId int `json:"companyId"` // 公司ID 7 CompanyId int `json:"companyId"` // 公司ID
7 AcquireCache int `json:"acquireCache"` // 0不获取缓存数据,1获取缓存数据 8 AcquireCache int `json:"acquireCache"` // 0不获取缓存数据,1获取缓存数据
8 } 9 }
@@ -2,6 +2,7 @@ package query @@ -2,6 +2,7 @@ package query
2 2
3 // 根据周期和日期,获取员工的自评内容 3 // 根据周期和日期,获取员工的自评内容
4 type GetExecutorSelfAssessQuery struct { 4 type GetExecutorSelfAssessQuery struct {
  5 + UserId int `json:"userId"` //
5 CompanyId int `json:"companyId"` // 6 CompanyId int `json:"companyId"` //
6 TargetUserId int `json:"targetUserId,string"` //评估的执行人,必填 7 TargetUserId int `json:"targetUserId,string"` //评估的执行人,必填
7 CycleId int `json:"cycleId,string"` //评估周期id 必填 8 CycleId int `json:"cycleId,string"` //评估周期id 必填
@@ -909,26 +909,24 @@ func (srv StaffAssessServeice) GetAssessInfo(param *query.AssessInfoQuery) (*ada @@ -909,26 +909,24 @@ func (srv StaffAssessServeice) GetAssessInfo(param *query.AssessInfoQuery) (*ada
909 srv.recoverAssessCache(transactionContext, assessData.Id, assessContentList) 909 srv.recoverAssessCache(transactionContext, assessData.Id, assessContentList)
910 } 910 }
911 911
912 - // 获取项目信息  
913 - projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})  
914 - project, err := projectRepository.FindOne(map[string]interface{}{"id": assessData.EvaluationProjectId})  
915 - if err != nil {  
916 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目错误:"+err.Error())  
917 - }  
918 -  
919 - taskRecords := make([]*domain.TaskRecord, 0)  
920 - // 任务负责人才能显示里程碑数据  
921 - if project.PrincipalId == strconv.Itoa(assessData.TargetUser.UserId) {  
922 - // 获取里程碑数据 912 + taskRecords := make([]*domain.TaskRecord, 0) // 类别任务反馈记录
  913 + //categoryTaskRecords := make([]*domain.TaskRecord, 0) // 类别任务反馈记录
  914 + //assessTaskRecords := make([]*domain.TaskRecord, 0) // 评估项任务反馈记录
  915 + // 如果评估类型为自评、目标是登录用户时,获取所有任务记录数据
  916 + if assessData.Types == domain.AssessSelf || param.UserId == assessData.TargetUser.UserId {
923 taskRecordRepository := factory.CreateTaskRecordRepository(map[string]interface{}{"transactionContext": transactionContext}) 917 taskRecordRepository := factory.CreateTaskRecordRepository(map[string]interface{}{"transactionContext": transactionContext})
924 _, taskRecords, err = taskRecordRepository.Find(map[string]interface{}{"staffAssessId": assessData.Id}) 918 _, taskRecords, err = taskRecordRepository.Find(map[string]interface{}{"staffAssessId": assessData.Id})
925 if err != nil { 919 if err != nil {
926 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取里程碑数据:"+err.Error()) 920 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取里程碑数据:"+err.Error())
927 } 921 }
928 -  
929 - //// 恢复缓存数据(里程碑记录)这里可以不用恢复任务里程碑数据  
930 - //if param.AcquireCache != 0 {  
931 - // srv.recoverCacheWithTaskRecord(cache, taskRecords) 922 + //// 区分任务来源分类
  923 + //for i := range taskRecords {
  924 + // it := taskRecords[i]
  925 + // if it.TaskCreatedBy == 0 {
  926 + // categoryTaskRecords = append(categoryTaskRecords, it)
  927 + // } else {
  928 + // assessTaskRecords = append(assessTaskRecords, it)
  929 + // }
932 //} 930 //}
933 } 931 }
934 932
@@ -954,7 +952,9 @@ func (srv StaffAssessServeice) GetAssessInfo(param *query.AssessInfoQuery) (*ada @@ -954,7 +952,9 @@ func (srv StaffAssessServeice) GetAssessInfo(param *query.AssessInfoQuery) (*ada
954 SupperUser: "", 952 SupperUser: "",
955 DutyTime: "", 953 DutyTime: "",
956 AssessContent: assessContentList, 954 AssessContent: assessContentList,
957 - TaskRecords: taskRecords, 955 + //CategoryTaskRecords: categoryTaskRecords,
  956 + //AssessTaskRecords: assessTaskRecords,
  957 + TaskRecords: taskRecords,
958 } 958 }
959 if len(assessContentList) == 0 { 959 if len(assessContentList) == 0 {
960 result.AssessContent = []*domain.StaffAssessContent{} 960 result.AssessContent = []*domain.StaffAssessContent{}
@@ -1255,16 +1255,6 @@ func (srv StaffAssessServeice) SaveSelfAssess(in *command.SaveSelfAssessCommand) @@ -1255,16 +1255,6 @@ func (srv StaffAssessServeice) SaveSelfAssess(in *command.SaveSelfAssessCommand)
1255 1255
1256 // 更新里程碑数据 1256 // 更新里程碑数据
1257 if len(in.AssessTaskStages) > 0 { 1257 if len(in.AssessTaskStages) > 0 {
1258 - projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})  
1259 - project, err := projectRepository.FindOne(map[string]interface{}{"id": assessData.EvaluationProjectId})  
1260 - if err != nil {  
1261 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目错误:"+err.Error())  
1262 - }  
1263 - // 任务负责人才能提交里程碑数据  
1264 - if project.PrincipalId != strconv.Itoa(in.ExecutorId) {  
1265 - return nil, application.ThrowError(application.BUSINESS_ERROR, "当前用户没有里程碑提交权限")  
1266 - }  
1267 -  
1268 recordMap := map[int]domain.AssessTaskStage{} 1258 recordMap := map[int]domain.AssessTaskStage{}
1269 recordIds := make([]int, 0) 1259 recordIds := make([]int, 0)
1270 for i := range in.AssessTaskStages { 1260 for i := range in.AssessTaskStages {
@@ -1289,9 +1279,9 @@ func (srv StaffAssessServeice) SaveSelfAssess(in *command.SaveSelfAssessCommand) @@ -1289,9 +1279,9 @@ func (srv StaffAssessServeice) SaveSelfAssess(in *command.SaveSelfAssessCommand)
1289 1279
1290 var anomalyState = domain.AnomalyState0 1280 var anomalyState = domain.AnomalyState0
1291 key := fmt.Sprintf("%s-%s", v.Category, v.Name) 1281 key := fmt.Sprintf("%s-%s", v.Category, v.Name)
  1282 + // 反馈内容填写
1292 if item, ok := contentCategoryMap[key]; ok { 1283 if item, ok := contentCategoryMap[key]; ok {
1293 it.RemarkContent = append(it.RemarkContent, item.Remark...) 1284 it.RemarkContent = append(it.RemarkContent, item.Remark...)
1294 -  
1295 for _, remark := range item.Remark { 1285 for _, remark := range item.Remark {
1296 trimSpace := strings.TrimLeft(remark.RemarkText, "\n") // 去掉前换行符 1286 trimSpace := strings.TrimLeft(remark.RemarkText, "\n") // 去掉前换行符
1297 trimSpace = strings.TrimRight(trimSpace, "\n") // 去掉后换行符 1287 trimSpace = strings.TrimRight(trimSpace, "\n") // 去掉后换行符
@@ -1301,6 +1291,8 @@ func (srv StaffAssessServeice) SaveSelfAssess(in *command.SaveSelfAssessCommand) @@ -1301,6 +1291,8 @@ func (srv StaffAssessServeice) SaveSelfAssess(in *command.SaveSelfAssessCommand)
1301 break 1291 break
1302 } 1292 }
1303 } 1293 }
  1294 + } else {
  1295 + it.RemarkContent = append(it.RemarkContent, v.RemarkContent...)
1304 } 1296 }
1305 //if anomalyState == domain.AnomalyState0 { 1297 //if anomalyState == domain.AnomalyState0 {
1306 // trimSpace := strings.TrimLeft(it.AssistContent, "\n") // 去掉前换行符 1298 // trimSpace := strings.TrimLeft(it.AssistContent, "\n") // 去掉前换行符
@@ -1418,6 +1410,8 @@ func (srv StaffAssessServeice) recoverCacheWithTaskRecord(cache *domain.StaffAss @@ -1418,6 +1410,8 @@ func (srv StaffAssessServeice) recoverCacheWithTaskRecord(cache *domain.StaffAss
1418 if item, ok := cacheMap[it.Id]; ok { 1410 if item, ok := cacheMap[it.Id]; ok {
1419 it.AssistLevel = item.AssistLevel 1411 it.AssistLevel = item.AssistLevel
1420 it.AssistContent = item.AssistContent 1412 it.AssistContent = item.AssistContent
  1413 + it.RemarkContent = make([]domain.RemarkText, 0)
  1414 + it.RemarkContent = append(it.RemarkContent, item.RemarkContent...)
1421 } 1415 }
1422 } 1416 }
1423 } 1417 }
@@ -707,7 +707,7 @@ func (srv StaffAssessServeice) ListExecutorSupperAssessV2(param *query.ListExecu @@ -707,7 +707,7 @@ func (srv StaffAssessServeice) ListExecutorSupperAssessV2(param *query.ListExecu
707 return result, nil 707 return result, nil
708 } 708 }
709 709
710 -// 根据周期和日期,获取员工的自评内容 710 +// 根据周期和日期,获取员工的自评内容(编辑)
711 func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfAssessQuery) (*adapter.AssessInfoResp, error) { 711 func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfAssessQuery) (*adapter.AssessInfoResp, error) {
712 transactionContext, err := factory.CreateTransactionContext(nil) 712 transactionContext, err := factory.CreateTransactionContext(nil)
713 if err != nil { 713 if err != nil {
@@ -762,27 +762,30 @@ func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfA @@ -762,27 +762,30 @@ func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfA
762 if param.AcquireCache != 0 { 762 if param.AcquireCache != 0 {
763 cache = srv.recoverAssessCache(transactionContext, assessData.Id, assessContentList) 763 cache = srv.recoverAssessCache(transactionContext, assessData.Id, assessContentList)
764 } 764 }
765 - // 获取项目信息  
766 - projectRepository := factory.CreateEvaluationProjectRepository(map[string]interface{}{"transactionContext": transactionContext})  
767 - project, err := projectRepository.FindOne(map[string]interface{}{"id": assessData.EvaluationProjectId})  
768 - if err != nil {  
769 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目错误:"+err.Error())  
770 - }  
771 765
772 - taskRecords := make([]*domain.TaskRecord, 0)  
773 - // 任务负责人才能显示里程碑数据  
774 - if project.PrincipalId == strconv.Itoa(param.TargetUserId) {  
775 - // 获取里程碑数据 766 + taskRecords := make([]*domain.TaskRecord, 0) // 类别任务反馈记录
  767 + //categoryTaskRecords := make([]*domain.TaskRecord, 0) // 类别任务反馈记录
  768 + //assessTaskRecords := make([]*domain.TaskRecord, 0) // 评估项任务反馈记录
  769 + // 如果评估类型为自评、目标是登录用户时,获取所有任务记录数据
  770 + if param.UserId == param.TargetUserId {
776 taskRecordRepository := factory.CreateTaskRecordRepository(map[string]interface{}{"transactionContext": transactionContext}) 771 taskRecordRepository := factory.CreateTaskRecordRepository(map[string]interface{}{"transactionContext": transactionContext})
777 - _, taskRecords, err = taskRecordRepository.Find(map[string]interface{}{"staffAssessId": assessData.Id}) 772 + _, taskRecords, err := taskRecordRepository.Find(map[string]interface{}{"staffAssessId": assessData.Id})
778 if err != nil { 773 if err != nil {
779 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取里程碑数据:"+err.Error()) 774 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取里程碑数据:"+err.Error())
780 } 775 }
781 -  
782 // 恢复缓存数据(里程碑记录) 776 // 恢复缓存数据(里程碑记录)
783 if param.AcquireCache != 0 { 777 if param.AcquireCache != 0 {
784 srv.recoverCacheWithTaskRecord(cache, taskRecords) 778 srv.recoverCacheWithTaskRecord(cache, taskRecords)
785 } 779 }
  780 + //// 区分任务来源分类
  781 + //for i := range taskRecords {
  782 + // it := taskRecords[i]
  783 + // if it.TaskCreatedBy == 0 {
  784 + // categoryTaskRecords = append(categoryTaskRecords, it)
  785 + // } else {
  786 + // assessTaskRecords = append(assessTaskRecords, it)
  787 + // }
  788 + //}
786 } 789 }
787 790
788 if err := transactionContext.CommitTransaction(); err != nil { 791 if err := transactionContext.CommitTransaction(); err != nil {
@@ -807,7 +810,9 @@ func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfA @@ -807,7 +810,9 @@ func (srv StaffAssessServeice) GetAssessSelfInfoV2(param *query.GetExecutorSelfA
807 SupperUser: "", 810 SupperUser: "",
808 DutyTime: "", 811 DutyTime: "",
809 AssessContent: assessContentList, 812 AssessContent: assessContentList,
810 - TaskRecords: taskRecords, 813 + //CategoryTaskRecords: categoryTaskRecords,
  814 + //AssessTaskRecords: assessTaskRecords,
  815 + TaskRecords: taskRecords,
811 } 816 }
812 if staffDesc != nil { 817 if staffDesc != nil {
813 result.CompanyName = staffDesc.CompanyName 818 result.CompanyName = staffDesc.CompanyName
@@ -40,6 +40,7 @@ type AssessTaskStage struct { @@ -40,6 +40,7 @@ type AssessTaskStage struct {
40 Check TaskStageCheck `json:"check" comment:"里程碑完成情况"` 40 Check TaskStageCheck `json:"check" comment:"里程碑完成情况"`
41 AssistLevel int `json:"assistLevel" comment:"上级辅导情况"` 41 AssistLevel int `json:"assistLevel" comment:"上级辅导情况"`
42 AssistContent string `json:"assistContent" comment:"上级辅导内容"` 42 AssistContent string `json:"assistContent" comment:"上级辅导内容"`
  43 + RemarkContent []RemarkText `json:"remarkContent" comment:"填写任务进度"`
43 } 44 }
44 45
45 type StaffAssessCacheRepository interface { 46 type StaffAssessCacheRepository interface {
@@ -36,7 +36,7 @@ type TaskRecord struct { @@ -36,7 +36,7 @@ type TaskRecord struct {
36 CreatedAt time.Time `json:"createdAt" comment:"创建时间"` 36 CreatedAt time.Time `json:"createdAt" comment:"创建时间"`
37 UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"` 37 UpdatedAt time.Time `json:"updatedAt" comment:"更新时间"`
38 DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"` 38 DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"`
39 - TaskCreatedBy int `json:"taskCreatedBy" comment:"任务的创建方式"` // 任务的创建方式 0: 根据模板中的任务创建,1:页面主动直接创建 39 + TaskCreatedBy int `json:"taskCreatedBy" comment:"任务的创建方式"` // 任务的创建方式 0: 模板导入创建,1:主动创建
40 } 40 }
41 41
42 type TaskRecordRepository interface { 42 type TaskRecordRepository interface {
@@ -25,4 +25,5 @@ type TaskRecord struct { @@ -25,4 +25,5 @@ type TaskRecord struct {
25 CreatedAt time.Time `comment:"创建时间"` 25 CreatedAt time.Time `comment:"创建时间"`
26 UpdatedAt time.Time `comment:"更新时间"` 26 UpdatedAt time.Time `comment:"更新时间"`
27 DeletedAt *time.Time `comment:"删除时间"` 27 DeletedAt *time.Time `comment:"删除时间"`
  28 + TaskCreatedBy int `comment:"任务的创建来源"`
28 } 29 }
@@ -39,6 +39,7 @@ func (repo *TaskRecordRepository) TransformToDomain(m *models.TaskRecord) domain @@ -39,6 +39,7 @@ func (repo *TaskRecordRepository) TransformToDomain(m *models.TaskRecord) domain
39 CreatedAt: m.CreatedAt.Local(), 39 CreatedAt: m.CreatedAt.Local(),
40 UpdatedAt: m.UpdatedAt.Local(), 40 UpdatedAt: m.UpdatedAt.Local(),
41 DeletedAt: m.DeletedAt, 41 DeletedAt: m.DeletedAt,
  42 + TaskCreatedBy: m.TaskCreatedBy,
42 } 43 }
43 } 44 }
44 45
@@ -61,6 +62,7 @@ func (repo *TaskRecordRepository) TransformToModel(d *domain.TaskRecord) models. @@ -61,6 +62,7 @@ func (repo *TaskRecordRepository) TransformToModel(d *domain.TaskRecord) models.
61 CreatedAt: d.CreatedAt, 62 CreatedAt: d.CreatedAt,
62 UpdatedAt: d.UpdatedAt, 63 UpdatedAt: d.UpdatedAt,
63 DeletedAt: d.DeletedAt, 64 DeletedAt: d.DeletedAt,
  65 + TaskCreatedBy: d.TaskCreatedBy,
64 } 66 }
65 } 67 }
66 68
@@ -90,9 +90,9 @@ func (c *StaffAssessController) GetAssessInfo() { @@ -90,9 +90,9 @@ func (c *StaffAssessController) GetAssessInfo() {
90 c.Response(nil, e) 90 c.Response(nil, e)
91 return 91 return
92 } 92 }
93 - // paramReq.CompanyId = 1  
94 userReq := middlewares.GetUser(c.Ctx) 93 userReq := middlewares.GetUser(c.Ctx)
95 paramReq.CompanyId = int(userReq.CompanyId) 94 paramReq.CompanyId = int(userReq.CompanyId)
  95 + paramReq.UserId = int(userReq.UserId)
96 data, err := srv.GetAssessInfo(paramReq) 96 data, err := srv.GetAssessInfo(paramReq)
97 c.Response(data, err) 97 c.Response(data, err)
98 } 98 }
@@ -111,6 +111,7 @@ func (c *StaffAssessControllerV2) GetAssessSelfMeInfo() { @@ -111,6 +111,7 @@ func (c *StaffAssessControllerV2) GetAssessSelfMeInfo() {
111 return 111 return
112 } 112 }
113 userReq := middlewares.GetUser(c.Ctx) 113 userReq := middlewares.GetUser(c.Ctx)
  114 + paramReq.UserId = int(userReq.UserId)
114 paramReq.CompanyId = int(userReq.CompanyId) 115 paramReq.CompanyId = int(userReq.CompanyId)
115 paramReq.TargetUserId = int(userReq.UserId) 116 paramReq.TargetUserId = int(userReq.UserId)
116 data, err := srv.GetAssessSelfInfoV2(paramReq) 117 data, err := srv.GetAssessSelfInfoV2(paramReq)
@@ -128,6 +129,7 @@ func (c *StaffAssessControllerV2) GetAssessTargetUserSelfInfo() { @@ -128,6 +129,7 @@ func (c *StaffAssessControllerV2) GetAssessTargetUserSelfInfo() {
128 return 129 return
129 } 130 }
130 userReq := middlewares.GetUser(c.Ctx) 131 userReq := middlewares.GetUser(c.Ctx)
  132 + paramReq.UserId = int(userReq.UserId)
131 paramReq.CompanyId = int(userReq.CompanyId) 133 paramReq.CompanyId = int(userReq.CompanyId)
132 data, err := srv.GetAssessSelfInfoV2(paramReq) 134 data, err := srv.GetAssessSelfInfoV2(paramReq)
133 c.Response(data, err) 135 c.Response(data, err)
1 1
2 2
3 --- 增加任务记录字段-填写反馈进度 3 +-- 增加任务记录字段
4 ALTER TABLE public.task_record 4 ALTER TABLE public.task_record
5 ADD remark_content jsonb NULL; 5 ADD remark_content jsonb NULL;
6 6
7 COMMENT ON COLUMN public.task_record.remark_content IS '填写反馈进度'; 7 COMMENT ON COLUMN public.task_record.remark_content IS '填写反馈进度';
8 8
  9 +
  10 +-- 增加任务记录字段
  11 +ALTER TABLE public.task_record
  12 + ADD task_created_by int NOT NULL DEFAULT 0;
  13 +
  14 +COMMENT ON COLUMN public.task_record.task_created_by IS '任务的创建来源';