adserver-dashboard 1.0.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.
Files changed (525) hide show
  1. package/.ci/staging.yml +191 -0
  2. package/.dockerignore +117 -0
  3. package/.env +40 -0
  4. package/.env.staging +38 -0
  5. package/.gitlab-ci.yml +16 -0
  6. package/DEMO_STATUS.md +579 -0
  7. package/Dockerfile +61 -0
  8. package/Influence-MW-AdServer-12-02-2026/client/index.html +17 -0
  9. package/Influence-MW-AdServer-12-02-2026/client/public/favicon.png +0 -0
  10. package/Influence-MW-AdServer-12-02-2026/client/src/App.tsx +91 -0
  11. package/Influence-MW-AdServer-12-02-2026/client/src/components/advanced-map-drawer.tsx +1131 -0
  12. package/Influence-MW-AdServer-12-02-2026/client/src/components/ai-recommendation-panel.tsx +379 -0
  13. package/Influence-MW-AdServer-12-02-2026/client/src/components/app-sidebar.tsx +183 -0
  14. package/Influence-MW-AdServer-12-02-2026/client/src/components/auto-optimize-button.tsx +184 -0
  15. package/Influence-MW-AdServer-12-02-2026/client/src/components/availability-drawer.tsx +385 -0
  16. package/Influence-MW-AdServer-12-02-2026/client/src/components/brand-insights-panel.tsx +87 -0
  17. package/Influence-MW-AdServer-12-02-2026/client/src/components/create-agency-drawer.tsx +198 -0
  18. package/Influence-MW-AdServer-12-02-2026/client/src/components/create-brand-drawer.tsx +275 -0
  19. package/Influence-MW-AdServer-12-02-2026/client/src/components/creative-assignment.tsx +526 -0
  20. package/Influence-MW-AdServer-12-02-2026/client/src/components/data-table-toolbar.tsx +148 -0
  21. package/Influence-MW-AdServer-12-02-2026/client/src/components/data-table.tsx +158 -0
  22. package/Influence-MW-AdServer-12-02-2026/client/src/components/filter-drawer.tsx +356 -0
  23. package/Influence-MW-AdServer-12-02-2026/client/src/components/form-insights-panel.tsx +82 -0
  24. package/Influence-MW-AdServer-12-02-2026/client/src/components/geography-selector.tsx +699 -0
  25. package/Influence-MW-AdServer-12-02-2026/client/src/components/header-user-menu.tsx +178 -0
  26. package/Influence-MW-AdServer-12-02-2026/client/src/components/history-drawer.tsx +313 -0
  27. package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-availability-section.tsx +176 -0
  28. package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-format-drawer.tsx +173 -0
  29. package/Influence-MW-AdServer-12-02-2026/client/src/components/inventory-selector.tsx +401 -0
  30. package/Influence-MW-AdServer-12-02-2026/client/src/components/manual-inventory-drawer.tsx +368 -0
  31. package/Influence-MW-AdServer-12-02-2026/client/src/components/mapbox-map.tsx +368 -0
  32. package/Influence-MW-AdServer-12-02-2026/client/src/components/market-insights-panel.tsx +202 -0
  33. package/Influence-MW-AdServer-12-02-2026/client/src/components/media-owner-drawer.tsx +217 -0
  34. package/Influence-MW-AdServer-12-02-2026/client/src/components/metric-card.tsx +58 -0
  35. package/Influence-MW-AdServer-12-02-2026/client/src/components/page-header.tsx +27 -0
  36. package/Influence-MW-AdServer-12-02-2026/client/src/components/player-status-indicator.tsx +137 -0
  37. package/Influence-MW-AdServer-12-02-2026/client/src/components/poi-targeting-drawer.tsx +298 -0
  38. package/Influence-MW-AdServer-12-02-2026/client/src/components/recommendation-score-badge.tsx +102 -0
  39. package/Influence-MW-AdServer-12-02-2026/client/src/components/recommended-inventories-panel.tsx +248 -0
  40. package/Influence-MW-AdServer-12-02-2026/client/src/components/searchable-combobox.tsx +134 -0
  41. package/Influence-MW-AdServer-12-02-2026/client/src/components/signal-visualizations.tsx +407 -0
  42. package/Influence-MW-AdServer-12-02-2026/client/src/components/status-badge.tsx +35 -0
  43. package/Influence-MW-AdServer-12-02-2026/client/src/components/theme-provider.tsx +73 -0
  44. package/Influence-MW-AdServer-12-02-2026/client/src/components/theme-toggle.tsx +37 -0
  45. package/Influence-MW-AdServer-12-02-2026/client/src/components/traffic-slider.tsx +75 -0
  46. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/accordion.tsx +56 -0
  47. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/alert-dialog.tsx +139 -0
  48. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/alert.tsx +59 -0
  49. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/aspect-ratio.tsx +5 -0
  50. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/avatar.tsx +51 -0
  51. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/badge.tsx +38 -0
  52. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/breadcrumb.tsx +115 -0
  53. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/button.tsx +62 -0
  54. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/calendar.tsx +68 -0
  55. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/card.tsx +85 -0
  56. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/carousel.tsx +260 -0
  57. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/chart.tsx +365 -0
  58. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/checkbox.tsx +28 -0
  59. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/collapsible.tsx +11 -0
  60. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/command.tsx +151 -0
  61. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/context-menu.tsx +198 -0
  62. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/dialog.tsx +122 -0
  63. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/drawer.tsx +118 -0
  64. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/dropdown-menu.tsx +198 -0
  65. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/form.tsx +178 -0
  66. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/hover-card.tsx +29 -0
  67. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/input-otp.tsx +69 -0
  68. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/input.tsx +23 -0
  69. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/label.tsx +24 -0
  70. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/menubar.tsx +256 -0
  71. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/navigation-menu.tsx +128 -0
  72. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/pagination.tsx +117 -0
  73. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/popover.tsx +29 -0
  74. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/progress.tsx +28 -0
  75. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/radio-group.tsx +42 -0
  76. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/resizable.tsx +45 -0
  77. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/scroll-area.tsx +46 -0
  78. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/select.tsx +160 -0
  79. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/separator.tsx +29 -0
  80. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/sheet.tsx +140 -0
  81. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/sidebar.tsx +727 -0
  82. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/skeleton.tsx +15 -0
  83. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/slider.tsx +26 -0
  84. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/switch.tsx +27 -0
  85. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/table.tsx +117 -0
  86. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/tabs.tsx +53 -0
  87. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/textarea.tsx +22 -0
  88. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toast.tsx +127 -0
  89. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toaster.tsx +33 -0
  90. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toggle-group.tsx +61 -0
  91. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/toggle.tsx +43 -0
  92. package/Influence-MW-AdServer-12-02-2026/client/src/components/ui/tooltip.tsx +30 -0
  93. package/Influence-MW-AdServer-12-02-2026/client/src/components/vendor-stores-modal.tsx +336 -0
  94. package/Influence-MW-AdServer-12-02-2026/client/src/components/venue-type-drawer.tsx +359 -0
  95. package/Influence-MW-AdServer-12-02-2026/client/src/components/venue-type-selector.tsx +436 -0
  96. package/Influence-MW-AdServer-12-02-2026/client/src/hooks/use-mobile.tsx +19 -0
  97. package/Influence-MW-AdServer-12-02-2026/client/src/hooks/use-toast.ts +191 -0
  98. package/Influence-MW-AdServer-12-02-2026/client/src/index.css +244 -0
  99. package/Influence-MW-AdServer-12-02-2026/client/src/lib/queryClient.ts +57 -0
  100. package/Influence-MW-AdServer-12-02-2026/client/src/lib/utils.ts +39 -0
  101. package/Influence-MW-AdServer-12-02-2026/client/src/lib/venue-taxonomy.ts +532 -0
  102. package/Influence-MW-AdServer-12-02-2026/client/src/main.tsx +5 -0
  103. package/Influence-MW-AdServer-12-02-2026/client/src/pages/assign-creative.tsx +781 -0
  104. package/Influence-MW-AdServer-12-02-2026/client/src/pages/content-hub.tsx +995 -0
  105. package/Influence-MW-AdServer-12-02-2026/client/src/pages/custom-pois.tsx +431 -0
  106. package/Influence-MW-AdServer-12-02-2026/client/src/pages/dashboard.tsx +620 -0
  107. package/Influence-MW-AdServer-12-02-2026/client/src/pages/deal-detail.tsx +1062 -0
  108. package/Influence-MW-AdServer-12-02-2026/client/src/pages/deal-form.tsx +1570 -0
  109. package/Influence-MW-AdServer-12-02-2026/client/src/pages/deals.tsx +716 -0
  110. package/Influence-MW-AdServer-12-02-2026/client/src/pages/edit-creative-assignment.tsx +1051 -0
  111. package/Influence-MW-AdServer-12-02-2026/client/src/pages/geotargeting.tsx +675 -0
  112. package/Influence-MW-AdServer-12-02-2026/client/src/pages/integrations.tsx +425 -0
  113. package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-item-creatives.tsx +622 -0
  114. package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-item-form.tsx +3132 -0
  115. package/Influence-MW-AdServer-12-02-2026/client/src/pages/line-items.tsx +530 -0
  116. package/Influence-MW-AdServer-12-02-2026/client/src/pages/not-found.tsx +21 -0
  117. package/Influence-MW-AdServer-12-02-2026/client/src/pages/proof-of-play-upload.tsx +479 -0
  118. package/Influence-MW-AdServer-12-02-2026/client/src/pages/proof-of-play.tsx +880 -0
  119. package/Influence-MW-AdServer-12-02-2026/client/src/pages/reports.tsx +235 -0
  120. package/Influence-MW-AdServer-12-02-2026/client/src/pages/settings.tsx +652 -0
  121. package/Influence-MW-AdServer-12-02-2026/client/src/pages/signal-form.tsx +1117 -0
  122. package/Influence-MW-AdServer-12-02-2026/client/src/pages/signals.tsx +366 -0
  123. package/Influence-MW-AdServer-12-02-2026/client/src/pages/tags.tsx +332 -0
  124. package/Influence-MW-AdServer-12-02-2026/client/src/pages/venues.tsx +381 -0
  125. package/Influence-MW-AdServer-12-02-2026/client/src/types/mapbox-gl-draw.d.ts +37 -0
  126. package/Influence-MW-AdServer-12-02-2026/client/src/types/react-simple-maps.d.ts +57 -0
  127. package/Influence-MW-AdServer-12-02-2026/components.json +20 -0
  128. package/Influence-MW-AdServer-12-02-2026/docs/PRD.md +3373 -0
  129. package/Influence-MW-AdServer-12-02-2026/docs/influence-feature-mapping.csv +498 -0
  130. package/Influence-MW-AdServer-12-02-2026/drizzle.config.ts +14 -0
  131. package/Influence-MW-AdServer-12-02-2026/package-lock.json +9672 -0
  132. package/Influence-MW-AdServer-12-02-2026/package.json +118 -0
  133. package/Influence-MW-AdServer-12-02-2026/postcss.config.js +6 -0
  134. package/Influence-MW-AdServer-12-02-2026/replit.md +91 -0
  135. package/Influence-MW-AdServer-12-02-2026/script/build.ts +67 -0
  136. package/Influence-MW-AdServer-12-02-2026/scripts/create-miro-diagrams.cjs +318 -0
  137. package/Influence-MW-AdServer-12-02-2026/scripts/create-remaining-diagrams.cjs +270 -0
  138. package/Influence-MW-AdServer-12-02-2026/server/index.ts +103 -0
  139. package/Influence-MW-AdServer-12-02-2026/server/recommendation-service.ts +319 -0
  140. package/Influence-MW-AdServer-12-02-2026/server/routes.ts +1890 -0
  141. package/Influence-MW-AdServer-12-02-2026/server/static.ts +19 -0
  142. package/Influence-MW-AdServer-12-02-2026/server/storage.ts +2058 -0
  143. package/Influence-MW-AdServer-12-02-2026/server/vite.ts +58 -0
  144. package/Influence-MW-AdServer-12-02-2026/shared/schema.ts +1595 -0
  145. package/Influence-MW-AdServer-12-02-2026/tailwind.config.ts +107 -0
  146. package/Influence-MW-AdServer-12-02-2026/tsconfig.json +23 -0
  147. package/Influence-MW-AdServer-12-02-2026/vite.config.ts +40 -0
  148. package/LINE_ITEM_BUDGET_FIELD_MAPPING.md +178 -0
  149. package/PCM/.env.example +92 -0
  150. package/PCM/README.md +558 -0
  151. package/PCM/docs/TEST_CASES.md +422 -0
  152. package/PCM/index.js +106 -0
  153. package/PCM/package-lock.json +3282 -0
  154. package/PCM/package.json +32 -0
  155. package/PCM/replit.md +64 -0
  156. package/PCM/schema.sql +495 -0
  157. package/PCM/scripts/export-schema.js +183 -0
  158. package/PCM/scripts/seed-comprehensive.js +631 -0
  159. package/PCM/scripts/seed-production.js +477 -0
  160. package/PCM/src/config/db.js +56 -0
  161. package/PCM/src/config/swagger.js +5975 -0
  162. package/PCM/src/dto/EmailRequestDTO.js +166 -0
  163. package/PCM/src/middleware/errorHandler.js +52 -0
  164. package/PCM/src/middleware/logger.js +26 -0
  165. package/PCM/src/migrations/001_add_campaign_mode_fields.sql +36 -0
  166. package/PCM/src/migrations/002_create_deal_id_counters.sql +22 -0
  167. package/PCM/src/migrations/003_update_publishers_column.sql +15 -0
  168. package/PCM/src/migrations/004_add_direct_dealtype_and_advertiser.sql +5 -0
  169. package/PCM/src/migrations/005_add_programmatic_fields_and_update_enums.sql +31 -0
  170. package/PCM/src/migrations/006_add_line_item_programmatic_fields.sql +12 -0
  171. package/PCM/src/migrations/007_add_line_item_direct_fields.sql +15 -0
  172. package/PCM/src/migrations/008_add_inventory_fields.sql +45 -0
  173. package/PCM/src/migrations/009_move_inventory_fields_to_metadata.sql +32 -0
  174. package/PCM/src/migrations/010_add_draft_status_and_line_items_count.sql +23 -0
  175. package/PCM/src/migrations/011_add_planning_field.sql +21 -0
  176. package/PCM/src/migrations/012_fix_inventory_composite_pk.sql +17 -0
  177. package/PCM/src/migrations/013_make_external_id_optional.sql +3 -0
  178. package/PCM/src/migrations/014_create_change_history.sql +38 -0
  179. package/PCM/src/migrations/016_create_publisher_insertion_orders.sql +33 -0
  180. package/PCM/src/migrations/017_fix_line_item_id_fk_reference.sql +86 -0
  181. package/PCM/src/migrations/018_create_approval_tables.sql +44 -0
  182. package/PCM/src/migrations/019_add_encrypted_token_column.sql +2 -0
  183. package/PCM/src/migrations/020_add_rejection_reason_to_deals.sql +10 -0
  184. package/PCM/src/migrations/021_add_publisher_external_id_to_inventories.sql +12 -0
  185. package/PCM/src/migrations/022_add_line_item_extended_fields.sql +24 -0
  186. package/PCM/src/migrations/023_add_base_price_fields.sql +8 -0
  187. package/PCM/src/migrations/run-migrations.js +46 -0
  188. package/PCM/src/models/ApprovalOTP.js +51 -0
  189. package/PCM/src/models/ApprovalToken.js +79 -0
  190. package/PCM/src/models/ChangeHistory.js +107 -0
  191. package/PCM/src/models/Deal.js +186 -0
  192. package/PCM/src/models/DealIdCounter.js +28 -0
  193. package/PCM/src/models/LineItem.js +227 -0
  194. package/PCM/src/models/LineItemCreative.js +89 -0
  195. package/PCM/src/models/LineItemInventory.js +115 -0
  196. package/PCM/src/models/PublisherInsertionOrder.js +93 -0
  197. package/PCM/src/models/TransactionHistory.js +34 -0
  198. package/PCM/src/models/associations.js +81 -0
  199. package/PCM/src/routes/approval.js +321 -0
  200. package/PCM/src/routes/creatives.js +437 -0
  201. package/PCM/src/routes/deals.js +1638 -0
  202. package/PCM/src/routes/digitalSignage.js +242 -0
  203. package/PCM/src/routes/insertionOrders.js +380 -0
  204. package/PCM/src/routes/lineItems.js +926 -0
  205. package/PCM/src/routes/system.js +384 -0
  206. package/PCM/src/services/ApprovalService.js +885 -0
  207. package/PCM/src/services/CampaignImportConverter.js +631 -0
  208. package/PCM/src/services/CampaignModeService.js +273 -0
  209. package/PCM/src/services/CampaignStatusService.js +395 -0
  210. package/PCM/src/services/ChangeHistoryService.js +316 -0
  211. package/PCM/src/services/DealIdService.js +94 -0
  212. package/PCM/src/services/DealResponseFormatter.js +90 -0
  213. package/PCM/src/services/EmailNotificationService.js +315 -0
  214. package/PCM/src/services/LineItemResponseFormatter.js +122 -0
  215. package/PCM/src/services/LineItemStatusService.js +380 -0
  216. package/PCM/src/tests/comprehensiveTestRunner.js +360 -0
  217. package/PCM/src/tests/comprehensiveTests.js +1277 -0
  218. package/PCM/src/tests/dealTypeUnitTests.js +1058 -0
  219. package/PCM/src/tests/testRunner.js +248 -0
  220. package/PCM/src/utils/caseConverter.js +92 -0
  221. package/PCM/src/utils/dealCalculations.js +206 -0
  222. package/PCM/src/utils/lineItemPayloadNormalizer.js +41 -0
  223. package/PCM/src/utils/payloadNormalizer.js +34 -0
  224. package/PCM/src/utils/sourceNormalizer.js +56 -0
  225. package/PCM/src/validators/creativeValidator.js +27 -0
  226. package/PCM/src/validators/dealValidator.js +203 -0
  227. package/PCM/src/validators/lineItemValidator.js +489 -0
  228. package/PCM/tests/approval-flows.test.js +238 -0
  229. package/PCM/tests/approval-workflow.test.js +291 -0
  230. package/PCM/tests/campaign-import-converter.test.js +543 -0
  231. package/PCM/tests/campaign-import-e2e.test.js +520 -0
  232. package/PCM/tests/campaign-status.test.js +539 -0
  233. package/PCM/tests/direct-publisher-split-reimport.test.js +460 -0
  234. package/PCM/tests/e2e/digital-signage.test.js +145 -0
  235. package/PCM/tests/e2e/search-filter-pagination.test.js +399 -0
  236. package/PCM/tests/e2e-comprehensive.test.js +3446 -0
  237. package/PCM/tests/edge-cases.test.js +340 -0
  238. package/PCM/tests/line-item-status.test.js +340 -0
  239. package/PCM/tests/seller-account-external-ids.test.js +877 -0
  240. package/PCM/tests/source-validation.test.js +324 -0
  241. package/PRD.md +3373 -0
  242. package/README.md +186 -0
  243. package/client/index.html +35 -0
  244. package/client/public/DEMO_STATUS.md +579 -0
  245. package/client/public/img/MW-logo-trans_1754045676555.png +0 -0
  246. package/client/public/locales/ar/approval.json +144 -0
  247. package/client/public/locales/ar/buyer.json +61 -0
  248. package/client/public/locales/ar/campaigns.json +1 -0
  249. package/client/public/locales/ar/common.json +218 -0
  250. package/client/public/locales/ar/contentHub.json +266 -0
  251. package/client/public/locales/ar/creatives.json +79 -0
  252. package/client/public/locales/ar/dashboard.json +57 -0
  253. package/client/public/locales/ar/deals.json +886 -0
  254. package/client/public/locales/ar/dsp.json +131 -0
  255. package/client/public/locales/ar/inventory.json +201 -0
  256. package/client/public/locales/ar/lineItems.json +553 -0
  257. package/client/public/locales/ar/navigation.json +48 -0
  258. package/client/public/locales/ar/wizard.json +1 -0
  259. package/client/public/locales/en/approval.json +144 -0
  260. package/client/public/locales/en/buyer.json +65 -0
  261. package/client/public/locales/en/campaigns.json +1 -0
  262. package/client/public/locales/en/common.json +218 -0
  263. package/client/public/locales/en/contentHub.json +266 -0
  264. package/client/public/locales/en/creatives.json +79 -0
  265. package/client/public/locales/en/dashboard.json +57 -0
  266. package/client/public/locales/en/deals.json +886 -0
  267. package/client/public/locales/en/dsp.json +131 -0
  268. package/client/public/locales/en/inventory.json +201 -0
  269. package/client/public/locales/en/lineItems.json +659 -0
  270. package/client/public/locales/en/navigation.json +48 -0
  271. package/client/public/locales/en/wizard.json +1 -0
  272. package/client/public/locales/ja/approval.json +144 -0
  273. package/client/public/locales/ja/buyer.json +61 -0
  274. package/client/public/locales/ja/campaigns.json +1 -0
  275. package/client/public/locales/ja/common.json +218 -0
  276. package/client/public/locales/ja/contentHub.json +266 -0
  277. package/client/public/locales/ja/creatives.json +79 -0
  278. package/client/public/locales/ja/dashboard.json +57 -0
  279. package/client/public/locales/ja/deals.json +886 -0
  280. package/client/public/locales/ja/dsp.json +131 -0
  281. package/client/public/locales/ja/inventory.json +201 -0
  282. package/client/public/locales/ja/lineItems.json +553 -0
  283. package/client/public/locales/ja/navigation.json +48 -0
  284. package/client/public/locales/ja/wizard.json +1 -0
  285. package/client/public/locales/zh/approval.json +144 -0
  286. package/client/public/locales/zh/buyer.json +61 -0
  287. package/client/public/locales/zh/campaigns.json +1 -0
  288. package/client/public/locales/zh/common.json +218 -0
  289. package/client/public/locales/zh/contentHub.json +266 -0
  290. package/client/public/locales/zh/creatives.json +79 -0
  291. package/client/public/locales/zh/dashboard.json +57 -0
  292. package/client/public/locales/zh/deals.json +886 -0
  293. package/client/public/locales/zh/dsp.json +131 -0
  294. package/client/public/locales/zh/inventory.json +201 -0
  295. package/client/public/locales/zh/lineItems.json +553 -0
  296. package/client/public/locales/zh/navigation.json +48 -0
  297. package/client/public/locales/zh/wizard.json +1 -0
  298. package/client/public/manifest.json +36 -0
  299. package/client/src/App.tsx +464 -0
  300. package/client/src/components/app-sidebar.tsx +312 -0
  301. package/client/src/components/approval/approval-decision-form.test.tsx +294 -0
  302. package/client/src/components/approval/approval-decision-form.tsx +326 -0
  303. package/client/src/components/approval/approval-sheet.tsx +631 -0
  304. package/client/src/components/approval/line-item-details-sheet.tsx +371 -0
  305. package/client/src/components/approval/otp-verification.test.tsx +337 -0
  306. package/client/src/components/approval/otp-verification.tsx +180 -0
  307. package/client/src/components/content-hub/bulk-transcode-dialog.tsx +379 -0
  308. package/client/src/components/content-hub/content-hub-manager-v2.tsx +574 -0
  309. package/client/src/components/content-hub/content-hub-manager.tsx +330 -0
  310. package/client/src/components/content-hub/creative-card.tsx +456 -0
  311. package/client/src/components/content-hub/creative-detail-sheet.tsx +685 -0
  312. package/client/src/components/content-hub/creative-filters.tsx +457 -0
  313. package/client/src/components/content-hub/creative-grid.tsx +329 -0
  314. package/client/src/components/content-hub/creative-selector.tsx +415 -0
  315. package/client/src/components/content-hub/creative-upload.tsx +547 -0
  316. package/client/src/components/content-hub/folder-dialogs.tsx +445 -0
  317. package/client/src/components/content-hub/folder-list.tsx +280 -0
  318. package/client/src/components/content-hub/review-dialogs.tsx +268 -0
  319. package/client/src/components/content-hub/transcode-dialog.tsx +226 -0
  320. package/client/src/components/creative-library/creative-details-view.tsx +446 -0
  321. package/client/src/components/creative-library/creative-filters-panel.tsx +203 -0
  322. package/client/src/components/creative-library/creative-list.tsx +360 -0
  323. package/client/src/components/creative-library/creative-status-badge.tsx +71 -0
  324. package/client/src/components/creative-library/folder-card.tsx +78 -0
  325. package/client/src/components/creative-library/index.ts +27 -0
  326. package/client/src/components/creative-library/new-creative-card.tsx +211 -0
  327. package/client/src/components/creative-library/upload-creative-dialog.tsx +261 -0
  328. package/client/src/components/dashboard-overview.tsx +109 -0
  329. package/client/src/components/deals/approval-history-panel.test.tsx +240 -0
  330. package/client/src/components/deals/approval-history-panel.tsx +156 -0
  331. package/client/src/components/deals/deal-status-badge.tsx +92 -0
  332. package/client/src/components/deals/import-from-planner-dialog.tsx +399 -0
  333. package/client/src/components/deals/market-insights-panel.tsx +237 -0
  334. package/client/src/components/deals/reopen-deal-sheet.tsx +191 -0
  335. package/client/src/components/deals/request-approval-sheet.test.tsx +323 -0
  336. package/client/src/components/deals/request-approval-sheet.tsx +136 -0
  337. package/client/src/components/deals/resend-approval-sheet.tsx +201 -0
  338. package/client/src/components/direct-campaigns/campaign-card.tsx +283 -0
  339. package/client/src/components/direct-campaigns/deal-filter-panel.tsx +325 -0
  340. package/client/src/components/inventory/advanced-filters-panel.tsx +273 -0
  341. package/client/src/components/inventory/csv-upload-modal.tsx +639 -0
  342. package/client/src/components/inventory/inventory-availability-view.tsx +486 -0
  343. package/client/src/components/inventory/inventory-details-sheet.tsx +376 -0
  344. package/client/src/components/inventory/inventory-map-view.tsx +596 -0
  345. package/client/src/components/inventory/inventory-settings-menu.tsx +52 -0
  346. package/client/src/components/language-switcher.tsx +53 -0
  347. package/client/src/components/line-items/campaign-forecast-panel.tsx +138 -0
  348. package/client/src/components/line-items/form-insights.tsx +89 -0
  349. package/client/src/components/line-items/geofencing/LocationCsvUploadDrawer.tsx +100 -0
  350. package/client/src/components/line-items/geofencing/POIDropdown.tsx +379 -0
  351. package/client/src/components/line-items/geofencing/SelectedLocationsSidebar.tsx +436 -0
  352. package/client/src/components/line-items/geofencing/ViewFileLocationDrawer.tsx +199 -0
  353. package/client/src/components/line-items/geofencing/components/ExistingFilesTab.tsx +268 -0
  354. package/client/src/components/line-items/geofencing/components/TemplateDownloadSection.tsx +59 -0
  355. package/client/src/components/line-items/geofencing/components/UploadTab.tsx +215 -0
  356. package/client/src/components/line-items/geofencing-map.tsx +1270 -0
  357. package/client/src/components/line-items/inventory-availability-section.tsx +178 -0
  358. package/client/src/components/line-items/line-item-schedule-manager.tsx +313 -0
  359. package/client/src/components/line-items/manual-inventory-drawer.tsx +346 -0
  360. package/client/src/components/line-items/planner-inventory-card.tsx +495 -0
  361. package/client/src/components/line-items/planner-schedule-grid.tsx +495 -0
  362. package/client/src/components/line-items/schedule-rule-editor.tsx +649 -0
  363. package/client/src/components/line-items/schedule-rule-types.ts +122 -0
  364. package/client/src/components/line-items/steps/creatives-step.tsx +681 -0
  365. package/client/src/components/line-items/steps/inventory-schedule-step.tsx +1596 -0
  366. package/client/src/components/line-items/steps/inventory-step.tsx +1533 -0
  367. package/client/src/components/line-items/steps/line-item-details-step.tsx +916 -0
  368. package/client/src/components/line-items/steps/schedule-step.tsx +273 -0
  369. package/client/src/components/line-items/steps/summary-step.tsx +680 -0
  370. package/client/src/components/line-items/steps/targeting-step.tsx +1708 -0
  371. package/client/src/components/product-switcher.tsx +105 -0
  372. package/client/src/components/protected-route.tsx +49 -0
  373. package/client/src/components/skip-link.tsx +22 -0
  374. package/client/src/components/stat-card.tsx +53 -0
  375. package/client/src/components/status-badge.tsx +96 -0
  376. package/client/src/components/ui/hierarchical-venue-selector.tsx +389 -0
  377. package/client/src/components/ui/toaster.tsx +111 -0
  378. package/client/src/contexts/auth-context.tsx +181 -0
  379. package/client/src/contexts/sidebar-state.tsx +50 -0
  380. package/client/src/contexts/theme-context.tsx +66 -0
  381. package/client/src/data/campaign-data.json +107 -0
  382. package/client/src/data/countries.json +22 -0
  383. package/client/src/hooks/use-approval.ts +366 -0
  384. package/client/src/hooks/use-keyboard-shortcuts.ts +74 -0
  385. package/client/src/hooks/use-media-query.ts +46 -0
  386. package/client/src/hooks/use-mobile.tsx +19 -0
  387. package/client/src/hooks/use-page-title.ts +21 -0
  388. package/client/src/hooks/use-toast.ts +195 -0
  389. package/client/src/index.css +694 -0
  390. package/client/src/lib/__tests__/accessibility.test.ts +104 -0
  391. package/client/src/lib/__tests__/date-utils.test.ts +199 -0
  392. package/client/src/lib/__tests__/dsp-buyer-api.test.ts +127 -0
  393. package/client/src/lib/__tests__/dsp-buyer-integration.test.ts +247 -0
  394. package/client/src/lib/__tests__/storage-utils.test.ts +167 -0
  395. package/client/src/lib/__tests__/utils.test.ts +57 -0
  396. package/client/src/lib/accessibility.ts +141 -0
  397. package/client/src/lib/api-config.ts +9 -0
  398. package/client/src/lib/auth-service.ts +209 -0
  399. package/client/src/lib/campaign-creative-api.ts +82 -0
  400. package/client/src/lib/company-api.ts +61 -0
  401. package/client/src/lib/content-hub-api.ts +407 -0
  402. package/client/src/lib/creative-mapper.ts +61 -0
  403. package/client/src/lib/date-utils.ts +119 -0
  404. package/client/src/lib/deal-helpers.ts +220 -0
  405. package/client/src/lib/dsp-buyer-api.ts +196 -0
  406. package/client/src/lib/geo-import-api.ts +151 -0
  407. package/client/src/lib/google-poi-api.ts +305 -0
  408. package/client/src/lib/i18n/__tests__/formatting.test.ts +202 -0
  409. package/client/src/lib/i18n/formatting.ts +130 -0
  410. package/client/src/lib/i18n/index.ts +8 -0
  411. package/client/src/lib/i18n-compat.ts +76 -0
  412. package/client/src/lib/influence-deals-api.ts +896 -0
  413. package/client/src/lib/inventory-api.ts +399 -0
  414. package/client/src/lib/oauth-service.ts +678 -0
  415. package/client/src/lib/poi-types.ts +75 -0
  416. package/client/src/lib/queryClient.ts +144 -0
  417. package/client/src/lib/recommendation-api.ts +380 -0
  418. package/client/src/lib/storage-utils.ts +104 -0
  419. package/client/src/lib/tolgee.ts +85 -0
  420. package/client/src/lib/utils.ts +0 -0
  421. package/client/src/main.tsx +67 -0
  422. package/client/src/mapbox-draw-modes.d.ts +32 -0
  423. package/client/src/pages/all-folders.tsx +203 -0
  424. package/client/src/pages/auth-callback.tsx +115 -0
  425. package/client/src/pages/buyer-form.tsx +339 -0
  426. package/client/src/pages/buyer-list.tsx +622 -0
  427. package/client/src/pages/content-hub.tsx +1358 -0
  428. package/client/src/pages/create-deal.tsx +2093 -0
  429. package/client/src/pages/creative-assignment-page.tsx +548 -0
  430. package/client/src/pages/creatives.tsx +5 -0
  431. package/client/src/pages/custom-pois.tsx +425 -0
  432. package/client/src/pages/dashboard.tsx +615 -0
  433. package/client/src/pages/deal-history.tsx +434 -0
  434. package/client/src/pages/deal-line-items.tsx +1703 -0
  435. package/client/src/pages/demo-status.tsx +113 -0
  436. package/client/src/pages/direct-campaign-details.tsx +361 -0
  437. package/client/src/pages/direct-campaigns-new.tsx +824 -0
  438. package/client/src/pages/dsp-form.tsx +803 -0
  439. package/client/src/pages/dsp-list.tsx +239 -0
  440. package/client/src/pages/folder-content.tsx +336 -0
  441. package/client/src/pages/integrations.tsx +429 -0
  442. package/client/src/pages/line-item-creatives.tsx +789 -0
  443. package/client/src/pages/line-item-detail-page.tsx +684 -0
  444. package/client/src/pages/line-item-form-page.tsx +3261 -0
  445. package/client/src/pages/line-item-wizard.tsx +1207 -0
  446. package/client/src/pages/login.tsx +154 -0
  447. package/client/src/pages/not-found.tsx +23 -0
  448. package/client/src/pages/proof-of-play.tsx +397 -0
  449. package/client/src/pages/public-approval.tsx +551 -0
  450. package/client/src/pages/reports.tsx +231 -0
  451. package/client/src/pages/settings.tsx +760 -0
  452. package/client/src/pages/signals.tsx +389 -0
  453. package/client/src/pages/tags.tsx +318 -0
  454. package/client/src/pages/test-results.tsx +328 -0
  455. package/client/src/store/hooks.ts +5 -0
  456. package/client/src/store/index.ts +15 -0
  457. package/client/src/store/mapMarkerLocationsSlice.ts +241 -0
  458. package/client/src/styles/design-tokens.css +324 -0
  459. package/client/src/test/setup.ts +261 -0
  460. package/client/src/test/test-utils.tsx +40 -0
  461. package/client/src/types/approval.ts +221 -0
  462. package/client/src/types/content-hub.ts +209 -0
  463. package/client/src/types/geofencing.ts +67 -0
  464. package/client/src/types/transcoding.ts +140 -0
  465. package/client/src/vite-env.d.ts +18 -0
  466. package/components.json +20 -0
  467. package/creative-api.json +1 -0
  468. package/docs/AI_REFERENCE.md +459 -0
  469. package/docs/MWDesign-Prompt.md +132 -0
  470. package/docs/MWDesign-System.md +344 -0
  471. package/docs/test-plan.md +277 -0
  472. package/e2e/AUTONOMOUS-TESTING.md +406 -0
  473. package/e2e/README.md +219 -0
  474. package/e2e/autonomous-flow.spec.ts +308 -0
  475. package/e2e/debug-sso.spec.ts +163 -0
  476. package/e2e/direct-campaigns.spec.ts +219 -0
  477. package/e2e/explore-sso.spec.ts +149 -0
  478. package/e2e/fixtures/auth.ts +26 -0
  479. package/e2e/fixtures/enhanced-test.ts +331 -0
  480. package/e2e/pagination.spec.ts +280 -0
  481. package/e2e/view-toggle.spec.ts +312 -0
  482. package/generated-icon.png +0 -0
  483. package/i18next-scanner.config.cjs +46 -0
  484. package/package.json +141 -0
  485. package/playwright.config.ts +93 -0
  486. package/postcss.config.js +6 -0
  487. package/replit.md +196 -0
  488. package/screenshot-after-login.png +0 -0
  489. package/screenshot-contenthub-grid.png +0 -0
  490. package/screenshot-contenthub-list-fixed.png +0 -0
  491. package/screenshot-contenthub-list.png +0 -0
  492. package/screenshot-create-deal.png +0 -0
  493. package/screenshot-dashboard.png +0 -0
  494. package/screenshot-deals.png +0 -0
  495. package/screenshot-login-filled.png +0 -0
  496. package/screenshot-login.png +0 -0
  497. package/screenshot.mjs +24 -0
  498. package/scripts/deploy-stg.sh +185 -0
  499. package/shared/direct-io-schema.ts +383 -0
  500. package/shared/schema.ts +439 -0
  501. package/shared/screen-types.ts +149 -0
  502. package/springdocDefault.json +1 -0
  503. package/swagger-ui-bundle.js +2 -0
  504. package/swagger-ui-init.js +10316 -0
  505. package/tailwind.config.ts +282 -0
  506. package/terraform/README.md +306 -0
  507. package/terraform/cloudfront.tf +289 -0
  508. package/terraform/ecs.tf +727 -0
  509. package/terraform/environments/dev.tfvars +59 -0
  510. package/terraform/environments/production.tfvars +60 -0
  511. package/terraform/main.tf +47 -0
  512. package/terraform/outputs.tf +145 -0
  513. package/terraform/s3.tf +192 -0
  514. package/terraform/variables.tf +226 -0
  515. package/terraform/waf.tf +165 -0
  516. package/terraform-frontend/.terraform.lock.hcl +25 -0
  517. package/terraform-frontend/README.md +85 -0
  518. package/terraform-frontend/cloudfront.tf +125 -0
  519. package/terraform-frontend/main.tf +31 -0
  520. package/terraform-frontend/outputs.tf +24 -0
  521. package/terraform-frontend/terraform.tfvars +12 -0
  522. package/terraform-frontend/variables.tf +53 -0
  523. package/tsconfig.json +23 -0
  524. package/vite.config.ts +226 -0
  525. package/vitest.config.ts +56 -0
@@ -0,0 +1,886 @@
1
+ {
2
+ "deals": {
3
+ "advertiser": "広告主",
4
+ "agency": "代理店",
5
+ "brand": "ブランド",
6
+ "budget": "予算",
7
+ "createDeal": "ディールを作成",
8
+ "createFirst": "最初のディールを作成して始めましょう",
9
+ "currency": "通貨",
10
+ "dealName": "ディール名",
11
+ "dealType": "ディールタイプ",
12
+ "deleteConfirm": "このディールを削除してもよろしいですか?",
13
+ "deleteWarning": "この操作は元に戻せません。関連するすべてのラインアイテムも削除されます。",
14
+ "editDeal": "ディールを編集",
15
+ "endDate": "終了日",
16
+ "flightDates": "フライト日程",
17
+ "noDeal": "ディールが見つかりません",
18
+ "startDate": "開始日",
19
+ "status": "ステータス",
20
+ "subtitle": "ディールを簡単かつ効率的に管理",
21
+ "title": "ディール"
22
+ },
23
+ "createDeal": {
24
+ "createTitle": "新規ディール作成",
25
+ "updateTitle": "ディールを更新",
26
+ "createSubtitle": "広告ディールの商業コンテナを定義します。",
27
+ "updateSubtitle": "広告ディールの詳細を変更します。",
28
+ "enterDealName": "ディール名を入力",
29
+ "selectBrand": "ブランドを選択",
30
+ "searchBrands": "ブランドを検索...",
31
+ "loadingBrands": "ブランドを読み込み中...",
32
+ "noBrandsFound": "ブランドが見つかりません",
33
+ "typeToEnterBrand": "ブランド名を入力してください",
34
+ "loading": "読み込み中...",
35
+ "loadMore": "さらに読み込む...",
36
+ "createNewBrand": "新規ブランドを作成",
37
+ "countries": "対象国",
38
+ "selectCountries": "国を選択",
39
+ "goalType": "目標タイプ",
40
+ "goalValue": "目標値",
41
+ "selectGoalType": "目標タイプを選択",
42
+ "enterGoalValue": "目標値を入力",
43
+ "impressions": "インプレッション",
44
+ "budget": "予算",
45
+ "views": "視聴回数",
46
+ "clicks": "クリック",
47
+ "status": "ステータス",
48
+ "selectStatus": "ステータスを選択",
49
+ "mediaType": "メディアタイプ",
50
+ "selectMediaType": "メディアタイプを選択",
51
+ "sspPartner": "SSPパートナー",
52
+ "selectSspPartner": "SSPパートナーを選択",
53
+ "billable": "請求対象",
54
+ "billableDescription": "この取引を請求に含める",
55
+ "marketInsights": "マーケットインサイト",
56
+ "population": "人口",
57
+ "availableInventories": "利用可能な在庫",
58
+ "estimatedImpressions": "推定インプレッション",
59
+ "mode": "モード",
60
+ "traditional": "トラディショナル",
61
+ "traditionalDesc": "広告主との直接取引",
62
+ "programmatic": "プログラマティック",
63
+ "programmaticDesc": "DSPベースの自動購入",
64
+ "clientType": "クライアントタイプ",
65
+ "selectClientType": "クライアントタイプを選択",
66
+ "directAdvertiser": "直接広告主",
67
+ "selectCurrency": "通貨を選択",
68
+ "currencyForDeal": "このディールの通貨",
69
+ "selectAgency": "代理店を選択",
70
+ "searchAgencies": "代理店を検索...",
71
+ "loadingAgencies": "代理店を読み込み中...",
72
+ "noAgenciesFound": "代理店が見つかりません",
73
+ "approvalEmails": "承認メール",
74
+ "enterEmailAddress": "メールアドレスを入力",
75
+ "add": "追加",
76
+ "totalBudget": "総予算",
77
+ "enterTotalBudget": "総予算を入力",
78
+ "budgetHelpText": "日次予算上限とペーシングはラインアイテムレベルで設定します",
79
+ "selectDealType": "ディールタイプを選択",
80
+ "programmaticType": "プログラマティックタイプ",
81
+ "buyers": "バイヤー",
82
+ "dsp": "DSP",
83
+ "seatId": "シートID",
84
+ "buyerName": "バイヤー名",
85
+ "addBuyer": "バイヤーを追加",
86
+ "auctionType": "オークションタイプ",
87
+ "selectAuctionType": "オークションタイプを選択",
88
+ "fixedPriceRequired": "保証型およびプリファードディールには固定価格が必要です",
89
+ "transactionType": "取引タイプ",
90
+ "selectTransactionType": "取引タイプを選択",
91
+ "costType": "コストタイプ",
92
+ "selectCostType": "コストタイプを選択",
93
+ "formInsights": "フォームインサイト",
94
+ "insightDealName": "ディール名は説明的でユニークである必要があります",
95
+ "insightFlightDates": "フライト日程はラインアイテムから自動計算されます",
96
+ "insightBrand": "ブランドを選択するとターゲティング推奨に役立ちます",
97
+ "insightApprovalEmails": "承認メールはディール承認の通知を受け取ります",
98
+ "insightFixedPrice": "保証型およびプリファードディールは固定価格オークションを使用します",
99
+ "insightCpsNotAvailable": "CPSは保証型ディールでは利用できません",
100
+ "quickTips": "クイックヒント",
101
+ "tipTraditional": "広告主または代理店との直接取引",
102
+ "tipProgrammatic": "DSPベースの自動購入",
103
+ "tipConfigureLineItems": "ディール作成後にラインアイテムを設定します",
104
+ "cancel": "キャンセル",
105
+ "updating": "更新中...",
106
+ "creating": "作成中...",
107
+ "successTitle": "ディールが正常に作成されました",
108
+ "successDescription": "ラインアイテムにリダイレクト中...",
109
+ "errorTitle": "ディール作成エラー",
110
+ "errorDescription": "ディールの作成に失敗しました",
111
+ "pleaseWait": "お待ちください",
112
+ "loadingAgencyData": "代理店データを読み込み中です。しばらくしてから再度お試しください。",
113
+ "nonBillable": "非課金対象",
114
+ "nonBillableDescription": "この取引を非課金対象としてマーク",
115
+ "hardStop": "ハードストップ",
116
+ "hardStopDescription": "目標達成時に配信を停止",
117
+ "country": "国",
118
+ "selectCountry": "国を選択"
119
+ },
120
+ "updateDeal": {
121
+ "title": "ディールを更新",
122
+ "successTitle": "ディールが正常に更新されました",
123
+ "successDescription": "ラインアイテムにリダイレクト中...",
124
+ "errorTitle": "ディール更新エラー",
125
+ "errorDescription": "ディールの更新に失敗しました"
126
+ },
127
+ "lineItems": {
128
+ "budget": "予算",
129
+ "createFirst": "このディールの最初のラインアイテムを作成",
130
+ "createLineItem": "ラインアイテムを作成",
131
+ "delivery": "配信",
132
+ "editLineItem": "ラインアイテムを編集",
133
+ "endDate": "終了日",
134
+ "frequency": "フリークエンシー",
135
+ "impressions": "インプレッション",
136
+ "inventories": "在庫",
137
+ "lineItemName": "ラインアイテム名",
138
+ "newLineItem": "新規ラインアイテム",
139
+ "noLineItems": "ラインアイテムが見つかりません",
140
+ "pacing": "ペーシング",
141
+ "priority": "優先度",
142
+ "progress": "進捗",
143
+ "startDate": "開始日",
144
+ "subtitle": "{{dealName}} のラインアイテムを管理",
145
+ "title": "ラインアイテム",
146
+ "totalImpressions": "総インプレッション"
147
+ },
148
+ "pacing": {
149
+ "asap": "できるだけ早く",
150
+ "description": {
151
+ "asap": "できるだけ早くインプレッションを配信",
152
+ "even": "キャンペーン期間を通じてインプレッションを均等に配分",
153
+ "frontloaded": "キャンペーン開始時により多くのインプレッションを配信"
154
+ },
155
+ "even": "均等配分",
156
+ "frontloaded": "前倒し"
157
+ },
158
+ "summary": {
159
+ "budgetSpent": "使用予算",
160
+ "creatives": "クリエイティブ",
161
+ "dealHistory": "ディール履歴",
162
+ "dealSummary": "ディール概要",
163
+ "daysRemaining": "残り日数",
164
+ "inventories": "在庫",
165
+ "lineItemPerformances": "ラインアイテムパフォーマンス",
166
+ "noPacingData": "ペーシングデータがありません",
167
+ "overallDelivery": "全体配信"
168
+ },
169
+ "table": {
170
+ "actions": "アクション",
171
+ "lineItem": "ラインアイテム",
172
+ "sno": "番号"
173
+ },
174
+ "wizard": {
175
+ "title": "ラインアイテムウィザード",
176
+ "steps": {
177
+ "details": "詳細",
178
+ "inventorySchedule": "在庫とスケジュール",
179
+ "targeting": "ターゲティング",
180
+ "creatives": "クリエイティブ",
181
+ "summary": "概要"
182
+ },
183
+ "common": {
184
+ "next": "次へ",
185
+ "back": "戻る",
186
+ "save": "保存",
187
+ "cancel": "キャンセル",
188
+ "saving": "保存中...",
189
+ "loading": "読み込み中...",
190
+ "searchHere": "ここで検索",
191
+ "selectAll": "すべて選択",
192
+ "noResults": "結果が見つかりません",
193
+ "selected": "選択済み",
194
+ "pageItems": "ページ項目",
195
+ "groupBy": "グループ化",
196
+ "allInventories": "すべての在庫"
197
+ },
198
+ "details": {
199
+ "title": "ラインアイテム詳細",
200
+ "subtitle": "ラインアイテムの基本情報を定義します。",
201
+ "name": "名前",
202
+ "lineItemName": "ラインアイテム名",
203
+ "enterLineItemName": "ラインアイテム名を入力",
204
+ "flightDates": "フライト日程",
205
+ "selectFlightDates": "フライト日程の範囲を選択",
206
+ "creativeType": "クリエイティブタイプ",
207
+ "selectCreativeType": "クリエイティブタイプを選択",
208
+ "display": "ディスプレイ",
209
+ "displayDesc": "静止画とバナー",
210
+ "video": "動画",
211
+ "videoDesc": "動画コンテンツとアニメーション",
212
+ "audio": "音声",
213
+ "audioDesc": "音声広告",
214
+ "creativeDuration": "クリエイティブ再生時間(秒)",
215
+ "durationPlaceholder": "例: 10",
216
+ "durationOfPlayback": "クリエイティブの再生時間",
217
+ "budgetAmount": "予算金額",
218
+ "enterAmount": "金額を入力",
219
+ "currencyInherited": "通貨はキャンペーンから継承されます",
220
+ "goalType": "目標タイプ",
221
+ "selectGoalType": "目標タイプを選択",
222
+ "impressions": "インプレッション",
223
+ "reach": "リーチ",
224
+ "shareOfVoice": "シェアオブボイス",
225
+ "targetValue": "目標値",
226
+ "enterImpressions": "インプレッション数を入力",
227
+ "enterUsers": "ユーザー数を入力",
228
+ "enterPercentage": "パーセンテージを入力(0-100)",
229
+ "impressionsDesc": "達成するインプレッションの総数",
230
+ "reachDesc": "リーチするユニークユーザー数",
231
+ "sovDesc": "利用可能な在庫のパーセンテージ(0-100%)",
232
+ "pacing": "ペーシング",
233
+ "selectPacing": "ペーシングを選択",
234
+ "pacingAsap": "できるだけ早く",
235
+ "pacingAsapDesc": "割り当てられた予算は、フライト日の最も早い時点で目標数量を達成するためにすべて使用されます。",
236
+ "pacingEven": "均等配分(デフォルト)",
237
+ "pacingEvenDesc": "予算はフライト期間全体で均等に配分されます。",
238
+ "pacingFrontLoaded": "前倒し",
239
+ "pacingFrontLoadedDesc": "キャンペーン開始時に予算配分が高く、終盤に向けて減少します。",
240
+ "pacingBackLoaded": "後倒し",
241
+ "pacingBackLoadedDesc": "キャンペーン開始時は予算配分が低く、終盤に向けて増加します。",
242
+ "dailyImpressionCap": "日次インプレッション上限",
243
+ "optionalDailyLimit": "オプションの日次上限",
244
+ "maxImpressionsPerDay": "1日の最大インプレッション数",
245
+ "hourlyImpressionCap": "時間ごとのインプレッション上限",
246
+ "optionalHourlyLimit": "オプションの時間ごと上限",
247
+ "maxImpressionsPerHour": "1時間の最大インプレッション数",
248
+ "projectedPacingDelivery": "予測ペーシング配信",
249
+ "pacingGraphTooltip": "このグラフは、選択したペーシングタイプに基づく予測配信パターンを示しています。",
250
+ "goalPercentage": "目標パーセンテージ",
251
+ "numberOfDays": "日数",
252
+ "formInsights": "フォームインサイト",
253
+ "insightName": "ラインアイテムに説明的な名前を付けてください",
254
+ "insightDates": "フライト日程は広告の配信期間を定義します",
255
+ "insightBudget": "支出を管理するために予算を設定してください",
256
+ "insightGoal": "キャンペーン目標に合った目標を選択してください",
257
+ "tipPacing": "均等ペーシングは一貫した露出のために配信を均等に分配します",
258
+ "tipBudget": "ラインアイテム予算を設定する際は、キャンペーン全体の予算を考慮してください"
259
+ },
260
+ "inventory": {
261
+ "title": "在庫",
262
+ "subtitle": "適切な在庫を選択",
263
+ "description": "スクリーンを選択してスケジュールを設定",
264
+ "screens": "スクリーン",
265
+ "networks": "ネットワーク",
266
+ "packages": "パッケージ",
267
+ "items": "アイテム",
268
+ "noScreensFound": "スクリーンが見つかりません",
269
+ "noNetworksFound": "ネットワークが見つかりません",
270
+ "noPackagesFound": "パッケージが見つかりません",
271
+ "loadingInventories": "在庫を読み込み中...",
272
+ "selectedScreens": "選択したスクリーン",
273
+ "noScreensSelected": "スクリーンが選択されていません",
274
+ "filterByLocation": "ロケーションでフィルター",
275
+ "filterByVenue": "会場タイプでフィルター",
276
+ "searchScreens": "スクリーンを検索...",
277
+ "listView": "リスト表示",
278
+ "advancedFilter": "詳細フィルター",
279
+ "settings": "設定",
280
+ "scheduleTitle": "スケジュールと予測",
281
+ "flight": "フライト",
282
+ "schedule": "スケジュール",
283
+ "impressions": "インプレッション",
284
+ "reach": "リーチ",
285
+ "frequency": "フリークエンシー",
286
+ "adPlays": "広告再生回数",
287
+ "sov": "SOV",
288
+ "cpm": "CPM",
289
+ "totalCost": "総コスト",
290
+ "noInventorySelected": "在庫が選択されていません",
291
+ "selectInventoryForForecast": "予測を見るには在庫を選択してください"
292
+ },
293
+ "targeting": {
294
+ "title": "ターゲティングオプション",
295
+ "subtitle": "オーディエンスとロケーションターゲティングを設定",
296
+ "description": "オーディエンスとロケーションターゲティングを設定",
297
+ "demographicsTab": "デモグラフィック",
298
+ "venueTypesTab": "会場タイプ",
299
+ "geofencingTab": "ジオフェンシング",
300
+ "signalsTab": "シグナル",
301
+ "ageGroups": "年齢層",
302
+ "selectAgeGroups": "年齢層を選択",
303
+ "genders": "性別",
304
+ "selectGenders": "性別を選択",
305
+ "male": "男性",
306
+ "female": "女性",
307
+ "other": "その他",
308
+ "incomeGroups": "所得層",
309
+ "selectIncomeGroups": "所得層を選択",
310
+ "lowIncome": "低所得",
311
+ "lowerMiddle": "中低所得",
312
+ "middle": "中所得",
313
+ "upperMiddle": "中高所得",
314
+ "highIncome": "高所得",
315
+ "interests": "興味・関心",
316
+ "selectInterests": "興味・関心を選択",
317
+ "sportsFitness": "スポーツ&フィットネス",
318
+ "travel": "旅行",
319
+ "technology": "テクノロジー",
320
+ "foodDining": "グルメ",
321
+ "entertainment": "エンターテインメント",
322
+ "fashion": "ファッション",
323
+ "automotive": "自動車",
324
+ "audienceBehaviors": "オーディエンス行動",
325
+ "selectBehaviors": "行動を選択",
326
+ "dailyCommuter": "日常通勤者",
327
+ "frequentShopper": "頻繁な買い物客",
328
+ "weekendShopper": "週末の買い物客",
329
+ "tourist": "観光客",
330
+ "student": "学生",
331
+ "businessProfessional": "ビジネスプロフェッショナル",
332
+ "venueTypes": "会場タイプ",
333
+ "selectVenueTypes": "会場タイプを選択",
334
+ "loadingVenues": "会場タイプを読み込み中...",
335
+ "geofencing": "ジオフェンシング",
336
+ "addGeofence": "ジオフェンスを追加",
337
+ "drawOnMap": "地図上に描画",
338
+ "uploadLocations": "ロケーションをアップロード",
339
+ "radius": "半径",
340
+ "includeExclude": "含める/除外",
341
+ "includeAll": "すべて含める",
342
+ "noLocations": "ロケーションが追加されていません",
343
+ "addLocationsHint": "地図上に描画するかロケーションをアップロードしてジオフェンスエリアを定義してください",
344
+ "locationName": "ロケーション名",
345
+ "locationAddress": "住所",
346
+ "remove": "削除",
347
+ "addPoi": "POIを追加",
348
+ "poiTypes": "POIタイプ",
349
+ "maxPoisPerLocation": "ロケーションごとに最大{{max}}個のPOI",
350
+ "signals": "シグナル",
351
+ "signalsDescription": "リアルタイム条件に基づいて広告をトリガー",
352
+ "weather": "天気",
353
+ "weatherDescription": "天気条件と気温に基づいて広告をトリガー",
354
+ "traffic": "交通",
355
+ "trafficDescription": "リアルタイムの交通密度に基づいて配信を調整",
356
+ "airQuality": "空気質指数",
357
+ "airQualityDescription": "空気質レベルに基づいてターゲティング",
358
+ "timeOfDay": "時間帯",
359
+ "timeOfDayDescription": "デイパートターゲティング(朝、午後、夕方)",
360
+ "weatherConditions": "天気条件",
361
+ "temperature": "気温",
362
+ "temperatureMin": "最低気温",
363
+ "temperatureMax": "最高気温",
364
+ "temperatureUnit": "気温の単位",
365
+ "celsius": "摂氏 (°C)",
366
+ "fahrenheit": "華氏 (°F)",
367
+ "trafficDensity": "交通密度",
368
+ "low": "低",
369
+ "moderate": "中",
370
+ "high": "高",
371
+ "aqiThreshold": "AQIしきい値",
372
+ "good": "良好",
373
+ "unhealthySensitive": "敏感なグループに不健康",
374
+ "unhealthy": "不健康",
375
+ "veryUnhealthy": "非常に不健康",
376
+ "hazardous": "危険",
377
+ "dayparts": "デイパート",
378
+ "morning": "朝 (6AM-12PM)",
379
+ "afternoon": "午後 (12PM-6PM)",
380
+ "evening": "夕方 (6PM-10PM)",
381
+ "night": "夜 (10PM-6AM)",
382
+ "smartSuggestions": "スマート提案",
383
+ "aiPowered": "AI駆動",
384
+ "basedOnCampaign": "キャンペーンデータに基づいて、これらのターゲティングオプションをお勧めします",
385
+ "applySuggestions": "提案を適用",
386
+ "formInsights": "ターゲティングインサイト",
387
+ "insightDemographics": "デモグラフィックターゲティングでオーディエンスを絞り込む",
388
+ "insightVenues": "ターゲットオーディエンスに合った会場タイプを選択",
389
+ "insightGeofencing": "ロケーション固有のキャンペーンにはジオフェンシングを使用",
390
+ "insightSignals": "リアルタイムシグナルは適切なタイミングでオーディエンスにリーチするのに役立ちます",
391
+ "tipCombine": "より正確なターゲティングのために複数のオプションを組み合わせる",
392
+ "tipTest": "広くから始めて、パフォーマンスデータに基づいて絞り込む"
393
+ },
394
+ "creatives": {
395
+ "title": "クリエイティブ割り当て",
396
+ "subtitle": "クリエイティブアセットをラインアイテムにドラッグ&ドロップで割り当て",
397
+ "description": "このラインアイテムにクリエイティブを割り当て",
398
+ "assignCreatives": "クリエイティブを割り当て",
399
+ "browseLibrary": "ライブラリを閲覧",
400
+ "noCreatives": "クリエイティブが割り当てられていません",
401
+ "uploadNew": "新規アップロード",
402
+ "skipStep": "このステップをスキップ",
403
+ "contentHub": "コンテンツハブクリエイティブ",
404
+ "typeOnly": "のみ",
405
+ "showingMatching": "在庫解像度に一致するクリエイティブを表示中",
406
+ "allowedResolutions": "許可された解像度",
407
+ "loadingCreatives": "クリエイティブを読み込み中...",
408
+ "noMatchingCreatives": "一致するクリエイティブが見つかりません",
409
+ "uploadToStart": "開始するにはファイルをアップロード",
410
+ "uploadWithResolution": "以下の解像度のファイルをアップロード",
411
+ "assignedCreatives": "割り当て済みクリエイティブ",
412
+ "noCreativesAssigned": "まだクリエイティブが割り当てられていません",
413
+ "dragDropHint": "ここにクリエイティブをドラッグ&ドロップ..",
414
+ "creative": "クリエイティブ",
415
+ "creatives": "クリエイティブ",
416
+ "duplicateError": "は既にこのラインアイテムに割り当てられています",
417
+ "formInsights": "クリエイティブインサイト",
418
+ "insightMatch": "クリエイティブは選択した在庫に合わせてフィルタリングされています",
419
+ "insightResolution": "解像度の互換性により適切な表示が保証されます",
420
+ "insightMultiple": "A/Bテスト用に複数のクリエイティブを割り当て",
421
+ "tipDragDrop": "ライブラリからドロップゾーンにクリエイティブをドラッグ",
422
+ "tipClick": "またはクリエイティブをクリックして直接割り当て"
423
+ },
424
+ "summary": {
425
+ "title": "確認して送信",
426
+ "subtitle": "送信前にすべてのラインアイテム詳細を確認してください。",
427
+ "description": "ラインアイテム設定を確認",
428
+ "lineItemDetails": "ラインアイテム詳細",
429
+ "name": "名前",
430
+ "untitledLineItem": "無題のラインアイテム",
431
+ "flightDates": "フライト日程",
432
+ "budget": "予算",
433
+ "goal": "目標",
434
+ "pacing": "ペーシング",
435
+ "dailyCap": "日次上限",
436
+ "hourlyCap": "時間ごと上限",
437
+ "notSet": "未設定",
438
+ "targeting": "ターゲティング",
439
+ "noTargetingSet": "ターゲティング未設定",
440
+ "noTargetingDesc": "ターゲティング条件が設定されていません。ラインアイテムはすべてのオーディエンスをターゲットにします。",
441
+ "ageGroups": "年齢層",
442
+ "genders": "性別",
443
+ "incomeGroups": "所得層",
444
+ "interests": "興味・関心",
445
+ "venueTypes": "会場タイプ",
446
+ "geofencing": "ジオフェンシング",
447
+ "location": "ロケーション",
448
+ "locations": "ロケーション",
449
+ "signals": "シグナル",
450
+ "inventories": "在庫",
451
+ "screen": "スクリーン",
452
+ "screens": "スクリーン",
453
+ "noInventoriesSelected": "在庫が選択されていません。",
454
+ "totalScreens": "総スクリーン数",
455
+ "resolutions": "解像度",
456
+ "selectedScreens": "選択したスクリーン",
457
+ "more": "さらに",
458
+ "creatives": "クリエイティブ",
459
+ "creative": "クリエイティブ",
460
+ "noCreativesAssigned": "クリエイティブが割り当てられていません。",
461
+ "estimatedReach": "予測リーチ",
462
+ "totalBudget": "総予算",
463
+ "assignedCreatives": "割り当て済みクリエイティブ",
464
+ "targetingSettings": "ターゲティング設定",
465
+ "reviewDetails": "詳細を確認"
466
+ }
467
+ },
468
+ "directWizard": {
469
+ "common": {
470
+ "nextStep": "次のステップ",
471
+ "previousStep": "前のステップ",
472
+ "loading": "読み込み中...",
473
+ "saving": "保存中...",
474
+ "creating": "作成中...",
475
+ "updating": "更新中...",
476
+ "creatingCampaign": "キャンペーン作成中...",
477
+ "updatingCampaign": "キャンペーン更新中...",
478
+ "createCampaign": "キャンペーンを作成",
479
+ "updateCampaign": "キャンペーンを更新",
480
+ "optional": "オプション",
481
+ "required": "必須",
482
+ "searchHere": "ここで検索...",
483
+ "createNew": "新規作成",
484
+ "selectBrand": "ブランドを選択",
485
+ "selected": "選択済み"
486
+ },
487
+ "dealDetails": {
488
+ "title": "ディール詳細",
489
+ "subtitle": "ディールの商業コンテナを定義します。",
490
+ "dealName": "ディール名",
491
+ "dealNamePlaceholder": "Campaign_Sep_08_2025",
492
+ "flightDates": "フライト日程",
493
+ "selectFlightDateRange": "フライト日程の範囲を選択",
494
+ "brand": "ブランド",
495
+ "clientType": "クライアントタイプ",
496
+ "directAdvertiser": "直接広告主/トラディショナル",
497
+ "agency": "代理店",
498
+ "totalBudget": "総予算",
499
+ "enterBudgetAmount": "予算金額を入力",
500
+ "formInsights": "フォームインサイト",
501
+ "quickTips": "クイックヒント",
502
+ "insightCampaignName": "キャンペーン名は説明的でユニークである必要があります",
503
+ "insightFlightDates": "より良い在庫の可用性のために現実的なキャンペーン日程を設定してください",
504
+ "insightBrand": "ブランドを選択するとターゲティング推奨に役立ちます",
505
+ "tipBrandRecommendations": "ブランドを選択するとより良い推奨が得られます",
506
+ "tipBudgetNextStep": "予算と目標は次のステップで設定します",
507
+ "tipChangeDetails": "これらの詳細はいつでも変更できます"
508
+ },
509
+ "campaignDetails": {
510
+ "title": "ディール詳細",
511
+ "subtitle": "ディール情報を設定",
512
+ "dealName": "ディール名",
513
+ "dealNamePlaceholder": "Deal_Sep_08_2025",
514
+ "dealType": "ディールタイプ",
515
+ "selectDealType": "ディールタイプを選択",
516
+ "programmaticType": "プログラマティックタイプ",
517
+ "guaranteed": "プログラマティック保証",
518
+ "preferredDeal": "プリファードディール",
519
+ "privateAuction": "プライベートオークション",
520
+ "evergreenPmp": "エバーグリーンPMP",
521
+ "dealDates": "ディール日程",
522
+ "selectDealDateRange": "ディール日程の範囲を選択",
523
+ "brand": "ブランド",
524
+ "brandPlaceholder": "Acme Corp",
525
+ "clientType": "クライアントタイプ",
526
+ "selectClientType": "クライアントタイプを選択",
527
+ "direct": "ダイレクト",
528
+ "buyer": "バイヤー",
529
+ "agency": "代理店",
530
+ "buyerName": "バイヤー名",
531
+ "buyerNamePlaceholder": "メディアバイイング株式会社",
532
+ "agencyName": "代理店名",
533
+ "agencyNamePlaceholder": "クリエイティブエージェンシー有限会社",
534
+ "approvalEmails": "承認メール",
535
+ "approvalEmailsPlaceholder": "承認者のメールをここに入力...",
536
+ "targetCountry": "ターゲット国",
537
+ "selectCountry": "国を選択",
538
+ "malaysia": "マレーシア",
539
+ "singapore": "シンガポール",
540
+ "indonesia": "インドネシア",
541
+ "thailand": "タイ",
542
+ "philippines": "フィリピン",
543
+ "japan": "日本",
544
+ "unitedStates": "アメリカ合衆国",
545
+ "unitedKingdom": "イギリス",
546
+ "totalBudget": "総予算",
547
+ "enterBudgetAmount": "予算金額を入力",
548
+ "dailyBudgetCap": "日次予算上限",
549
+ "enterDailyBudgetAmount": "日次予算金額を入力"
550
+ },
551
+ "budgetGoal": {
552
+ "title": "予算とキャンペーン目標",
553
+ "subtitle": "キャンペーン予算を設定し、パフォーマンス目標を定義",
554
+ "budgetAllocation": "予算配分",
555
+ "country": "国",
556
+ "selectCountry": "国を選択",
557
+ "currency": "通貨",
558
+ "selectCurrency": "通貨を選択",
559
+ "currencyCodeHelp": "ISO 4217通貨コード",
560
+ "totalBudget": "総予算",
561
+ "totalBudgetHelp": "選択した通貨でのキャンペーン総予算",
562
+ "dailyBudget": "日次予算",
563
+ "dailyBudgetHelp": "オプションの日次支出上限",
564
+ "performanceGoals": "パフォーマンス目標",
565
+ "goalType": "目標タイプ",
566
+ "selectGoalType": "目標タイプを選択",
567
+ "targetValue": "目標値",
568
+ "targetValueHelp": "選択した目標タイプの目標値",
569
+ "optimizationStrategy": "最適化戦略",
570
+ "nextTargeting": "次へ: ターゲティング"
571
+ },
572
+ "inventories": {
573
+ "title": "在庫",
574
+ "subtitle": "キャンペーンのビルボードとスクリーン在庫を選択",
575
+ "viewSelected": "選択済みを表示",
576
+ "selectedInventories": "選択済み在庫",
577
+ "campaignInventories": "キャンペーン在庫",
578
+ "newlySelected": "新規選択",
579
+ "noNewInventoriesSelected": "新規在庫が選択されていません",
580
+ "noBillboardsSelected": "ビルボードが選択されていません",
581
+ "selectAtLeastOne": "キャンペーンに少なくとも1つのビルボードを選択してください。",
582
+ "inventoryRemoved": "在庫が削除されました",
583
+ "inventoryRemovedDesc": "在庫がキャンペーンから削除されました。",
584
+ "removeError": "エラー",
585
+ "removeErrorDesc": "在庫の削除に失敗しました。再試行してください。",
586
+ "nextSchedule": "次へ: スケジュール"
587
+ },
588
+ "schedule": {
589
+ "title": "キャンペーンスケジュール",
590
+ "subtitle": "キャンペーンの実行時期を設定",
591
+ "scheduleType": "スケジュールタイプ",
592
+ "customWeeklySchedule": "カスタム週間スケジュール",
593
+ "presetTemplate": "プリセットテンプレート",
594
+ "advancedScheduling": "高度なスケジューリング",
595
+ "apply247": "24/7を適用",
596
+ "applyBusinessHours": "営業時間を適用",
597
+ "presetNotImplemented": "プリセットスケジュールはまだ実装されていません。「カスタム週間スケジュール」を選択してください。",
598
+ "advancedNotImplemented": "高度なスケジューリングはまだ実装されていません。「カスタム週間スケジュール」を選択してください。",
599
+ "enableAtLeastOneDay": "スケジュールで少なくとも1日を有効にしてください。",
600
+ "atLeastOneHourRequired": "有効な日には少なくとも1時間を選択する必要があります",
601
+ "presetTemplateHelp": "プリセットテンプレートの選択は高度な設定で利用可能になります。",
602
+ "advancedSchedulingHelp": "季節ルールとイベントベースのトリガーを備えた高度なスケジューリングは高度な設定で利用可能になります。",
603
+ "nextCreatives": "次へ: クリエイティブ",
604
+ "monday": "月曜日",
605
+ "tuesday": "火曜日",
606
+ "wednesday": "水曜日",
607
+ "thursday": "木曜日",
608
+ "friday": "金曜日",
609
+ "saturday": "土曜日",
610
+ "sunday": "日曜日"
611
+ },
612
+ "pacing": {
613
+ "title": "ステップ7 — ペーシングと配信",
614
+ "subtitle": "キャンペーン予算とインプレッションが時間をかけてどのように配分されるかを制御します。スクリーンの可用性とデイパートに合わせて配信ルールを定義します。",
615
+ "pacingStrategy": "ペーシング戦略",
616
+ "even": "均等配分(デフォルト)",
617
+ "evenDesc": "キャンペーン全体でインプレッションを均等に配分",
618
+ "asap": "できるだけ早く",
619
+ "asapDesc": "できるだけ早く配信(リーチを素早く最大化)",
620
+ "frontLoaded": "前倒し",
621
+ "frontLoadedDesc": "キャンペーン初期に配信を集中",
622
+ "backLoaded": "後倒し",
623
+ "backLoadedDesc": "キャンペーン終盤に向けて勢いを付ける",
624
+ "timeOfDayAware": "時間帯対応",
625
+ "timeOfDayAwareDesc": "デイパートのパフォーマンスに基づいてペーシングを調整",
626
+ "custom": "カスタム",
627
+ "customDesc": "独自の配信曲線を定義",
628
+ "pacingControls": "ペーシングコントロール",
629
+ "dailyBudgetCap": "日次予算上限",
630
+ "hourlyImpressionLimit": "時間ごとのインプレッション制限",
631
+ "respectDayparts": "デイパートを尊重",
632
+ "maxDeviation": "最大偏差%",
633
+ "projectedDelivery": "予測配信",
634
+ "autoAdjustments": "自動調整",
635
+ "enable": "有効化",
636
+ "autoAdjustmentPlaceholder": "例: 配信 < 50% → 20%増加",
637
+ "autoAdjustmentHelp": "配信パフォーマンスに基づく自動ペーシング調整を定義",
638
+ "nextReview": "次へ → レビュー"
639
+ },
640
+ "targeting": {
641
+ "title": "ターゲティングオプション",
642
+ "targetingRecommendations": "ターゲティング推奨",
643
+ "basedOnCampaign": "キャンペーン詳細に基づき、以下のターゲティングオプションをお勧めします",
644
+ "apply": "適用",
645
+ "demographicsVenue": "デモグラフィック&会場",
646
+ "geofencing": "ジオフェンシング",
647
+ "signals": "シグナル",
648
+ "ageGroups": "年齢層",
649
+ "genders": "性別",
650
+ "incomeBrackets": "所得層",
651
+ "interests": "興味・関心",
652
+ "audienceBehaviors": "オーディエンス行動",
653
+ "venueTypes": "会場タイプ",
654
+ "showMore": "さらに表示",
655
+ "showLess": "表示を減らす",
656
+ "geofencingLocations": "ジオフェンシングロケーション",
657
+ "drawOnMap": "地図上に描画",
658
+ "uploadCsv": "CSVアップロード",
659
+ "defaultRadius": "デフォルト半径",
660
+ "km": "km",
661
+ "locations": "ロケーション",
662
+ "locationsAdded": "件のロケーションを追加",
663
+ "noLocations": "ロケーションが追加されていません",
664
+ "drawOrUpload": "地図上に描画するかロケーションをアップロードしてジオフェンスエリアを定義",
665
+ "signalsTitle": "シグナルベースのターゲティング",
666
+ "addSignal": "シグナルを追加",
667
+ "searchSignals": "シグナルを検索...",
668
+ "weatherTriggers": "天気トリガー",
669
+ "searchBehavior": "検索行動",
670
+ "footfallPatterns": "フットフォールパターン",
671
+ "timeBased": "時間ベース",
672
+ "targetingPreview": "ターゲティングプレビュー",
673
+ "estimatedReach": "予測リーチ",
674
+ "impressionPotential": "インプレッションポテンシャル",
675
+ "nextPacing": "次へ: ペーシング"
676
+ },
677
+ "creatives": {
678
+ "title": "クリエイティブアセット(オプション)",
679
+ "subtitle": "コンテンツハブでクリエイティブをアップロードし、クリエイティブ要件に応じた正しいフォーマットを割り当ててください",
680
+ "assignCreative": "クリエイティブを割り当て",
681
+ "noCreativesAssigned": "クリエイティブが割り当てられていません",
682
+ "noCreativesHint": "コンテンツハブでクリエイティブをアップロードし、クリエイティブ要件に応じた正しいフォーマットを割り当ててください",
683
+ "uploadNew": "新規アップロード",
684
+ "chooseExisting": "既存から選択",
685
+ "manualEntry": "手動入力",
686
+ "assignCreativeTitle": "クリエイティブを割り当て",
687
+ "selectMethodHint": "クリエイティブを割り当てる方法を選択",
688
+ "chooseExistingTitle": "既存から選択",
689
+ "chooseExistingSubtitle": "メディアライブラリからクリエイティブを検索して選択",
690
+ "manualEntryTitle": "手動入力",
691
+ "manualEntrySubtitle": "URLベースの広告を選択、動的URLまたは静的コンテンツがサポートされています",
692
+ "name": "名前",
693
+ "namePlaceholder": "広告名",
694
+ "assetUrl": "アセットURL",
695
+ "assetUrlPlaceholder": "広告がホストされているURL",
696
+ "thumbnailUrl": "サムネイルURL(オプション)",
697
+ "thumbnailUrlPlaceholder": "https://cdn.example.com/thumb.jpg",
698
+ "length": "長さ",
699
+ "seconds": "秒",
700
+ "orientation": "向き",
701
+ "cancel": "キャンセル",
702
+ "saveAndAddCreative": "保存してクリエイティブを追加",
703
+ "nameRequired": "名前が必要です",
704
+ "pleaseEnterName": "クリエイティブ名を入力してください。",
705
+ "assetUrlRequired": "アセットURLが必要です",
706
+ "pleaseEnterAssetUrl": "アセットURLを入力してください。",
707
+ "invalidUrl": "無効なURL",
708
+ "pleaseEnterValidUrl": "有効なアセットURLを入力してください。",
709
+ "creativeAdded": "クリエイティブが追加されました",
710
+ "creativeAddedDesc": "クリエイティブがキャンペーンに追加されました。",
711
+ "creativesAssigned": "クリエイティブが割り当てられました",
712
+ "creativesAssignedDesc": "{{count}}件のクリエイティブがキャンペーンに割り当てられました。",
713
+ "noValidCreatives": "有効なクリエイティブがありません",
714
+ "noValidCreativesDesc": "選択したクリエイティブに必須フィールド(アセットURL)がありません。先にファイルをアップロードしてください。",
715
+ "someCreativesSkipped": "一部のクリエイティブがスキップされました",
716
+ "someCreativesSkippedDesc": "{{count}}件のクリエイティブがアセットURLがないためスキップされました。先にファイルをアップロードしてください。",
717
+ "uploadedAndAssigned": "クリエイティブがアップロードされ割り当てられました",
718
+ "uploadedAndAssignedDesc": "クリエイティブがキャンペーンに正常に追加されました。",
719
+ "removeConfirm": "このクリエイティブを削除してもよろしいですか?"
720
+ },
721
+ "validate": {
722
+ "title": "レビューと検証",
723
+ "subtitle": "検証結果を確認してディールをアクティベートします。",
724
+ "dealDates": "ディール日程",
725
+ "budget": "予算",
726
+ "goal": "目標",
727
+ "impressions": "インプレッション",
728
+ "validation": "検証",
729
+ "pass": "合格",
730
+ "warning": "警告",
731
+ "error": "エラー",
732
+ "validationChecks": "検証チェック",
733
+ "flightDates": "フライト日程",
734
+ "datesValid": "ディール日程は有効です",
735
+ "startDatePast": "開始日が過去です",
736
+ "budgetAllocation": "予算配分",
737
+ "budgetValid": "ラインアイテム予算がディール合計を超えていません",
738
+ "budgetExceeds": "ラインアイテム予算がディール合計を超えています",
739
+ "lineItems": "ラインアイテム",
740
+ "lineItemsConfigured": "{{count}}件のラインアイテムが設定されています",
741
+ "inventoryAvailability": "在庫の可用性",
742
+ "inventoryMissing": "一部のラインアイテムに在庫がありません",
743
+ "inventoryAssigned": "すべてのラインアイテムに在庫が割り当てられています",
744
+ "creativeAssignment": "クリエイティブ割り当て",
745
+ "creativesAssigned": "{{count}}件のクリエイティブが{{lineItems}}件のラインアイテムに割り当てられています",
746
+ "noCreativesAssigned": "ラインアイテムにクリエイティブが割り当てられていません",
747
+ "creativeSpecs": "クリエイティブ仕様",
748
+ "allCreativesMeetSpecs": "すべてのクリエイティブが仕様を満たしています",
749
+ "creativesPendingApproval": "{{count}}件のクリエイティブが承認待ちです",
750
+ "saveAsDraft": "ドラフトとして保存",
751
+ "activateDeal": "ディールをアクティベート",
752
+ "activating": "アクティベート中...",
753
+ "dayCap": "/日上限"
754
+ },
755
+ "summary": {
756
+ "title": "ディール概要",
757
+ "subtitle": "検証に進む前にディール設定を確認してください。",
758
+ "advertiser": "広告主",
759
+ "dealDates": "ディール日程",
760
+ "goal": "目標",
761
+ "budget": "予算",
762
+ "dayCap": "/日上限",
763
+ "notSet": "未設定",
764
+ "lineItems": "ラインアイテム",
765
+ "creatives": "クリエイティブ",
766
+ "approved": "承認済み",
767
+ "screensTargeted": "ターゲットスクリーン",
768
+ "budgetAllocation": "予算配分",
769
+ "lineItemDetails": "ラインアイテム詳細",
770
+ "sno": "番号",
771
+ "name": "名前",
772
+ "inventories": "在庫",
773
+ "status": "ステータス",
774
+ "impression": "インプレッション",
775
+ "planned": "計画済み",
776
+ "noLineItemsConfigured": "ラインアイテムが設定されていません",
777
+ "more": "その他",
778
+ "lid": "ラインアイテムID"
779
+ },
780
+ "validation": {
781
+ "dealNameMinLength": "ディール名は3文字以上である必要があります",
782
+ "dealNameMaxLength": "ディール名は100文字を超えることはできません",
783
+ "startDateRequired": "開始日は必須です",
784
+ "endDateRequired": "終了日は必須です",
785
+ "selectValidClientType": "有効なクライアントタイプを選択してください",
786
+ "budgetPositive": "予算は正の数である必要があります",
787
+ "startDateFuture": "開始日は今日以降である必要があります",
788
+ "endDateAfterStart": "終了日は開始日より後である必要があります",
789
+ "buyerNameRequired": "バイヤークライアントタイプにはバイヤー名が必要です",
790
+ "agencyNameRequired": "代理店クライアントタイプには代理店名が必要です"
791
+ }
792
+ },
793
+ "importFromPlanner": {
794
+ "title": "ディールを選択",
795
+ "loading": "ディールを読み込み中...",
796
+ "noDeals": "インポートできるディールがありません",
797
+ "sno": "番号",
798
+ "dealName": "ディール名",
799
+ "brand": "ブランド",
800
+ "plannedBy": "プランナー",
801
+ "flightDates": "フライト日程",
802
+ "status": "ステータス",
803
+ "inventories": "在庫",
804
+ "budget": "予算",
805
+ "totalCost": "総コスト",
806
+ "approved": "承認済み",
807
+ "pending": "保留中",
808
+ "rejected": "却下",
809
+ "cid": "CID",
810
+ "daysRemaining": "残り{{remaining}}/{{total}}日",
811
+ "units": "ユニット",
812
+ "pageItems": "ページ項目",
813
+ "pageInfo": "{{current}} / {{total}} ページ",
814
+ "itemsRange": "{{from}} ~ {{to}} / {{total}}件",
815
+ "cancel": "キャンセル",
816
+ "proceed": "続行"
817
+ },
818
+ "filters": {
819
+ "title": "ディールフィルター",
820
+ "status": "ステータス",
821
+ "mode": "モード",
822
+ "dealType": "ディールタイプ",
823
+ "currency": "通貨",
824
+ "brand": "ブランド",
825
+ "advertiser": "広告主",
826
+ "seller": "セラー",
827
+ "publisher": "パブリッシャー",
828
+ "startDate": "開始日",
829
+ "endDate": "終了日",
830
+ "sortBy": "並べ替え",
831
+ "brandPlaceholder": "ブランド名でフィルター",
832
+ "advertiserPlaceholder": "広告主でフィルター",
833
+ "sellerPlaceholder": "セラー/パブリッシャーでフィルター",
834
+ "publisherPlaceholder": "パブリッシャーでフィルター",
835
+ "reset": "リセット",
836
+ "applyFilters": "フィルターを適用",
837
+ "allStatus": "すべてのステータス",
838
+ "draft": "ドラフト",
839
+ "requested": "リクエスト済み",
840
+ "generated": "生成済み",
841
+ "pendingCreatives": "クリエイティブ保留中",
842
+ "live": "ライブ",
843
+ "completed": "完了",
844
+ "inactive": "非アクティブ",
845
+ "reopened": "再開",
846
+ "archived": "アーカイブ済み",
847
+ "expired": "期限切れ",
848
+ "canceled": "キャンセル済み",
849
+ "approved": "承認済み",
850
+ "rejected": "却下",
851
+ "pending": "保留中",
852
+ "allModes": "すべてのモード",
853
+ "programmatic": "プログラマティック",
854
+ "traditionalDirect": "トラディショナル(ダイレクト)",
855
+ "allDealTypes": "すべてのディールタイプ",
856
+ "guaranteed": "プログラマティック保証",
857
+ "preferredDeal": "プリファードディール",
858
+ "privateAuction": "プライベートオークション",
859
+ "evergreenPmp": "エバーグリーンPMP",
860
+ "direct": "ダイレクト",
861
+ "allCurrencies": "すべての通貨",
862
+ "newestFirst": "新しい順",
863
+ "oldestFirst": "古い順",
864
+ "nameAZ": "名前 (A-Z)",
865
+ "nameZA": "名前 (Z-A)",
866
+ "brandAZ": "ブランド (A-Z)",
867
+ "brandZA": "ブランド (Z-A)",
868
+ "startDateEarly": "開始日 (早い順)",
869
+ "startDateLate": "開始日 (遅い順)"
870
+ },
871
+ "venueSelector": {
872
+ "placeholder": "会場タイプを選択",
873
+ "searchPlaceholder": "ここで検索..",
874
+ "noVenueTypes": "会場タイプがありません",
875
+ "transit": "交通・モビリティ施設",
876
+ "retail": "ショッピング・商業施設",
877
+ "outdoor": "ストリートレベル・屋外広告",
878
+ "accommodation": "ホテル・ホスピタリティ施設",
879
+ "education": "学校・大学・学習センター",
880
+ "entertainment": "映画館・劇場・レクリエーション施設",
881
+ "health": "病院・クリニック・医療施設",
882
+ "office": "ビジネス・企業ビル",
883
+ "residential": "アパート・住宅団地",
884
+ "government": "政府・公共建築物"
885
+ }
886
+ }