aads-cli 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 (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +159 -0
  3. package/README.md +159 -0
  4. package/data/campaign-layer-policy.json +68 -0
  5. package/dist/analysis/anomaly-detection.d.ts +16 -0
  6. package/dist/analysis/anomaly-detection.d.ts.map +1 -0
  7. package/dist/analysis/anomaly-detection.js +55 -0
  8. package/dist/analysis/anomaly-detection.js.map +1 -0
  9. package/dist/analysis/auto-to-manual.d.ts +11 -0
  10. package/dist/analysis/auto-to-manual.d.ts.map +1 -0
  11. package/dist/analysis/auto-to-manual.js +57 -0
  12. package/dist/analysis/auto-to-manual.js.map +1 -0
  13. package/dist/analysis/campaign-layer-classifier.d.ts +10 -0
  14. package/dist/analysis/campaign-layer-classifier.d.ts.map +1 -0
  15. package/dist/analysis/campaign-layer-classifier.js +50 -0
  16. package/dist/analysis/campaign-layer-classifier.js.map +1 -0
  17. package/dist/analysis/campaign-structure.d.ts +3 -0
  18. package/dist/analysis/campaign-structure.d.ts.map +1 -0
  19. package/dist/analysis/campaign-structure.js +51 -0
  20. package/dist/analysis/campaign-structure.js.map +1 -0
  21. package/dist/analysis/cpc-optimizer.d.ts +11 -0
  22. package/dist/analysis/cpc-optimizer.d.ts.map +1 -0
  23. package/dist/analysis/cpc-optimizer.js +46 -0
  24. package/dist/analysis/cpc-optimizer.js.map +1 -0
  25. package/dist/analysis/performance-analyzer.d.ts +3 -0
  26. package/dist/analysis/performance-analyzer.d.ts.map +1 -0
  27. package/dist/analysis/performance-analyzer.js +58 -0
  28. package/dist/analysis/performance-analyzer.js.map +1 -0
  29. package/dist/analysis/sku-classifier.d.ts +3 -0
  30. package/dist/analysis/sku-classifier.d.ts.map +1 -0
  31. package/dist/analysis/sku-classifier.js +64 -0
  32. package/dist/analysis/sku-classifier.js.map +1 -0
  33. package/dist/cli.d.ts +3 -0
  34. package/dist/cli.d.ts.map +1 -0
  35. package/dist/cli.js +351 -0
  36. package/dist/cli.js.map +1 -0
  37. package/dist/config/campaign-layer-policy.d.ts +28 -0
  38. package/dist/config/campaign-layer-policy.d.ts.map +1 -0
  39. package/dist/config/campaign-layer-policy.js +56 -0
  40. package/dist/config/campaign-layer-policy.js.map +1 -0
  41. package/dist/config/constants.d.ts +74 -0
  42. package/dist/config/constants.d.ts.map +1 -0
  43. package/dist/config/constants.js +61 -0
  44. package/dist/config/constants.js.map +1 -0
  45. package/dist/config/optimisation-config.d.ts +24 -0
  46. package/dist/config/optimisation-config.d.ts.map +1 -0
  47. package/dist/config/optimisation-config.js +41 -0
  48. package/dist/config/optimisation-config.js.map +1 -0
  49. package/dist/core/header-mapper.d.ts +6 -0
  50. package/dist/core/header-mapper.d.ts.map +1 -0
  51. package/dist/core/header-mapper.js +34 -0
  52. package/dist/core/header-mapper.js.map +1 -0
  53. package/dist/core/normalizer.d.ts +9 -0
  54. package/dist/core/normalizer.d.ts.map +1 -0
  55. package/dist/core/normalizer.js +76 -0
  56. package/dist/core/normalizer.js.map +1 -0
  57. package/dist/io/csv-reader.d.ts +3 -0
  58. package/dist/io/csv-reader.d.ts.map +1 -0
  59. package/dist/io/csv-reader.js +52 -0
  60. package/dist/io/csv-reader.js.map +1 -0
  61. package/dist/io/excel-reader.d.ts +4 -0
  62. package/dist/io/excel-reader.d.ts.map +1 -0
  63. package/dist/io/excel-reader.js +83 -0
  64. package/dist/io/excel-reader.js.map +1 -0
  65. package/dist/io/excel-writer.d.ts +7 -0
  66. package/dist/io/excel-writer.d.ts.map +1 -0
  67. package/dist/io/excel-writer.js +42 -0
  68. package/dist/io/excel-writer.js.map +1 -0
  69. package/dist/pipeline/analyze-pipeline.d.ts +8 -0
  70. package/dist/pipeline/analyze-pipeline.d.ts.map +1 -0
  71. package/dist/pipeline/analyze-pipeline.js +145 -0
  72. package/dist/pipeline/analyze-pipeline.js.map +1 -0
  73. package/dist/pipeline/types.d.ts +142 -0
  74. package/dist/pipeline/types.d.ts.map +1 -0
  75. package/dist/pipeline/types.js +2 -0
  76. package/dist/pipeline/types.js.map +1 -0
  77. package/dist/ranking/keyword-matcher.d.ts +10 -0
  78. package/dist/ranking/keyword-matcher.d.ts.map +1 -0
  79. package/dist/ranking/keyword-matcher.js +62 -0
  80. package/dist/ranking/keyword-matcher.js.map +1 -0
  81. package/dist/ranking/ranking-db.d.ts +14 -0
  82. package/dist/ranking/ranking-db.d.ts.map +1 -0
  83. package/dist/ranking/ranking-db.js +97 -0
  84. package/dist/ranking/ranking-db.js.map +1 -0
  85. package/dist/ranking/seo-factor.d.ts +5 -0
  86. package/dist/ranking/seo-factor.d.ts.map +1 -0
  87. package/dist/ranking/seo-factor.js +57 -0
  88. package/dist/ranking/seo-factor.js.map +1 -0
  89. package/dist/ranking/types.d.ts +25 -0
  90. package/dist/ranking/types.d.ts.map +1 -0
  91. package/dist/ranking/types.js +2 -0
  92. package/dist/ranking/types.js.map +1 -0
  93. package/dist/schemas/types.d.ts +32 -0
  94. package/dist/schemas/types.d.ts.map +1 -0
  95. package/dist/schemas/types.js +2 -0
  96. package/dist/schemas/types.js.map +1 -0
  97. package/dist/utils/date-utils.d.ts +17 -0
  98. package/dist/utils/date-utils.d.ts.map +1 -0
  99. package/dist/utils/date-utils.js +56 -0
  100. package/dist/utils/date-utils.js.map +1 -0
  101. package/dist/utils/logger.d.ts +12 -0
  102. package/dist/utils/logger.d.ts.map +1 -0
  103. package/dist/utils/logger.js +45 -0
  104. package/dist/utils/logger.js.map +1 -0
  105. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAI7D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAExE,MAAM,iBAAiB,GAAG,KAAK,EAAE,MAA6B,EAAE,eAAwB,EAAiB,EAAE;IACzG,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEnF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,MAAM,WAAW,GAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QAClF,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YACzC,IAAI,CAAC,EAAE,CAAC;gBACN,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC;gBACtB,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC;gBACtB,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ;oBAAE,SAAS,GAAG,KAAK,CAAC;YAC9C,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO;YACL,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,UAAU,CAAC,MAAM;YAC5B,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,UAAU;YACjB,IAAI;YACJ,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS;SAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,CACX,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE;QACnD,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE;QACnD,IAAI,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;QAC3C,SAAS,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG;QAC/D,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;KACnC,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC;IACvF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,aAAa,CAAC,MAAM,yDAAyD,CAAC,CAAC;QAClG,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,YAAY,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAyB,EAAE,WAAyB,SAAS,EAAgB,EAAE;IACrG,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;SAClC,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QAChF,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAE,OAAe,EAAiB,EAAE;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,2EAA2E,CAAC;KACxF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,cAAc,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;KAC/E,MAAM,CAAC,uBAAuB,EAAE,iCAAiC,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,OAAgD,EAAE,EAAE;IACjE,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;QAC7D,eAAe,EAAE,OAAO,CAAC,WAAW;KACrC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACX,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;QACzB,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC;QACnC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;QACvB,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC;QACvB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAC7D,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;QAC1B,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;QAC3B,MAAM,EAAE,MAAM,CAAC,SAAS;YACtB,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI;YAC3F,CAAC,CAAC,SAAS;QACb,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM;QACxC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;KAC3E,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yDAAyD,CAAC;KACtE,cAAc,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;KAC/E,MAAM,CAAC,uBAAuB,EAAE,iCAAiC,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,OAAgD,EAAE,EAAE;IACjE,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;QAC7D,eAAe,EAAE,OAAO,CAAC,WAAW;KACrC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,CACX,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjD,QAAQ,EAAE,IAAI,CAAC,YAAY;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC3B,CAAC,CAAC,CACJ,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,CACX,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/C,QAAQ,EAAE,QAAQ,CAAC,YAAY;QAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;QAClC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QACvE,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC;KACpF,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,0DAA0D,CAAC;KACvE,cAAc,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;KAC/E,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KACrD,MAAM,CAAC,qBAAqB,EAAE,oDAAoD,CAAC;KACnF,MAAM,CAAC,KAAK,EAAE,OAA8D,EAAE,EAAE;IAC/E,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;QAC/D,aAAa,EAAE,OAAO,CAAC,SAAS;KACjC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG;QACb,UAAU;QACV,UAAU;QACV,SAAS;QACT,aAAa;QACb,aAAa;QACb,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,YAAY;QACZ,WAAW;QACX,QAAQ;KACT,CAAC;IACF,MAAM,IAAI,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrD,IAAI,CAAC,YAAY;QACjB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3B,IAAI,CAAC,cAAc;QACnB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG;QAC/D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxD,IAAI,CAAC,MAAM;KACZ,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,IAAI,CAAC,MAAM;QACjB,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,sEAAsE,CAAC;KACnF,cAAc,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;KAC/E,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,OAA0C,EAAE,EAAE;IAC3D,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,eAAe,GAAG;QACtB,eAAe;QACf,UAAU;QACV,aAAa;QACb,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,sBAAsB;QACtB,eAAe;QACf,oBAAoB;KACrB,CAAC;IACF,MAAM,aAAa,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC,YAAY;QACjB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS;QACd,IAAI,CAAC,cAAc;QACnB,IAAI,CAAC,sBAAsB;KAC5B,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7D,IAAI,CAAC,YAAY;QACjB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,SAAS;QACd,IAAI,CAAC,MAAM;KACZ,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;QAC9B,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE;QAC7E,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;KACtF,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;QACxC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa,EAAE,aAAa,CAAC,MAAM;QACnC,YAAY,EAAE,YAAY,CAAC,MAAM;KAClC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,cAAc,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;KAC/E,cAAc,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,SAAS,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAA+E,EAAE,EAAE;IAChG,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;QAC/D,aAAa,EAAE,OAAO,CAAC,SAAS;KACjC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QAChG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzD,QAAQ,EAAE,GAAG,CAAC,YAAY;QAC1B,OAAO,EAAE,GAAG,CAAC,WAAW;QACxB,OAAO,EAAE,GAAG,CAAC,WAAW;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;QACtC,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,UAAU,EAAE,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;QACpE,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG;QAC/B,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEzD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAC5B;YACE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM;YACtC,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,YAAY;YAClD,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI;YACtD,KAAK,EAAE,QAAQ;SAChB,EACD,IAAI,EACJ,CAAC,CACF,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5F,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACzG,MAAM,MAAM,GAAG;YACb,UAAU;YACV,UAAU;YACV,SAAS;YACT,aAAa;YACb,QAAQ;YACR,YAAY;YACZ,gBAAgB;YAChB,YAAY;YACZ,WAAW;YACX,QAAQ;SACT,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;YAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM;SACZ,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAClC,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI;SACvD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;IACpE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CACX,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG;YACjE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACpC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type CampaignLayerId = "L0" | "L1" | "L2" | "L3" | "L4";
2
+ export interface LayerDefinition {
3
+ name: string;
4
+ nameJa: string;
5
+ purpose: string;
6
+ alwaysOn: boolean;
7
+ budgetSharePct: number;
8
+ campaignPrefix: string;
9
+ targetAcos: number;
10
+ }
11
+ export interface NamingPattern {
12
+ pattern: string;
13
+ layer: CampaignLayerId;
14
+ }
15
+ export interface PromotionRule {
16
+ from: CampaignLayerId;
17
+ to: CampaignLayerId;
18
+ description: string;
19
+ }
20
+ export interface CampaignLayerPolicy {
21
+ version: string;
22
+ layers: Record<CampaignLayerId, LayerDefinition>;
23
+ namingPatterns: NamingPattern[];
24
+ fallbackClassification: Record<string, CampaignLayerId>;
25
+ promotionRules: PromotionRule[];
26
+ }
27
+ export declare const loadCampaignLayerPolicy: (filePath?: string) => Promise<CampaignLayerPolicy | undefined>;
28
+ //# sourceMappingURL=campaign-layer-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-layer-policy.d.ts","sourceRoot":"","sources":["../../src/config/campaign-layer-policy.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,eAAe,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACjD,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxD,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AAwCD,eAAO,MAAM,uBAAuB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAYxG,CAAC"}
@@ -0,0 +1,56 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const CURRENT_FILE = fileURLToPath(import.meta.url);
5
+ const CURRENT_DIR = path.dirname(CURRENT_FILE);
6
+ const DEFAULT_POLICY_PATH = path.resolve(CURRENT_DIR, "../../data/campaign-layer-policy.json");
7
+ const VALID_LAYER_IDS = ["L0", "L1", "L2", "L3", "L4"];
8
+ const isValidLayerId = (id) => VALID_LAYER_IDS.includes(id);
9
+ const validatePolicy = (data) => {
10
+ const policy = data;
11
+ if (!policy.version || typeof policy.version !== "string") {
12
+ throw new Error("campaign-layer-policy: missing or invalid 'version'");
13
+ }
14
+ if (!policy.layers || typeof policy.layers !== "object") {
15
+ throw new Error("campaign-layer-policy: missing or invalid 'layers'");
16
+ }
17
+ for (const id of VALID_LAYER_IDS) {
18
+ const layer = policy.layers[id];
19
+ if (!layer) {
20
+ throw new Error(`campaign-layer-policy: missing layer definition for '${id}'`);
21
+ }
22
+ if (!layer.name || !layer.nameJa || !layer.campaignPrefix) {
23
+ throw new Error(`campaign-layer-policy: incomplete layer definition for '${id}'`);
24
+ }
25
+ }
26
+ if (!Array.isArray(policy.namingPatterns)) {
27
+ throw new Error("campaign-layer-policy: 'namingPatterns' must be an array");
28
+ }
29
+ for (const np of policy.namingPatterns) {
30
+ if (!np.pattern || !isValidLayerId(np.layer)) {
31
+ throw new Error(`campaign-layer-policy: invalid naming pattern: ${JSON.stringify(np)}`);
32
+ }
33
+ }
34
+ if (!policy.fallbackClassification || typeof policy.fallbackClassification !== "object") {
35
+ throw new Error("campaign-layer-policy: missing 'fallbackClassification'");
36
+ }
37
+ if (!Array.isArray(policy.promotionRules)) {
38
+ throw new Error("campaign-layer-policy: 'promotionRules' must be an array");
39
+ }
40
+ return policy;
41
+ };
42
+ export const loadCampaignLayerPolicy = async (filePath) => {
43
+ const target = filePath ?? DEFAULT_POLICY_PATH;
44
+ try {
45
+ const raw = await fs.readFile(target, "utf8");
46
+ const parsed = JSON.parse(raw);
47
+ return validatePolicy(parsed);
48
+ }
49
+ catch (err) {
50
+ if (!filePath && err.code === "ENOENT") {
51
+ return undefined;
52
+ }
53
+ throw err;
54
+ }
55
+ };
56
+ //# sourceMappingURL=campaign-layer-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-layer-policy.js","sourceRoot":"","sources":["../../src/config/campaign-layer-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC;AAiC/F,MAAM,eAAe,GAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE1E,MAAM,cAAc,GAAG,CAAC,EAAU,EAAyB,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAqB,CAAC,CAAC;AAE9G,MAAM,cAAc,GAAG,CAAC,IAAa,EAAuB,EAAE;IAC5D,MAAM,MAAM,GAAG,IAA2B,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wDAAwD,EAAE,GAAG,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,2DAA2D,EAAE,GAAG,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,sBAAsB,IAAI,OAAO,MAAM,CAAC,sBAAsB,KAAK,QAAQ,EAAE,CAAC;QACxF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,QAAiB,EAA4C,EAAE;IAC3G,MAAM,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,74 @@
1
+ export declare const HEADER_CANDIDATES: {
2
+ readonly campaignId: readonly ["Campaign ID", "キャンペーンID", "campaign_id"];
3
+ readonly campaignName: readonly ["Campaign Name", "キャンペーン名", "キャンペーン名(情報提供のみ)", "campaign_name"];
4
+ readonly adGroupId: readonly ["Ad Group ID", "広告グループID", "ad_group_id"];
5
+ readonly adGroupName: readonly ["Ad Group Name", "広告グループ名", "広告グループ名(情報提供のみ)", "ad_group_name"];
6
+ readonly keywordId: readonly ["Keyword ID", "キーワードID", "keyword_id"];
7
+ readonly keywordText: readonly ["Keyword Text", "キーワードテキスト", "Search Term", "search_term"];
8
+ readonly customerSearchTerm: readonly ["カスタマー検索用語", "Customer Search Term", "customer_search_term"];
9
+ readonly productTargetingExpression: readonly ["Product Targeting Expression", "Targeting Expression", "商品ターゲティング式"];
10
+ readonly matchType: readonly ["Match Type", "マッチタイプ", "match_type"];
11
+ readonly clicks: readonly ["Clicks", "クリック数", "clicks"];
12
+ readonly impressions: readonly ["Impressions", "インプレッション数", "impressions"];
13
+ readonly spend: readonly ["Spend", "支出", "spend"];
14
+ readonly sales: readonly ["Sales", "売上", "sales"];
15
+ readonly orders: readonly ["Orders", "注文", "注文数", "orders"];
16
+ readonly sku: readonly ["SKU", "sku"];
17
+ readonly asin: readonly ["ASIN", "ASIN(情報提供のみ)", "asin"];
18
+ readonly dailyBudget: readonly ["Daily Budget", "Campaign Daily Budget", "New_Daily_Budget", "日次予算", "campaign_daily_budget"];
19
+ readonly bid: readonly ["Bid", "入札額", "bid"];
20
+ readonly adGroupDefaultBid: readonly ["Ad Group Default Bid", "ad_group_default_bid"];
21
+ readonly state: readonly ["State", "state", "キャンペーンのステータス", "status"];
22
+ readonly targetingType: readonly ["Targeting Type", "ターゲティングの種類", "Campaign Targeting Type", "targeting_type"];
23
+ readonly portfolioId: readonly ["Portfolio ID", "ポートフォリオID", "portfolio_id"];
24
+ };
25
+ export declare const STATE_MAPPING_JP_TO_EN: Record<string, "enabled" | "paused" | "archived">;
26
+ export declare const OPTIMIZATION_DEFAULTS: {
27
+ readonly targetAcos: 0.25;
28
+ readonly minClicksForCpc: 5;
29
+ readonly minClicksForPromotion: 5;
30
+ readonly minCvrForPromotion: 0.03;
31
+ readonly negativeAcosThreshold: 0.4;
32
+ readonly b190: {
33
+ readonly impressionThreshold: 0.5;
34
+ readonly spendThreshold: 0.5;
35
+ readonly cpcThreshold: 0.3;
36
+ };
37
+ readonly sale: {
38
+ readonly enabled: false;
39
+ readonly cpcReductionFactor: 0.33;
40
+ readonly defaultCpc: 30;
41
+ };
42
+ readonly seo: {
43
+ readonly enabled: true;
44
+ readonly cpcCeiling: 0;
45
+ readonly factors: Record<number, number>;
46
+ };
47
+ };
48
+ export declare const SKU_LABEL_RULES: {
49
+ readonly focus: {
50
+ readonly maxAcos: 0.15;
51
+ readonly minCvr: 0.05;
52
+ readonly bidAdjust: 1.2;
53
+ readonly budgetAdjust: 1.15;
54
+ };
55
+ readonly nurture: {
56
+ readonly maxAcos: 0.25;
57
+ readonly minCvr: 0.03;
58
+ readonly bidAdjust: 1.05;
59
+ readonly budgetAdjust: 1;
60
+ };
61
+ readonly improve: {
62
+ readonly maxAcos: number;
63
+ readonly minCvr: 0;
64
+ readonly bidAdjust: 1;
65
+ readonly budgetAdjust: 1;
66
+ };
67
+ readonly prune: {
68
+ readonly minAcos: 0.35;
69
+ readonly maxCvr: 0.015;
70
+ readonly bidAdjust: 0.8;
71
+ readonly budgetAdjust: 0.85;
72
+ };
73
+ };
74
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;CAuBpB,CAAC;AAEX,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAOpF,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;0BAmBiB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;CAE/D,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;CAKlB,CAAC"}
@@ -0,0 +1,61 @@
1
+ export const HEADER_CANDIDATES = {
2
+ campaignId: ["Campaign ID", "キャンペーンID", "campaign_id"],
3
+ campaignName: ["Campaign Name", "キャンペーン名", "キャンペーン名(情報提供のみ)", "campaign_name"],
4
+ adGroupId: ["Ad Group ID", "広告グループID", "ad_group_id"],
5
+ adGroupName: ["Ad Group Name", "広告グループ名", "広告グループ名(情報提供のみ)", "ad_group_name"],
6
+ keywordId: ["Keyword ID", "キーワードID", "keyword_id"],
7
+ keywordText: ["Keyword Text", "キーワードテキスト", "Search Term", "search_term"],
8
+ customerSearchTerm: ["カスタマー検索用語", "Customer Search Term", "customer_search_term"],
9
+ productTargetingExpression: ["Product Targeting Expression", "Targeting Expression", "商品ターゲティング式"],
10
+ matchType: ["Match Type", "マッチタイプ", "match_type"],
11
+ clicks: ["Clicks", "クリック数", "clicks"],
12
+ impressions: ["Impressions", "インプレッション数", "impressions"],
13
+ spend: ["Spend", "支出", "spend"],
14
+ sales: ["Sales", "売上", "sales"],
15
+ orders: ["Orders", "注文", "注文数", "orders"],
16
+ sku: ["SKU", "sku"],
17
+ asin: ["ASIN", "ASIN(情報提供のみ)", "asin"],
18
+ dailyBudget: ["Daily Budget", "Campaign Daily Budget", "New_Daily_Budget", "日次予算", "campaign_daily_budget"],
19
+ bid: ["Bid", "入札額", "bid"],
20
+ adGroupDefaultBid: ["Ad Group Default Bid", "ad_group_default_bid"],
21
+ state: ["State", "state", "キャンペーンのステータス", "status"],
22
+ targetingType: ["Targeting Type", "ターゲティングの種類", "Campaign Targeting Type", "targeting_type"],
23
+ portfolioId: ["Portfolio ID", "ポートフォリオID", "portfolio_id"],
24
+ };
25
+ export const STATE_MAPPING_JP_TO_EN = {
26
+ 有効: "enabled",
27
+ 一時停止: "paused",
28
+ 非掲載: "archived",
29
+ enabled: "enabled",
30
+ paused: "paused",
31
+ archived: "archived",
32
+ };
33
+ export const OPTIMIZATION_DEFAULTS = {
34
+ targetAcos: 0.25,
35
+ minClicksForCpc: 5,
36
+ minClicksForPromotion: 5,
37
+ minCvrForPromotion: 0.03,
38
+ negativeAcosThreshold: 0.4,
39
+ b190: {
40
+ impressionThreshold: 0.5,
41
+ spendThreshold: 0.5,
42
+ cpcThreshold: 0.3,
43
+ },
44
+ sale: {
45
+ enabled: false,
46
+ cpcReductionFactor: 0.33,
47
+ defaultCpc: 30,
48
+ },
49
+ seo: {
50
+ enabled: true,
51
+ cpcCeiling: 0, // 0 = auto (2x avg CPC); >0 = fixed ceiling
52
+ factors: { 1: 0.5, 2: 0.6, 3: 0.7, 4: 0.8 },
53
+ },
54
+ };
55
+ export const SKU_LABEL_RULES = {
56
+ focus: { maxAcos: 0.15, minCvr: 0.05, bidAdjust: 1.2, budgetAdjust: 1.15 },
57
+ nurture: { maxAcos: 0.25, minCvr: 0.03, bidAdjust: 1.05, budgetAdjust: 1.0 },
58
+ improve: { maxAcos: Number.POSITIVE_INFINITY, minCvr: 0, bidAdjust: 1.0, budgetAdjust: 1.0 },
59
+ prune: { minAcos: 0.35, maxCvr: 0.015, bidAdjust: 0.8, budgetAdjust: 0.85 },
60
+ };
61
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface OptimisationConfig {
2
+ targetAcos: number;
3
+ minClicksForCpc: number;
4
+ minClicksForPromotion: number;
5
+ minCvrForPromotion: number;
6
+ negativeAcosThreshold: number;
7
+ sale: {
8
+ enabled: boolean;
9
+ cpcReductionFactor: number;
10
+ defaultCpc: number;
11
+ };
12
+ b190: {
13
+ impressionThreshold: number;
14
+ spendThreshold: number;
15
+ cpcThreshold: number;
16
+ };
17
+ seo: {
18
+ enabled: boolean;
19
+ cpcCeiling: number;
20
+ factors: Record<number, number>;
21
+ };
22
+ }
23
+ export declare const loadOptimisationConfig: () => OptimisationConfig;
24
+ //# sourceMappingURL=optimisation-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimisation-config.d.ts","sourceRoot":"","sources":["../../src/config/optimisation-config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,GAAG,EAAE;QACH,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,CAAC;CACH;AAmBD,eAAO,MAAM,sBAAsB,QAAO,kBAuBzC,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { OPTIMIZATION_DEFAULTS } from "./constants.js";
2
+ const numberFromEnv = (name, fallback) => {
3
+ const value = process.env[name];
4
+ if (value === undefined || value === "") {
5
+ return fallback;
6
+ }
7
+ const parsed = Number(value);
8
+ return Number.isFinite(parsed) ? parsed : fallback;
9
+ };
10
+ const boolFromEnv = (name, fallback) => {
11
+ const value = process.env[name];
12
+ if (value === undefined || value === "") {
13
+ return fallback;
14
+ }
15
+ return /^(1|true|yes|on)$/i.test(value);
16
+ };
17
+ export const loadOptimisationConfig = () => {
18
+ return {
19
+ targetAcos: numberFromEnv("TARGET_ACOS", OPTIMIZATION_DEFAULTS.targetAcos),
20
+ minClicksForCpc: numberFromEnv("MIN_CLICKS_CPC", OPTIMIZATION_DEFAULTS.minClicksForCpc),
21
+ minClicksForPromotion: numberFromEnv("MIN_CLICKS_PROMOTION", OPTIMIZATION_DEFAULTS.minClicksForPromotion),
22
+ minCvrForPromotion: numberFromEnv("MIN_CVR_PROMOTION", OPTIMIZATION_DEFAULTS.minCvrForPromotion),
23
+ negativeAcosThreshold: numberFromEnv("NEGATIVE_ACOS_THRESHOLD", OPTIMIZATION_DEFAULTS.negativeAcosThreshold),
24
+ sale: {
25
+ enabled: boolFromEnv("SALE_ENABLED", OPTIMIZATION_DEFAULTS.sale.enabled),
26
+ cpcReductionFactor: numberFromEnv("SALE_CPC_REDUCTION_FACTOR", OPTIMIZATION_DEFAULTS.sale.cpcReductionFactor),
27
+ defaultCpc: numberFromEnv("SALE_DEFAULT_CPC", OPTIMIZATION_DEFAULTS.sale.defaultCpc),
28
+ },
29
+ b190: {
30
+ impressionThreshold: numberFromEnv("B190_IMPRESSION_THRESHOLD", OPTIMIZATION_DEFAULTS.b190.impressionThreshold),
31
+ spendThreshold: numberFromEnv("B190_SPEND_THRESHOLD", OPTIMIZATION_DEFAULTS.b190.spendThreshold),
32
+ cpcThreshold: numberFromEnv("B190_CPC_THRESHOLD", OPTIMIZATION_DEFAULTS.b190.cpcThreshold),
33
+ },
34
+ seo: {
35
+ enabled: boolFromEnv("SEO_ENABLED", OPTIMIZATION_DEFAULTS.seo.enabled),
36
+ cpcCeiling: numberFromEnv("SEO_CPC_CEILING", OPTIMIZATION_DEFAULTS.seo.cpcCeiling),
37
+ factors: OPTIMIZATION_DEFAULTS.seo.factors,
38
+ },
39
+ };
40
+ };
41
+ //# sourceMappingURL=optimisation-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimisation-config.js","sourceRoot":"","sources":["../../src/config/optimisation-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAyBvD,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAU,EAAE;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,QAAiB,EAAW,EAAE;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAuB,EAAE;IAC7D,OAAO;QACL,UAAU,EAAE,aAAa,CAAC,aAAa,EAAE,qBAAqB,CAAC,UAAU,CAAC;QAC1E,eAAe,EAAE,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,eAAe,CAAC;QACvF,qBAAqB,EAAE,aAAa,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,qBAAqB,CAAC;QACzG,kBAAkB,EAAE,aAAa,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,kBAAkB,CAAC;QAChG,qBAAqB,EAAE,aAAa,CAAC,yBAAyB,EAAE,qBAAqB,CAAC,qBAAqB,CAAC;QAC5G,IAAI,EAAE;YACJ,OAAO,EAAE,WAAW,CAAC,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;YACxE,kBAAkB,EAAE,aAAa,CAAC,2BAA2B,EAAE,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC7G,UAAU,EAAE,aAAa,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;SACrF;QACD,IAAI,EAAE;YACJ,mBAAmB,EAAE,aAAa,CAAC,2BAA2B,EAAE,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC/G,cAAc,EAAE,aAAa,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC;YAChG,YAAY,EAAE,aAAa,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;SAC3F;QACD,GAAG,EAAE;YACH,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC;YACtE,UAAU,EAAE,aAAa,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC;YAClF,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,OAAO;SAC3C;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { HEADER_CANDIDATES } from "../config/constants.js";
2
+ export type HeaderCandidateMap = typeof HEADER_CANDIDATES;
3
+ export type HeaderMap = Record<keyof HeaderCandidateMap, number>;
4
+ export declare const findHeader: (headers: string[], candidates: readonly string[]) => number;
5
+ export declare const createHeaderMap: (headers: string[]) => HeaderMap;
6
+ //# sourceMappingURL=header-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-mapper.d.ts","sourceRoot":"","sources":["../../src/core/header-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,kBAAkB,GAAG,OAAO,iBAAiB,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAEjE,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,EAAE,EAAE,YAAY,SAAS,MAAM,EAAE,KAAG,MAyB7E,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,EAAE,KAAG,SAMnD,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { HEADER_CANDIDATES } from "../config/constants.js";
2
+ import { normalizeHeaderToken } from "./normalizer.js";
3
+ export const findHeader = (headers, candidates) => {
4
+ if (headers.length === 0) {
5
+ return -1;
6
+ }
7
+ for (const name of candidates) {
8
+ const idx = headers.indexOf(name);
9
+ if (idx !== -1) {
10
+ return idx;
11
+ }
12
+ }
13
+ const normalizedHeaders = headers.map((h) => normalizeHeaderToken(h));
14
+ for (const candidate of candidates) {
15
+ const normalized = normalizeHeaderToken(candidate);
16
+ const exactIdx = normalizedHeaders.indexOf(normalized);
17
+ if (exactIdx !== -1) {
18
+ return exactIdx;
19
+ }
20
+ const partialIdx = normalizedHeaders.findIndex((h) => h.includes(normalized));
21
+ if (partialIdx !== -1) {
22
+ return partialIdx;
23
+ }
24
+ }
25
+ return -1;
26
+ };
27
+ export const createHeaderMap = (headers) => {
28
+ const map = {};
29
+ Object.keys(HEADER_CANDIDATES).forEach((key) => {
30
+ map[key] = findHeader(headers, HEADER_CANDIDATES[key]);
31
+ });
32
+ return map;
33
+ };
34
+ //# sourceMappingURL=header-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-mapper.js","sourceRoot":"","sources":["../../src/core/header-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAKvD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAiB,EAAE,UAA6B,EAAU,EAAE;IACrF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9E,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAiB,EAAa,EAAE;IAC9D,MAAM,GAAG,GAAG,EAAe,CAAC;IAC3B,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAqC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAClF,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const normalizeCampaignKey: (name: unknown) => string;
2
+ export declare const normalizeHeaderToken: (value: unknown) => string;
3
+ export declare const toNumber: (value: unknown) => number | "";
4
+ export declare const asNumber: (value: unknown, fallback?: number) => number;
5
+ export declare const normalizeState: (value: unknown, fallback?: string) => string;
6
+ export declare const normalizeMatchType: (value: unknown) => string;
7
+ export declare const safeDivide: (a: number, b: number) => number;
8
+ export declare const normalizeText: (value: unknown) => string;
9
+ //# sourceMappingURL=normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizer.d.ts","sourceRoot":"","sources":["../../src/core/normalizer.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,GAAI,MAAM,OAAO,KAAG,MAUpD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,MAOrD,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,EAiBlD,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,EAAE,iBAAY,KAAG,MAGvD,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,EAAE,iBAAoB,KAAG,MAMrE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,MAenD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,MAKjD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAAoC,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { STATE_MAPPING_JP_TO_EN } from "../config/constants.js";
2
+ export const normalizeCampaignKey = (name) => {
3
+ if (name === undefined || name === null) {
4
+ return "";
5
+ }
6
+ return String(name)
7
+ .normalize("NFKC")
8
+ .replace(/[((].*?[))]/g, "")
9
+ .replace(/[__‐\-ー]/g, "")
10
+ .replace(/\s+/g, "")
11
+ .toUpperCase();
12
+ };
13
+ export const normalizeHeaderToken = (value) => {
14
+ return String(value ?? "")
15
+ .normalize("NFKC")
16
+ .replace(/[\uFEFF\u200B\u00A0]/g, "")
17
+ .replace(/\s+/g, " ")
18
+ .trim()
19
+ .toLowerCase();
20
+ };
21
+ export const toNumber = (value) => {
22
+ if (value === null || value === undefined || value === "") {
23
+ return "";
24
+ }
25
+ if (typeof value === "number") {
26
+ return Number.isFinite(value) ? value : "";
27
+ }
28
+ const s = String(value)
29
+ .replace(/[\u3000\u00A0\u200B]/g, " ")
30
+ .replace(/[^\d.,\-.]/g, "")
31
+ .replace(/,/g, "")
32
+ .replace(/./g, ".")
33
+ .trim();
34
+ const n = Number.parseFloat(s);
35
+ return Number.isFinite(n) ? n : "";
36
+ };
37
+ export const asNumber = (value, fallback = 0) => {
38
+ const n = toNumber(value);
39
+ return n === "" ? fallback : n;
40
+ };
41
+ export const normalizeState = (value, fallback = "enabled") => {
42
+ const raw = String(value ?? "").trim();
43
+ if (!raw) {
44
+ return fallback;
45
+ }
46
+ return STATE_MAPPING_JP_TO_EN[raw] ?? raw.toLowerCase();
47
+ };
48
+ export const normalizeMatchType = (value) => {
49
+ const raw = String(value ?? "")
50
+ .trim()
51
+ .toLowerCase();
52
+ if (!raw) {
53
+ return "exact";
54
+ }
55
+ if (raw === "完全一致" || raw === "exact match")
56
+ return "exact";
57
+ if (raw === "フレーズ一致" || raw === "phrase match")
58
+ return "phrase";
59
+ if (raw === "部分一致" || raw === "broad match")
60
+ return "broad";
61
+ if (raw.includes("negative") && raw.includes("exact"))
62
+ return "negative exact";
63
+ if (raw.includes("negative") && raw.includes("phrase"))
64
+ return "negative phrase";
65
+ if (raw.includes("negative") && raw.includes("broad"))
66
+ return "negative broad";
67
+ return raw;
68
+ };
69
+ export const safeDivide = (a, b) => {
70
+ if (!Number.isFinite(a) || !Number.isFinite(b) || b === 0) {
71
+ return 0;
72
+ }
73
+ return a / b;
74
+ };
75
+ export const normalizeText = (value) => String(value ?? "").trim();
76
+ //# sourceMappingURL=normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizer.js","sourceRoot":"","sources":["../../src/core/normalizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BulkInputData } from "../pipeline/types.js";
2
+ export declare const readCsvFiles: (inputPattern: string) => BulkInputData[];
3
+ //# sourceMappingURL=csv-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-reader.d.ts","sourceRoot":"","sources":["../../src/io/csv-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAW,MAAM,sBAAsB,CAAC;AA+BnE,eAAO,MAAM,YAAY,GAAI,cAAc,MAAM,KAAG,aAAa,EAuBhE,CAAC"}
@@ -0,0 +1,52 @@
1
+ import fs from "node:fs";
2
+ import { resolveInputFiles } from "./excel-reader.js";
3
+ const splitCsvLine = (line) => {
4
+ const result = [];
5
+ let current = "";
6
+ let inQuotes = false;
7
+ for (let i = 0; i < line.length; i += 1) {
8
+ const ch = line[i];
9
+ if (ch === '"') {
10
+ if (inQuotes && line[i + 1] === '"') {
11
+ current += '"';
12
+ i += 1;
13
+ }
14
+ else {
15
+ inQuotes = !inQuotes;
16
+ }
17
+ continue;
18
+ }
19
+ if (ch === "," && !inQuotes) {
20
+ result.push(current);
21
+ current = "";
22
+ continue;
23
+ }
24
+ current += ch;
25
+ }
26
+ result.push(current);
27
+ return result;
28
+ };
29
+ export const readCsvFiles = (inputPattern) => {
30
+ const files = resolveInputFiles(inputPattern);
31
+ if (files.length === 0) {
32
+ throw new Error(`No CSV files matched: ${inputPattern}`);
33
+ }
34
+ return files.map((file) => {
35
+ const content = fs.readFileSync(file, "utf8");
36
+ const lines = content.split(/\r?\n/).filter((line) => line.trim() !== "");
37
+ if (lines.length === 0) {
38
+ return { sourceFile: file, headers: [], rows: [] };
39
+ }
40
+ const headers = splitCsvLine(lines[0]).map((h) => h.trim());
41
+ const rows = lines.slice(1).map((line) => {
42
+ const cells = splitCsvLine(line);
43
+ const row = {};
44
+ headers.forEach((header, index) => {
45
+ row[header] = cells[index] ?? "";
46
+ });
47
+ return row;
48
+ });
49
+ return { sourceFile: file, headers, rows };
50
+ });
51
+ };
52
+ //# sourceMappingURL=csv-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv-reader.js","sourceRoot":"","sources":["../../src/io/csv-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { BulkInputData } from "../pipeline/types.js";
2
+ export declare const resolveInputFiles: (inputPattern: string) => string[];
3
+ export declare const readBulkExcelFiles: (inputPattern: string) => Promise<BulkInputData[]>;
4
+ //# sourceMappingURL=excel-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excel-reader.d.ts","sourceRoot":"","sources":["../../src/io/excel-reader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAQ7E,eAAO,MAAM,iBAAiB,GAAI,cAAc,MAAM,KAAG,MAAM,EAqB9D,CAAC;AAkCF,eAAO,MAAM,kBAAkB,GAAU,cAAc,MAAM,KAAG,OAAO,CAAC,aAAa,EAAE,CA0BtF,CAAC"}