fix(qa-report): version tag, /drafts redirect, audit filter complete, i18n cleanup
QA report v2.31.x batch:
- **VersionController.tag**: было 'none' (maven build на main без git tag) → UI
показывал «dev · 6077d4df». Helm передаёт image.tag через env
ORDINIS_BUILD_IMAGE_TAG, controller парсит «v2-31-2-e3c82775» → «v2.31.2».
Helm chart change в ordinis-infra (separate MR).
- **/drafts redirect** (BUG-003): пустой 404 «Not Found» plain text → теперь
static redirect на /my-drafts.
- **Audit action filter** (BUG-004): дропдаун содержал только 3 значения
(CREATE/UPDATE/CLOSE), но в таблице 11 типов (DRAFT_*, DEFINITION_*).
Frontend AuditAction enum + ACTIONS list синхронизированы с backend
AuditLogger/SchemaDraftService/DraftService.
- **i18n cleanup** (BUG-006/007/UX-005):
- myDrafts.description: «Все ваши submissions с pending/approved...» →
«Все ваши черновики с историей: ожидает рассмотрения, одобрен...»
- reviews.description: «Pending drafts от makers, ждут approve/reject» →
«Черновики от авторов, ждут одобрения или отклонения. Общая очередь...»
- reviews.queueTotal: «N pending drafts» → «N черновиков в очереди»
- myDrafts.col.reviewer: «Reviewer» → «Рецензент» (RU only)
- notifications chip labels: 'submit/approved/rejected' → 'отправлен/
одобрен/отклонён'
- audit.action.* expanded к 13 entries для каждого backend action
type, с понятными лейблами «Черновик одобрен» вместо «DRAFT_APPROVE»
- **WhatsNewModal markdown** (UX-006): тексты вроде «**График доставки
webhook'ов**» рендерились с буквальными звёздочками. Mini inline renderer
для **bold**, *italic*, `code` — без full markdown library.
This commit is contained in:
@@ -15,6 +15,7 @@ import { Route as ReviewsRouteImport } from './routes/reviews'
|
||||
import { Route as OutboxRouteImport } from './routes/outbox'
|
||||
import { Route as MyDraftsRouteImport } from './routes/my-drafts'
|
||||
import { Route as GraphRouteImport } from './routes/graph'
|
||||
import { Route as DraftsRouteImport } from './routes/drafts'
|
||||
import { Route as DictionariesRouteImport } from './routes/dictionaries'
|
||||
import { Route as AuditRouteImport } from './routes/audit'
|
||||
import { Route as IndexRouteImport } from './routes/index'
|
||||
@@ -54,6 +55,11 @@ const GraphRoute = GraphRouteImport.update({
|
||||
path: '/graph',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const DraftsRoute = DraftsRouteImport.update({
|
||||
id: '/drafts',
|
||||
path: '/drafts',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const DictionariesRoute = DictionariesRouteImport.update({
|
||||
id: '/dictionaries',
|
||||
path: '/dictionaries',
|
||||
@@ -100,6 +106,7 @@ export interface FileRoutesByFullPath {
|
||||
'/': typeof IndexRoute
|
||||
'/audit': typeof AuditRoute
|
||||
'/dictionaries': typeof DictionariesRouteWithChildren
|
||||
'/drafts': typeof DraftsRoute
|
||||
'/graph': typeof GraphRoute
|
||||
'/my-drafts': typeof MyDraftsRoute
|
||||
'/outbox': typeof OutboxRoute
|
||||
@@ -115,6 +122,7 @@ export interface FileRoutesByFullPath {
|
||||
export interface FileRoutesByTo {
|
||||
'/': typeof IndexRoute
|
||||
'/audit': typeof AuditRoute
|
||||
'/drafts': typeof DraftsRoute
|
||||
'/graph': typeof GraphRoute
|
||||
'/my-drafts': typeof MyDraftsRoute
|
||||
'/outbox': typeof OutboxRoute
|
||||
@@ -131,6 +139,7 @@ export interface FileRoutesById {
|
||||
'/': typeof IndexRoute
|
||||
'/audit': typeof AuditRoute
|
||||
'/dictionaries': typeof DictionariesRouteWithChildren
|
||||
'/drafts': typeof DraftsRoute
|
||||
'/graph': typeof GraphRoute
|
||||
'/my-drafts': typeof MyDraftsRoute
|
||||
'/outbox': typeof OutboxRoute
|
||||
@@ -149,6 +158,7 @@ export interface FileRouteTypes {
|
||||
| '/'
|
||||
| '/audit'
|
||||
| '/dictionaries'
|
||||
| '/drafts'
|
||||
| '/graph'
|
||||
| '/my-drafts'
|
||||
| '/outbox'
|
||||
@@ -164,6 +174,7 @@ export interface FileRouteTypes {
|
||||
to:
|
||||
| '/'
|
||||
| '/audit'
|
||||
| '/drafts'
|
||||
| '/graph'
|
||||
| '/my-drafts'
|
||||
| '/outbox'
|
||||
@@ -179,6 +190,7 @@ export interface FileRouteTypes {
|
||||
| '/'
|
||||
| '/audit'
|
||||
| '/dictionaries'
|
||||
| '/drafts'
|
||||
| '/graph'
|
||||
| '/my-drafts'
|
||||
| '/outbox'
|
||||
@@ -196,6 +208,7 @@ export interface RootRouteChildren {
|
||||
IndexRoute: typeof IndexRoute
|
||||
AuditRoute: typeof AuditRoute
|
||||
DictionariesRoute: typeof DictionariesRouteWithChildren
|
||||
DraftsRoute: typeof DraftsRoute
|
||||
GraphRoute: typeof GraphRoute
|
||||
MyDraftsRoute: typeof MyDraftsRoute
|
||||
OutboxRoute: typeof OutboxRoute
|
||||
@@ -249,6 +262,13 @@ declare module '@tanstack/react-router' {
|
||||
preLoaderRoute: typeof GraphRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/drafts': {
|
||||
id: '/drafts'
|
||||
path: '/drafts'
|
||||
fullPath: '/drafts'
|
||||
preLoaderRoute: typeof DraftsRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/dictionaries': {
|
||||
id: '/dictionaries'
|
||||
path: '/dictionaries'
|
||||
@@ -340,6 +360,7 @@ const rootRouteChildren: RootRouteChildren = {
|
||||
IndexRoute: IndexRoute,
|
||||
AuditRoute: AuditRoute,
|
||||
DictionariesRoute: DictionariesRouteWithChildren,
|
||||
DraftsRoute: DraftsRoute,
|
||||
GraphRoute: GraphRoute,
|
||||
MyDraftsRoute: MyDraftsRoute,
|
||||
OutboxRoute: OutboxRoute,
|
||||
|
||||
Reference in New Issue
Block a user