Compare commits
6 Commits
main
...
release-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07043786c8 | ||
|
|
f9393ed5d7 | ||
|
|
2ded5b8498 | ||
|
|
ef70deee14 | ||
|
|
d9d6ccd60f | ||
|
|
8d6aa6117c |
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,3 @@
|
||||
import type { RoleType } from "./types";
|
||||
|
||||
// LicenseStatusTypeの値を定数オブジェクトにする
|
||||
export const LICENSE_STATUS = {
|
||||
NORMAL: "Normal",
|
||||
@ -13,16 +11,3 @@ export const LICENSE_ALLOCATE_STATUS = {
|
||||
ALLOCATED: "Allocated",
|
||||
NOTALLOCATED: "Not Allocated",
|
||||
} as const;
|
||||
|
||||
// NoLicenseの表示
|
||||
export const NO_LICENSE = "No License" as const;
|
||||
|
||||
// ライセンスが割り当てられている場合の表示
|
||||
export const LICENSE_NORMAL = "License Assigned" as const;
|
||||
|
||||
// Roleの表示名
|
||||
export const ROLE_DISPLAY_NAME: Record<RoleType, string> = {
|
||||
author: "Author",
|
||||
typist: "Transcriptionist",
|
||||
none: "None",
|
||||
} as const;
|
||||
|
||||
@ -9,11 +9,7 @@ import {
|
||||
isLicenseStatusType,
|
||||
isRoleType,
|
||||
} from "./types";
|
||||
import {
|
||||
LICENSE_STATUS,
|
||||
LICENSE_ALLOCATE_STATUS,
|
||||
ROLE_DISPLAY_NAME,
|
||||
} from "./constants";
|
||||
import { LICENSE_STATUS, LICENSE_ALLOCATE_STATUS } from "./constants";
|
||||
|
||||
export const selectInputValidationErrors = (state: RootState) => {
|
||||
const { name, email, role, authorId, encryption, encryptionPassword } =
|
||||
@ -180,8 +176,7 @@ export const selectUserViews = (state: RootState): UserView[] => {
|
||||
prompt: convertedValues.prompt,
|
||||
encryption: convertedValues.encryption,
|
||||
authorId: convertedValues.authorId,
|
||||
// roleに応じて表示名を変更する
|
||||
role: ROLE_DISPLAY_NAME[role],
|
||||
role,
|
||||
licenseStatus: convertedLicenseStatus,
|
||||
expiration: convertedExpiration,
|
||||
remaining: convertedRemaining,
|
||||
|
||||
@ -439,8 +439,9 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
dispatch(listTypistsAsync());
|
||||
dispatch(listTypistGroupsAsync());
|
||||
|
||||
const url = `${import.meta.env.VITE_DESK_TOP_APP_SCHEME
|
||||
}:playback?audioId=${audioFileId}`;
|
||||
const url = `${
|
||||
import.meta.env.VITE_DESK_TOP_APP_SCHEME
|
||||
}:playback?audioId=${audioFileId}`;
|
||||
const a = document.createElement("a");
|
||||
a.href = url;
|
||||
document.body.appendChild(a);
|
||||
@ -922,6 +923,41 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
})();
|
||||
}, [dispatch]);
|
||||
|
||||
const getTaskStatus = (taskStatus: string): string => {
|
||||
switch (taskStatus) {
|
||||
case STATUS.UPLOADED:
|
||||
return t(getTranslationID("dictationPage.label.uploaded"));
|
||||
case STATUS.PENDING:
|
||||
return t(getTranslationID("dictationPage.label.pending"));
|
||||
case STATUS.FINISHED:
|
||||
return t(getTranslationID("dictationPage.label.finished"));
|
||||
case STATUS.INPROGRESS:
|
||||
return t(getTranslationID("dictationPage.label.inProgress"));
|
||||
case STATUS.BACKUP:
|
||||
return t(getTranslationID("dictationPage.label.backup"));
|
||||
default:
|
||||
return taskStatus;
|
||||
}
|
||||
};
|
||||
|
||||
const getTaskStatusIcon = (taskStatus: string): JSX.Element => {
|
||||
switch (taskStatus) {
|
||||
case STATUS.UPLOADED:
|
||||
return <img src={uploaded} alt="Uploaded" />;
|
||||
case STATUS.PENDING:
|
||||
return <img src={pending} alt="Pending" />;
|
||||
case STATUS.FINISHED:
|
||||
return <img src={finished} alt="Finished" />;
|
||||
case STATUS.INPROGRESS:
|
||||
return <img src={inprogress} alt="InProgress" />;
|
||||
case STATUS.BACKUP:
|
||||
return <img src={backup} alt="Backup" />;
|
||||
default:
|
||||
// 予期せぬステータスの場合、アイコンを表示しない
|
||||
return <span></span>;
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<BackupPopup isOpen={isBackupPopupOpen} onClose={onCloseBackupPopup} />
|
||||
@ -1098,8 +1134,9 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}
|
||||
<button
|
||||
type="submit"
|
||||
className={`${styles.menuLink} ${!isLoading ? styles.isActive : ""
|
||||
}`}
|
||||
className={`${styles.menuLink} ${
|
||||
!isLoading ? styles.isActive : ""
|
||||
}`}
|
||||
>
|
||||
<img
|
||||
src={searchIcon}
|
||||
@ -1158,7 +1195,9 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
</th>
|
||||
)}
|
||||
{displayColumn.Priority && (
|
||||
<th className={styles.clm3}>Priority</th>
|
||||
<th className={styles.clm3}>
|
||||
{t(getTranslationID("dictationPage.label.priority"))}
|
||||
</th>
|
||||
)}
|
||||
{displayColumn.Encryption && (
|
||||
<th className={styles.clm4}>
|
||||
@ -1537,7 +1576,7 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
<a
|
||||
className={
|
||||
x.status !== STATUS.UPLOADED ||
|
||||
!(isAdmin || isAuthor)
|
||||
!(isAdmin || isAuthor)
|
||||
? styles.isDisable
|
||||
: ""
|
||||
}
|
||||
@ -1558,7 +1597,7 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
className={
|
||||
(x.status === STATUS.INPROGRESS ||
|
||||
x.status === STATUS.PENDING) &&
|
||||
(isAdmin || isTypist)
|
||||
(isAdmin || isTypist)
|
||||
? ""
|
||||
: styles.isDisable
|
||||
}
|
||||
@ -1579,7 +1618,7 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
<a
|
||||
className={
|
||||
x.status === STATUS.FINISHED &&
|
||||
(isAdmin || isTypist)
|
||||
(isAdmin || isTypist)
|
||||
? ""
|
||||
: styles.isDisable
|
||||
}
|
||||
@ -1600,8 +1639,8 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
// タスクのステータスがInprogressまたはPending以外の場合、削除ボタンを活性化する
|
||||
className={
|
||||
isDeletableRole &&
|
||||
x.status !== STATUS.INPROGRESS &&
|
||||
x.status !== STATUS.PENDING
|
||||
x.status !== STATUS.INPROGRESS &&
|
||||
x.status !== STATUS.PENDING
|
||||
? ""
|
||||
: styles.isDisable
|
||||
}
|
||||
@ -1621,27 +1660,8 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
)}
|
||||
{displayColumn.Status && (
|
||||
<td className={styles.clm2}>
|
||||
{(() => {
|
||||
switch (x.status) {
|
||||
case STATUS.UPLOADED:
|
||||
return (
|
||||
<img src={uploaded} alt="Uploaded" />
|
||||
);
|
||||
case STATUS.PENDING:
|
||||
return <img src={pending} alt="Pending" />;
|
||||
case STATUS.FINISHED:
|
||||
return (
|
||||
<img src={finished} alt="Finished" />
|
||||
);
|
||||
case STATUS.INPROGRESS:
|
||||
return (
|
||||
<img src={inprogress} alt="InProgress" />
|
||||
);
|
||||
default:
|
||||
return <img src={backup} alt="Backup" />;
|
||||
}
|
||||
})()}
|
||||
{x.status}
|
||||
{getTaskStatusIcon(x.status)}
|
||||
{getTaskStatus(x.status)}
|
||||
</td>
|
||||
)}
|
||||
{displayColumn.Priority && (
|
||||
@ -1652,8 +1672,14 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
}}
|
||||
>
|
||||
{x.priority === "01"
|
||||
? PRIORITY.HIGH
|
||||
: PRIORITY.NORMAL}
|
||||
? t(
|
||||
getTranslationID("dictationPage.label.high")
|
||||
)
|
||||
: t(
|
||||
getTranslationID(
|
||||
"dictationPage.label.normal"
|
||||
)
|
||||
)}
|
||||
</td>
|
||||
)}
|
||||
{displayColumn.Encryption && (
|
||||
@ -1797,16 +1823,18 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
)}`}</span>
|
||||
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
|
||||
<a
|
||||
className={`${!isLoading && currentPage !== 1 ? styles.isActive : ""
|
||||
}`}
|
||||
className={`${
|
||||
!isLoading && currentPage !== 1 ? styles.isActive : ""
|
||||
}`}
|
||||
onClick={getFirstPage}
|
||||
>
|
||||
«
|
||||
</a>
|
||||
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
|
||||
<a
|
||||
className={`${!isLoading && currentPage !== 1 ? styles.isActive : ""
|
||||
}`}
|
||||
className={`${
|
||||
!isLoading && currentPage !== 1 ? styles.isActive : ""
|
||||
}`}
|
||||
onClick={getPrevPage}
|
||||
>
|
||||
‹
|
||||
@ -1814,20 +1842,22 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
{`${currentPage} of ${totalPage}`}
|
||||
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
|
||||
<a
|
||||
className={`${!isLoading && currentPage < totalPage
|
||||
className={`${
|
||||
!isLoading && currentPage < totalPage
|
||||
? styles.isActive
|
||||
: ""
|
||||
}`}
|
||||
}`}
|
||||
onClick={getNextPage}
|
||||
>
|
||||
›
|
||||
</a>
|
||||
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
|
||||
<a
|
||||
className={`${!isLoading && currentPage < totalPage
|
||||
className={`${
|
||||
!isLoading && currentPage < totalPage
|
||||
? styles.isActive
|
||||
: ""
|
||||
}`}
|
||||
}`}
|
||||
onClick={getLastPage}
|
||||
>
|
||||
»
|
||||
@ -1855,8 +1885,9 @@ const DictationPage: React.FC = (): JSX.Element => {
|
||||
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
|
||||
<a
|
||||
onClick={onClickBackup}
|
||||
className={`${styles.menuLink} ${isAdmin ? styles.isActive : ""
|
||||
}`}
|
||||
className={`${styles.menuLink} ${
|
||||
isAdmin ? styles.isActive : ""
|
||||
}`}
|
||||
>
|
||||
<img src={download} alt="" className={styles.menuIcon} />
|
||||
{t(getTranslationID("dictationPage.label.fileBackup"))}
|
||||
|
||||
@ -109,6 +109,23 @@ const TopPage: React.FC = (): JSX.Element => {
|
||||
</dd>
|
||||
</dl>
|
||||
</div>
|
||||
{/*タスク 4760: メンテナンス通知画面実装 の対応 2025年6月23日*/}
|
||||
<div
|
||||
style={{
|
||||
margin: "3rem auto 0",
|
||||
width: "500px",
|
||||
}}
|
||||
>
|
||||
<h4
|
||||
style={{ color: "red", fontWeight: "bold", fontSize: "1.5rem" }}
|
||||
>
|
||||
{t(getTranslationID("topPage.text.maintenanceNotificationTitle"))}
|
||||
</h4>
|
||||
<br />
|
||||
<p style={{ wordWrap: "break-word" }}>
|
||||
{t(getTranslationID("topPage.text.maintenanceNotification"))}
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<Footer />
|
||||
|
||||
@ -14,14 +14,10 @@ import {
|
||||
} from "features/user";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { getTranslationID } from "translation";
|
||||
import { LicenseStatusType, UserView } from "features/user/types";
|
||||
import {
|
||||
LICENSE_NORMAL,
|
||||
LICENSE_STATUS,
|
||||
NO_LICENSE,
|
||||
} from "features/user/constants";
|
||||
import { UserView } from "features/user/types";
|
||||
import { LICENSE_STATUS } from "features/user/constants";
|
||||
import { isApproveTier } from "features/auth";
|
||||
import { TIERS } from "components/auth/constants";
|
||||
import { TIERS, USER_ROLES } from "components/auth/constants";
|
||||
import {
|
||||
changeUpdateUser,
|
||||
changeLicenseAllocateUser,
|
||||
@ -165,6 +161,33 @@ const UserListPage: React.FC = (): JSX.Element => {
|
||||
const isTier5 =
|
||||
isApproveTier([TIERS.TIER5]) || delegationAccessToken !== null;
|
||||
|
||||
const getUserRole = (userRole: string): string => {
|
||||
switch (userRole) {
|
||||
case USER_ROLES.AUTHOR:
|
||||
return t(getTranslationID("userListPage.label.author"));
|
||||
case USER_ROLES.TYPIST:
|
||||
return t(getTranslationID("userListPage.label.transcriptionist"));
|
||||
default:
|
||||
return t(getTranslationID("userListPage.label.none"));
|
||||
}
|
||||
};
|
||||
|
||||
// ライセンスステータスに応じて、ライセンスステータスの文字列を返す
|
||||
const getLicenseStatus = (licenseStatus: string): string => {
|
||||
switch (licenseStatus) {
|
||||
case LICENSE_STATUS.NOLICENSE:
|
||||
return t(getTranslationID("userListPage.label.notAllocated"));
|
||||
case LICENSE_STATUS.ALERT:
|
||||
return t(getTranslationID("userListPage.label.alert"));
|
||||
case LICENSE_STATUS.RENEW:
|
||||
return t(getTranslationID("userListPage.label.renew"));
|
||||
case LICENSE_STATUS.NORMAL:
|
||||
return t(getTranslationID("userListPage.label.allocated"));
|
||||
default:
|
||||
return licenseStatus;
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<UserUpdatePopup
|
||||
@ -421,7 +444,7 @@ const UserListPage: React.FC = (): JSX.Element => {
|
||||
</ul>
|
||||
</td>
|
||||
<td> {user.name}</td>
|
||||
<td>{user.role}</td>
|
||||
<td>{getUserRole(user.role)}</td>
|
||||
<td>{user.authorId}</td>
|
||||
<td>{boolToElement(user.encryption)}</td>
|
||||
<td>{boolToElement(user.prompt)}</td>
|
||||
@ -524,15 +547,4 @@ const arrayToElement = (
|
||||
));
|
||||
};
|
||||
|
||||
// ライセンスステータスに応じて、ライセンスステータスの文字列を返す
|
||||
const getLicenseStatus = (licenseStatus: LicenseStatusType): string => {
|
||||
if (licenseStatus === LICENSE_STATUS.NOLICENSE) {
|
||||
return NO_LICENSE;
|
||||
}
|
||||
if (licenseStatus === LICENSE_STATUS.NORMAL) {
|
||||
return LICENSE_NORMAL;
|
||||
}
|
||||
return licenseStatus;
|
||||
};
|
||||
|
||||
export default UserListPage;
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
},
|
||||
"text": {
|
||||
"maintenanceNotificationTitle": "Hinweis auf geplante Wartungsarbeiten",
|
||||
"maintenanceNotification": "Aufgrund von Systemwartungsarbeiten wird ODMS Cloud ab dem 27. Januar, 6:00 Uhr UTC-Zeit, etwa eine Stunde lang nicht verfügbar sein. Wir entschuldigen uns für etwaige Unannehmlichkeiten, die während der Wartung entstanden sind."
|
||||
"maintenanceNotification": "Aufgrund eines Systemupdates ist ODMS Cloud ab dem 30. Juni, 6:00 Uhr UTC-Zeit, etwa eine Stunde lang nicht verfügbar sein. Wir entschuldigen uns für etwaige Unannehmlichkeiten, die während der Wartung entstanden sind."
|
||||
}
|
||||
},
|
||||
"signupPage": {
|
||||
@ -197,7 +197,11 @@
|
||||
"promptLabel": "Eingabeaufforderung",
|
||||
"addUsers": "Benutzer hinzufügen",
|
||||
"forceEmailVerification": "E-Mail-Verifizierung erzwingen",
|
||||
"search": "Suche"
|
||||
"search": "Suche",
|
||||
"allocated": "Lizenz zugewiesen",
|
||||
"notAllocated": "Keine Liszenz",
|
||||
"alert": "Alarm",
|
||||
"renew": "Erneuern"
|
||||
},
|
||||
"text": {
|
||||
"downloadExplain": "Bitte laden Sie die CSV-Beispieldatei herunter und geben Sie die erforderlichen Informationen gemäß den folgenden Regeln ein.",
|
||||
@ -318,7 +322,9 @@
|
||||
"rawFileName": "Ursprünglicher Dateiname",
|
||||
"fileNameSave": "Führen Sie eine Dateiumbenennung durch",
|
||||
"reopenDictation": "Status auf „Ausstehend“ ändern",
|
||||
"search": "Suche"
|
||||
"search": "Suche",
|
||||
"high": "Hoch",
|
||||
"normal": "Normal"
|
||||
}
|
||||
},
|
||||
"cardLicenseIssuePopupPage": {
|
||||
@ -691,4 +697,4 @@
|
||||
"title": "Konto durchsuchen"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
},
|
||||
"text": {
|
||||
"maintenanceNotificationTitle": "Notice of scheduled maintenance",
|
||||
"maintenanceNotification": "Due to system maintenance, ODMS Cloud will be unavailable for approximately one hour starting from January 27th, 6:00AM UTC time. We apologize for any inconvenience caused during the maintenance."
|
||||
"maintenanceNotification": "Due to system update, ODMS Cloud will be unavailable for approximately one hour starting from June 30th, 6:00 AM UTC time. We apologize for any inconvenience caused during the maintenance."
|
||||
}
|
||||
},
|
||||
"signupPage": {
|
||||
@ -197,7 +197,11 @@
|
||||
"promptLabel": "Prompt",
|
||||
"addUsers": "Add User",
|
||||
"forceEmailVerification": "Force Email Verification",
|
||||
"search": "Search"
|
||||
"search": "Search",
|
||||
"allocated": "License Assigned",
|
||||
"notAllocated": "No License",
|
||||
"alert": "Alert",
|
||||
"renew": "Renew"
|
||||
},
|
||||
"text": {
|
||||
"downloadExplain": "Please download the sample CSV file and apply the required information according to the rules below.",
|
||||
@ -318,7 +322,9 @@
|
||||
"rawFileName": "Original File Name",
|
||||
"fileNameSave": "Execute file rename",
|
||||
"reopenDictation": "Change status to Pending",
|
||||
"search": "Search"
|
||||
"search": "Search",
|
||||
"high": "High",
|
||||
"normal": "Normal"
|
||||
}
|
||||
},
|
||||
"cardLicenseIssuePopupPage": {
|
||||
@ -691,4 +697,4 @@
|
||||
"title": "Search Account"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
},
|
||||
"text": {
|
||||
"maintenanceNotificationTitle": "Aviso de mantenimiento programado",
|
||||
"maintenanceNotification": "Debido al mantenimiento del sistema, ODMS Cloud no estará disponible durante aproximadamente una hora a partir del 27 de enero a las 6:00 am, hora UTC. Pedimos disculpas por cualquier inconveniente causado durante el mantenimiento."
|
||||
"maintenanceNotification": "Debido a una actualización del sistema, ODMS Cloud no estará disponible durante aproximadamente una hora a partir del 30 de junio a las 6:00 am, hora UTC. Pedimos disculpas por cualquier inconveniente causado durante el mantenimiento."
|
||||
}
|
||||
},
|
||||
"signupPage": {
|
||||
@ -197,7 +197,11 @@
|
||||
"promptLabel": "Solicitar",
|
||||
"addUsers": "Agregar usuario",
|
||||
"forceEmailVerification": "Verificación forzada de correo electrónico",
|
||||
"search": "Búsqueda"
|
||||
"search": "Búsqueda",
|
||||
"allocated": "Licencia asignada",
|
||||
"notAllocated": "Sin Lisencia",
|
||||
"alert": "Alerta",
|
||||
"renew": "Renovar"
|
||||
},
|
||||
"text": {
|
||||
"downloadExplain": "Descargue el archivo CSV de muestra y aplique la información requerida de acuerdo con las reglas siguientes.",
|
||||
@ -318,7 +322,9 @@
|
||||
"rawFileName": "Nombre de archivo original",
|
||||
"fileNameSave": "Ejecutar cambio de nombre de archivo",
|
||||
"reopenDictation": "Cambiar el estado a Pendiente",
|
||||
"search": "Búsqueda"
|
||||
"search": "Búsqueda",
|
||||
"high": "Alto",
|
||||
"normal": "Normal"
|
||||
}
|
||||
},
|
||||
"cardLicenseIssuePopupPage": {
|
||||
@ -691,4 +697,4 @@
|
||||
"title": "Buscar cuenta"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
},
|
||||
"text": {
|
||||
"maintenanceNotificationTitle": "Avis de maintenance programmée",
|
||||
"maintenanceNotification": "En raison de la maintenance du système, ODMS Cloud sera indisponible pendant environ une heure à partir du 27 janvier à 6h00, heure UTC. Nous nous excusons pour tout inconvénient causé lors de la maintenance."
|
||||
"maintenanceNotification": "En raison d'une mise à jour du système, ODMS Cloud sera indisponible pendant environ une heure à partir du 30 juin à 6 h 00, heure UTC. Nous nous excusons pour tout inconvénient causé lors de la maintenance."
|
||||
}
|
||||
},
|
||||
"signupPage": {
|
||||
@ -197,7 +197,11 @@
|
||||
"promptLabel": "Invite",
|
||||
"addUsers": "Ajouter un utilisateur",
|
||||
"forceEmailVerification": "Forcer la vérification de l'e-mail",
|
||||
"search": "Recherche"
|
||||
"search": "Recherche",
|
||||
"allocated": "Licence attribuée",
|
||||
"notAllocated": "Pas de Lisence",
|
||||
"alert": "Alerte",
|
||||
"renew": "Renouveler"
|
||||
},
|
||||
"text": {
|
||||
"downloadExplain": "Veuillez télécharger l'exemple de fichier CSV et appliquer les informations requises conformément aux règles ci-dessous.",
|
||||
@ -318,7 +322,9 @@
|
||||
"rawFileName": "Nom du fichier d'origine",
|
||||
"fileNameSave": "Exécuter le changement de nom du fichier",
|
||||
"reopenDictation": "Changer le statut en Suspendu",
|
||||
"search": "Recherche"
|
||||
"search": "Recherche",
|
||||
"high": "Haut",
|
||||
"normal": "Normale"
|
||||
}
|
||||
},
|
||||
"cardLicenseIssuePopupPage": {
|
||||
@ -654,7 +660,7 @@
|
||||
"label": {
|
||||
"title": "Paramètre de suppression automatique de fichiers",
|
||||
"autoFileDeleteCheck": "Suppression automatique des fichiers",
|
||||
"daysAnnotation": "Número de días desde que finalizó la transcripción para eliminar los archivos.",
|
||||
"daysAnnotation": "Nombre de jours à compter de la fin de la transcription pour supprimer les fichiers.",
|
||||
"days": "Jours",
|
||||
"saveButton": "Enregistrer les paramètres",
|
||||
"daysValidationError": "Veuillez saisir un nombre compris entre 1 et 999 pour les jours."
|
||||
@ -691,4 +697,4 @@
|
||||
"title": "Rechercher un compte"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ export class AudioFile {
|
||||
@Column()
|
||||
started_at: Date;
|
||||
@Column({ type: "time" })
|
||||
duration: string;
|
||||
duration: number;
|
||||
@Column()
|
||||
finished_at: Date;
|
||||
@Column()
|
||||
|
||||
@ -564,7 +564,7 @@ export const makeTestTask = async (
|
||||
author_id: "test_author",
|
||||
work_type_id: "test_work_type",
|
||||
started_at: new Date(),
|
||||
duration: "00:00:00",
|
||||
duration: 0,
|
||||
finished_at: new Date(),
|
||||
uploaded_at: new Date(),
|
||||
file_size: 1024,
|
||||
|
||||
@ -1282,7 +1282,7 @@ describe("deleteRecords | 削除対象タスク等を削除できる", () => {
|
||||
author_id: "test_author",
|
||||
work_type_id: "test_work_type",
|
||||
started_at: new Date(),
|
||||
duration: "00:00:00",
|
||||
duration: 0,
|
||||
finished_at: new Date(),
|
||||
uploaded_at: new Date(),
|
||||
file_size: 1024,
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
-- +migrate Up
|
||||
ALTER TABLE `audio_files`
|
||||
MODIFY COLUMN `duration` BIGINT UNSIGNED NOT NULL COMMENT '録音時間';
|
||||
|
||||
-- +migrate Down
|
||||
ALTER TABLE `audio_files`
|
||||
MODIFY COLUMN `duration` VARCHAR(255) NOT NULL COMMENT '録音時間';
|
||||
@ -247,7 +247,7 @@ export const createAudioFile = async (
|
||||
author_id: 'author_id',
|
||||
work_type_id: '',
|
||||
started_at: new Date(),
|
||||
duration: '100000',
|
||||
duration: 100000,
|
||||
finished_at: new Date(),
|
||||
uploaded_at: new Date(),
|
||||
file_size: fileSize,
|
||||
|
||||
@ -351,7 +351,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -457,7 +457,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -584,7 +584,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
'XXXXXX', // 存在しないAuthorIDを指定
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -644,7 +644,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '', // 音声ファイルの情報には、録音者のAuthorIDが入る
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -723,7 +723,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '', // 音声ファイルの情報には、録音者のAuthorIDが入る
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -832,7 +832,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '', // 音声ファイルの情報には、録音者のAuthorIDが入る
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -922,7 +922,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '', // 音声ファイルの情報には、録音者のAuthorIDが入る
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1011,7 +1011,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '', // 音声ファイルの情報には、録音者のAuthorIDが入る
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1105,7 +1105,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '', // 音声ファイルの情報には、録音者のAuthorIDが入る
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1148,7 +1148,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'yyyy-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1192,7 +1192,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1233,7 +1233,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
'authorAuthorId',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1284,7 +1284,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1395,7 +1395,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1514,7 +1514,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1643,7 +1643,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1772,7 +1772,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -1891,7 +1891,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -2038,7 +2038,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -2188,7 +2188,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
@ -2338,7 +2338,7 @@ describe('タスク作成から自動ルーティング(DB使用)', () => {
|
||||
'http://blob/url/file.zip',
|
||||
authorAuthorId ?? '',
|
||||
'file.zip',
|
||||
'11:22:33',
|
||||
"100000",
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
'2023-05-26T11:22:33.444',
|
||||
|
||||
@ -69,7 +69,7 @@ export const createTask = async (
|
||||
author_id: author_id ?? 'DEFAULT_ID',
|
||||
work_type_id: 'work_type_id',
|
||||
started_at: new Date(),
|
||||
duration: '100000',
|
||||
duration: 100000,
|
||||
finished_at: new Date(),
|
||||
uploaded_at: new Date(),
|
||||
file_size: fileSize ?? 10000,
|
||||
|
||||
@ -264,7 +264,7 @@ describe('TasksService', () => {
|
||||
author_id: 'AUTHOR',
|
||||
work_type_id: 'WorkType',
|
||||
started_at: new Date('2023-01-01T01:01:01.000'),
|
||||
duration: '123000',
|
||||
duration: 123000,
|
||||
finished_at: new Date('2023-01-01T01:01:01.000'),
|
||||
uploaded_at: new Date('2023-01-01T01:01:01.000'),
|
||||
file_size: 123000,
|
||||
|
||||
@ -465,7 +465,7 @@ const defaultTasksRepositoryMockValue: {
|
||||
author_id: 'AUTHOR',
|
||||
work_type_id: 'WorkType',
|
||||
started_at: new Date('2023-01-01T01:01:01.000Z'),
|
||||
duration: '123000',
|
||||
duration: 123000,
|
||||
finished_at: new Date('2023-01-01T01:01:01.000Z'),
|
||||
uploaded_at: new Date('2023-01-01T01:01:01.000Z'),
|
||||
file_size: 123000,
|
||||
|
||||
@ -127,7 +127,7 @@ export const createTask = async (
|
||||
author_id: author_id,
|
||||
work_type_id: work_type_id,
|
||||
started_at: new Date(),
|
||||
duration: '100000',
|
||||
duration: 100000,
|
||||
finished_at: new Date(),
|
||||
uploaded_at: new Date(),
|
||||
file_size: 10000,
|
||||
@ -183,7 +183,7 @@ export const createAudioFile = async (
|
||||
author_id: author_id,
|
||||
work_type_id: work_type_id,
|
||||
started_at: new Date(),
|
||||
duration: '100000',
|
||||
duration: 100000,
|
||||
finished_at: new Date(),
|
||||
uploaded_at: new Date(),
|
||||
file_size: 10000,
|
||||
|
||||
@ -60,7 +60,7 @@ const createTask = (
|
||||
authorId: file.author_id,
|
||||
workType: file.work_type_id,
|
||||
audioCreatedDate: file.started_at.toISOString(),
|
||||
audioDuration: file.duration,
|
||||
audioDuration: file.duration.toString(),
|
||||
audioFinishedDate: file.finished_at.toISOString(),
|
||||
audioUploadedDate: file.uploaded_at.toISOString(),
|
||||
audioFormat: file.audio_format,
|
||||
|
||||
@ -23,7 +23,7 @@ export class AudioFile {
|
||||
@Column()
|
||||
started_at: Date;
|
||||
@Column({ type: 'time' })
|
||||
duration: string;
|
||||
duration: number;
|
||||
@Column()
|
||||
finished_at: Date;
|
||||
@Column()
|
||||
|
||||
@ -1028,7 +1028,8 @@ export class TasksRepositoryService {
|
||||
audioFile.author_id = author_id;
|
||||
audioFile.work_type_id = work_type_id;
|
||||
audioFile.started_at = started_at;
|
||||
audioFile.duration = duration;
|
||||
// 数値型のdurationカラムにinsertするため文字列から数値型に変換する
|
||||
audioFile.duration = parseInt(duration, 10);
|
||||
audioFile.finished_at = finished_at;
|
||||
audioFile.uploaded_at = uploaded_at;
|
||||
audioFile.file_size = file_size;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user