python-hwpx-automation 6.6.4__tar.gz → 6.7.1__tar.gz

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 (228) hide show
  1. {python_hwpx_automation-6.6.4/src/python_hwpx_automation.egg-info → python_hwpx_automation-6.7.1}/PKG-INFO +11 -13
  2. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/README.md +9 -11
  3. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/pyproject.toml +2 -2
  4. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/specialized.py +48 -0
  5. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/identity.json +9 -9
  6. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/wordbox.py +1 -1
  7. python_hwpx_automation-6.7.1/src/hwpx_automation/office/house_style/data/genres.json +484 -0
  8. python_hwpx_automation-6.7.1/src/hwpx_automation/office/house_style/gianmun.py +293 -0
  9. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/public-modules.json +5 -4
  10. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/server.py +2 -0
  11. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/tool_bindings.py +2 -0
  12. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/tool_contract.py +9 -9
  13. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1/src/python_hwpx_automation.egg-info}/PKG-INFO +11 -13
  14. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/SOURCES.txt +1 -0
  15. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/requires.txt +1 -1
  16. python_hwpx_automation-6.6.4/src/hwpx_automation/office/house_style/data/genres.json +0 -43
  17. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/LICENSE +0 -0
  18. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/MANIFEST.in +0 -0
  19. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/NOTICE +0 -0
  20. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/setup.cfg +0 -0
  21. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/__init__.py +0 -0
  22. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/__init__.pyi +0 -0
  23. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/__main__.py +0 -0
  24. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/agent_document.py +0 -0
  25. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/api.py +0 -0
  26. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/blind_eval.py +0 -0
  27. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/capabilities.py +0 -0
  28. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/compat.py +0 -0
  29. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/configuration.py +0 -0
  30. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/__init__.py +0 -0
  31. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/content.py +0 -0
  32. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/context.py +0 -0
  33. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/diff.py +0 -0
  34. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/document.py +0 -0
  35. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/formatting.py +0 -0
  36. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/handles.py +0 -0
  37. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/locations.py +0 -0
  38. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/locator.py +0 -0
  39. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/plan.py +0 -0
  40. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/resources.py +0 -0
  41. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/search.py +0 -0
  42. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/transactions.py +0 -0
  43. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/txn.py +0 -0
  44. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/document_state.py +0 -0
  45. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/errors.py +0 -0
  46. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/execution_lock.py +0 -0
  47. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/fastmcp_adapter.py +0 -0
  48. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/form_fill.py +0 -0
  49. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/form_output_models.py +0 -0
  50. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/__init__.py +0 -0
  51. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/_shared.py +0 -0
  52. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/agent_document.py +0 -0
  53. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/authoring.py +0 -0
  54. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/content_edit.py +0 -0
  55. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/form_fill.py +0 -0
  56. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/layout_style.py +0 -0
  57. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/quality_render.py +0 -0
  58. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/read_export.py +0 -0
  59. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/tracked_changes.py +0 -0
  60. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/workflow.py +0 -0
  61. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/hwp_converter.py +0 -0
  62. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/hwp_support.py +0 -0
  63. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/hwpx_ops.py +0 -0
  64. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/identity.py +0 -0
  65. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ingest_adapters.py +0 -0
  66. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/markdown_plan.py +0 -0
  67. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/mcp_cli.py +0 -0
  68. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/metadata/tools_meta.py +0 -0
  69. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/mixed_form.py +0 -0
  70. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/mutation_models.py +0 -0
  71. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/network_policy.py +0 -0
  72. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/__init__.py +0 -0
  73. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/__init__.py +0 -0
  74. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/_batch_verification.py +0 -0
  75. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/__init__.py +0 -0
  76. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/bundle.py +0 -0
  77. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/catalog.py +0 -0
  78. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/dump.py +0 -0
  79. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/mapping.py +0 -0
  80. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/model.py +0 -0
  81. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/native.py +0 -0
  82. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/replay.py +0 -0
  83. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/catalog.py +0 -0
  84. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/cli.py +0 -0
  85. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/commands.py +0 -0
  86. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/document.py +0 -0
  87. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/form_plan.py +0 -0
  88. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/model.py +0 -0
  89. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/path.py +0 -0
  90. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/query.py +0 -0
  91. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/story.py +0 -0
  92. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/__init__.py +0 -0
  93. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/advanced_generators.py +0 -0
  94. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/builder/__init__.py +0 -0
  95. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/builder/core.py +0 -0
  96. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/builder/report.py +0 -0
  97. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/__init__.py +0 -0
  98. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/_support.py +0 -0
  99. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/composer.py +0 -0
  100. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/harvest.py +0 -0
  101. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/plan.py +0 -0
  102. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profile.py +0 -0
  103. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/body.xml +0 -0
  104. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/heading.xml +0 -0
  105. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/info_table.xml +0 -0
  106. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/title.xml +0 -0
  107. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/profile.json +0 -0
  108. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/template.hwpx +0 -0
  109. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/body.xml +0 -0
  110. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/heading.xml +0 -0
  111. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/title.xml +0 -0
  112. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/profile.json +0 -0
  113. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/template.hwpx +0 -0
  114. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/body.xml +0 -0
  115. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/heading.xml +0 -0
  116. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/info_table.xml +0 -0
  117. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/title.xml +0 -0
  118. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/profile.json +0 -0
  119. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/template.hwpx +0 -0
  120. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/body.xml +0 -0
  121. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/heading.xml +0 -0
  122. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/info_table.xml +0 -0
  123. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/title.xml +0 -0
  124. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/profile.json +0 -0
  125. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/template.hwpx +0 -0
  126. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/validator.py +0 -0
  127. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/presets/__init__.py +0 -0
  128. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/presets/proposal.py +0 -0
  129. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/report_parser.py +0 -0
  130. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/style_profile.py +0 -0
  131. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/template_analyzer.py +0 -0
  132. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/charting/__init__.py +0 -0
  133. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/compliance/__init__.py +0 -0
  134. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/compliance/official_lint.py +0 -0
  135. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/compliance/pii.py +0 -0
  136. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/document_ops/__init__.py +0 -0
  137. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/document_ops/comparison.py +0 -0
  138. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/document_ops/mail_merge.py +0 -0
  139. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/document_ops/redline.py +0 -0
  140. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/evalplan/__init__.py +0 -0
  141. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/evalplan/runtime.py +0 -0
  142. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/__init__.py +0 -0
  143. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/compose.py +0 -0
  144. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/ir.py +0 -0
  145. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/measure.py +0 -0
  146. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/parser.py +0 -0
  147. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/profile.py +0 -0
  148. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/__init__.py +0 -0
  149. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/classification.py +0 -0
  150. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fill_residue.py +0 -0
  151. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/__init__.py +0 -0
  152. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/apply.py +0 -0
  153. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/engine.py +0 -0
  154. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/measure.py +0 -0
  155. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/policy.py +0 -0
  156. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/report.py +0 -0
  157. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/seal.py +0 -0
  158. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/guidance.py +0 -0
  159. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/quality.py +0 -0
  160. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/split_run.py +0 -0
  161. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/template_formfit.py +0 -0
  162. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/house_style/__init__.py +0 -0
  163. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/house_style/composition.py +0 -0
  164. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/house_style/data/bank.json +0 -0
  165. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/house_style/org_chart.py +0 -0
  166. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/quality/__init__.py +0 -0
  167. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/quality/page_guard.py +0 -0
  168. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/__init__.py +0 -0
  169. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/_hancom_open_rate.ps1 +0 -0
  170. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/_refresh_hwpx_mac.applescript +0 -0
  171. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/_render_hwpx.ps1 +0 -0
  172. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/_render_hwpx_mac.applescript +0 -0
  173. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/block_splits.py +0 -0
  174. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/detectors.py +0 -0
  175. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/diff.py +0 -0
  176. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/fixture_corpus.py +0 -0
  177. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/oracle.py +0 -0
  178. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/page_qa.py +0 -0
  179. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/qa_contracts.py +0 -0
  180. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/qa_metrics.py +0 -0
  181. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/worker.py +0 -0
  182. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/utilities/__init__.py +0 -0
  183. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/utilities/table_compute.py +0 -0
  184. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/__init__.py +0 -0
  185. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/_border_fill.py +0 -0
  186. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/composition.py +0 -0
  187. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/content_layout.py +0 -0
  188. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/context.py +0 -0
  189. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/form_fields.py +0 -0
  190. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/media.py +0 -0
  191. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/memo_style.py +0 -0
  192. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/package_validation.py +0 -0
  193. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/planning.py +0 -0
  194. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/preview_export.py +0 -0
  195. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/read_query.py +0 -0
  196. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/save_policy.py +0 -0
  197. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/tables.py +0 -0
  198. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/transactions.py +0 -0
  199. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/preview_output_models.py +0 -0
  200. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/py.typed +0 -0
  201. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/quality.py +0 -0
  202. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/quality_generation.py +0 -0
  203. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/resources.py +0 -0
  204. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/runtime.py +0 -0
  205. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/runtime_services.py +0 -0
  206. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/storage.py +0 -0
  207. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/upstream.py +0 -0
  208. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/utils/__init__.py +0 -0
  209. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/utils/helpers.py +0 -0
  210. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/visual_qa.py +0 -0
  211. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/__init__.py +0 -0
  212. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/adapters.py +0 -0
  213. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/dispatcher.py +0 -0
  214. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/models.py +0 -0
  215. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/policy.py +0 -0
  216. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_contracts.py +0 -0
  217. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_metrics.py +0 -0
  218. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_queue.py +0 -0
  219. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_security.py +0 -0
  220. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_transport.py +0 -0
  221. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/rendering.py +0 -0
  222. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/service.py +0 -0
  223. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/state_machine.py +0 -0
  224. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/store.py +0 -0
  225. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workspace.py +0 -0
  226. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/dependency_links.txt +0 -0
  227. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/entry_points.txt +0 -0
  228. {python_hwpx_automation-6.6.4 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-hwpx-automation
3
- Version: 6.6.4
3
+ Version: 6.7.1
4
4
  Summary: Task-oriented HWPX document automation for Python, with an optional MCP adapter.
5
5
  Author: Kohkyuhyun
6
6
  License-Expression: Apache-2.0
@@ -20,7 +20,7 @@ Requires-Python: >=3.10
20
20
  Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
22
  License-File: NOTICE
23
- Requires-Dist: python-hwpx<6,>=5.6.0
23
+ Requires-Dist: python-hwpx<6,>=5.7.0
24
24
  Requires-Dist: pydantic<3,>=2.11
25
25
  Requires-Dist: cryptography>=42.0
26
26
  Requires-Dist: anyio>=4.0
@@ -74,17 +74,15 @@ Dynamic: license-file
74
74
 
75
75
  <!-- release-state: release-approved -->
76
76
  > [!NOTE]
77
- > 이 소스 트리는 **아직 공개되지 않은 6.6.4 후보**입니다(에이전트 계약 표면:
78
- > `run_edit_plan` 선언적 편집 계획 실행기 + MCP resources +
79
- > `describe_capabilities` 확장, 134 도구, core 바닥 5.6.0). 현재 공개
80
- > 트레인은 여전히 `python-hwpx 5.5.0 → python-hwpx-automation 6.5.1 → hwpx-plugin 1.5.0`
81
- > (계약 `f61d2c60c0aa0413`)이며, 후보는 core·automation
82
- > PyPI와 plugin GitHub
83
- > Release·marketplace·실제 marketplace 설치까지 확인한 뒤에만 승격합니다.
84
- > 기존 5.x 설치는 별도 발행된 `hwpx-mcp-server 5.1.1`이 보호합니다. 절차와
85
- > 상태 머신: [릴리스 runbook](docs/release-runbook.md)
86
- > 현재 상태는 release-approved입니다 — 원격 진실(3스택·marketplace 설치) 관찰 전까지
87
- > currentPublic은 그대로입니다.
77
+ > 이 소스 트리는 **아직 공개되지 않은 6.7.1 후보**입니다(양식개체·기안문 장르:
78
+ > 체크박스 저작 프리미티브와 `compose_official_draft`/`compose_simple_draft`,
79
+ > 136 도구, core 바닥 5.7.0). 현재 공개 트레인은 여전히
80
+ > `python-hwpx 5.6.0 → python-hwpx-automation 6.6.4 → hwpx-plugin 1.6.0`
81
+ > (계약 `19898dba41495c47`)입니다.
82
+ > 후보는 core·automation PyPI와 plugin GitHub
83
+ > Release·marketplace·실제 marketplace 설치까지 확인한 뒤에만 승격하며, 기존
84
+ > 5.x 설치는 별도 발행된 `hwpx-mcp-server 5.1.1`이 보호합니다. 절차와 상태
85
+ > 머신: [릴리스 runbook](docs/release-runbook.md)
88
86
 
89
87
  [python-hwpx](https://github.com/airmang/python-hwpx) 엔진 위에서 문서 저작·
90
88
  양식 채움·시험지 조판·안전한 에이전트 워크플로를 제공하는 응용 계층입니다.
@@ -14,17 +14,15 @@
14
14
 
15
15
  <!-- release-state: release-approved -->
16
16
  > [!NOTE]
17
- > 이 소스 트리는 **아직 공개되지 않은 6.6.4 후보**입니다(에이전트 계약 표면:
18
- > `run_edit_plan` 선언적 편집 계획 실행기 + MCP resources +
19
- > `describe_capabilities` 확장, 134 도구, core 바닥 5.6.0). 현재 공개
20
- > 트레인은 여전히 `python-hwpx 5.5.0 → python-hwpx-automation 6.5.1 → hwpx-plugin 1.5.0`
21
- > (계약 `f61d2c60c0aa0413`)이며, 후보는 core·automation
22
- > PyPI와 plugin GitHub
23
- > Release·marketplace·실제 marketplace 설치까지 확인한 뒤에만 승격합니다.
24
- > 기존 5.x 설치는 별도 발행된 `hwpx-mcp-server 5.1.1`이 보호합니다. 절차와
25
- > 상태 머신: [릴리스 runbook](docs/release-runbook.md)
26
- > 현재 상태는 release-approved입니다 — 원격 진실(3스택·marketplace 설치) 관찰 전까지
27
- > currentPublic은 그대로입니다.
17
+ > 이 소스 트리는 **아직 공개되지 않은 6.7.1 후보**입니다(양식개체·기안문 장르:
18
+ > 체크박스 저작 프리미티브와 `compose_official_draft`/`compose_simple_draft`,
19
+ > 136 도구, core 바닥 5.7.0). 현재 공개 트레인은 여전히
20
+ > `python-hwpx 5.6.0 → python-hwpx-automation 6.6.4 → hwpx-plugin 1.6.0`
21
+ > (계약 `19898dba41495c47`)입니다.
22
+ > 후보는 core·automation PyPI와 plugin GitHub
23
+ > Release·marketplace·실제 marketplace 설치까지 확인한 뒤에만 승격하며, 기존
24
+ > 5.x 설치는 별도 발행된 `hwpx-mcp-server 5.1.1`이 보호합니다. 절차와 상태
25
+ > 머신: [릴리스 runbook](docs/release-runbook.md)
28
26
 
29
27
  [python-hwpx](https://github.com/airmang/python-hwpx) 엔진 위에서 문서 저작·
30
28
  양식 채움·시험지 조판·안전한 에이전트 워크플로를 제공하는 응용 계층입니다.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-hwpx-automation"
7
- version = "6.6.4"
7
+ version = "6.7.1"
8
8
  description = "Task-oriented HWPX document automation for Python, with an optional MCP adapter."
9
9
  readme = "README.md"
10
10
  authors = [{ name = "Kohkyuhyun" }]
@@ -29,7 +29,7 @@ dependencies = [
29
29
  # the bounded major here is what makes "no valid install has two declarers"
30
30
  # true rather than hopeful, and prevents the next core major from silently
31
31
  # breaking an already-published automation line.
32
- "python-hwpx>=5.6.0,<6", # HWPX object model, OXML/OPC, format-native primitives
32
+ "python-hwpx>=5.7.0,<6", # HWPX object model, OXML/OPC, format-native primitives
33
33
 
34
34
  "pydantic>=2.11,<3",
35
35
  "cryptography>=42.0",
@@ -27,6 +27,12 @@ from ..office.house_style import load_bank, load_genres
27
27
  from ..office.house_style.composition import (
28
28
  compose_section_chip as compose_house_section_chip,
29
29
  )
30
+ from ..office.house_style.gianmun import (
31
+ HIDDEN_LABELS as HOUSE_HIDDEN_LABELS,
32
+ SHOWN_LABELS as HOUSE_SHOWN_LABELS,
33
+ compose_official_draft as compose_house_official_draft,
34
+ compose_simple_draft as compose_house_simple_draft,
35
+ )
30
36
  from ..office.house_style.org_chart import lower_boxed_org_chart
31
37
  from ..office.document_ops import (
32
38
  build_mail_merge as build_hwpx_mail_merge,
@@ -246,6 +252,48 @@ def add_boxed_org_chart(
246
252
  return _with_save_verification(result, verification)
247
253
 
248
254
 
255
+ def compose_official_draft(plan: dict) -> dict:
256
+ """일반기안문(별지 제1호서식)을 범용 document_plan block으로 합성합니다.
257
+
258
+ 「행정업무의 운영 및 혁신에 관한 규정 시행규칙」 별지 제1호서식의 공개
259
+ 구조를 두문/본문/결문 순서로 낮춥니다. 파일은 쓰지 않습니다 — 반환 blocks를
260
+ document_plan에 넣어 create_document_from_plan으로 생성하십시오.
261
+
262
+ 규정에서 오는 계약 3가지: ①결재란 칸 수는 approvers 목록 길이입니다
263
+ (규칙 제7조제4항 — 서명·전결 표시를 하지 않는 사람의 서명란은 만들지
264
+ 않습니다). ②행정기관명·발신명·기안자/검토자/결재권자·직위(직급) 서명·
265
+ 주소·공개 구분 등의 용어(라벨)는 인쇄하지 않고 값만 적습니다(서식 비고).
266
+ ③선택 항목에 체크박스 개체를 쓰지 않습니다 — 별표 4 제10호가 `[ ]`+√
267
+ 텍스트를 규정합니다. 내부결재문서는 internal_only=true로 발신명의를
268
+ 생략합니다."""
269
+ blocks = compose_house_official_draft(plan)
270
+ return {
271
+ "blocks": blocks,
272
+ "genre": "official_draft",
273
+ "next_tool": "validate_document_plan",
274
+ "labelPolicy": {
275
+ "hidden": list(HOUSE_HIDDEN_LABELS),
276
+ "shown": list(HOUSE_SHOWN_LABELS),
277
+ },
278
+ }
279
+
280
+
281
+ def compose_simple_draft(plan: dict) -> dict:
282
+ """간이기안문(별지 제2호서식)을 범용 document_plan block으로 합성합니다.
283
+
284
+ 보고서·계획서·검토서 등 발신할 필요가 없는 **내부결재문서 전용**입니다
285
+ (규칙 제3조제3항 — 시행문으로 변환할 수 없습니다). 일반기안문과 달리
286
+ 두문·발신명의·시행/접수·주소가 없고, 문서등록 블록과 결재란이 상단에,
287
+ 제목·(선택)요약설명문·작성일·작성기관이 그 아래 중앙에 옵니다. 결재란 칸
288
+ 수는 approvers 목록 길이입니다(규칙 제7조제4항)."""
289
+ blocks = compose_house_simple_draft(plan)
290
+ return {
291
+ "blocks": blocks,
292
+ "genre": "simple_draft",
293
+ "next_tool": "validate_document_plan",
294
+ }
295
+
296
+
249
297
  def compose_section_chip(
250
298
  number: str,
251
299
  title: str,
@@ -5,20 +5,20 @@
5
5
  "releaseState": {
6
6
  "status": "release-approved",
7
7
  "candidate": {
8
- "pythonHwpx": "5.6.0",
8
+ "pythonHwpx": "5.7.0",
9
9
  "canonicalDistribution": "python-hwpx-automation",
10
- "canonicalAutomation": "6.6.4",
10
+ "canonicalAutomation": "6.7.1",
11
11
  "compatibilityDistribution": "hwpx-mcp-server",
12
- "compatibility": "6.6.4",
13
- "plugin": "1.6.0",
14
- "contractHash": "19898dba41495c47"
12
+ "compatibility": "6.7.1",
13
+ "plugin": "1.7.0",
14
+ "contractHash": "98510af22d13899c"
15
15
  },
16
16
  "currentPublic": {
17
- "pythonHwpx": "5.5.0",
17
+ "pythonHwpx": "5.6.0",
18
18
  "primaryDistribution": "python-hwpx-automation",
19
- "primaryApplication": "6.5.1",
20
- "plugin": "1.5.0",
21
- "contractHash": "f61d2c60c0aa0413"
19
+ "primaryApplication": "6.6.4",
20
+ "plugin": "1.6.0",
21
+ "contractHash": "19898dba41495c47"
22
22
  },
23
23
  "promotionGate": "Three states are mandatory: unreleased-candidate while auditing; release-approved only after separate owner approval and while currentPublic still names the previously observed coherent stack; released only in a follow-up commit after remote truth is observed for core, canonical automation, the compatibility distribution, the plugin GitHub release, the marketplace entry, and a real marketplace install. The automation tag workflow publishes only release-approved, leaves currentPublic unchanged, and hands an attached receipt to plugin publication."
24
24
  },
@@ -1,5 +1,5 @@
1
1
  # SPDX-License-Identifier: Apache-2.0
2
- """Word/glyph-box geometry oracle for form-fill verification (M2 / rhwp ⑨).
2
+ """Word/glyph-box geometry oracle for form-fill verification.
3
3
 
4
4
  The faithful renderer for HWPX is Hancom (Constitution IV); there is no free
5
5
  headless one. Rather than drive the Hancom GUI on every check, this module makes
@@ -0,0 +1,484 @@
1
+ {
2
+ "schemaVersion": "hwpx.house-style-genres/v0",
3
+ "generated": "2026-07-23",
4
+ "_usage": "장르 구조 문법(감각 데이터). 스킬(두뇌)이 per-doc 인스턴스화하고, 게이트는 이 데이터에 대해 검사한다. 판단 하드코딩 금지 — 값의 prov는 'layer:근거', layer ∈ harvest(실물 수확 N=3)|template(도교육청 서식 inline)|owner",
5
+ "genres": {
6
+ "operating_plan": {
7
+ "label": "운영계획서 (기관·사업·정책 운영 계획)",
8
+ "when": "기관/사업/정책 운영 계획. 개조식. 정부·공공 장르",
9
+ "typography": {
10
+ "inherits": "report",
11
+ "prov": [
12
+ "template:도교육청 서식 inline(헤더 HY헤드라인M 14/본문 휴먼명조 13/160%)와 뱅크 report 교차일치"
13
+ ],
14
+ "roles": {
15
+ "section_chip_number": {
16
+ "font": "HY헤드라인M",
17
+ "sizePt": 14,
18
+ "bold": true,
19
+ "align": "center",
20
+ "onAccent": true,
21
+ "prov": [
22
+ "harvest:섹션칩 번호칸 accent 배경"
23
+ ]
24
+ },
25
+ "section_chip_title": {
26
+ "font": "HY헤드라인M",
27
+ "sizePt": 14,
28
+ "bold": true,
29
+ "prov": [
30
+ "harvest:섹션칩 제목"
31
+ ]
32
+ },
33
+ "org_box_label": {
34
+ "font": "휴먼명조",
35
+ "sizePt": 11,
36
+ "align": "center",
37
+ "prov": [
38
+ "harvest:조직도 박스 라벨"
39
+ ]
40
+ }
41
+ }
42
+ },
43
+ "grammar": {
44
+ "sequence": [
45
+ "title_band",
46
+ "issuer",
47
+ "slogan?",
48
+ "section+"
49
+ ],
50
+ "section": {
51
+ "divider": "section_chip",
52
+ "body": "prose_body",
53
+ "embeds": "embedded_block*"
54
+ },
55
+ "blockTypes": {
56
+ "title_band": {
57
+ "desc": "1x1 boxed title 「…」 운영 계획, 가운데·큰 글자",
58
+ "required": true
59
+ },
60
+ "issuer": {
61
+ "desc": "발신 기관명",
62
+ "required": true
63
+ },
64
+ "slogan": {
65
+ "desc": "인용 슬로건/태그라인",
66
+ "required": false
67
+ },
68
+ "section_chip": {
69
+ "desc": "섹션 구분자 1x3 [번호box][gap][제목] 또는 inline",
70
+ "required": true
71
+ },
72
+ "prose_body": {
73
+ "desc": "개조식 계층 ○/-/□/①/➡/※",
74
+ "required": true
75
+ },
76
+ "org_chart": {
77
+ "desc": "표-기반 박스 조직도(병합 박스+셀 테두리 커넥터). 드로잉 아님(2026-07-23 실측)",
78
+ "required": false
79
+ },
80
+ "comparison": {
81
+ "desc": "AS-IS➡TO-BE 표",
82
+ "required": false
83
+ },
84
+ "data_table": {
85
+ "desc": "현황/예산/spec 표",
86
+ "required": false
87
+ },
88
+ "faq": {
89
+ "desc": "순/질의/응답 3열 표",
90
+ "required": false
91
+ }
92
+ },
93
+ "variableSlots": {
94
+ "numbering": {
95
+ "options": [
96
+ "roman",
97
+ "arabic"
98
+ ],
99
+ "default": "roman",
100
+ "desc": "섹션 번호 체계 Ⅰ~ vs 1.~"
101
+ },
102
+ "chipStyle": {
103
+ "options": [
104
+ "box",
105
+ "inline"
106
+ ],
107
+ "default": "box",
108
+ "desc": "섹션칩 렌더 색박스 vs inline"
109
+ },
110
+ "bulletGlyph": {
111
+ "options": [
112
+ "○",
113
+ "ㅇ"
114
+ ],
115
+ "default": "○"
116
+ },
117
+ "accentColor": {
118
+ "desc": "섹션칩·강조 accent 1색(문서마다 변주)",
119
+ "example": "#3366CC"
120
+ },
121
+ "headerImage": {
122
+ "desc": "타이틀 밴드/첫 단 로고·엠블럼(변주, 입력 파라미터)"
123
+ }
124
+ },
125
+ "prov": [
126
+ "harvest:N=3 실물(앵커+형제2) 공유 문법",
127
+ "owner:형 공유·표면 변주 확증 2026-07-22"
128
+ ]
129
+ }
130
+ },
131
+ "official_draft": {
132
+ "label": "일반기안문 (별지 제1호서식 — 대내외 공문/시행문 공용)",
133
+ "when": "행정기관이 기안·시행하는 공문서. 두문/본문/결문 3부. 관인 날인 시 시행문이 된다",
134
+ "typography": {
135
+ "inherits": "report",
136
+ "prov": [
137
+ "regulation:행정업무의 운영 및 혁신에 관한 규정 시행규칙(행정안전부령 제408호, 2023-06-28) 제3·4·6·7·9조",
138
+ "regulation:같은 규칙 별지 제1호서식(일반기안문)·제2호서식(간이기안문) <개정 2016-07-11>",
139
+ "regulation:같은 규칙 별표 4 제2호(여백 상·좌·우 20mm 하 10mm)·제10호([ ]+√ 관례)",
140
+ "measure:specs/060 P0 조사 원장 evidence/p0/gianmun-forms.md",
141
+ "honest:본문 글꼴·글자 크기는 법령 미규정(별표 4/5 값은 민원 서식 설계 기준) — 관례 기본값이며 규정 근거로 주장하지 않는다"
142
+ ],
143
+ "roles": {
144
+ "agency_name": {
145
+ "sizePt": 16,
146
+ "bold": true,
147
+ "align": "center",
148
+ "prov": [
149
+ "regulation:두문 행정기관명(로고는 왼쪽 끝 2x2cm)"
150
+ ]
151
+ },
152
+ "head_label": {
153
+ "sizePt": 13,
154
+ "prov": [
155
+ "regulation:수신/(경유)/제목 라벨"
156
+ ]
157
+ },
158
+ "body": {
159
+ "sizePt": 13,
160
+ "prov": [
161
+ "convention:본문 개조식"
162
+ ]
163
+ },
164
+ "sender_name": {
165
+ "sizePt": 15,
166
+ "bold": true,
167
+ "align": "center",
168
+ "prov": [
169
+ "regulation:발신명의(관인은 마지막 글자가 인영 가운데)"
170
+ ]
171
+ },
172
+ "footer": {
173
+ "sizePt": 10,
174
+ "prov": [
175
+ "regulation:결문 시행/접수·주소·연락처"
176
+ ]
177
+ }
178
+ }
179
+ },
180
+ "grammar": {
181
+ "sequence": [
182
+ "agency_name",
183
+ "recipient",
184
+ "via",
185
+ "subject",
186
+ "body",
187
+ "attachments?",
188
+ "sender_name",
189
+ "recipient_list?",
190
+ "approval_table",
191
+ "footer_table"
192
+ ],
193
+ "section": {
194
+ "divider": "none",
195
+ "body": "outline_body",
196
+ "embeds": "embedded_block*"
197
+ },
198
+ "blockTypes": {
199
+ "agency_name": {
200
+ "desc": "행정기관명 가운데 문단(동명 기관 있으면 상급기관명 병기)",
201
+ "required": true
202
+ },
203
+ "recipient": {
204
+ "desc": "수신 — 내부결재/기관장(보조기관)/합의제/민원인/수신자 참조",
205
+ "required": true
206
+ },
207
+ "via": {
208
+ "desc": "(경유) — 경유기관 없으면 빈칸",
209
+ "required": true
210
+ },
211
+ "subject": {
212
+ "desc": "제목",
213
+ "required": true
214
+ },
215
+ "body": {
216
+ "desc": "본문 개조식 1.→가.→1)→가)→(1)→(가)→①→㉮, 2타씩 우측 이동",
217
+ "required": true
218
+ },
219
+ "attachments": {
220
+ "desc": "붙임 목록 + '끝.' 4규칙",
221
+ "required": false
222
+ },
223
+ "sender_name": {
224
+ "desc": "발신명의(+관인/관인생략). 내부결재문서는 미표시",
225
+ "required": false
226
+ },
227
+ "recipient_list": {
228
+ "desc": "수신자 다수일 때 발신명의 다음 줄 '수신자'란",
229
+ "required": false
230
+ },
231
+ "approval_table": {
232
+ "desc": "결재란 1행 x 2N열 — N=실제 서명자 수(가변)",
233
+ "required": true
234
+ },
235
+ "footer_table": {
236
+ "desc": "협조자/시행·접수/주소/연락처·공개구분 표(좌우 세로 테두리 없음)",
237
+ "required": true
238
+ }
239
+ },
240
+ "variableSlots": {
241
+ "approvers": {
242
+ "desc": "결재자 목록(직위+성명+전결/대결). 규칙 제7조제4항: 서명·전결 표시를 하지 않는 사람의 서명란은 만들지 않는다 — 칸 수는 고정이 아니라 목록 길이",
243
+ "example": [
244
+ "행정사무관 김○○",
245
+ "○○과장 (전결) 이○○"
246
+ ]
247
+ },
248
+ "internalOnly": {
249
+ "options": [
250
+ true,
251
+ false
252
+ ],
253
+ "default": false,
254
+ "desc": "내부결재문서면 발신명의를 표시하지 않는다"
255
+ },
256
+ "seal": {
257
+ "options": [
258
+ "직인",
259
+ "관인생략",
260
+ "서명생략",
261
+ "none"
262
+ ],
263
+ "default": "none",
264
+ "desc": "발신명의 오른쪽 표시(별표 1)"
265
+ },
266
+ "disclosure": {
267
+ "options": [
268
+ "공개",
269
+ "부분공개",
270
+ "비공개"
271
+ ],
272
+ "default": "공개",
273
+ "desc": "부분공개·비공개는 괄호에 정보공개법 제9조제1항 호 번호"
274
+ }
275
+ },
276
+ "labelPolicy": {
277
+ "hidden": [
278
+ "행정기관명",
279
+ "발신명",
280
+ "기안자",
281
+ "검토자",
282
+ "결재권자",
283
+ "직위(직급) 서명",
284
+ "처리과명-연도별 일련번호(시행일)",
285
+ "도로명주소",
286
+ "홈페이지 주소",
287
+ "공무원의 전자우편주소",
288
+ "공개 구분"
289
+ ],
290
+ "shown": [
291
+ "수신",
292
+ "(경유)",
293
+ "제목",
294
+ "붙임",
295
+ "시행",
296
+ "접수",
297
+ "우",
298
+ "협조자",
299
+ "전화번호",
300
+ "팩스번호"
301
+ ],
302
+ "prov": [
303
+ "regulation:별지 제1호서식 비고 — 해당 용어는 표시하지 아니하고 그 내용을 적는다"
304
+ ]
305
+ },
306
+ "checkboxPolicy": {
307
+ "useFormObject": false,
308
+ "convention": "[ ] + √",
309
+ "prov": [
310
+ "regulation:별표 4 제10호 — √ 표시를 하도록 하는 란은 '□'을 사용하지 않고 '[ ]'을 사용한다"
311
+ ]
312
+ },
313
+ "page": {
314
+ "paper": "A4 210x297mm",
315
+ "marginsMm": {
316
+ "top": 20,
317
+ "left": 20,
318
+ "right": 20,
319
+ "bottom": 10
320
+ },
321
+ "prov": [
322
+ "regulation:영 제7조제6항·별표 4 제2호"
323
+ ]
324
+ },
325
+ "prov": [
326
+ "regulation:행정업무의 운영 및 혁신에 관한 규정 시행규칙(행정안전부령 제408호, 2023-06-28) 제3·4·6·7·9조",
327
+ "regulation:같은 규칙 별지 제1호서식(일반기안문)·제2호서식(간이기안문) <개정 2016-07-11>",
328
+ "regulation:같은 규칙 별표 4 제2호(여백 상·좌·우 20mm 하 10mm)·제10호([ ]+√ 관례)",
329
+ "measure:specs/060 P0 조사 원장 evidence/p0/gianmun-forms.md"
330
+ ]
331
+ }
332
+ },
333
+ "simple_draft": {
334
+ "label": "간이기안문 (별지 제2호서식 — 내부결재 전용)",
335
+ "when": "보고서·계획서·검토서 등 발신할 필요가 없는 내부결재문서(규칙 제3조제3항). 시행문 변환 불가",
336
+ "typography": {
337
+ "inherits": "report",
338
+ "prov": [
339
+ "regulation:행정업무의 운영 및 혁신에 관한 규정 시행규칙(행정안전부령 제408호, 2023-06-28) 제3·4·6·7·9조",
340
+ "regulation:같은 규칙 별지 제1호서식(일반기안문)·제2호서식(간이기안문) <개정 2016-07-11>",
341
+ "regulation:같은 규칙 별표 4 제2호(여백 상·좌·우 20mm 하 10mm)·제10호([ ]+√ 관례)",
342
+ "measure:specs/060 P0 조사 원장 evidence/p0/gianmun-forms.md",
343
+ "honest:본문 글꼴·크기 법령 미규정 — 관례 기본값"
344
+ ],
345
+ "roles": {
346
+ "title": {
347
+ "sizePt": 16,
348
+ "bold": true,
349
+ "align": "center",
350
+ "prov": [
351
+ "regulation:하단 중앙 제목"
352
+ ]
353
+ },
354
+ "summary": {
355
+ "sizePt": 12,
356
+ "align": "center",
357
+ "prov": [
358
+ "regulation:요약설명문(선택)"
359
+ ]
360
+ },
361
+ "issuer": {
362
+ "sizePt": 14,
363
+ "align": "center",
364
+ "prov": [
365
+ "regulation:작성기관"
366
+ ]
367
+ },
368
+ "footer": {
369
+ "sizePt": 10,
370
+ "prov": [
371
+ "regulation:문서등록 블록"
372
+ ]
373
+ }
374
+ }
375
+ },
376
+ "grammar": {
377
+ "sequence": [
378
+ "header_row",
379
+ "title",
380
+ "summary?",
381
+ "written_date",
382
+ "issuer"
383
+ ],
384
+ "section": {
385
+ "divider": "none",
386
+ "body": "outline_body",
387
+ "embeds": "embedded_block*"
388
+ },
389
+ "blockTypes": {
390
+ "header_row": {
391
+ "desc": "1행 2열 컨테이너 — 좌: 문서등록 블록(생산등록번호/등록일/결재일/공개구분 4행 2열), 우: 결재란(가변 N)+협조자",
392
+ "required": true
393
+ },
394
+ "title": {
395
+ "desc": "제목(가운데)",
396
+ "required": true
397
+ },
398
+ "summary": {
399
+ "desc": "요약설명문 — 제목과 작성일 사이",
400
+ "required": false
401
+ },
402
+ "written_date": {
403
+ "desc": "작성일(가운데)",
404
+ "required": true
405
+ },
406
+ "issuer": {
407
+ "desc": "작성기관(상위·하위 2줄, 가운데)",
408
+ "required": true
409
+ }
410
+ },
411
+ "variableSlots": {
412
+ "approvers": {
413
+ "desc": "결재자 목록 — 칸 수는 목록 길이(규칙 제7조제4항)",
414
+ "example": [
415
+ "행정사무관 김○○",
416
+ "○○과장 이○○"
417
+ ]
418
+ },
419
+ "disclosure": {
420
+ "options": [
421
+ "공개",
422
+ "부분공개",
423
+ "비공개"
424
+ ],
425
+ "default": "공개"
426
+ }
427
+ },
428
+ "labelPolicy": {
429
+ "hidden": [
430
+ "기안자",
431
+ "검토자",
432
+ "결재권자",
433
+ "직위(직급) 서명",
434
+ "공개 구분"
435
+ ],
436
+ "shown": [
437
+ "생산등록번호",
438
+ "등록일",
439
+ "결재일",
440
+ "협조자"
441
+ ],
442
+ "prov": [
443
+ "regulation:별지 제2호서식 비고"
444
+ ]
445
+ },
446
+ "checkboxPolicy": {
447
+ "useFormObject": false,
448
+ "convention": "[ ] + √",
449
+ "prov": [
450
+ "regulation:별표 4 제10호"
451
+ ]
452
+ },
453
+ "absent": {
454
+ "desc": "일반기안문 대비 없는 것",
455
+ "items": [
456
+ "두문(행정기관명/수신/경유)",
457
+ "발신명의",
458
+ "시행·접수",
459
+ "주소·연락처",
460
+ "보존기간란"
461
+ ],
462
+ "prov": [
463
+ "regulation:별지 제2호서식 구조"
464
+ ]
465
+ },
466
+ "page": {
467
+ "paper": "A4 210x297mm",
468
+ "marginsMm": {
469
+ "top": 20,
470
+ "left": 20,
471
+ "right": 20,
472
+ "bottom": 10
473
+ }
474
+ },
475
+ "prov": [
476
+ "regulation:행정업무의 운영 및 혁신에 관한 규정 시행규칙(행정안전부령 제408호, 2023-06-28) 제3·4·6·7·9조",
477
+ "regulation:같은 규칙 별지 제1호서식(일반기안문)·제2호서식(간이기안문) <개정 2016-07-11>",
478
+ "regulation:같은 규칙 별표 4 제2호(여백 상·좌·우 20mm 하 10mm)·제10호([ ]+√ 관례)",
479
+ "measure:specs/060 P0 조사 원장 evidence/p0/gianmun-forms.md"
480
+ ]
481
+ }
482
+ }
483
+ }
484
+ }