tab switch results

This commit is contained in:
Tykayn 2025-09-15 17:46:00 +02:00 committed by tykayn
parent 97ab7a0920
commit 89cb0f2635
16 changed files with 396 additions and 238 deletions

View file

@ -2,159 +2,160 @@
:host { :host {
width: 100%; width: 100%;
}
.avatar { .avatar {
width: 32px; width: 32px;
height: 32px; height: 32px;
flex-shrink: 0; flex-shrink: 0;
border-radius: 8px; border-radius: 8px;
background-size: contain !important; background-size: contain !important;
.user & { .user & {
background-size: contain; background-size: contain;
background: yellow url('../../../../public/user.png'); background: yellow url('../../../../public/user.png');
}
.llm & {
background: yellow url('../../../../public/chatbot.png');
}
}
.message {
.user-more-infos {
margin-top: -35px;
margin-left: 39px;
}
&.user {
background: white;
color: #000;
}
&.llm {
.message-content {
color: #000;
} }
.actions {
.button { .llm & {
background: rgba(59, 135, 204, 0.7); background: yellow url('../../../../public/chatbot.png');
color: black;
}
} }
}
.actions {
.fullscreen {
float: right;
}
}
.app-theme-light & {
background: #F5F5F5;
} }
.app-theme-dark & {
background: #2c2c2c;
color: #d5d5d5;
.message {
&.user {
background: #232432;
color: #8b8ecf;
}
&.llm {
background: #232432;
.message-content {
color: #8b8ecf;
}
.actions {
.button {
background: #0d0e15;
color: grey;
}
}
}
}
}
.app-theme-funky & {
color: #1B1D27;
background: #ffe8e8;
.message {
.message-content {
color: #fff3f3;
}
&.user {
background: #d6a3a3;
color: #1B1D27;
}
&.llm {
background: #9f36bc;
color: #bba7d6;
.actions {
.button {
background: #b08eba;
color: #d4b4ff;
}
}
}
}
}
.message { .message {
.user-more-infos {
margin-top: -35px;
margin-left: 39px;
}
&.user { &.user {
background: variables.$neutral-white; background: white;
color: #000;
} }
&.llm { &.llm {
background: rgba(#3B87CC1A, 10%); .message-content {
color: #000;
}
.actions {
.button {
background: rgba(59, 135, 204, 0.7);
color: black;
}
}
}
.actions {
.fullscreen {
float: right;
}
}
.app-theme-light & {
background: #F5F5F5;
}
.app-theme-dark & {
background: #2c2c2c;
color: #d5d5d5;
.message {
&.user {
background: #232432;
color: #8b8ecf;
}
&.llm {
background: #232432;
.message-content {
color: #8b8ecf;
}
.actions {
.button {
background: #0d0e15;
color: grey;
}
}
}
}
}
.app-theme-funky & {
color: #1B1D27;
background: #ffe8e8;
.message {
.message-content {
color: #fff3f3;
}
&.user {
background: #d6a3a3;
color: #1B1D27;
}
&.llm {
background: #9f36bc;
color: #bba7d6;
.actions {
.button {
background: #b08eba;
color: #d4b4ff;
}
}
}
}
}
.message {
&.user {
background: variables.$neutral-white;
}
&.llm {
background: rgba(#3B87CC1A, 10%);
}
}
}
.expanded-message-fullscreen {
display: none;
width: 50%;
&.is-visible {
display: block;
padding: 20px;
background: #ccc;
border-radius: 3px;
position: relative;
top: 0;
left: 0;
z-index: 100;
} }
} }
}
.expanded-message-fullscreen {
display: none;
width: 50%;
&.is-visible {
display: block;
padding: 20px;
background: #ccc;
border-radius: 3px;
position: relative;
top: 0;
left: 0;
z-index: 100;
}
} }

View file

@ -1,7 +1,7 @@
<button class="button copy" (click)="copy()"> <button (click)="copy()" class="button copy">
<i class="ri-file-copy-2-fill"></i> <i class="ri-file-copy-2-fill"></i>
<span class="label"> <!-- <span class="label">-->
Copy <!-- Copy-->
</span> <!-- </span>-->
</button> </button>

View file

@ -2,21 +2,22 @@
<!-- bot talks land--> <!-- bot talks land-->
<!-- avatar--> <!-- avatar-->
<div class="bubble"> <div class="bubble">
{{ message }} <div class="message">
<br> {{ message }}
<!-- @for (link of links; track link.title) {--> </div>
<!-- <span class="link-title">--> @if (appState?.dicaReference) {
<!-- {{ link.title }}--> <div class="dica-ref-container">
<!-- </span>-->
<!-- <span class="taget">-->
<!-- <a href="{{link.url}}">-->
<!-- {{ link.label }}--> <div class="label">
<!-- &lt;!&ndash; copy button&ndash;&gt;--> Référence de DICA:
<!-- </a>--> </div>
<!-- </span>--> <div class="ref">
<!-- }--> {{ appState.dicaReference }}
<app-copy [textToCopy]="appState.dicaReferenceURL"></app-copy>
</div>
</div>
}
</div> </div>
<div class="avatar"></div> <div class="avatar"></div>

View file

@ -10,6 +10,36 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
.message {
margin-bottom: 16px;
}
.dica-ref-container {
display: flex;
flex-direction: row;
align-items: center;
gap: 5px;
.label {
font-weight: 600;
}
.ref {
display: flex;
padding: 6px 10px 8px 10px;
align-items: center;
gap: 5px;
border-radius: 20px;
background: #C2A9FD;
}
}
} }
.bubble { .bubble {
@ -34,4 +64,9 @@
height: 32px; height: 32px;
border-radius: 8px; border-radius: 8px;
} }
app-copy button.copy {
background: transparent !important;
border: 0;
}
} }

View file

@ -1,18 +1,16 @@
import {Component, Input} from '@angular/core'; import {Component, Input} from '@angular/core';
import {Copy} from '../../buttons/copy/copy';
@Component({ @Component({
selector: 'sae-bot-talks', selector: 'sae-bot-talks',
imports: [], imports: [
Copy
],
templateUrl: './bot-talks.html', templateUrl: './bot-talks.html',
styleUrl: './bot-talks.scss' styleUrl: './bot-talks.scss'
}) })
export class BotTalks { export class BotTalks {
@Input() public message = 'Hello!'; @Input() public message: string = 'Hello!';
@Input() public links: any = [ @Input() public appState: any = {};
{
title: 'Refusal notice :',
label: 'DMP-00051341: Avis de refus',
url: 'https://www.cipherbliss.com/fake-link',
}]
} }

View file

@ -1,14 +1,10 @@
<html> <html>
<head> <head>
<title>CSC implémentation</title> <title>CSC Solution Matcher</title>
</head> </head>
<body> <body>
<!--<pre>-->
<!-- currentUrl:-->
<!-- {{ currentUrl }}-->
<!--</pre>-->
@if (currentUrl !== '/login' && currentUrl !== '/') { @if (currentUrl !== '/login' && currentUrl !== '/') {
<app-top-navigation [user]="appState.user"></app-top-navigation> <app-top-navigation [user]="user"></app-top-navigation>
<sae-feedback-button></sae-feedback-button> <sae-feedback-button></sae-feedback-button>
} }
<router-outlet/> <router-outlet/>

View file

@ -18,6 +18,7 @@ export class App {
public router = inject(Router); public router = inject(Router);
currentUrl: string = ''; currentUrl: string = '';
public appState: any = {}; public appState: any = {};
public user: any = {};
protected readonly title = signal('implem'); protected readonly title = signal('implem');
constructor(private store: Store<StateInterface>) { constructor(private store: Store<StateInterface>) {
@ -25,6 +26,9 @@ export class App {
this.store.select(state => state.app).subscribe(appState => { this.store.select(state => state.app).subscribe(appState => {
this.appState = appState; this.appState = appState;
}); });
this.store.select(state => state.user).subscribe(user => {
this.user = user;
});
this.router.events.pipe( this.router.events.pipe(
filter(event => event instanceof NavigationEnd) filter(event => event instanceof NavigationEnd)
).subscribe((event: any) => { ).subscribe((event: any) => {

View file

@ -2,42 +2,51 @@
<!--case result--> <!--case result-->
<div class="title"> <div class="title">
-7B / 72-21-02 / Booster blades stg 3 / LPC STG.3 BLADES DISLOCATION / 894773 <span class="label">
<div class="button button-toggle chevron">v</div> 7B / 72-21-02 / Booster blades stg 3 / LPC STG.3 BLADES DISLOCATION / 894773
</span>
<i class="ri-arrow-down-s-line"></i>
</div> </div>
<div class="row tabs"> <div class="row tabs">
<div (click)="selectCaseTab('information')" class="tab-item is-active">
<div (click)="selectCaseTab('information')" [ngClass]="{ 'is-active' : activeTab == 'information' }"
class="tab-item">
<i class="ri-file-list-2-line"></i> <i class="ri-file-list-2-line"></i>
<div class="label"> <div class="label">
Information Information
</div> </div>
</div> </div>
<div (click)="selectCaseTab('original_question')" class="tab-item"> <div (click)="selectCaseTab('original_question')" [ngClass]="{ 'is-active' : activeTab == 'information' }"
class="tab-item">
<i class="ri-file-list-2-line"></i> <i class="ri-file-list-2-line"></i>
<div class="label"> <div class="label">
Original Question Original Question
</div> </div>
</div> </div>
<div (click)="selectCaseTab('answer_sent')" class="tab-item"> <div (click)="selectCaseTab('answer_sent')" [ngClass]="{ 'is-active' : activeTab == 'information' }"
class="tab-item">
<i class="ri-file-list-2-line"></i> <i class="ri-file-list-2-line"></i>
<div class="label"> <div class="label">
Answer Sent Answer Sent
</div> </div>
</div> </div>
<div (click)="selectCaseTab('engine_part')" class="tab-item"> <div (click)="selectCaseTab('engine_part')" [ngClass]="{ 'is-active' : activeTab == 'information' }"
class="tab-item">
<i class="ri-file-list-2-line"></i> <i class="ri-file-list-2-line"></i>
<div class="label"> <div class="label">
Engine part Engine part
</div> </div>
</div> </div>
<div (click)="selectCaseTab('findings')" class="tab-item"> <div (click)="selectCaseTab('findings')" [ngClass]="{ 'is-active' : activeTab == 'information' }" class="tab-item">
<i class="ri-file-list-2-line"></i> <i class="ri-file-list-2-line"></i>
<div class="label"> <div class="label">
Findings Findings
</div> </div>
</div> </div>
<div (click)="selectCaseTab('dica')" class="tab-item"> <div (click)="selectCaseTab('dica')" [ngClass]="{ 'is-active' : activeTab == 'information' }" class="tab-item">
<i class="ri-file-list-2-line"></i> <i class="ri-file-list-2-line"></i>
<div class="label"> <div class="label">
DICA DICA
@ -46,31 +55,40 @@
</div> </div>
<div class="row selected-tab-content summary"> <div class="row selected-tab-content summary">
<strong>
@if (activeTab == 'info') {
<strong>
AIs summary :</strong>
<div class="content">
{{ case.info }}
</div>
}
@if (activeTab == 'dica') {
{{ case.DICA }}
{{ case.DICA_file }}
}
AIs summary :</strong> Work stoppage case for CFM56-7B engine (ESN: 894773) at MTU Zhuhai. LPC Stage 3 blade
platform
dislocation detected during shop visit BSI. Maximum dislocation: 1.22mm axial, 0.63mm radial. Customer requests
evaluation, acceptance criteria, or DICA for further action. No corresponding limits in AMM 72-00-00 BSI inspection
chapter.
</div> </div>
<div class="row case-more-infos"> <div class="row case-more-infos">
<div class="info-item"> <div class="info-item">
<span class="label">Date :</span> <span class="label">Date :</span>
<span class="value">2023-12-12</span> <span class="value">{{ case.date }}</span>
</div> </div>
<div class="info-item"> <div class="info-item">
<span class="label">Chrono ID :</span> <span class="label">Chrono ID :</span>
<span class="value">CSC/CFM/2023-10/00446-A</span> <span class="value">{{ case.chrono_id }}</span>
</div> </div>
<div class="info-item"> <div class="info-item">
<span class="label">Responsable Team :</span> <span class="label">Responsable Team :</span>
<span class="value">FO-CFM</span> <span class="value">{{ case.responsable_team }}</span>
</div> </div>
<div class="info-item"> <div class="info-item">
<span class="label">GE Instruction:</span> <span class="label">GE Instruction:</span>
<span class="value">-</span> <span class="value">{{ case.ge_instruction }}</span>
</div> </div>
</div> </div>
</div> </div>

View file

@ -51,10 +51,16 @@
flex-direction: row; flex-direction: row;
align-items: start; align-items: start;
padding-bottom: 6px; padding-bottom: 6px;
cursor: pointer;
label { label {
padding-left: 6px; padding-left: 6px;
display: inline-block; display: block;
flex-grow: 1;
}
&:hover {
font-weight: 600;
} }
&.is-active { &.is-active {

View file

@ -1,19 +1,20 @@
import {Component, Input} from '@angular/core'; import {Component, Input} from '@angular/core';
import {NgClass} from '@angular/common';
@Component({ @Component({
selector: 'app-case-result', selector: 'app-case-result',
imports: [], imports: [
NgClass
],
templateUrl: './case-result.html', templateUrl: './case-result.html',
styleUrl: './case-result.scss' styleUrl: './case-result.scss'
}) })
export class CaseResult { export class CaseResult {
@Input() case: any = {}; @Input() case: any = {};
public activeTab: string = '' public activeTab: string = 'information'
selectCaseTab(activeTab: string) { selectCaseTab(activeTab: string) {
console.log('todo')
this.activeTab = activeTab this.activeTab = activeTab
} }
} }

View file

@ -12,7 +12,7 @@
New question New question
<i class="ri-chat-ai-line"></i> <i class="ri-chat-ai-line"></i>
</button> </button>
<button class="button"> <button class="button search-solutions">
Search solutions Search solutions
<i class="ri-search-2-line"></i> <i class="ri-search-2-line"></i>
</button> </button>
@ -21,8 +21,6 @@
@if (displayHeaderTabs) { @if (displayHeaderTabs) {
<div class="post-tabs"> <div class="post-tabs">
<div class="tabs"> <div class="tabs">
<div (click)="activeTab = 'summarized'" <div (click)="activeTab = 'summarized'"
[ngClass]="{ 'is-active' : activeTab == 'summarized' }" [ngClass]="{ 'is-active' : activeTab == 'summarized' }"
class="tab-item "> class="tab-item ">
@ -40,8 +38,6 @@
} @else { } @else {
<!-- original question--> <!-- original question-->
{{ appState.fromText }} {{ appState.fromText }}
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto cum dolor fugit illo laboriosam necessitatibus neque placeat quam ullam unde. Accusamus asperiores, aspernatur atque autem commodi, dicta doloremque doloribus enim error et illo ipsam labore laborum libero natus necessitatibus nemo officiis perferendis placeat, quo reprehenderit sapiente sint vitae voluptatem voluptatum?
} }
</div> </div>
</div> </div>
@ -53,10 +49,11 @@
</header> </header>
<main> <main>
<div class="row bot-talks"> <div class="row-bot-talks">
<sae-bot-talks <sae-bot-talks
[links]="[{}]" [appState]="appState"
[message]="'I found useful document(s) which can help to answer to this question ! Check if these documents are applied to similar cases'"></sae-bot-talks> [message]="'I found useful document(s) which can help to answer to this question ! Check if these documents are applied to similar cases'"
></sae-bot-talks>
</div> </div>
<div class="tabs-container"> <div class="tabs-container">
@ -64,13 +61,25 @@
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
<div class="tab-button similar is-active"> <div
(click)="displayedTab = 'similar-cases'"
[ngClass]="{ 'is-active' : displayedTab == 'similar-cases' }"
class="tab-button similar "
>
Similar cases Similar cases
</div> </div>
</div> </div>
<div class="column"> <div class="column">
<div class="tab-button tech-manual"> <div
Technical manual (click)="displayedTab = 'technical-manual'"
[ngClass]="{ 'is-active' : displayedTab == 'technical-manual' }"
class="tab-button tech-manual">
Associated documents
@if (appState.technicalManuals.length > 0) {
<span class="indicator"></span>
}
</div> </div>
</div> </div>
</div> </div>
@ -78,9 +87,12 @@
<div class="tabs-body"> <div class="tabs-body">
<div class="tabs-search"> <div class="tabs-search">
<i class="ri-search-2-line search"></i> <!-- <i class="ri-search-2-line search"></i>-->
<input class="search" placeholder="Use keywords for a precise research" type="text"> <input class="search" placeholder="Use keywords for a precise research" type="text">
<button (click)="filterResults()" class="search-submit">
<i class="ri-send-plane-fill"></i>
</button>
</div> </div>
<div class="tabs-results"> <div class="tabs-results">
{{ appState.similarCases.length }} cases found, 3 cases suggested {{ appState.similarCases.length }} cases found, 3 cases suggested
@ -89,15 +101,15 @@
@if (displayedTab == 'similar-cases') { @if (displayedTab == 'similar-cases') {
<div id="similar_cases_tab"> <div id="similar_cases_tab">
<div class="row"> <!-- <div class="row">-->
<div class="columns"> <!-- <div class="columns">-->
<div class="toggle-ai-suggestion column"> <!-- <div class="toggle-ai-suggestion column">-->
AI suggestions <!-- AI suggestions-->
<!-- applied--> <!-- &lt;!&ndash; applied&ndash;&gt;-->
<!-- disabled--> <!-- &lt;!&ndash; disabled&ndash;&gt;-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</div> <!-- </div>-->
<div class="row cases-results"> <div class="row cases-results">
<!-- boucle des résultats--> <!-- boucle des résultats-->
@ -114,6 +126,8 @@
<div id="technical_manuals_tab"> <div id="technical_manuals_tab">
<sae-bot-talks></sae-bot-talks> <sae-bot-talks></sae-bot-talks>
(les manuels ici)
</div> </div>
} }
</div> </div>

View file

@ -3,6 +3,16 @@
padding: 64px; padding: 64px;
.indicator {
background: green;
width: 8px;
height: 8px;
border-radius: 100%;
margin-left: 16px;
display: inline-block;
}
.title-box { .title-box {
color: #1B1D27; color: #1B1D27;
font-family: Barlow; font-family: Barlow;
@ -47,6 +57,12 @@
+ button { + button {
margin-left: 4px; margin-left: 4px;
} }
&.search-solutions {
border-radius: 10px;
color: white;
background: var(--Gradient, linear-gradient(77deg, #073A7C -4.23%, #1767AD 51.8%, #255B8E 87.72%));
}
} }
} }
@ -54,6 +70,7 @@
border-radius: 10px; border-radius: 10px;
background: #E3EAF1; background: #E3EAF1;
padding: 16px; padding: 16px;
margin-top: 16px;
.tabs { .tabs {
display: flex; display: flex;
@ -105,10 +122,19 @@
} }
} }
.row-bot-talks {
margin-top: 1rem;
margin-bottom: 1rem;
}
.toggle-ai-suggestion { .toggle-ai-suggestion {
color: #A86CFD; color: #A86CFD;
} }
.tabs-container {
margin-top: 32px;
}
.tabs-body { .tabs-body {
padding: 24px 20px; padding: 24px 20px;
gap: 32px; gap: 32px;
@ -126,9 +152,46 @@
line-height: 16px; line-height: 16px;
width: 100%; width: 100%;
min-width: 976px; min-width: 976px;
display: block; display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
padding: 16px; padding: 16px;
margin: 5px auto; margin: 5px auto;
.search {
}
input {
width: 976px;
padding: 16px;
border: 0;
border-radius: 8px 0 0 8px;
background: #FFF;
}
.search-submit {
display: inline-flex;
padding: 9px 14px;
align-items: center;
gap: 10px;
border: 0;
display: inline-flex;
padding: 9px 14px;
align-items: center;
gap: 10px;
color: white;
height: 51px;
border-radius: 0 8px 8px 0;
background: linear-gradient(145deg, #55BCEC -21.82%, #005AA2 82.35%);
i {
font-size: 1.5rem;
}
}
} }
.tabs-results { .tabs-results {
@ -175,10 +238,7 @@
#similar_cases_tab { #similar_cases_tab {
.cases-results { .cases-results {
display: flex; margin-top: 16px;
flex-direction: column;
justify-content: center;
align-items: center;
app-case-result { app-case-result {
margin-bottom: 8px; margin-bottom: 8px;

View file

@ -5,7 +5,6 @@ import {BottomNavigation} from '../../shared/navigation/bottom-navigation/bottom
import {StateInterface} from '../../redux/reducers'; import {StateInterface} from '../../redux/reducers';
import {Store} from '@ngrx/store'; import {Store} from '@ngrx/store';
import {NgClass} from '@angular/common'; import {NgClass} from '@angular/common';
import {MainButton} from 'sae-lib/buttons/main-button/main-button';
@Component({ @Component({
selector: 'app-similar-cases', selector: 'app-similar-cases',
@ -14,7 +13,7 @@ import {MainButton} from 'sae-lib/buttons/main-button/main-button';
CaseResult, CaseResult,
BottomNavigation, BottomNavigation,
NgClass, NgClass,
MainButton,
], ],
templateUrl: './similar-cases.html', templateUrl: './similar-cases.html',
styleUrl: './similar-cases.scss' styleUrl: './similar-cases.scss'
@ -33,4 +32,7 @@ export class SimilarCases {
}); });
} }
filterResults() {
}
} }

View file

@ -7,14 +7,21 @@ export const initialState: StateInterface = {
backendAPIRoot: "", backendAPIRoot: "",
demoMode: true, demoMode: true,
loading: false, loading: false,
// fromText: "le texte", fromText: "le texte original",
fromText: "", // fromText: "",
fromFile: "", fromFile: "",
toText: "", toText: "",
botMessage: "", botMessage: "",
dicaReference: "azhe ekhjfhkj e hkjzekjh",
dicaReferenceURL: "fgkj kjrjgik .pdf",
associatedDocuments: [{
label: 'un doc',
url: 'https://www.cipherbliss.com/un doc.pdf',
}],
filters: { filters: {
engineType: { engineType: {
availableList: [{ availableList: [{
label: 'choix 1', label: 'choix 1',
value: 'choix 1', value: 'choix 1',
}], }],
@ -47,6 +54,7 @@ export const initialState: StateInterface = {
similarCases: [ similarCases: [
{ {
id: 1, id: 1,
title: "7B / 72-21-02 / Booster blades stg 3 / LPC STG.3 BLADES DISLOCATION / 894773",
info: "Work stoppage case for CFM56-7B engine (ESN: 894773) at MTU Zhuhai. LPC Stage 3 blade platform dislocation detected during shop visit BSI. Maximum dislocation: 1.22mm axial, 0.63mm radial. Customer requests evaluation, acceptance criteria, or DICA for further action. No corresponding limits in AMM 72-00-00 BSI inspection chapter. ", info: "Work stoppage case for CFM56-7B engine (ESN: 894773) at MTU Zhuhai. LPC Stage 3 blade platform dislocation detected during shop visit BSI. Maximum dislocation: 1.22mm axial, 0.63mm radial. Customer requests evaluation, acceptance criteria, or DICA for further action. No corresponding limits in AMM 72-00-00 BSI inspection chapter. ",
date: "2023-01-01", date: "2023-01-01",
chrono_id: "CSC/CFM/2023-10/00446-A", chrono_id: "CSC/CFM/2023-10/00446-A",
@ -58,25 +66,29 @@ export const initialState: StateInterface = {
findings: "some findings were found here", findings: "some findings were found here",
DICA: "one dica stuff", DICA: "one dica stuff",
DICA_file: "dica_file.pdf", DICA_file: "dica_file.pdf",
suggested: true,
}, { }, {
id: 1, id: 2,
title: "21-02 / Booster blades stg 3 / HOP / 894773",
info: "Bhlah lahl hl lhalhadlh No corresponding limits in AMM 72-00-00 BSI inspection chapter. ", info: "Bhlah lahl hl lhalhadlh No corresponding limits in AMM 72-00-00 BSI inspection chapter. ",
date: "2024-07-08", date: "2024-07-08",
chrono_id: "CSC/CFM/1234-10/00446-A", chrono_id: "CSC/CFM/1234-10/00446-A",
responsable_team: "FO-CFM", responsable_team: "FO-ZERSEDGF",
ge_instruction: "-", ge_instruction: "sdifojsfdgjifkilj",
original_question: "blah abl a a jjdbblja bajdblad blab ladlb kaabl", original_question: "blah abl a a jjdbblja bajdblad blab ladlb kaabl",
answer_sent: "dfosdoo osg ogf ogf kgof gfkdmdm gfkdfmkl km opsg gfsok sfol lorem", answer_sent: "dfosdoo osg ogf ogf kgof gfkdmdm gfkdfmkl km opsg gfsok sfol lorem",
engine_part: "ABD cd CD DC DC ZFR ETT HETHG", engine_part: "ABD cd CD DC DC ZFR ETT HETHG",
findings: "some findings were found here", findings: "some findings were found here",
DICA: "one dica stuff", DICA: "one dica stuff",
DICA_file: "dica_file_2.pdf", DICA_file: "dica_file_2.pdf",
suggested: true,
}, { }, {
id: 1, id: 3,
title: "21-02 / Stuff happens / HOP / 132316548564",
info: "Work stoppage case for CFM56-7B engine (ESN: 894773) at MTU Zhuhai. LPC Stage 3 blade platform dislocation detected during shop visit BSI. Maximum dislocation: 1.22mm axial, 0.63mm radial. Customer requests evaluation, acceptance criteria, or DICA for further action. No corresponding limits in AMM 72-00-00 BSI inspection chapter. ", info: "Work stoppage case for CFM56-7B engine (ESN: 894773) at MTU Zhuhai. LPC Stage 3 blade platform dislocation detected during shop visit BSI. Maximum dislocation: 1.22mm axial, 0.63mm radial. Customer requests evaluation, acceptance criteria, or DICA for further action. No corresponding limits in AMM 72-00-00 BSI inspection chapter. ",
date: "2023-01-01", date: "2023-01-01",
chrono_id: "CSC/CFM/2023-10/00446-A", chrono_id: "CSC/CFM/2023-10/00446-A",
responsable_team: "FO-CFM", responsable_team: "FO-ABC",
ge_instruction: "-", ge_instruction: "-",
original_question: "blah abl a a jjdbblja bajdblad blab ladlb kaabl", original_question: "blah abl a a jjdbblja bajdblad blab ladlb kaabl",
answer_sent: "dfosdoo osg ogf ogf kgof gfkdmdm gfkdfmkl km opsg gfsok sfol lorem", answer_sent: "dfosdoo osg ogf ogf kgof gfkdmdm gfkdfmkl km opsg gfsok sfol lorem",
@ -84,11 +96,18 @@ export const initialState: StateInterface = {
findings: "some findings were found here", findings: "some findings were found here",
DICA: "one dica stuff", DICA: "one dica stuff",
DICA_file: "dica_file.pdf", DICA_file: "dica_file.pdf",
suggested: false,
}, },
], ],
searchInput: "", searchInput: "",
enableAiSuggestion: false, enableAiSuggestion: false,
technicalManuals: [], technicalManuals: [{
id: '123',
title: 'le manuel 123',
// content: 'blzdlbzdblzblzlb',
// url: 'example.com/url.pdf',
}],
resumeTitle: "Work stoppage case for CFM56-7B engine (ESN: 802379)...", resumeTitle: "Work stoppage case for CFM56-7B engine (ESN: 802379)...",
admin: { admin: {
pendingUsers: {}, pendingUsers: {},

View file

@ -71,17 +71,18 @@ export type SelectFilterType = {
} }
export type technicalManualType = { export type technicalManualType = {
id: string;
title: string; title: string;
information: string; // information: string;
originalQuestion: string; // originalQuestion: string;
answerSent: string; // answerSent: string;
caseSummary: string; // caseSummary: string;
enginePart: object; // enginePart: object;
findings: object; // findings: object;
date: object; // date: object;
chronoId: string; // chronoId: string;
teamInCharge: string; // teamInCharge: string;
partNumber: string; // partNumber: string;
} }
export type AppActions = export type AppActions =
| UpdateUserAction | UpdateUserAction
@ -106,6 +107,9 @@ export interface StateInterface {
fromText: string, fromText: string,
toText: string, toText: string,
botMessage: string, botMessage: string,
dicaReference: string,
dicaReferenceURL: string,
associatedDocuments: Array<any>,
filters: { filters: {
engineType: SelectFilterType, engineType: SelectFilterType,
findings: SelectFilterType, findings: SelectFilterType,

View file

@ -38,12 +38,11 @@
<!-- exit--> <!-- exit-->
<i class="ri-door-line"></i> <i class="ri-door-line"></i>
</a> </a>
@if (appState.user) { @if (user) {
<a class="navbar-item user-account-item"> <a class="navbar-item user-account-item">
<!-- user --> <!-- user -->
<i class="ri-user-2-fill"></i> <i class="ri-user-2-fill"></i>
{{ appState.user.login }} {{ user.login }}
</a> </a>
} }