@freighttech/terminal-tracking 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +121 -0
- package/dist/generated/entities/terminal_config/index.js +53 -0
- package/dist/generated/entities/terminal_config/index.js.map +7 -0
- package/dist/generated/entities/terminal_event/index.js +59 -0
- package/dist/generated/entities/terminal_event/index.js.map +7 -0
- package/dist/generated/entities/terminal_tracking_job/index.js +37 -0
- package/dist/generated/entities/terminal_tracking_job/index.js.map +7 -0
- package/dist/generated/entities/terminal_vessel_visit/index.js +41 -0
- package/dist/generated/entities/terminal_vessel_visit/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +26 -0
- package/dist/generated/entities.ids.generated.js.map +7 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +7 -0
- package/dist/modules/terminal_tracking/acl.js +14 -0
- package/dist/modules/terminal_tracking/acl.js.map +7 -0
- package/dist/modules/terminal_tracking/api/openapi.js +27 -0
- package/dist/modules/terminal_tracking/api/openapi.js.map +7 -0
- package/dist/modules/terminal_tracking/api/terminal-configs/route.js +140 -0
- package/dist/modules/terminal_tracking/api/terminal-configs/route.js.map +7 -0
- package/dist/modules/terminal_tracking/api/terminal-configs/test/route.js +58 -0
- package/dist/modules/terminal_tracking/api/terminal-configs/test/route.js.map +7 -0
- package/dist/modules/terminal_tracking/api/tracking-jobs/details/route.js +109 -0
- package/dist/modules/terminal_tracking/api/tracking-jobs/details/route.js.map +7 -0
- package/dist/modules/terminal_tracking/api/tracking-jobs/poll/route.js +58 -0
- package/dist/modules/terminal_tracking/api/tracking-jobs/poll/route.js.map +7 -0
- package/dist/modules/terminal_tracking/api/tracking-jobs/route.js +189 -0
- package/dist/modules/terminal_tracking/api/tracking-jobs/route.js.map +7 -0
- package/dist/modules/terminal_tracking/api/utils.js +12 -0
- package/dist/modules/terminal_tracking/api/utils.js.map +7 -0
- package/dist/modules/terminal_tracking/api/vessel-visits/route.js +83 -0
- package/dist/modules/terminal_tracking/api/vessel-visits/route.js.map +7 -0
- package/dist/modules/terminal_tracking/backend/terminal-configs/page.js +669 -0
- package/dist/modules/terminal_tracking/backend/terminal-configs/page.js.map +7 -0
- package/dist/modules/terminal_tracking/backend/terminal-configs/page.meta.js +19 -0
- package/dist/modules/terminal_tracking/backend/terminal-configs/page.meta.js.map +7 -0
- package/dist/modules/terminal_tracking/backend/terminal-containers/page.js +275 -0
- package/dist/modules/terminal_tracking/backend/terminal-containers/page.js.map +7 -0
- package/dist/modules/terminal_tracking/backend/terminal-containers/page.meta.js +19 -0
- package/dist/modules/terminal_tracking/backend/terminal-containers/page.meta.js.map +7 -0
- package/dist/modules/terminal_tracking/ce.js +35 -0
- package/dist/modules/terminal_tracking/ce.js.map +7 -0
- package/dist/modules/terminal_tracking/commands/index.js +4 -0
- package/dist/modules/terminal_tracking/commands/index.js.map +7 -0
- package/dist/modules/terminal_tracking/commands/terminal-configs.js +107 -0
- package/dist/modules/terminal_tracking/commands/terminal-configs.js.map +7 -0
- package/dist/modules/terminal_tracking/commands/terminal-tracking.js +27 -0
- package/dist/modules/terminal_tracking/commands/terminal-tracking.js.map +7 -0
- package/dist/modules/terminal_tracking/commands/tracking-jobs.js +56 -0
- package/dist/modules/terminal_tracking/commands/tracking-jobs.js.map +7 -0
- package/dist/modules/terminal_tracking/components/ContainerDetailsDrawer.js +371 -0
- package/dist/modules/terminal_tracking/components/ContainerDetailsDrawer.js.map +7 -0
- package/dist/modules/terminal_tracking/data/entities.js +337 -0
- package/dist/modules/terminal_tracking/data/entities.js.map +7 -0
- package/dist/modules/terminal_tracking/data/validators.js +98 -0
- package/dist/modules/terminal_tracking/data/validators.js.map +7 -0
- package/dist/modules/terminal_tracking/di.js +39 -0
- package/dist/modules/terminal_tracking/di.js.map +7 -0
- package/dist/modules/terminal_tracking/encryption.js +14 -0
- package/dist/modules/terminal_tracking/encryption.js.map +7 -0
- package/dist/modules/terminal_tracking/events.js +45 -0
- package/dist/modules/terminal_tracking/events.js.map +7 -0
- package/dist/modules/terminal_tracking/i18n/de.json +175 -0
- package/dist/modules/terminal_tracking/i18n/en.json +178 -0
- package/dist/modules/terminal_tracking/i18n/es.json +175 -0
- package/dist/modules/terminal_tracking/i18n/pl.json +206 -0
- package/dist/modules/terminal_tracking/index.js +15 -0
- package/dist/modules/terminal_tracking/index.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/bct/adapter.js +164 -0
- package/dist/modules/terminal_tracking/lib/adapters/bct/adapter.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/bct/auth/basic.js +23 -0
- package/dist/modules/terminal_tracking/lib/adapters/bct/auth/basic.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/bct/incos-semantics.js +146 -0
- package/dist/modules/terminal_tracking/lib/adapters/bct/incos-semantics.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/bct/types.js +1 -0
- package/dist/modules/terminal_tracking/lib/adapters/bct/types.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/gct/adapter.js +106 -0
- package/dist/modules/terminal_tracking/lib/adapters/gct/adapter.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/gct/auth/token.js +120 -0
- package/dist/modules/terminal_tracking/lib/adapters/gct/auth/token.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/gct/gct-semantics.js +77 -0
- package/dist/modules/terminal_tracking/lib/adapters/gct/gct-semantics.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/gct/types.js +1 -0
- package/dist/modules/terminal_tracking/lib/adapters/gct/types.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/index.js +12 -0
- package/dist/modules/terminal_tracking/lib/adapters/index.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/adapter.js +121 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/adapter.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/auth/ropc.js +81 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/auth/ropc.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/http.js +66 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/http.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/n4-semantics.js +95 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/n4-semantics.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/parsers/data-table.js +70 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/parsers/data-table.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/parsers/vessel-data-table.js +44 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/parsers/vessel-data-table.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/proxy.js +15 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/proxy.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/types.js +1 -0
- package/dist/modules/terminal_tracking/lib/adapters/n4/types.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/adapters/zoned-time.js +27 -0
- package/dist/modules/terminal_tracking/lib/adapters/zoned-time.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/availability.js +40 -0
- package/dist/modules/terminal_tracking/lib/availability.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/ensure-schedule.js +51 -0
- package/dist/modules/terminal_tracking/lib/ensure-schedule.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/holds.js +240 -0
- package/dist/modules/terminal_tracking/lib/holds.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/logger.js +19 -0
- package/dist/modules/terminal_tracking/lib/logger.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/rate-limiter.js +30 -0
- package/dist/modules/terminal_tracking/lib/rate-limiter.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/stops.js +48 -0
- package/dist/modules/terminal_tracking/lib/stops.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/terminal-adapter.js +1 -0
- package/dist/modules/terminal_tracking/lib/terminal-adapter.js.map +7 -0
- package/dist/modules/terminal_tracking/lib/totp.js +41 -0
- package/dist/modules/terminal_tracking/lib/totp.js.map +7 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260609120000_terminal_tracking.js +101 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260609120000_terminal_tracking.js.map +7 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260610120000_terminal_vessel_visits.js +39 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260610120000_terminal_vessel_visits.js.map +7 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260611120000_terminal_config_proxy.js +13 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260611120000_terminal_config_proxy.js.map +7 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260707120000_terminal_job_availability_markers.js +15 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260707120000_terminal_job_availability_markers.js.map +7 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260805120000_terminal_event_loaded_at.js +13 -0
- package/dist/modules/terminal_tracking/migrations/Migration20260805120000_terminal_event_loaded_at.js.map +7 -0
- package/dist/modules/terminal_tracking/services/terminalMatcherService.js +61 -0
- package/dist/modules/terminal_tracking/services/terminalMatcherService.js.map +7 -0
- package/dist/modules/terminal_tracking/services/terminalRegistry.js +24 -0
- package/dist/modules/terminal_tracking/services/terminalRegistry.js.map +7 -0
- package/dist/modules/terminal_tracking/services/terminalTrackingService.js +687 -0
- package/dist/modules/terminal_tracking/services/terminalTrackingService.js.map +7 -0
- package/dist/modules/terminal_tracking/setup.js +23 -0
- package/dist/modules/terminal_tracking/setup.js.map +7 -0
- package/dist/modules/terminal_tracking/subscribers/terminal-tracking-job-initial-poll.js +22 -0
- package/dist/modules/terminal_tracking/subscribers/terminal-tracking-job-initial-poll.js.map +7 -0
- package/generated/entities/terminal_config/index.ts +36 -0
- package/generated/entities/terminal_event/index.ts +39 -0
- package/generated/entities/terminal_tracking_job/index.ts +28 -0
- package/generated/entities/terminal_vessel_visit/index.ts +30 -0
- package/generated/entities.ids.generated.ts +52 -0
- package/package.json +80 -0
- package/src/index.ts +44 -0
- package/src/modules/terminal_tracking/__integration__/TC-TRACK-301-gct-config-test-connection.spec.ts +66 -0
- package/src/modules/terminal_tracking/__integration__/TC-TRACK-317-bct-config-test-connection.spec.ts +68 -0
- package/src/modules/terminal_tracking/__integration__/helpers.ts +148 -0
- package/src/modules/terminal_tracking/__integration__/meta.ts +4 -0
- package/src/modules/terminal_tracking/acl.ts +10 -0
- package/src/modules/terminal_tracking/api/openapi.ts +28 -0
- package/src/modules/terminal_tracking/api/terminal-configs/route.ts +140 -0
- package/src/modules/terminal_tracking/api/terminal-configs/test/route.ts +64 -0
- package/src/modules/terminal_tracking/api/tracking-jobs/details/route.ts +116 -0
- package/src/modules/terminal_tracking/api/tracking-jobs/poll/route.ts +64 -0
- package/src/modules/terminal_tracking/api/tracking-jobs/route.ts +243 -0
- package/src/modules/terminal_tracking/api/utils.ts +10 -0
- package/src/modules/terminal_tracking/api/vessel-visits/route.ts +95 -0
- package/src/modules/terminal_tracking/backend/terminal-configs/page.meta.ts +16 -0
- package/src/modules/terminal_tracking/backend/terminal-configs/page.tsx +728 -0
- package/src/modules/terminal_tracking/backend/terminal-containers/page.meta.ts +16 -0
- package/src/modules/terminal_tracking/backend/terminal-containers/page.tsx +328 -0
- package/src/modules/terminal_tracking/ce.ts +31 -0
- package/src/modules/terminal_tracking/commands/index.ts +3 -0
- package/src/modules/terminal_tracking/commands/terminal-configs.ts +132 -0
- package/src/modules/terminal_tracking/commands/terminal-tracking.ts +34 -0
- package/src/modules/terminal_tracking/commands/tracking-jobs.ts +69 -0
- package/src/modules/terminal_tracking/components/ContainerDetailsDrawer.tsx +540 -0
- package/src/modules/terminal_tracking/data/entities.ts +386 -0
- package/src/modules/terminal_tracking/data/validators.ts +113 -0
- package/src/modules/terminal_tracking/di.ts +46 -0
- package/src/modules/terminal_tracking/encryption.ts +12 -0
- package/src/modules/terminal_tracking/events.ts +48 -0
- package/src/modules/terminal_tracking/i18n/de.json +175 -0
- package/src/modules/terminal_tracking/i18n/en.json +178 -0
- package/src/modules/terminal_tracking/i18n/es.json +175 -0
- package/src/modules/terminal_tracking/i18n/pl.json +206 -0
- package/src/modules/terminal_tracking/index.ts +13 -0
- package/src/modules/terminal_tracking/lib/__tests__/availability.test.ts +136 -0
- package/src/modules/terminal_tracking/lib/__tests__/ensure-schedule.test.ts +67 -0
- package/src/modules/terminal_tracking/lib/__tests__/holds.test.ts +73 -0
- package/src/modules/terminal_tracking/lib/__tests__/stops.test.ts +80 -0
- package/src/modules/terminal_tracking/lib/__tests__/totp.test.ts +38 -0
- package/src/modules/terminal_tracking/lib/adapters/bct/__tests__/adapter.test.ts +196 -0
- package/src/modules/terminal_tracking/lib/adapters/bct/__tests__/incos-semantics.test.ts +303 -0
- package/src/modules/terminal_tracking/lib/adapters/bct/adapter.ts +219 -0
- package/src/modules/terminal_tracking/lib/adapters/bct/auth/basic.ts +34 -0
- package/src/modules/terminal_tracking/lib/adapters/bct/incos-semantics.ts +291 -0
- package/src/modules/terminal_tracking/lib/adapters/bct/types.ts +113 -0
- package/src/modules/terminal_tracking/lib/adapters/gct/__tests__/adapter.test.ts +238 -0
- package/src/modules/terminal_tracking/lib/adapters/gct/__tests__/gct-semantics.test.ts +133 -0
- package/src/modules/terminal_tracking/lib/adapters/gct/adapter.ts +152 -0
- package/src/modules/terminal_tracking/lib/adapters/gct/auth/token.ts +219 -0
- package/src/modules/terminal_tracking/lib/adapters/gct/gct-semantics.ts +136 -0
- package/src/modules/terminal_tracking/lib/adapters/gct/types.ts +58 -0
- package/src/modules/terminal_tracking/lib/adapters/index.ts +16 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/__tests__/adapter-proxy.test.ts +69 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/__tests__/data-table.test.ts +179 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/__tests__/http.test.ts +98 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/__tests__/n4-semantics.test.ts +140 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/__tests__/proxy.test.ts +19 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/__tests__/vessel-data-table.test.ts +67 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/adapter.ts +163 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/auth/ropc.ts +104 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/http.ts +127 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/n4-semantics.ts +156 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/parsers/data-table.ts +102 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/parsers/vessel-data-table.ts +60 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/proxy.ts +24 -0
- package/src/modules/terminal_tracking/lib/adapters/n4/types.ts +56 -0
- package/src/modules/terminal_tracking/lib/adapters/zoned-time.ts +65 -0
- package/src/modules/terminal_tracking/lib/availability.ts +119 -0
- package/src/modules/terminal_tracking/lib/ensure-schedule.ts +83 -0
- package/src/modules/terminal_tracking/lib/holds.ts +344 -0
- package/src/modules/terminal_tracking/lib/logger.ts +21 -0
- package/src/modules/terminal_tracking/lib/rate-limiter.ts +52 -0
- package/src/modules/terminal_tracking/lib/stops.ts +124 -0
- package/src/modules/terminal_tracking/lib/terminal-adapter.ts +136 -0
- package/src/modules/terminal_tracking/lib/totp.ts +63 -0
- package/src/modules/terminal_tracking/migrations/Migration20260609120000_terminal_tracking.ts +104 -0
- package/src/modules/terminal_tracking/migrations/Migration20260610120000_terminal_vessel_visits.ts +40 -0
- package/src/modules/terminal_tracking/migrations/Migration20260611120000_terminal_config_proxy.ts +11 -0
- package/src/modules/terminal_tracking/migrations/Migration20260707120000_terminal_job_availability_markers.ts +13 -0
- package/src/modules/terminal_tracking/migrations/Migration20260805120000_terminal_event_loaded_at.ts +16 -0
- package/src/modules/terminal_tracking/services/__tests__/availabilityEmit.test.ts +277 -0
- package/src/modules/terminal_tracking/services/__tests__/createJob.test.ts +59 -0
- package/src/modules/terminal_tracking/services/__tests__/pollAllBatch.test.ts +147 -0
- package/src/modules/terminal_tracking/services/__tests__/terminalMatcher.test.ts +70 -0
- package/src/modules/terminal_tracking/services/__tests__/vesselResolution.test.ts +453 -0
- package/src/modules/terminal_tracking/services/terminalMatcherService.ts +97 -0
- package/src/modules/terminal_tracking/services/terminalRegistry.ts +30 -0
- package/src/modules/terminal_tracking/services/terminalTrackingService.ts +912 -0
- package/src/modules/terminal_tracking/setup.ts +24 -0
- package/src/modules/terminal_tracking/subscribers/terminal-tracking-job-initial-poll.ts +32 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { asClass } from "awilix";
|
|
2
|
+
import { TerminalRegistry } from "./services/terminalRegistry.js";
|
|
3
|
+
import { TerminalTrackingService } from "./services/terminalTrackingService.js";
|
|
4
|
+
import { TerminalMatcherService } from "./services/terminalMatcherService.js";
|
|
5
|
+
import { registerAllAdapters } from "./lib/adapters/index.js";
|
|
6
|
+
function register(container) {
|
|
7
|
+
container.register({
|
|
8
|
+
terminalTrackingRegistry: asClass(TerminalRegistry).singleton()
|
|
9
|
+
});
|
|
10
|
+
container.register({
|
|
11
|
+
terminalTrackingService: {
|
|
12
|
+
resolve: () => {
|
|
13
|
+
const cache = container.resolve("cache");
|
|
14
|
+
return new TerminalTrackingService({
|
|
15
|
+
em: () => container.resolve("em"),
|
|
16
|
+
eventBus: container.resolve("eventBus"),
|
|
17
|
+
terminalRegistry: container.resolve("terminalTrackingRegistry"),
|
|
18
|
+
cacheService: {
|
|
19
|
+
get: (key) => cache.get(key),
|
|
20
|
+
set: (key, value, ttlSeconds) => cache.set(key, value, ttlSeconds ? { ttl: ttlSeconds * 1e3 } : void 0)
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
container.register({
|
|
27
|
+
terminalMatcherService: {
|
|
28
|
+
resolve: () => new TerminalMatcherService({
|
|
29
|
+
em: () => container.resolve("em")
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
const registry = container.resolve("terminalTrackingRegistry");
|
|
34
|
+
registerAllAdapters(registry);
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
register
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=di.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/modules/terminal_tracking/di.ts"],
|
|
4
|
+
"sourcesContent": ["import { asClass } from 'awilix'\nimport type { AppContainer } from '@open-mercato/shared/lib/di/container'\nimport { TerminalRegistry } from './services/terminalRegistry'\nimport { TerminalTrackingService } from './services/terminalTrackingService'\nimport { TerminalMatcherService } from './services/terminalMatcherService'\nimport { registerAllAdapters } from './lib/adapters'\n\nexport function register(container: AppContainer) {\n // Adapter registry (singleton - adapters registered once)\n container.register({\n terminalTrackingRegistry: asClass(TerminalRegistry).singleton(),\n })\n\n // Tracking service (poll loop, dedup, emit)\n container.register({\n terminalTrackingService: {\n resolve: () => {\n const cache = container.resolve<any>('cache')\n return new TerminalTrackingService({\n em: () => container.resolve('em'),\n eventBus: container.resolve('eventBus'),\n terminalRegistry: container.resolve('terminalTrackingRegistry'),\n cacheService: {\n get: (key: string) => cache.get(key),\n set: (key: string, value: string, ttlSeconds?: number) =>\n cache.set(key, value, ttlSeconds ? { ttl: ttlSeconds * 1000 } : undefined),\n },\n })\n },\n },\n })\n\n // Terminal matcher (fuzzy name + exact BIC/SMDG/UNLOCODE)\n container.register({\n terminalMatcherService: {\n resolve: () =>\n new TerminalMatcherService({\n em: () => container.resolve('em'),\n }),\n },\n })\n\n // Register built-in adapters\n const registry = container.resolve<TerminalRegistry>('terminalTrackingRegistry')\n registerAllAdapters(registry)\n}\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,eAAe;AAExB,SAAS,wBAAwB;AACjC,SAAS,+BAA+B;AACxC,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAE7B,SAAS,SAAS,WAAyB;AAEhD,YAAU,SAAS;AAAA,IACjB,0BAA0B,QAAQ,gBAAgB,EAAE,UAAU;AAAA,EAChE,CAAC;AAGD,YAAU,SAAS;AAAA,IACjB,yBAAyB;AAAA,MACvB,SAAS,MAAM;AACb,cAAM,QAAQ,UAAU,QAAa,OAAO;AAC5C,eAAO,IAAI,wBAAwB;AAAA,UACjC,IAAI,MAAM,UAAU,QAAQ,IAAI;AAAA,UAChC,UAAU,UAAU,QAAQ,UAAU;AAAA,UACtC,kBAAkB,UAAU,QAAQ,0BAA0B;AAAA,UAC9D,cAAc;AAAA,YACZ,KAAK,CAAC,QAAgB,MAAM,IAAI,GAAG;AAAA,YACnC,KAAK,CAAC,KAAa,OAAe,eAChC,MAAM,IAAI,KAAK,OAAO,aAAa,EAAE,KAAK,aAAa,IAAK,IAAI,MAAS;AAAA,UAC7E;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAGD,YAAU,SAAS;AAAA,IACjB,wBAAwB;AAAA,MACtB,SAAS,MACP,IAAI,uBAAuB;AAAA,QACzB,IAAI,MAAM,UAAU,QAAQ,IAAI;AAAA,MAClC,CAAC;AAAA,IACL;AAAA,EACF,CAAC;AAGD,QAAM,WAAW,UAAU,QAA0B,0BAA0B;AAC/E,sBAAoB,QAAQ;AAC9B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const defaultEncryptionMaps = [
|
|
2
|
+
{
|
|
3
|
+
entityId: "terminal_tracking:terminal_config",
|
|
4
|
+
fields: [
|
|
5
|
+
{ field: "auth_config" }
|
|
6
|
+
]
|
|
7
|
+
}
|
|
8
|
+
];
|
|
9
|
+
var encryption_default = defaultEncryptionMaps;
|
|
10
|
+
export {
|
|
11
|
+
encryption_default as default,
|
|
12
|
+
defaultEncryptionMaps
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=encryption.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/modules/terminal_tracking/encryption.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ModuleEncryptionMap } from '@open-mercato/shared/modules/encryption'\n\nexport const defaultEncryptionMaps: ModuleEncryptionMap[] = [\n {\n entityId: 'terminal_tracking:terminal_config',\n fields: [\n { field: 'auth_config' },\n ],\n },\n]\n\nexport default defaultEncryptionMaps\n"],
|
|
5
|
+
"mappings": "AAEO,MAAM,wBAA+C;AAAA,EAC1D;AAAA,IACE,UAAU;AAAA,IACV,QAAQ;AAAA,MACN,EAAE,OAAO,cAAc;AAAA,IACzB;AAAA,EACF;AACF;AAEA,IAAO,qBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createModuleEvents } from "@open-mercato/shared/modules/events";
|
|
2
|
+
const events = [
|
|
3
|
+
// ─── Tracking job lifecycle (internal) ─────────────────────────
|
|
4
|
+
{ id: "terminal_tracking.tracking_job.created", label: "Terminal Tracking Job Created", entity: "tracking_job", category: "crud", excludeFromTriggers: true },
|
|
5
|
+
{ id: "terminal_tracking.tracking_job.updated", label: "Terminal Tracking Job Updated", entity: "tracking_job", category: "crud", excludeFromTriggers: true },
|
|
6
|
+
{ id: "terminal_tracking.tracking_job.failed", label: "Terminal Tracking Job Failed", entity: "tracking_job", category: "lifecycle", excludeFromTriggers: true },
|
|
7
|
+
{ id: "terminal_tracking.tracking_job.poll_failed", label: "Terminal Tracking Job Poll Failed", entity: "tracking_job", category: "lifecycle", excludeFromTriggers: true },
|
|
8
|
+
// ─── Raw terminal event (the bridge trigger) ───────────────────
|
|
9
|
+
{ id: "terminal_tracking.terminal_event.created", label: "Terminal Event Created", entity: "terminal_event", category: "crud" },
|
|
10
|
+
{ id: "terminal_tracking.terminal_event.updated", label: "Terminal Event Updated", entity: "terminal_event", category: "crud" },
|
|
11
|
+
// ─── Semantic milestones (per container) ───────────────────────
|
|
12
|
+
{ id: "terminal_tracking.equipment.gate_in", label: "Container Gate In (Terminal)", entity: "terminal_event", category: "lifecycle" },
|
|
13
|
+
{ id: "terminal_tracking.equipment.discharged", label: "Container Discharged (Terminal)", entity: "terminal_event", category: "lifecycle" },
|
|
14
|
+
{ id: "terminal_tracking.equipment.loaded", label: "Container Loaded (Terminal)", entity: "terminal_event", category: "lifecycle" },
|
|
15
|
+
{ id: "terminal_tracking.transport.departed", label: "Container Departed (Terminal)", entity: "terminal_event", category: "lifecycle" },
|
|
16
|
+
// ─── Availability milestones (fire once per container) ─────────
|
|
17
|
+
// Export empty released for collection: empty container in the yard with no
|
|
18
|
+
// movement-blocking holds.
|
|
19
|
+
{ id: "terminal_tracking.equipment.empty_ready", label: "Empty Container Ready For Pickup (Terminal)", entity: "terminal_event", category: "lifecycle" },
|
|
20
|
+
// Import container's blocking holds removed: it became collectable (transition
|
|
21
|
+
// from blocked → unblocked while in the yard).
|
|
22
|
+
{ id: "terminal_tracking.equipment.holds_cleared", label: "Import Holds Cleared (Terminal)", entity: "terminal_event", category: "lifecycle" },
|
|
23
|
+
// The raw impediment (hold) set changed between polls. Unlike the two
|
|
24
|
+
// one-shot availability events above, this fires every poll the set changes
|
|
25
|
+
// (including first appearance with holds) so downstream consumers can mirror
|
|
26
|
+
// the current hold list. Payload carries `impediments: string[]`.
|
|
27
|
+
{ id: "terminal_tracking.equipment.holds_updated", label: "Container Holds Updated (Terminal)", entity: "terminal_event", category: "lifecycle" },
|
|
28
|
+
// The per-mode load/pickup STOP flags (Stop-Vsl / Stop-Road / Stop-Rail)
|
|
29
|
+
// changed between polls. Like `holds_updated`, fires every poll the set
|
|
30
|
+
// changes (incl. first appearance) so downstream consumers can mirror the
|
|
31
|
+
// current stops. Payload carries `stops: { vsl, road, rail: boolean | null }`.
|
|
32
|
+
{ id: "terminal_tracking.equipment.stops_updated", label: "Container Load Stops Updated (Terminal)", entity: "terminal_event", category: "lifecycle" }
|
|
33
|
+
];
|
|
34
|
+
const eventsConfig = createModuleEvents({
|
|
35
|
+
moduleId: "terminal_tracking",
|
|
36
|
+
events
|
|
37
|
+
});
|
|
38
|
+
const emitTerminalTrackingEvent = eventsConfig.emit;
|
|
39
|
+
var events_default = eventsConfig;
|
|
40
|
+
export {
|
|
41
|
+
events_default as default,
|
|
42
|
+
emitTerminalTrackingEvent,
|
|
43
|
+
eventsConfig
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/modules/terminal_tracking/events.ts"],
|
|
4
|
+
"sourcesContent": ["import { createModuleEvents } from '@open-mercato/shared/modules/events'\n\nconst events = [\n // \u2500\u2500\u2500 Tracking job lifecycle (internal) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n { id: 'terminal_tracking.tracking_job.created', label: 'Terminal Tracking Job Created', entity: 'tracking_job', category: 'crud', excludeFromTriggers: true },\n { id: 'terminal_tracking.tracking_job.updated', label: 'Terminal Tracking Job Updated', entity: 'tracking_job', category: 'crud', excludeFromTriggers: true },\n { id: 'terminal_tracking.tracking_job.failed', label: 'Terminal Tracking Job Failed', entity: 'tracking_job', category: 'lifecycle', excludeFromTriggers: true },\n { id: 'terminal_tracking.tracking_job.poll_failed', label: 'Terminal Tracking Job Poll Failed', entity: 'tracking_job', category: 'lifecycle', excludeFromTriggers: true },\n\n // \u2500\u2500\u2500 Raw terminal event (the bridge trigger) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n { id: 'terminal_tracking.terminal_event.created', label: 'Terminal Event Created', entity: 'terminal_event', category: 'crud' },\n { id: 'terminal_tracking.terminal_event.updated', label: 'Terminal Event Updated', entity: 'terminal_event', category: 'crud' },\n\n // \u2500\u2500\u2500 Semantic milestones (per container) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n { id: 'terminal_tracking.equipment.gate_in', label: 'Container Gate In (Terminal)', entity: 'terminal_event', category: 'lifecycle' },\n { id: 'terminal_tracking.equipment.discharged', label: 'Container Discharged (Terminal)', entity: 'terminal_event', category: 'lifecycle' },\n { id: 'terminal_tracking.equipment.loaded', label: 'Container Loaded (Terminal)', entity: 'terminal_event', category: 'lifecycle' },\n { id: 'terminal_tracking.transport.departed', label: 'Container Departed (Terminal)', entity: 'terminal_event', category: 'lifecycle' },\n\n // \u2500\u2500\u2500 Availability milestones (fire once per container) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Export empty released for collection: empty container in the yard with no\n // movement-blocking holds.\n { id: 'terminal_tracking.equipment.empty_ready', label: 'Empty Container Ready For Pickup (Terminal)', entity: 'terminal_event', category: 'lifecycle' },\n // Import container's blocking holds removed: it became collectable (transition\n // from blocked \u2192 unblocked while in the yard).\n { id: 'terminal_tracking.equipment.holds_cleared', label: 'Import Holds Cleared (Terminal)', entity: 'terminal_event', category: 'lifecycle' },\n // The raw impediment (hold) set changed between polls. Unlike the two\n // one-shot availability events above, this fires every poll the set changes\n // (including first appearance with holds) so downstream consumers can mirror\n // the current hold list. Payload carries `impediments: string[]`.\n { id: 'terminal_tracking.equipment.holds_updated', label: 'Container Holds Updated (Terminal)', entity: 'terminal_event', category: 'lifecycle' },\n // The per-mode load/pickup STOP flags (Stop-Vsl / Stop-Road / Stop-Rail)\n // changed between polls. Like `holds_updated`, fires every poll the set\n // changes (incl. first appearance) so downstream consumers can mirror the\n // current stops. Payload carries `stops: { vsl, road, rail: boolean | null }`.\n { id: 'terminal_tracking.equipment.stops_updated', label: 'Container Load Stops Updated (Terminal)', entity: 'terminal_event', category: 'lifecycle' },\n] as const\n\nexport const eventsConfig = createModuleEvents({\n moduleId: 'terminal_tracking',\n events,\n})\n\nexport const emitTerminalTrackingEvent = eventsConfig.emit\n\nexport type TerminalTrackingEventId = typeof events[number]['id']\n\nexport default eventsConfig\n"],
|
|
5
|
+
"mappings": "AAAA,SAAS,0BAA0B;AAEnC,MAAM,SAAS;AAAA;AAAA,EAEb,EAAE,IAAI,0CAA0C,OAAO,iCAAiC,QAAQ,gBAAgB,UAAU,QAAQ,qBAAqB,KAAK;AAAA,EAC5J,EAAE,IAAI,0CAA0C,OAAO,iCAAiC,QAAQ,gBAAgB,UAAU,QAAQ,qBAAqB,KAAK;AAAA,EAC5J,EAAE,IAAI,yCAAyC,OAAO,gCAAgC,QAAQ,gBAAgB,UAAU,aAAa,qBAAqB,KAAK;AAAA,EAC/J,EAAE,IAAI,8CAA8C,OAAO,qCAAqC,QAAQ,gBAAgB,UAAU,aAAa,qBAAqB,KAAK;AAAA;AAAA,EAGzK,EAAE,IAAI,4CAA4C,OAAO,0BAA0B,QAAQ,kBAAkB,UAAU,OAAO;AAAA,EAC9H,EAAE,IAAI,4CAA4C,OAAO,0BAA0B,QAAQ,kBAAkB,UAAU,OAAO;AAAA;AAAA,EAG9H,EAAE,IAAI,uCAAuC,OAAO,gCAAgC,QAAQ,kBAAkB,UAAU,YAAY;AAAA,EACpI,EAAE,IAAI,0CAA0C,OAAO,mCAAmC,QAAQ,kBAAkB,UAAU,YAAY;AAAA,EAC1I,EAAE,IAAI,sCAAsC,OAAO,+BAA+B,QAAQ,kBAAkB,UAAU,YAAY;AAAA,EAClI,EAAE,IAAI,wCAAwC,OAAO,iCAAiC,QAAQ,kBAAkB,UAAU,YAAY;AAAA;AAAA;AAAA;AAAA,EAKtI,EAAE,IAAI,2CAA2C,OAAO,+CAA+C,QAAQ,kBAAkB,UAAU,YAAY;AAAA;AAAA;AAAA,EAGvJ,EAAE,IAAI,6CAA6C,OAAO,mCAAmC,QAAQ,kBAAkB,UAAU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAK7I,EAAE,IAAI,6CAA6C,OAAO,sCAAsC,QAAQ,kBAAkB,UAAU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhJ,EAAE,IAAI,6CAA6C,OAAO,2CAA2C,QAAQ,kBAAkB,UAAU,YAAY;AACvJ;AAEO,MAAM,eAAe,mBAAmB;AAAA,EAC7C,UAAU;AAAA,EACV;AACF,CAAC;AAEM,MAAM,4BAA4B,aAAa;AAItD,IAAO,iBAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
{
|
|
2
|
+
"terminal_tracking": {
|
|
3
|
+
"title": "Terminal Tracking",
|
|
4
|
+
"stops": {
|
|
5
|
+
"title": "Verladebeschränkungen",
|
|
6
|
+
"vsl": "Keine Schiffsverladung",
|
|
7
|
+
"road": "Keine Straßenabholung",
|
|
8
|
+
"rail": "Keine Bahnabholung"
|
|
9
|
+
},
|
|
10
|
+
"nav": {
|
|
11
|
+
"group": "Terminal Tracking",
|
|
12
|
+
"terminal_configs": "Terminals",
|
|
13
|
+
"tracking_jobs": "Tracked Containers"
|
|
14
|
+
},
|
|
15
|
+
"errors": {
|
|
16
|
+
"tenant_required": "Tenant context is required",
|
|
17
|
+
"organization_required": "Organization context is required"
|
|
18
|
+
},
|
|
19
|
+
"terminal_config": {
|
|
20
|
+
"title": "Terminal Configurations",
|
|
21
|
+
"displayName": "Name",
|
|
22
|
+
"terminalCode": "Terminal code",
|
|
23
|
+
"adapterType": "Adapter",
|
|
24
|
+
"baseUrl": "API base URL",
|
|
25
|
+
"proxyUrl": "API-Proxy-URL (optional)",
|
|
26
|
+
"unlocode": "UN/LOCODE",
|
|
27
|
+
"isActive": "Active",
|
|
28
|
+
"gctHint": "Base32-Schlüssel, der im GCT-Panel neben dem QR-Code angezeigt wird. Daraus wird bei jeder Anmeldung ein neuer Einmalcode berechnet."
|
|
29
|
+
},
|
|
30
|
+
"tracking_job": {
|
|
31
|
+
"title": "Terminal Tracking Jobs",
|
|
32
|
+
"containerNumber": "Container",
|
|
33
|
+
"status": "Status",
|
|
34
|
+
"lastPollAt": "Last polled",
|
|
35
|
+
"details": "Container Details",
|
|
36
|
+
"noEvents": "No terminal events yet. Use \"Poll now\" to fetch.",
|
|
37
|
+
"leg": "Facility visit",
|
|
38
|
+
"recentErrors": "Recent poll errors",
|
|
39
|
+
"jobInfo": "Tracking",
|
|
40
|
+
"nextPollAt": "Next poll",
|
|
41
|
+
"retryCount": "Retries",
|
|
42
|
+
"jobId": "Job ID",
|
|
43
|
+
"actions": {
|
|
44
|
+
"details": "Details",
|
|
45
|
+
"poll": "Poll now"
|
|
46
|
+
},
|
|
47
|
+
"flash": {
|
|
48
|
+
"polled": "Abgefragt — {n} neue, {u} aktualisierte Ereignis(se)"
|
|
49
|
+
},
|
|
50
|
+
"statuses": {
|
|
51
|
+
"active": "Aktiv",
|
|
52
|
+
"paused": "Pausiert",
|
|
53
|
+
"deactivated": "Deaktiviert",
|
|
54
|
+
"failed": "Fehlgeschlagen",
|
|
55
|
+
"completed": "Abgeschlossen"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"event": {
|
|
59
|
+
"source_badge": "Terminal",
|
|
60
|
+
"yardPosition": "Yard position",
|
|
61
|
+
"vgm": "VGM (kg)",
|
|
62
|
+
"visitPhase": "Visit phase",
|
|
63
|
+
"impediments": "Holds",
|
|
64
|
+
"seals": "Seals",
|
|
65
|
+
"eta": "ETA",
|
|
66
|
+
"etd": "ETD",
|
|
67
|
+
"ata": "ATA",
|
|
68
|
+
"atd": "ATD",
|
|
69
|
+
"gate_in": "Gate In",
|
|
70
|
+
"yard": "In Yard / Discharged",
|
|
71
|
+
"loaded": "Loaded",
|
|
72
|
+
"loadedAt": "Verladen am",
|
|
73
|
+
"departed": "Departed",
|
|
74
|
+
"ufvGkey": "Ufv_Gkey",
|
|
75
|
+
"rawData": "Raw terminal data"
|
|
76
|
+
},
|
|
77
|
+
"holds": {
|
|
78
|
+
"unknown": {
|
|
79
|
+
"label": "Unbekannte Sperre",
|
|
80
|
+
"description": "Nicht erkannte Terminalsperre. Einzelheiten erfahren Sie beim Terminal.",
|
|
81
|
+
"resolution": "Wenden Sie sich an das Terminal, um zu klären, wie diese Sperre aufgehoben wird."
|
|
82
|
+
},
|
|
83
|
+
"cfs_appointment": {
|
|
84
|
+
"label": "CFS-Termin",
|
|
85
|
+
"description": "Wird während der Annahme eines CFS-Importauftrags (Lager) gesetzt.",
|
|
86
|
+
"resolution": "Wird automatisch aufgehoben, sobald der Auftrag und die Lagerarbeit abgeschlossen sind."
|
|
87
|
+
},
|
|
88
|
+
"customs_import_permission": {
|
|
89
|
+
"label": "Zollfreigabe (Import)",
|
|
90
|
+
"description": "Wird systematisch auf alle Importcontainer gesetzt, die auf die Zollfreigabe warten.",
|
|
91
|
+
"resolution": "Wird automatisch nach Aktualisierung der MRN-Nummer über die polnischen PCS-Codes aufgehoben."
|
|
92
|
+
},
|
|
93
|
+
"customs_import_hold": {
|
|
94
|
+
"label": "Zollsperre (Import)",
|
|
95
|
+
"description": "Wird manuell vom Zollbeamten für Scan, Kontrolle oder bei einem Abfertigungsproblem gesetzt.",
|
|
96
|
+
"resolution": "Nur ein Zollbeamter kann sie aufheben — wenden Sie sich an das Zollamt."
|
|
97
|
+
},
|
|
98
|
+
"line_import_permission": {
|
|
99
|
+
"label": "Reederei-Freigabe (Import)",
|
|
100
|
+
"description": "Wird systematisch auf alle Importcontainer gesetzt, bis die Reederei sie freigibt.",
|
|
101
|
+
"resolution": "Wird aufgehoben, sobald die Reederei den Container per PIN-Nummer freigibt."
|
|
102
|
+
},
|
|
103
|
+
"oog_hold": {
|
|
104
|
+
"label": "OOG-Sperre",
|
|
105
|
+
"description": "Wird auf übergroße Importcontainer gesetzt, die Sondergenehmigungen erfordern.",
|
|
106
|
+
"resolution": "Muss vor der Abholung von Baltic Hub geprüft werden; bis dahin kann der Container nicht zur Abholung avisiert werden."
|
|
107
|
+
},
|
|
108
|
+
"cfs_hold": {
|
|
109
|
+
"label": "CFS-Sperre",
|
|
110
|
+
"description": "Wird während der Annahme eines CFS-Exportauftrags (Lager) gesetzt.",
|
|
111
|
+
"resolution": "Wird automatisch aufgehoben, sobald der Auftrag und die Lagerarbeit abgeschlossen sind."
|
|
112
|
+
},
|
|
113
|
+
"customs_export_permission": {
|
|
114
|
+
"label": "Zollfreigabe (Export)",
|
|
115
|
+
"description": "Wird systematisch auf Exportcontainer gesetzt, die auf die Zollfreigabe warten.",
|
|
116
|
+
"resolution": "Wird automatisch nach der MRN-Aktualisierung aufgehoben; muss vor der Zollabfertigungsfrist aufgehoben werden."
|
|
117
|
+
},
|
|
118
|
+
"customs_export_hold": {
|
|
119
|
+
"label": "Zollsperre (Export)",
|
|
120
|
+
"description": "Wird manuell vom Zollbeamten für Scan, Kontrolle oder bei einem Abfertigungsproblem gesetzt.",
|
|
121
|
+
"resolution": "Nur ein Zollbeamter kann sie aufheben — wenden Sie sich an das Zollamt."
|
|
122
|
+
},
|
|
123
|
+
"unit_vgm_load_permission": {
|
|
124
|
+
"label": "VGM-Ladefreigabe",
|
|
125
|
+
"description": "Wird auf jeden vollen Exportcontainer ohne verifizierte Bruttomasse gesetzt.",
|
|
126
|
+
"resolution": "Wird aufgehoben, sobald das VGM-Gewicht in Navis hochgeladen wird."
|
|
127
|
+
},
|
|
128
|
+
"dgd_hold": {
|
|
129
|
+
"label": "DGD-Sperre",
|
|
130
|
+
"description": "Wird automatisch auf alle Exportcontainer mit IMO-Gefahrgut gesetzt.",
|
|
131
|
+
"resolution": "Erfordert die Einreichung des DGD-Dokuments (Gefahrgutdeklaration)."
|
|
132
|
+
},
|
|
133
|
+
"scanning_hold": {
|
|
134
|
+
"label": "Scan-Sperre",
|
|
135
|
+
"description": "Wird manuell vom Zollbeamten gesetzt; der Container muss zum Scannen vorgeführt werden.",
|
|
136
|
+
"resolution": "Wird vom Zoll nach dem Scannen aufgehoben (Auswahl DCT_CFS_SCANNING)."
|
|
137
|
+
},
|
|
138
|
+
"empty_permission": {
|
|
139
|
+
"label": "Freigabe (leer)",
|
|
140
|
+
"description": "Wird systematisch auf alle Leercontainer gesetzt, die auf eine Freigabereferenz warten.",
|
|
141
|
+
"resolution": "Wird aufgehoben, sobald die EDO-/Buchungsnummer der Reederei vorliegt."
|
|
142
|
+
},
|
|
143
|
+
"missing_agent_permission": {
|
|
144
|
+
"label": "Fehlende Agentenfreigabe",
|
|
145
|
+
"description": "Bezieht sich auf eine inaktive PCS-Zahlung. Blockiert derzeit weder die Verladung noch die Abholung.",
|
|
146
|
+
"resolution": "Wird durch Eingabe des Reederei-Codes im Feld Agent One aufgehoben."
|
|
147
|
+
},
|
|
148
|
+
"technical_full_container": {
|
|
149
|
+
"label": "Technisch (voller Container)",
|
|
150
|
+
"description": "Wird auf alle vollen Import-/Exportcontainer zur Unterstützung der OCR-Zeichenerkennung gesetzt. Blockiert die Bewegung nicht.",
|
|
151
|
+
"resolution": "Keine Aktion erforderlich — nur informativ."
|
|
152
|
+
},
|
|
153
|
+
"technical_live_reefer": {
|
|
154
|
+
"label": "Technisch (aktiver Reefer)",
|
|
155
|
+
"description": "Wird auf alle vollen Kühlcontainer zur OCR-Unterstützung gesetzt. Blockiert den Betrieb nicht.",
|
|
156
|
+
"resolution": "Keine Aktion erforderlich — nur informativ."
|
|
157
|
+
},
|
|
158
|
+
"terminal_hold": {
|
|
159
|
+
"label": "Terminalsperre",
|
|
160
|
+
"description": "Wird bei einer Container-Unregelmäßigkeit gesetzt (falsche Kennzeichnung, verbogene Containerträger usw.).",
|
|
161
|
+
"resolution": "Wenden Sie sich an den Baltic Hub Kundenservice."
|
|
162
|
+
},
|
|
163
|
+
"czrm_hold": {
|
|
164
|
+
"label": "CZRM-Sperre",
|
|
165
|
+
"description": "Wird vom Zollamt gesetzt.",
|
|
166
|
+
"resolution": "Wenden Sie sich zur Aufhebung direkt an das Zollamt."
|
|
167
|
+
},
|
|
168
|
+
"izrx_hold": {
|
|
169
|
+
"label": "IZRX-Sperre",
|
|
170
|
+
"description": "Wird vom Zollamt gesetzt.",
|
|
171
|
+
"resolution": "Wenden Sie sich zur Aufhebung direkt an das Zollamt."
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
{
|
|
2
|
+
"terminal_tracking": {
|
|
3
|
+
"title": "Terminal Tracking",
|
|
4
|
+
"stops": {
|
|
5
|
+
"title": "Loading restrictions",
|
|
6
|
+
"vsl": "No vessel loading",
|
|
7
|
+
"road": "No road pickup",
|
|
8
|
+
"rail": "No rail pickup"
|
|
9
|
+
},
|
|
10
|
+
"nav": {
|
|
11
|
+
"group": "Terminal Tracking",
|
|
12
|
+
"terminal_configs": "Terminals",
|
|
13
|
+
"tracking_jobs": "Tracked Containers"
|
|
14
|
+
},
|
|
15
|
+
"errors": {
|
|
16
|
+
"tenant_required": "Tenant context is required",
|
|
17
|
+
"organization_required": "Organization context is required"
|
|
18
|
+
},
|
|
19
|
+
"terminal_config": {
|
|
20
|
+
"title": "Terminal Configurations",
|
|
21
|
+
"displayName": "Name",
|
|
22
|
+
"terminalCode": "Terminal code",
|
|
23
|
+
"adapterType": "Adapter",
|
|
24
|
+
"baseUrl": "API base URL",
|
|
25
|
+
"proxyUrl": "API proxy URL (optional)",
|
|
26
|
+
"unlocode": "UN/LOCODE",
|
|
27
|
+
"isActive": "Active",
|
|
28
|
+
"gctHint": "The base32 key shown in the GCT panel next to the QR code. A fresh one-time code is computed from it on each login."
|
|
29
|
+
},
|
|
30
|
+
"tracking_job": {
|
|
31
|
+
"title": "Terminal Tracking Jobs",
|
|
32
|
+
"containerNumber": "Container",
|
|
33
|
+
"status": "Status",
|
|
34
|
+
"gateIn": "Gate in",
|
|
35
|
+
"gateOut": "Gate out",
|
|
36
|
+
"holds": "Holds",
|
|
37
|
+
"lastPollAt": "Last polled",
|
|
38
|
+
"details": "Container Details",
|
|
39
|
+
"noEvents": "No terminal events yet. Use \"Poll now\" to fetch.",
|
|
40
|
+
"leg": "Facility visit",
|
|
41
|
+
"recentErrors": "Recent poll errors",
|
|
42
|
+
"jobInfo": "Tracking",
|
|
43
|
+
"nextPollAt": "Next poll",
|
|
44
|
+
"retryCount": "Retries",
|
|
45
|
+
"jobId": "Job ID",
|
|
46
|
+
"actions": {
|
|
47
|
+
"details": "Details",
|
|
48
|
+
"poll": "Poll now"
|
|
49
|
+
},
|
|
50
|
+
"flash": {
|
|
51
|
+
"polled": "Polled — {n} new, {u} updated event(s)"
|
|
52
|
+
},
|
|
53
|
+
"statuses": {
|
|
54
|
+
"active": "Active",
|
|
55
|
+
"paused": "Paused",
|
|
56
|
+
"deactivated": "Deactivated",
|
|
57
|
+
"failed": "Failed",
|
|
58
|
+
"completed": "Completed"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"event": {
|
|
62
|
+
"source_badge": "Terminal",
|
|
63
|
+
"yardPosition": "Yard position",
|
|
64
|
+
"vgm": "VGM (kg)",
|
|
65
|
+
"visitPhase": "Visit phase",
|
|
66
|
+
"impediments": "Holds",
|
|
67
|
+
"seals": "Seals",
|
|
68
|
+
"eta": "ETA",
|
|
69
|
+
"etd": "ETD",
|
|
70
|
+
"ata": "ATA",
|
|
71
|
+
"atd": "ATD",
|
|
72
|
+
"gate_in": "Gate In",
|
|
73
|
+
"yard": "In Yard / Discharged",
|
|
74
|
+
"loaded": "Loaded",
|
|
75
|
+
"loadedAt": "Loaded at",
|
|
76
|
+
"departed": "Departed",
|
|
77
|
+
"ufvGkey": "Ufv_Gkey",
|
|
78
|
+
"rawData": "Raw terminal data"
|
|
79
|
+
},
|
|
80
|
+
"holds": {
|
|
81
|
+
"unknown": {
|
|
82
|
+
"label": "Unknown hold",
|
|
83
|
+
"description": "Unrecognised terminal hold. Refer to the terminal for details.",
|
|
84
|
+
"resolution": "Contact the terminal to determine how this hold is cleared."
|
|
85
|
+
},
|
|
86
|
+
"cfs_appointment": {
|
|
87
|
+
"label": "CFS appointment",
|
|
88
|
+
"description": "Applied while a CFS (warehouse) import order is being accepted.",
|
|
89
|
+
"resolution": "Cleared automatically once the order is completed and warehouse work is done."
|
|
90
|
+
},
|
|
91
|
+
"customs_import_permission": {
|
|
92
|
+
"label": "Customs import permission",
|
|
93
|
+
"description": "Applied systematically to every import container pending customs release.",
|
|
94
|
+
"resolution": "Removed automatically after the MRN number is updated via the Polish PCS codes."
|
|
95
|
+
},
|
|
96
|
+
"customs_import_hold": {
|
|
97
|
+
"label": "Customs import hold",
|
|
98
|
+
"description": "Placed manually by a customs officer for scanning, inspection or a clearance issue.",
|
|
99
|
+
"resolution": "Only a customs officer can lift it — contact the customs office."
|
|
100
|
+
},
|
|
101
|
+
"line_import_permission": {
|
|
102
|
+
"label": "Line import permission",
|
|
103
|
+
"description": "Applied systematically to every import container until the shipping line releases it.",
|
|
104
|
+
"resolution": "Removed once the line releases the container via its PIN number."
|
|
105
|
+
},
|
|
106
|
+
"oog_hold": {
|
|
107
|
+
"label": "OOG hold",
|
|
108
|
+
"description": "Applied to out-of-gauge import containers that require special handling permits.",
|
|
109
|
+
"resolution": "Must be verified by Baltic Hub before pickup; the container cannot be notified for collection until then."
|
|
110
|
+
},
|
|
111
|
+
"cfs_hold": {
|
|
112
|
+
"label": "CFS hold",
|
|
113
|
+
"description": "Applied while a CFS (warehouse) export order is being accepted.",
|
|
114
|
+
"resolution": "Cleared automatically once the order is completed and warehouse work is done."
|
|
115
|
+
},
|
|
116
|
+
"customs_export_permission": {
|
|
117
|
+
"label": "Customs export permission",
|
|
118
|
+
"description": "Applied systematically to export containers pending customs release.",
|
|
119
|
+
"resolution": "Removed automatically after the MRN update; must be cleared before the customs-clearance deadline."
|
|
120
|
+
},
|
|
121
|
+
"customs_export_hold": {
|
|
122
|
+
"label": "Customs export hold",
|
|
123
|
+
"description": "Placed manually by a customs officer for scanning, inspection or a clearance issue.",
|
|
124
|
+
"resolution": "Only a customs officer can lift it — contact the customs office."
|
|
125
|
+
},
|
|
126
|
+
"unit_vgm_load_permission": {
|
|
127
|
+
"label": "VGM load permission",
|
|
128
|
+
"description": "Applied to every full export container that has no verified gross mass yet.",
|
|
129
|
+
"resolution": "Removed when the VGM weight is uploaded to Navis."
|
|
130
|
+
},
|
|
131
|
+
"dgd_hold": {
|
|
132
|
+
"label": "DGD hold",
|
|
133
|
+
"description": "Applied automatically to every export container carrying IMO (dangerous) cargo.",
|
|
134
|
+
"resolution": "Requires the DGD (dangerous-goods declaration) document to be submitted."
|
|
135
|
+
},
|
|
136
|
+
"scanning_hold": {
|
|
137
|
+
"label": "Scanning hold",
|
|
138
|
+
"description": "Placed manually by a customs officer; the container must be presented for scanning.",
|
|
139
|
+
"resolution": "Cleared by customs after scanning (DCT_CFS_SCANNING selection)."
|
|
140
|
+
},
|
|
141
|
+
"empty_permission": {
|
|
142
|
+
"label": "Empty permission",
|
|
143
|
+
"description": "Applied systematically to every empty container pending a release reference.",
|
|
144
|
+
"resolution": "Removed once the EDO / booking number from the shipping line is provided."
|
|
145
|
+
},
|
|
146
|
+
"missing_agent_permission": {
|
|
147
|
+
"label": "Missing agent permission",
|
|
148
|
+
"description": "Relates to an inactive PCS payment. Does not currently block ship loading or pickup.",
|
|
149
|
+
"resolution": "Removed by entering the shipping code in the Agent One field."
|
|
150
|
+
},
|
|
151
|
+
"technical_full_container": {
|
|
152
|
+
"label": "Technical (full container)",
|
|
153
|
+
"description": "Applied to every full import/export container to support OCR character recognition. Does not block movement.",
|
|
154
|
+
"resolution": "No action required — informational only."
|
|
155
|
+
},
|
|
156
|
+
"technical_live_reefer": {
|
|
157
|
+
"label": "Technical (live reefer)",
|
|
158
|
+
"description": "Applied to every full reefer container to support OCR. Does not block operations.",
|
|
159
|
+
"resolution": "No action required — informational only."
|
|
160
|
+
},
|
|
161
|
+
"terminal_hold": {
|
|
162
|
+
"label": "Terminal hold",
|
|
163
|
+
"description": "Applied for a container irregularity (incorrect labelling, bent container beams, etc.).",
|
|
164
|
+
"resolution": "Contact Baltic Hub Customer Service to resolve."
|
|
165
|
+
},
|
|
166
|
+
"czrm_hold": {
|
|
167
|
+
"label": "CZRM hold",
|
|
168
|
+
"description": "Applied by the customs office.",
|
|
169
|
+
"resolution": "Contact the customs office directly to have it lifted."
|
|
170
|
+
},
|
|
171
|
+
"izrx_hold": {
|
|
172
|
+
"label": "IZRX hold",
|
|
173
|
+
"description": "Applied by the customs office.",
|
|
174
|
+
"resolution": "Contact the customs office directly to have it lifted."
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|