From e5de10348e38a4cac9f70da856ab7c6941bfc347 Mon Sep 17 00:00:00 2001 From: kaixiliu Date: Fri, 29 Nov 2024 17:32:22 +0800 Subject: add maas knowledge base, Knowledge Assistant, application and update link Issue-ID: USECASEUI-844 Change-Id: I1dc2b4bc12f364d017b24b2752acfef63e27ad94 Signed-off-by: kaixiliu --- usecaseui-portal/src/app/app-routing.module.ts | 12 +- usecaseui-portal/src/app/app.component.html | 19 +++ usecaseui-portal/src/app/app.component.ts | 3 +- usecaseui-portal/src/app/app.module.ts | 23 +++- .../app/core/services/intentManagement.service.ts | 50 ++++++-- .../description-info.component.html | 20 +++ .../description-info.component.less | 24 ++++ .../description-info/description-info.component.ts | 18 +++ .../application-detail.component.html | 19 +++ .../application-detail.component.less | 2 + .../application-detail.component.ts | 74 +++++++++++ .../build/application-management.component.html | 61 ++++++++++ .../build/application-management.component.less | 127 +++++++++++++++++++ .../maas/build/application-management.component.ts | 90 ++++++++++++++ .../src/app/views/maas/build/application.type.ts | 19 +++ .../input-application-management.component.html | 124 +++++++++++++++++++ .../input-application-management.component.less | 44 +++++++ .../input-application-management.component.ts | 135 +++++++++++++++++++++ .../input-knowledge-base.component.html | 61 ++++++++++ .../input-knowledge-base.component.less | 0 .../input-knowledge-base.component.ts | 129 ++++++++++++++++++++ .../knowledge-base-detail.component.html | 21 ++++ .../knowledge-base-detail.component.less | 0 .../knowledge-base-detail.component.ts | 64 ++++++++++ .../knowledge-base-management.component.html | 51 ++++++++ .../knowledge-base-management.component.less | 26 ++++ .../knowledge-base-management.component.ts | 98 +++++++++++++++ .../knowledge-base.service.ts | 11 ++ .../knowledge-base.type.ts | 12 ++ .../views/maas/use/use-application.component.html | 43 +++++++ .../views/maas/use/use-application.component.less | 98 +++++++++++++++ .../views/maas/use/use-application.component.ts | 74 +++++++++++ usecaseui-portal/src/assets/i18n/cn.json | 7 +- usecaseui-portal/src/assets/i18n/en.json | 7 +- 34 files changed, 1550 insertions(+), 16 deletions(-) create mode 100644 usecaseui-portal/src/app/shared/components/description-info/description-info.component.html create mode 100644 usecaseui-portal/src/app/shared/components/description-info/description-info.component.less create mode 100644 usecaseui-portal/src/app/shared/components/description-info/description-info.component.ts create mode 100644 usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.html create mode 100644 usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.less create mode 100644 usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.ts create mode 100644 usecaseui-portal/src/app/views/maas/build/application-management.component.html create mode 100644 usecaseui-portal/src/app/views/maas/build/application-management.component.less create mode 100644 usecaseui-portal/src/app/views/maas/build/application-management.component.ts create mode 100644 usecaseui-portal/src/app/views/maas/build/application.type.ts create mode 100644 usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.html create mode 100644 usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.less create mode 100644 usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.ts create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.html create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.less create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.ts create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.html create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.less create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.ts create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.html create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.less create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.ts create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.service.ts create mode 100644 usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.type.ts create mode 100644 usecaseui-portal/src/app/views/maas/use/use-application.component.html create mode 100644 usecaseui-portal/src/app/views/maas/use/use-application.component.less create mode 100644 usecaseui-portal/src/app/views/maas/use/use-application.component.ts (limited to 'usecaseui-portal') diff --git a/usecaseui-portal/src/app/app-routing.module.ts b/usecaseui-portal/src/app/app-routing.module.ts index ed744106..ad696e9f 100644 --- a/usecaseui-portal/src/app/app-routing.module.ts +++ b/usecaseui-portal/src/app/app-routing.module.ts @@ -37,8 +37,9 @@ import { OrderServiceComponent } from './views/services/sotn-management/order-se import { SotnManagementComponent } from './views/services/sotn-management/sotn-management.component'; import { IntentManagementComponent } from './views/intent-management/intent-management.component'; import { RobotComponent } from './views/robot/robot.component'; - - +import { ApplicationManagementComponent } from './views/maas/build/application-management.component'; +import { UseApplicationComponent } from './views/maas/use/use-application.component'; +import { KnowledgeBaseManagementComponent } from './views/maas/knowledge-base-management/knowledge-base-management.component'; @@ -72,8 +73,11 @@ const routes: Routes = [ { path: 'network/ccvpn-network', component: CcvpnNetworkComponent }, { path: 'network/mdons-network', component: MdonsNetworkComponent }, { path: 'intent-management', component:IntentManagementComponent}, - { path: 'robot', component: RobotComponent } - //{ path: '**', redirectTo: 'home', pathMatch: 'full' } + { path: 'robot', component: RobotComponent }, + { path: 'maas/build', component: ApplicationManagementComponent }, + { path: 'maas/use', component: UseApplicationComponent }, + { path: 'maas/knowledge-base-management', component: KnowledgeBaseManagementComponent }, + { path: '**', redirectTo: 'home', pathMatch: 'full' } ]; @NgModule({ diff --git a/usecaseui-portal/src/app/app.component.html b/usecaseui-portal/src/app/app.component.html index c965d18b..c12067e3 100644 --- a/usecaseui-portal/src/app/app.component.html +++ b/usecaseui-portal/src/app/app.component.html @@ -156,6 +156,25 @@
+
  • + + + home + + {{"i18nTextDefine_mass" | translate}} + + diff --git a/usecaseui-portal/src/app/app.component.ts b/usecaseui-portal/src/app/app.component.ts index 7abec444..8babf87c 100644 --- a/usecaseui-portal/src/app/app.component.ts +++ b/usecaseui-portal/src/app/app.component.ts @@ -26,7 +26,7 @@ import 'rxjs/add/operator/map'; styleUrls: ['./app.component.less'] }) export class AppComponent { - + maasFlag = false; public url: string = 'home'; constructor(private translate: TranslateService, private myhttp: HomesService, private router: Router, ) { this.currentLanguageGet(); @@ -38,6 +38,7 @@ export class AppComponent { this.router.events.map(event => { if (event instanceof NavigationEnd) { this.url = event['urlAfterRedirects'].slice(1) + this.maasFlag = this.url.includes('maas'); } }).subscribe(event => { }) } diff --git a/usecaseui-portal/src/app/app.module.ts b/usecaseui-portal/src/app/app.module.ts index 852c6660..6fd0e5ae 100644 --- a/usecaseui-portal/src/app/app.module.ts +++ b/usecaseui-portal/src/app/app.module.ts @@ -117,7 +117,16 @@ import { InputIntentConditionComponent } from './views/intent-management/input-i import { IntentReportDetailComponent } from './views/intent-management/intent-report-detail/intent-report-detail.component'; import { AngularDateTimePickerModule } from 'angular2-datetimepicker'; import { RobotComponent } from './views/robot/robot.component'; - +import { ApplicationManagementComponent } from './views/maas/build/application-management.component'; +import { InputApplicationManagementComponent } from './views/maas/build/input-application-management/input-application-management.component'; +import { UseApplicationComponent } from './views/maas/use/use-application.component'; +import { KnowledgeBaseManagementComponent } from './views/maas/knowledge-base-management/knowledge-base-management.component'; +import { InputKnowledgeBaseComponent } from './views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component'; +import { KnowledgeBaseDetailComponent } from './views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component'; +import { ApplicationDetailComponent } from './views/maas/build/application-detail/application-detail.component'; +import { DescriptionInfoComponent } from "./shared/components/description-info/description-info.component"; +// import { EditKnowledgeBaseComponent } from "./views/maas/knowledge-base-management/edit-knowledge-base/edit-knowledge-base.component"; +import { KnowledgeBaseService } from "./views/maas/knowledge-base-management/knowledge-base.service"; export function HttpLoaderFactory(httpClient: HttpClient) { return new TranslateHttpLoader(httpClient, "./assets/i18n/", ".json"); } @@ -147,6 +156,7 @@ registerLocaleData(en); SlicingTaskServices, IntentManagementService, // fakeBackendProvider + KnowledgeBaseService ], declarations: [ AppComponent, @@ -222,7 +232,16 @@ registerLocaleData(en); InputIntentStateComponent, InputIntentConditionComponent, IntentReportDetailComponent, - RobotComponent + KnowledgeBaseManagementComponent, + InputKnowledgeBaseComponent, + KnowledgeBaseDetailComponent, + DescriptionInfoComponent, + RobotComponent, + ApplicationManagementComponent, + InputApplicationManagementComponent, + UseApplicationComponent, + ApplicationDetailComponent, + // EditKnowledgeBaseComponent ], imports: [ BrowserModule, diff --git a/usecaseui-portal/src/app/core/services/intentManagement.service.ts b/usecaseui-portal/src/app/core/services/intentManagement.service.ts index ee9cd3b2..7fd85b04 100644 --- a/usecaseui-portal/src/app/core/services/intentManagement.service.ts +++ b/usecaseui-portal/src/app/core/services/intentManagement.service.ts @@ -16,21 +16,31 @@ import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; - +import { of } from 'rxjs/observable/of'; +import { knowledgeBase } from '../../views/maas/knowledge-base-management/knowledge-base.type' +import { application } from '../../views/maas/build/application.type'; @Injectable() export class IntentManagementService { constructor(private http: HttpClient) { } url = { - createIntentManagement: "/api/usecaseui-intent-analysis/v1/intents", + createIntentManagement: "/api/usecaseui-intent-analysis/v1/intents", getIntentManagement: "/api/usecaseui-intent-analysis/v1/intents/intentGenerateType/USERINPUT", deleteIntentManagement: "/api/usecaseui-intent-analysis/v1/intents/", updateIntentManagementData: "/api/usecaseui-intent-analysis/v1/intents/", - getIntentReport: "/api/usecaseui-intent-analysis/v1/intentReport/" + getIntentReport: "/api/usecaseui-intent-analysis/v1/intentReport/", + getKnowledgeBaseRecord: "/api/usecaseui-llm-adaptation/v1/knowledgeBase/query", + removeKnowledgeBase: "/api/usecaseui-llm-adaptation/v1/knowledgeBase/delete/", + getKnowledgeBaseById: "/api/usecaseui-llm-adaptation/v1/knowledgeBase/queryById/", + updateKnowledgeBaseRecord: "/api/usecaseui-llm-adaptation/v1/knowledgeBase/update", + maasUrl: "/api/usecaseui-llm-adaptation/v1/maas/getAll", + getAllApplication: "/api/usecaseui-llm-adaptation/v1/application/query", + deleteApplicationById: "/api/usecaseui-llm-adaptation/v1/application/delete/", + getApplicationById: "/api/usecaseui-llm-adaptation/v1/application/queryById/" }; - + // intentManagement - getIntentManagementData(){ + getIntentManagementData() { return this.http.get(this.url.getIntentManagement); } createIntentManagement(requestBody) { @@ -42,7 +52,33 @@ export class IntentManagementService { updateIntentManagementData(id, requestBody) { return this.http.put(this.url.updateIntentManagementData + id, requestBody); } - getIntentReportData(intentId){ - return this.http.get(this.url.getIntentReport+intentId); + getIntentReportData(intentId) { + return this.http.get(this.url.getIntentReport + intentId); + } + getKnowledgeBaseRecord() { + return this.http.get(this.url.getKnowledgeBaseRecord); + } + + updateKnowledgeBase(body: any) { + return this.http.post(this.url.updateKnowledgeBaseRecord, body); + } + + deleteKnowledgeBaseData(index) { + return this.http.delete(this.url.removeKnowledgeBase + index); + } + getMaaSPlatform() { + return this.http.get(this.url.maasUrl); + } + getKnowledgeBaseById(index) { + return this.http.get<{result_body: Array}>(this.url.getKnowledgeBaseById + index); + } + getAllApplication() { + return this.http.get(this.url.getAllApplication); + } + deleteApplicationById(index) { + return this.http.delete(this.url.deleteApplicationById + index); + } + getApplicationById(index) { + return this.http.get(this.url.getApplicationById + index); } } diff --git a/usecaseui-portal/src/app/shared/components/description-info/description-info.component.html b/usecaseui-portal/src/app/shared/components/description-info/description-info.component.html new file mode 100644 index 00000000..9575dca1 --- /dev/null +++ b/usecaseui-portal/src/app/shared/components/description-info/description-info.component.html @@ -0,0 +1,20 @@ +
    +
    + +
    + {{ item.label }} +
    + + {{ item.label }} + +
    +
    +
    + +
    {{ item.value }}
    + + {{ item.value }} + +
    +
    +
    \ No newline at end of file diff --git a/usecaseui-portal/src/app/shared/components/description-info/description-info.component.less b/usecaseui-portal/src/app/shared/components/description-info/description-info.component.less new file mode 100644 index 00000000..51e22485 --- /dev/null +++ b/usecaseui-portal/src/app/shared/components/description-info/description-info.component.less @@ -0,0 +1,24 @@ +.input-wrapper { + display: flex; + margin: 20px 0; +} + +.desc-label { + display: inline-block; + width: 30%; + margin-left: 8px; +} +.text-single-ellipsis { + text-overflow: ellipsis; + overflow: hidden; + word-break: break-all; + white-space: nowrap; +} +.text-label::after { + content: ':' +} + +.desc-item { + display: inline-block; + width: 70%; +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/shared/components/description-info/description-info.component.ts b/usecaseui-portal/src/app/shared/components/description-info/description-info.component.ts new file mode 100644 index 00000000..26148dce --- /dev/null +++ b/usecaseui-portal/src/app/shared/components/description-info/description-info.component.ts @@ -0,0 +1,18 @@ +import { Component, EventEmitter, Input, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-description-info', + templateUrl: './description-info.component.html', + styleUrls: ['./description-info.component.less'] +}) +export class DescriptionInfoComponent implements OnInit { + + constructor( + ) { } + @Input() data: Array; + + ngOnInit() { + console.log('data is :', this.data) + } + +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.html b/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.html new file mode 100644 index 00000000..71ef1b40 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.html @@ -0,0 +1,19 @@ + + + + \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.less b/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.less new file mode 100644 index 00000000..139597f9 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.less @@ -0,0 +1,2 @@ + + diff --git a/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.ts b/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.ts new file mode 100644 index 00000000..f9e16435 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/application-detail/application-detail.component.ts @@ -0,0 +1,74 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; + +@Component({ + selector: 'app-application-detail', + templateUrl: './application-detail.component.html', + styleUrls: ['./application-detail.component.less'] +}) +export class ApplicationDetailComponent implements OnInit { + + constructor() { } + + @Input() showModel: boolean; + _applicationDetail; + data: Array<{ label: string, value: string }> = []; + @Input() + set applicationDetail(v: any) { + if (!v) { + return; + } + this.data = [ + { + label: 'Application Name', value: v.applicationName + }, + { + label: 'Application Description', value: v.applicationDescription + }, + { + label: 'Application Type', value: v.applicationType + }, + { + label: 'Operator', value: v.operatorName + }, + { + label: 'MaaS', value: v.maaSPlatformName + }, + { + label: 'Large Model', value: v.largeModelName + }, + { + label: 'Knowledge Base', value: v.knowledgeBaseName + }, + { + label: 'Prompt', value: v.prompt + }, + { + label: 'Temperature', value: v.temperature + }, + { + label: 'Top_p', value: v.top_p + }, + { + label: 'Opening Remarks', value: v.openingRemarks + } + ] + this._applicationDetail = v; + }; + get applicationDetail() { + return this._applicationDetail; + } + @Output() modalOpreation = new EventEmitter(); + + ngOnInit() {} + + handleCancel(): void { + this.showModel = false; + this.modalOpreation.emit(); + } + + handleOk(): void { + this.showModel = false; + this.modalOpreation.emit(); + } + +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/build/application-management.component.html b/usecaseui-portal/src/app/views/maas/build/application-management.component.html new file mode 100644 index 00000000..64a0823d --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/application-management.component.html @@ -0,0 +1,61 @@ + + +
    +

    + Application List + +

    + + + + No + Application Name + Application Description + Application Type + Operator + MaaS + Knowledge Base + Large Model + {{"i18nTextDefine_Action" | translate}} + + + + + {{i+1}} + {{data.applicationName}} + {{data.applicationDescription}} + {{data.applicationType}} + {{data.operatorName}} + {{data.maaSPlatformName}} + {{data.knowledgeBaseName}} + {{data.largeModelName}} + + + + + + + + +
    + + \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/build/application-management.component.less b/usecaseui-portal/src/app/views/maas/build/application-management.component.less new file mode 100644 index 00000000..8e882a27 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/application-management.component.less @@ -0,0 +1,127 @@ +:host{ + display: block; +} +.content { + padding: 40px; + min-height: 937px; + height: 100vh; + .title{ + font-size: 30px; + color: #3C4F8C; + margin-bottom: 0.5em; + .add{ + float: right; + margin-top: 7px; + } + } + .anticon-edit,.anticon-delete,.anticon-menu-fold{ + font-size: 18px; + margin-right: 10px; + cursor: pointer; + } +} + +.intent-management-modal{ + .add-expectation-container:after{ + content: ''; + display: block; + clear: both; + } + p{ + position: relative; + } + .ant-input{ + width: 300px; + } + .title{ + height: 32px; + line-height: 32px; + margin-bottom: 15px; + .add{ + float: right; + } + } + .required{ + color: #ff0000; + } + .intent-required{ + display: none; + } + .intent-error{ + position: absolute; + color: #ff0000; + top: 32px; + left: 110px; + } + .anticon-edit,.anticon-delete,.anticon-menu-fold{ + font-size: 18px; + margin-right: 10px; + cursor: pointer; + } +} +.intent-table{ + margin-bottom: 15px; + ::ng-deep ant-modal-body{ + height: 300 !important; + overflow-y: auto !important; + } +} +.target-div{ + float: left; + width: 100%; +} +.expectation-p{ + position: relative; + float: left; + width: 50%; + .left{ + float: left; + width: 40%; + height: 32px; + line-height: 32px; + text-align: right; + padding-right: 2%; + } + .ant-input{ + float: left; + width: 58%; + } + .ant-select{ + width: 58%; + } +} +.w50{ + width: 50%; +} +.condition-type{ + float: left; + width: 100%; + [nz-radio] { + display: block; + height: 32px; + line-height: 32px; + margin-left: 15%; + .ant-input{ + width: 60%; + } + } + .ant-radio-group{ + width: 50%; + } +} +.intent-condition-div{ + width: 100%; + float: left; +} +.condition-operator-div{ + margin-left: 50px; +} +.container{ + display: flex; + align-items: center; + width: 700px; +} +.container angular2-date-picker{ + margin-right: 10px; + margin-left: 10px; +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/build/application-management.component.ts b/usecaseui-portal/src/app/views/maas/build/application-management.component.ts new file mode 100644 index 00000000..bc684cc9 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/application-management.component.ts @@ -0,0 +1,90 @@ +import { Component, OnInit } from '@angular/core'; +import { IntentManagementService } from '../../../core/services/intentManagement.service' +import {NzMessageService} from "ng-zorro-antd"; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-application-management', + templateUrl: './application-management.component.html', + styleUrls: ['./application-management.component.less'] +}) +export class ApplicationManagementComponent implements OnInit { + + constructor( + private myhttp: IntentManagementService, + private message: NzMessageService, + private router: Router + ) { } + + ngOnInit() { + this.getAllApplicationData() + } + + listOfData: any[] = []; + + intentModuleShow: boolean = false; + applicationShow: boolean = false; + editIntentTableList: Object={}; + currentIndex: number=-1; + getAllApplicationData():void{ + this.myhttp.getAllApplication() + .subscribe( + (data) => { + this.listOfData=data.result_body + }, + (err) => { + this.message.error('Failed to obtain application data'); + } + ) + } + + inputIntentModuleShow(): void { + this.intentModuleShow = true; + } + inputIntentModuleClose($event: any): void { + this.intentModuleShow = false; + + if ($event.cancel) { + return; + } + this.getAllApplicationData() + } + editIntentList(): void { + this.intentModuleShow = true + } + deleteIntentList(data): void{ + this.myhttp.deleteApplicationById(data.applicationId).subscribe((data) => { + this.getAllApplicationData() + if(data.result_header.result_code===200){ + this.message.success('Deleted successfully'); + }else{ + this.message.error(data.result_header.result_message); + } + }, (err) => { + this.message.error('Deletion failed'); + }); + } + + navigateToDetail(data):void { + this.router.navigate(['maas/use'], { queryParams: { id: data.applicationId, name: data.applicationName } }); + } + + applicationDetailClose(): void { + this.applicationShow = false; + } + + applicationDetail: Object={}; + displayApplicationDetails(data): void { + this.applicationShow = true; + this.myhttp.getApplicationById(data.applicationId) + .subscribe( + (data) => { + this.applicationDetail=data.result_body; + console.log(data.result_body); + }, + (err) => { + this.message.error('Failed to obtain knowledge base data'); + } + ) + } +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/build/application.type.ts b/usecaseui-portal/src/app/views/maas/build/application.type.ts new file mode 100644 index 00000000..0b0693b4 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/application.type.ts @@ -0,0 +1,19 @@ +export type application = { + "applicationId": string, + "applicationName": string, + "applicationDescription": string, + "applicationType": string, + "operatorId": string, + "operatorName": string, + "maasPlatformId": string, + "maasPlatformName": string, + "knowledgeBaseName": string, + "knowledgeBaseId": string, + "largeModelName": string, + "largeModelId": string, + "prompt": string, + "temperature": number, + "top_p": number, + "openingRemarks": string +} + diff --git a/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.html b/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.html new file mode 100644 index 00000000..286dc1dc --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.html @@ -0,0 +1,124 @@ + + + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    + +
    +
    + +
    + + + +
    + +
    +
    + +
    + + + +
    + +
    +
    + +
    + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + + + +
    + +
    +
    +
    +
    +
    + +
    + + + + +
    + +
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.less b/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.less new file mode 100644 index 00000000..e8e3fca4 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.less @@ -0,0 +1,44 @@ +// .ant-select { +// width: 200px; +// } + +// .ant-input { +// width: 300px; +// } + +.input-wrapper { + display: flex; + align-items: center; + gap: 50px; +} + +.item-label { + display: inline-block; + width: 30%; + margin-right: 8px; + line-height: 36px; +} + +.item { + display: flex; + width: 70%; +} + +.form-item { + display: flex; + width: 100%; + margin-bottom: 16px; +} + +.slider-input-container { + width: 100%; +} + +.nz-input-number-container { + margin-left: 16px; + width: 120px; +} + +.nz-select-container { + width: 300px; +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.ts b/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.ts new file mode 100644 index 00000000..71688d4e --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/build/input-application-management/input-application-management.component.ts @@ -0,0 +1,135 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Util } from '../../../../shared/utils/utils'; +import {NzMessageService} from "ng-zorro-antd"; +import { HttpClient,HttpHeaders } from '@angular/common/http'; + +@Component({ + selector: 'app-input-application-management', + templateUrl: './input-application-management.component.html', + styleUrls: ['./input-application-management.component.less'] +}) +export class InputApplicationManagementComponent implements OnInit { + title = 'Add Application'; + constructor( + private Util: Util, + private message: NzMessageService, + private http: HttpClient + ) { } + + @Input() showModel: boolean; + @Output() modalOpreation = new EventEmitter(); + + maasUrl = '/api/usecaseui-llm-adaptation/v1/operator/maas/getAll'; + knowBaseUrl = "/api/usecaseui-llm-adaptation/v1/knowledgeBase/queryByMaaSId/"; + createApplicationUrl = "/api/usecaseui-llm-adaptation/v1/application/create"; + + applicationName = ""; + applicationDescription = ""; + applicationType = "Knowledge Assistant"; + operators: any[] = []; + selectedOperator: any = null; + filteredPlatforms: any[] = []; + selectedPlatform: any = null; + filteredModels: any[] = []; + selectedModel: any = null; + knowledgeBases: any[] =[]; + selectKnowledgeBase: any = null; + modelDefaultValue = ""; + temperature = 3; + top_p = 3; + prompt =""; + openingRemarks = ""; + ngOnInit() { + this.fetchOperators(); + } + + fetchOperators(): void { + this.http.get(this.maasUrl).subscribe( + (response) => { + this.operators = response.result_body; + }, + () => { + this.message.error('Failed to fetch operators'); + } + ); + } + + handleOperatorChange(value: any): void { + if (value) { + this.filteredPlatforms = value.maaSPlatformList; + } else { + this.filteredPlatforms = []; + } + this.selectedPlatform = null; + this.selectedModel = null; + this.selectKnowledgeBase = null; + } + + handleMaasChange(value: any): void { + if (value) { + this.filteredModels = value.modelList; + console.log(this.filteredModels); + this.fetchKnowledgeBase(value); + } else { + this.filteredModels = []; + } + this.selectedModel = null; + this.selectKnowledgeBase = null; + } + + fetchKnowledgeBase(value): void { + this.http.get(this.knowBaseUrl+value.maaSPlatformId).subscribe( + (response) => { + this.knowledgeBases = response.result_body; + }, + (error) => { + this.message.error('Failed to fetch knowledge base'); + } + ); + } + + handleCancel(): void { + this.showModel = false; + this.modalOpreation.emit({ "cancel": true }); + } + handleOk(): void { + this.createApplication(); + } + + createApplication(){ + const requestBody = { + applicationName: this.applicationName, + applicationDescription: this.applicationDescription, + applicationType: this.applicationType, + operatorName: this.selectedOperator.operatorName, + operatorId: this.selectedOperator.operatorId, + maaSPlatformId: this.selectedPlatform.maaSPlatformId, + maaSPlatformName: this.selectedPlatform.maaSPlatformName, + knowledgeBaseId: this.selectKnowledgeBase.knowledgeBaseId, + knowledgeBaseName: this.selectKnowledgeBase.knowledgeBaseName, + largeModelId: this.selectedModel.modelId, + largeModelName: this.selectedModel.modelName, + prompt: this.prompt, + temperature: this.temperature, + top_p: this.top_p, + openingRemarks: this.openingRemarks + }; + console.log(requestBody); + this.http.post(this.createApplicationUrl, requestBody).subscribe( + (response) => { + this.showModel = false; + this.modalOpreation.emit({ "cancel": false }); + const resultHeader = {}; + if(response.result_header.result_code===200){ + this.message.success('Created successfully'); + }else{ + this.message.error(response.result_header.result_message); + } + }, + (err) => { + this.showModel = false; + this.message.error('Created failed'); + } + ) + } +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.html b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.html new file mode 100644 index 00000000..de2e6450 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.html @@ -0,0 +1,61 @@ + + +
    + + Knowledge Base Name + + + + + + Knowledge Base Description + + + + + + Operator Name + + + + + + + + MaaS Platform Name + + + + + + + + File Upload + + + + + + +
    +
    \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.less b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.less new file mode 100644 index 00000000..e69de29b diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.ts new file mode 100644 index 00000000..9984f664 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/input-knowledge-base/input-knowledge-base.component.ts @@ -0,0 +1,129 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { IntentManagementService } from '../../../../core/services/intentManagement.service'; +import { Util } from '../../../../shared/utils/utils'; +import { NzMessageService, UploadFile } from 'ng-zorro-antd'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; + +@Component({ + selector: 'app-input-knowledge-base', + templateUrl: './input-knowledge-base.component.html', + styleUrls: ['./input-knowledge-base.component.less'] +}) +export class InputKnowledgeBaseComponent implements OnInit { + title = 'Add Knowledge Base'; + constructor( + private myhttp: IntentManagementService, + private Util: Util, + private message: NzMessageService, + private http: HttpClient, + private fb: FormBuilder + ) { } + + @Input() showModel: boolean; + @Output() modalOpreation = new EventEmitter(); + + apiUrl = '/api/usecaseui-llm-adaptation/v1/knowledgeBase/create'; + apiUrl1 = '/api/usecaseui-intent-analysis/v1/intents/upload'; + maasUrl = '/api/usecaseui-llm-adaptation/v1/operator/maas/getAll' + url = "http://172.22.16.126:3000/api/core/dataset/create"; + knowledgeBase = { + name: '', + description: '' + }; + fileList: UploadFile[] = []; + operators: any[] = []; + selectedOperator: any = null; + filteredPlatforms: any[] = []; + allPlatforms: any[] = []; + selectedPlatform: any = null; + validateForm: FormGroup; + + ngOnInit() { + this.fetchOperators(); + this.validateForm = this.fb.group({ + name: [null], + description: [null], + selectedOperator: [null], + selectedPlatform: [null], + }); + } + + fetchOperators(): void { + this.http.get(this.maasUrl).subscribe( + (response) => { + console.log(response); + this.operators = response.result_body; + }, + (error) => { + this.message.error('Failed to fetch operators'); + } + ); + } + + submitForm(): void { + for (const i in this.validateForm.controls) { + this.validateForm.controls[i].markAsDirty(); + this.validateForm.controls[i].updateValueAndValidity(); + } + } + + handleOperatorChange(value: any): void { + if (value) { + this.filteredPlatforms = value.maaSPlatformList; + } else { + this.filteredPlatforms = []; + } + this.validateForm.get('selectedPlatform').setValue(null); + } + + + beforeUpload = (file: UploadFile): boolean => { + this.fileList.push(file); + return false; + } + + handleCancel(): void { + this.showModel = false; + this.modalOpreation.emit({ "cancel": true }); + } + handleOk(): void { + const formData = new FormData(); + const metaData = { + knowledgeBaseName: this.validateForm.controls.name.value, + knowledgeBaseDescription: this.validateForm.controls.description.value, + operatorId: this.validateForm.controls.selectedOperator.value.operatorId, + operatorName: this.validateForm.controls.selectedOperator.value.operatorName, + maaSPlatformId: this.validateForm.controls.selectedPlatform.value.maaSPlatformId, + maaSPlatformName: this.validateForm.controls.selectedPlatform.value.maaSPlatformName + }; + const metaDataJson = JSON.stringify(metaData); + formData.append('metaData', metaDataJson); + this.fileList.forEach((file: any) => { + formData.append('files', file); + }); + this.http.post(this.apiUrl, formData).subscribe( + (response) => { + if (response.result_header.result_code === 200) { + this.message.success('Created successfully'); + } else { + this.message.error(response.result_header.result_message); + } + this.knowledgeBase = { + name: '', + description: '' + }; + this.fileList = []; + this.modalOpreation.emit({ "cancel": false }); + }, + (error) => { + this.knowledgeBase = { + name: '', + description: '' + }; + this.fileList = []; + console.log('Upload failed', error); + } + ); + } +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.html b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.html new file mode 100644 index 00000000..9653f29f --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.html @@ -0,0 +1,21 @@ + + +
    + +
    +
    \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.less b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.less new file mode 100644 index 00000000..e69de29b diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.ts new file mode 100644 index 00000000..172e9d1d --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-detail/knowledge-base-detail.component.ts @@ -0,0 +1,64 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { knowledgeBase } from '../knowledge-base.type'; +import { KnowledgeBaseService } from '../knowledge-base.service'; +@Component({ + selector: 'app-knowledge-base-detail', + templateUrl: './knowledge-base-detail.component.html', + styleUrls: ['./knowledge-base-detail.component.less'] +}) +export class KnowledgeBaseDetailComponent implements OnInit { + + constructor( + private knowledgeBaseService: KnowledgeBaseService + ) { } + @Input() showModel: boolean; + _knowledgeBase: knowledgeBase; + data: Array<{ label: string, value: string }> = []; + @Input() + + set knowledgeBaseDetail(v: any) { + if (!v) { + return; + } + this.data = [ + { + label: 'Knowledge Base Name', value: v.knowledgeBaseName + }, + { + label: 'Knowledge Base Description', value: v.knowledgeBaseDescription + }, + { + label: 'Operator Name', value: v.operatorName + }, + { + label: 'MaaS Platform Name', value: v.maaSPlatformName + }, + { + label: 'Update Time', value: v.updateTime + }, + { + label: 'Files Name', value: this.knowledgeBaseService.getFiles(v) + } + ] + this._knowledgeBase = v; + } + + get knowledgeBaseDetail() { + return this._knowledgeBase; + }; + @Output() modalOpreation = new EventEmitter(); + files = ''; + + ngOnInit() { + } + + handleCancel(): void { + this.showModel = false; + this.modalOpreation.emit({ "cancel": true }); + } + + handleOk(): void { + this.showModel = false; + this.modalOpreation.emit({ "cancel": true }); + } +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.html b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.html new file mode 100644 index 00000000..eba272c2 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.html @@ -0,0 +1,51 @@ + +
    +

    + {{ "i18nTextDefine_KnowledgeBaseList" | translate }} + +

    + + + + {{"i18nTextDefine_NO" | translate}} + {{"i18nTextDefine_Name" | translate}} + {{"i18nTextDefine_Description" | translate}} + {{"i18nTextDefine_Action" | translate}} + + + + + {{ i+1 }} + {{ data.knowledgeBaseName }} + {{ data.knowledgeBaseDescription }} + + + + + + + + +
    + + + + \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.less b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.less new file mode 100644 index 00000000..0b44f752 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.less @@ -0,0 +1,26 @@ +:host{ + display: block; +} +.content { + padding: 40px; + min-height: 937px; + height: 100vh; + .title{ + font-size: 30px; + color: #3C4F8C; + margin-bottom: 0.5em; + .add{ + float: right; + margin-top: 7px; + } + } + .anticon-edit,.anticon-delete,.anticon-menu-fold{ + font-size: 18px; + margin-right: 10px; + cursor: pointer; + } +} + +.column-size { + font-size: 20px; +} diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.ts new file mode 100644 index 00000000..e54f1e23 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base-management.component.ts @@ -0,0 +1,98 @@ +import { Component, OnInit } from '@angular/core'; +import { IntentManagementService } from '../../../core/services/intentManagement.service' +import { NzMessageService } from "ng-zorro-antd"; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-knowledge-base-management', + templateUrl: './knowledge-base-management.component.html', + styleUrls: ['./knowledge-base-management.component.less'] +}) +export class KnowledgeBaseManagementComponent implements OnInit { + editKnowledgeBaseShow = false; + editKnowledgeBaseId = ''; + constructor( + private myhttp: IntentManagementService, + private message: NzMessageService, + private router: Router + ) { } + + ngOnInit() { + this.getKnowledgeBaseData() + } + + listOfData: any[] = []; + + intentModuleShow: boolean = false; + knowledgeBaseShow: boolean = false; + editIntentTableList: Object = {}; + currentIndex: number = -1; + getKnowledgeBaseData(): void { + this.myhttp.getKnowledgeBaseRecord() + .subscribe( + (data) => { + this.listOfData = data.result_body + }, + () => { + this.message.error('Failed to obtain knowledgeBase data'); + } + ) + } + + inputKnowledgeBaseModuleShow(): void { + this.intentModuleShow = true; + } + inputKnowledgeBaseModuleClose($event: any): void { + console.log($event); + this.intentModuleShow = false; + if ($event.cancel) { + return; + } + this.getKnowledgeBaseData() + } + + editKnowledgeBaseModuleClose($event: any): void { + this.editKnowledgeBaseShow = false; + if ($event.cancel) { + return; + } + this.getKnowledgeBaseData() + } + + knowledgeBaseDetailClose($event: any): void { + this.knowledgeBaseShow = false; + } + + deleteKnowledgeBase(data): void { + this.myhttp.deleteKnowledgeBaseData(data.knowledgeBaseId).subscribe((data) => { + this.getKnowledgeBaseData() + if (data.result_header.result_code === 200) { + this.message.success('Deleted successfully'); + } else { + this.message.error(data.result_header.result_message); + } + }, (err) => { + this.message.error('Deletion failed'); + }); + } + + knowledgeBaseDetail: Object = {}; + displayKnowledgeDetails(data): void { + this.knowledgeBaseShow = true; + this.myhttp.getKnowledgeBaseById(data.knowledgeBaseId) + .subscribe( + (data) => { + this.knowledgeBaseDetail = data.result_body; + }, + (err) => { + this.message.error('Failed to obtain knowledge base data'); + } + ) + } + + editKnowedgeBase(data) { + this.editKnowledgeBaseId = data.knowledgeBaseId; + this.editKnowledgeBaseShow = true; + } + +} \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.service.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.service.ts new file mode 100644 index 00000000..4af8c292 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.service.ts @@ -0,0 +1,11 @@ +import { Injectable } from '@angular/core'; +import { knowledgeBase } from './knowledge-base.type'; + +@Injectable() +export class KnowledgeBaseService { + + constructor() { } + getFiles(v: knowledgeBase) { + return v.filesName ? v.filesName.join(',') : ''; + } +} diff --git a/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.type.ts b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.type.ts new file mode 100644 index 00000000..ec9c7daa --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/knowledge-base-management/knowledge-base.type.ts @@ -0,0 +1,12 @@ +export type knowledgeBase = { + knowledgeBaseName: string, + knowledgeBaseDescription: string, + operatorName: string, + maaSPlatformName: string, + updateTime: string, + filesName: Array, + operatorId: string, + maaSPlatformId: string, + knowledgeBaseId: string +} + diff --git a/usecaseui-portal/src/app/views/maas/use/use-application.component.html b/usecaseui-portal/src/app/views/maas/use/use-application.component.html new file mode 100644 index 00000000..c0a8fe78 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/use/use-application.component.html @@ -0,0 +1,43 @@ + +
    +
    + + + +
    +
    +
    +
    + + {{ chat.question }} +
    +
    +
    + + {{ chat.answer }} +
    +
    +
    +
    + +
    + + + + +
    +
    \ No newline at end of file diff --git a/usecaseui-portal/src/app/views/maas/use/use-application.component.less b/usecaseui-portal/src/app/views/maas/use/use-application.component.less new file mode 100644 index 00000000..e4570d4f --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/use/use-application.component.less @@ -0,0 +1,98 @@ +.container { + background-color: #e6e6fa; + width: 100%; + margin: 0; + padding: 0; + min-height: 100vh; + display: flex; + flex-direction: column; +} +.fixed-select-wrapper { + position: fixed; + top: 20px; + left: 50%; + transform: translateX(-50%); + z-index: 1000; + } +.chat-container { + margin: 60px 0; + padding: 0 100px; +} +.question { + display: flex; +} +.record-input{ + margin-left: 10px; + resize: none; +} +.question span { + background-color: white; + font-size: 16px; + margin-left: 10px; + padding: 10px; + border-radius: 8px; +} +.question img { + width: 28px; + height: 28px; +} + +.answer { + display: flex; +} +.answer span{ + background-color: white; + font-size: 16px; + margin-left: 10px; + padding: 10px; + border-radius: 8px; + white-space: pre-line; +} +.answer img { + width: 28px; + height: 28px; +} + +.chat-input { + margin-top: 30px; + padding-left: 1100px; +} + +.input-wrapper { + display: flex; + justify-content: space-around; + width: e("calc(100% - 240px)"); + margin: 0 100px; + margin-left: 138px; + padding: 10px; + background: #fff; + border-radius: 8px; + border: 2px solid #8a2be2; +} + +.text-input { + width: e("calc(100% - 50px)"); + background-color: white; + color: black; + text-align: left; + border: 0; + resize: none; + + &:focus { + border: 0 !important; + box-shadow: none; + } +} + +.icon { + width: 50px; + height: 50px; + cursor: pointer; + + >img { + width: 35px; + height: 31px; + margin-top: 15px; + margin-left: 15px; + } +} diff --git a/usecaseui-portal/src/app/views/maas/use/use-application.component.ts b/usecaseui-portal/src/app/views/maas/use/use-application.component.ts new file mode 100644 index 00000000..f2b147c5 --- /dev/null +++ b/usecaseui-portal/src/app/views/maas/use/use-application.component.ts @@ -0,0 +1,74 @@ +import { Component, OnInit } from '@angular/core'; +import { NzMessageService } from 'ng-zorro-antd'; +import { HttpClient } from '@angular/common/http'; +import { SSE } from "sse.js"; +import { ActivatedRoute } from '@angular/router'; +import { IntentManagementService } from '../../../core/services/intentManagement.service' + + +@Component({ + selector: 'app-use-application', + templateUrl: './use-application.component.html', + styleUrls: ['./use-application.component.less'] +}) +export class UseApplicationComponent implements OnInit { + + question: string; + communicationMessage: string; + chatHistory: { question: string, answer: string }[] = []; + apiUrl = '/api/usecaseui-llm-adaptation/v1/application/chat'; + queryParams: { id?: string; name?: string } = {}; + selectedName: string | null = null; + options: any[] = []; + + constructor( + private http: HttpClient, + private message: NzMessageService, + private route: ActivatedRoute, + private myhttp: IntentManagementService, + ) { } + ngOnInit() { + this.getIntentManagementData(); + this.route.queryParams.subscribe(params => { + this.queryParams = params; + console.log(params.id); + this.selectedName = this.queryParams.id ; + }); + } + + submitQuestion() { + const chatParam = { + applicationId: this.queryParams.id, + question: this.question + }; + var source = new SSE(this.apiUrl,{headers: {'Content-Type': 'application/json'},payload: JSON.stringify(chatParam),method:'POST'}); + var lin = this.question; + const length = this.chatHistory.length; + source.addEventListener('message',(event)=>{ + const existingEntryIndex = this.chatHistory.findIndex(entry => entry.question === lin); + console.log(event.data); + if (existingEntryIndex !== -1) { + this.chatHistory[existingEntryIndex].answer += event.data.replace(/__SPACE__/g, ' '); + } else { + this.chatHistory.push({ question: lin, answer: event.data }); + } + }); + this.question = ''; + } + + getIntentManagementData():void{ + this.myhttp.getAllApplication() + .subscribe( + (data) => { + this.options = data.result_body.map(item => ({ + nzValue: item.applicationId, + nzLabel: item.applicationName + })); + + }, + () => { + this.message.error('Failed to obtain intent data'); + } + ) + } +} diff --git a/usecaseui-portal/src/assets/i18n/cn.json b/usecaseui-portal/src/assets/i18n/cn.json index 31815c81..f879019c 100644 --- a/usecaseui-portal/src/assets/i18n/cn.json +++ b/usecaseui-portal/src/assets/i18n/cn.json @@ -188,5 +188,10 @@ "i18nTextDefine_exportData": "导出", "i18nTextDefine_startTime": "起始时间", "i18nTextDefine_endTime": "终止时间", - "i18nTextDefine_robot": "大模型" + "i18nTextDefine_robot": "大模型", + "i18nTextDefine_mass_build": "构建", + "i18nTextDefine_mass_use": "使用", + "i18nTextDefine_mass": "MaaS", + "i18nTextDefine_knowledgebase": "知识库管理", + "i18nTextDefine_KnowledgeBaseList": "知识库" } diff --git a/usecaseui-portal/src/assets/i18n/en.json b/usecaseui-portal/src/assets/i18n/en.json index c1219c71..daebf7d4 100644 --- a/usecaseui-portal/src/assets/i18n/en.json +++ b/usecaseui-portal/src/assets/i18n/en.json @@ -187,5 +187,10 @@ "i18nTextDefine_exportData": "Export Data", "i18nTextDefine_startTime": "Start Time", "i18nTextDefine_endTime": "End Time", - "i18nTextDefine_robot": "Large Model" + "i18nTextDefine_robot": "Large Model", + "i18nTextDefine_mass_build": "Q&A Manage", + "i18nTextDefine_mass_use": "Q&A Assistant", + "i18nTextDefine_mass": "MaaS", + "i18nTextDefine_knowledgebase": "Knowledge Base Manage", + "i18nTextDefine_KnowledgeBaseList": "Knowledge Base" } -- cgit 1.2.3-korg