@tacuchi/agent-workflow-cli 11.0.0 → 12.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.
- package/README.md +51 -95
- package/dist/application/artifacts-service.d.ts +3 -12
- package/dist/application/artifacts-service.d.ts.map +1 -1
- package/dist/application/artifacts-service.js +18 -19
- package/dist/application/artifacts-service.js.map +1 -1
- package/dist/application/branch-resolver.d.ts +16 -0
- package/dist/application/branch-resolver.d.ts.map +1 -0
- package/dist/application/branch-resolver.js +24 -0
- package/dist/application/branch-resolver.js.map +1 -0
- package/dist/application/check-branch-service.d.ts +0 -2
- package/dist/application/check-branch-service.d.ts.map +1 -1
- package/dist/application/check-branch-service.js +5 -40
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/checkpoint/markdown.d.ts.map +1 -1
- package/dist/application/checkpoint/markdown.js +1 -16
- package/dist/application/checkpoint/markdown.js.map +1 -1
- package/dist/application/checkpoint/state-reader.d.ts +1 -3
- package/dist/application/checkpoint/state-reader.d.ts.map +1 -1
- package/dist/application/checkpoint/state-reader.js +10 -31
- package/dist/application/checkpoint/state-reader.js.map +1 -1
- package/dist/application/checkpoint-service.d.ts +12 -14
- package/dist/application/checkpoint-service.d.ts.map +1 -1
- package/dist/application/checkpoint-service.js +36 -61
- package/dist/application/checkpoint-service.js.map +1 -1
- package/dist/application/checkpoint-write-service.d.ts +0 -2
- package/dist/application/checkpoint-write-service.d.ts.map +1 -1
- package/dist/application/checkpoint-write-service.js +5 -6
- package/dist/application/checkpoint-write-service.js.map +1 -1
- package/dist/application/history-update-service.js +3 -1
- package/dist/application/history-update-service.js.map +1 -1
- package/dist/application/hook-branch-check.d.ts.map +1 -1
- package/dist/application/hook-branch-check.js +5 -34
- package/dist/application/hook-branch-check.js.map +1 -1
- package/dist/application/hook-git-commit-advisor.d.ts.map +1 -1
- package/dist/application/hook-git-commit-advisor.js +18 -23
- package/dist/application/hook-git-commit-advisor.js.map +1 -1
- package/dist/application/markdown.d.ts.map +1 -1
- package/dist/application/markdown.js +0 -4
- package/dist/application/markdown.js.map +1 -1
- package/dist/application/parsers/project-block.d.ts +0 -8
- package/dist/application/parsers/project-block.d.ts.map +1 -1
- package/dist/application/parsers/project-block.js +13 -52
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/paths-service.d.ts +7 -8
- package/dist/application/paths-service.d.ts.map +1 -1
- package/dist/application/paths-service.js +12 -8
- package/dist/application/paths-service.js.map +1 -1
- package/dist/application/project-md-upsert-service.d.ts +3 -11
- package/dist/application/project-md-upsert-service.d.ts.map +1 -1
- package/dist/application/project-md-upsert-service.js +6 -56
- package/dist/application/project-md-upsert-service.js.map +1 -1
- package/dist/application/project-tab-data.d.ts +20 -34
- package/dist/application/project-tab-data.d.ts.map +1 -1
- package/dist/application/project-tab-data.js +41 -101
- package/dist/application/project-tab-data.js.map +1 -1
- package/dist/application/release-data/artifacts.d.ts +0 -2
- package/dist/application/release-data/artifacts.d.ts.map +1 -1
- package/dist/application/release-data/artifacts.js +22 -12
- package/dist/application/release-data/artifacts.js.map +1 -1
- package/dist/application/release-data/sessions.d.ts +0 -2
- package/dist/application/release-data/sessions.d.ts.map +1 -1
- package/dist/application/release-data/sessions.js +36 -27
- package/dist/application/release-data/sessions.js.map +1 -1
- package/dist/application/release-data-service.d.ts +0 -3
- package/dist/application/release-data-service.d.ts.map +1 -1
- package/dist/application/release-data-service.js +3 -21
- package/dist/application/release-data-service.js.map +1 -1
- package/dist/application/render/history-row.d.ts +1 -9
- package/dist/application/render/history-row.d.ts.map +1 -1
- package/dist/application/render/history-row.js +3 -20
- package/dist/application/render/history-row.js.map +1 -1
- package/dist/application/render/project-block.d.ts +1 -3
- package/dist/application/render/project-block.d.ts.map +1 -1
- package/dist/application/render/project-block.js +4 -27
- package/dist/application/render/project-block.js.map +1 -1
- package/dist/application/self/doctor-self.d.ts.map +1 -1
- package/dist/application/self/doctor-self.js +15 -8
- package/dist/application/self/doctor-self.js.map +1 -1
- package/dist/application/self/install-hooks.d.ts +1 -1
- package/dist/application/self/install-hooks.d.ts.map +1 -1
- package/dist/application/self/install-hooks.js +3 -2
- package/dist/application/self/install-hooks.js.map +1 -1
- package/dist/application/self/install-skill.d.ts +9 -3
- package/dist/application/self/install-skill.d.ts.map +1 -1
- package/dist/application/self/install-skill.js +16 -16
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/uninstall-skill.js +14 -12
- package/dist/application/self/uninstall-skill.js.map +1 -1
- package/dist/application/self/uninstall.js +14 -12
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/application/session-artifacts.d.ts +7 -6
- package/dist/application/session-artifacts.d.ts.map +1 -1
- package/dist/application/session-artifacts.js +10 -15
- package/dist/application/session-artifacts.js.map +1 -1
- package/dist/application/session-close-service.d.ts +5 -22
- package/dist/application/session-close-service.d.ts.map +1 -1
- package/dist/application/session-close-service.js +20 -143
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.d.ts +9 -29
- package/dist/application/session-create-service.d.ts.map +1 -1
- package/dist/application/session-create-service.js +44 -288
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-resolver.d.ts +4 -25
- package/dist/application/session-resolver.d.ts.map +1 -1
- package/dist/application/session-resolver.js +33 -149
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/session-resume-service.d.ts +3 -4
- package/dist/application/session-resume-service.d.ts.map +1 -1
- package/dist/application/session-resume-service.js +8 -26
- package/dist/application/session-resume-service.js.map +1 -1
- package/dist/application/sessions-service.d.ts +2 -3
- package/dist/application/sessions-service.d.ts.map +1 -1
- package/dist/application/sessions-service.js +9 -26
- package/dist/application/sessions-service.js.map +1 -1
- package/dist/application/skill-index-service.d.ts +0 -2
- package/dist/application/skill-index-service.d.ts.map +1 -1
- package/dist/application/skill-index-service.js +0 -1
- package/dist/application/skill-index-service.js.map +1 -1
- package/dist/application/skills-resolver-service.d.ts +22 -0
- package/dist/application/skills-resolver-service.d.ts.map +1 -0
- package/dist/application/skills-resolver-service.js +71 -0
- package/dist/application/skills-resolver-service.js.map +1 -0
- package/dist/application/sources-service.d.ts +0 -5
- package/dist/application/sources-service.d.ts.map +1 -1
- package/dist/application/sources-service.js +5 -44
- package/dist/application/sources-service.js.map +1 -1
- package/dist/application/templates/session.d.ts +24 -0
- package/dist/application/templates/session.d.ts.map +1 -0
- package/dist/application/templates/session.js +46 -0
- package/dist/application/templates/session.js.map +1 -0
- package/dist/application/upgrade-hub-mode-service.d.ts.map +1 -1
- package/dist/application/upgrade-hub-mode-service.js +0 -1
- package/dist/application/upgrade-hub-mode-service.js.map +1 -1
- package/dist/application/workspace-init-service.d.ts +60 -0
- package/dist/application/workspace-init-service.d.ts.map +1 -0
- package/dist/application/workspace-init-service.js +227 -0
- package/dist/application/workspace-init-service.js.map +1 -0
- package/dist/cli/commands/check-branch.d.ts.map +1 -1
- package/dist/cli/commands/check-branch.js +0 -3
- package/dist/cli/commands/check-branch.js.map +1 -1
- package/dist/cli/commands/plugin-doctor.d.ts.map +1 -1
- package/dist/cli/commands/plugin-doctor.js +0 -3
- package/dist/cli/commands/plugin-doctor.js.map +1 -1
- package/dist/cli/commands/project-md-upsert.d.ts.map +1 -1
- package/dist/cli/commands/project-md-upsert.js +5 -31
- package/dist/cli/commands/project-md-upsert.js.map +1 -1
- package/dist/cli/commands/session-close.d.ts.map +1 -1
- package/dist/cli/commands/session-close.js +1 -33
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/commands/session-create.d.ts.map +1 -1
- package/dist/cli/commands/session-create.js +5 -21
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/commands/session-resume.js +1 -1
- package/dist/cli/commands/session-resume.js.map +1 -1
- package/dist/cli/commands/set-working-branch.d.ts +3 -0
- package/dist/cli/commands/set-working-branch.d.ts.map +1 -0
- package/dist/cli/commands/set-working-branch.js +34 -0
- package/dist/cli/commands/set-working-branch.js.map +1 -0
- package/dist/cli/commands/skill-index.d.ts.map +1 -1
- package/dist/cli/commands/skill-index.js +0 -3
- package/dist/cli/commands/skill-index.js.map +1 -1
- package/dist/cli/commands/skills.d.ts +3 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +10 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/sources.d.ts.map +1 -1
- package/dist/cli/commands/sources.js +0 -3
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/workspace-init.d.ts +3 -0
- package/dist/cli/commands/workspace-init.d.ts.map +1 -0
- package/dist/cli/commands/workspace-init.js +69 -0
- package/dist/cli/commands/workspace-init.js.map +1 -0
- package/dist/cli/help-groups.d.ts.map +1 -1
- package/dist/cli/help-groups.js +8 -19
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/interactive-menu.d.ts +1 -1
- package/dist/cli/interactive-menu.d.ts.map +1 -1
- package/dist/cli/main.js +29 -37
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.d.ts +0 -2
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +1 -13
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/tui/app.js +3 -38
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/hub-init-alias.js +1 -1
- package/dist/cli/tui/components/hub-init-alias.js.map +1 -1
- package/dist/cli/tui/components/hub-init-form.d.ts.map +1 -1
- package/dist/cli/tui/components/hub-init-form.js +13 -12
- package/dist/cli/tui/components/hub-init-form.js.map +1 -1
- package/dist/cli/tui/components/workspace-init-alias.d.ts +5 -0
- package/dist/cli/tui/components/workspace-init-alias.d.ts.map +1 -0
- package/dist/cli/tui/components/workspace-init-alias.js +19 -0
- package/dist/cli/tui/components/workspace-init-alias.js.map +1 -0
- package/dist/cli/tui/components/workspace-init-form.d.ts +13 -0
- package/dist/cli/tui/components/workspace-init-form.d.ts.map +1 -0
- package/dist/cli/tui/components/workspace-init-form.js +87 -0
- package/dist/cli/tui/components/workspace-init-form.js.map +1 -0
- package/dist/cli/tui/data/activity.d.ts +1 -1
- package/dist/cli/tui/data/activity.d.ts.map +1 -1
- package/dist/cli/tui/data/activity.js +2 -2
- package/dist/cli/tui/data/activity.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +67 -87
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +23 -97
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/skills-tab.js +7 -7
- package/dist/cli/tui/tabs/skills-tab.js.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.d.ts +1 -3
- package/dist/cli/tui/tabs/workflow-tab.d.ts.map +1 -1
- package/dist/cli/tui/tabs/workflow-tab.js +2 -2
- package/dist/cli/tui/tabs/workflow-tab.js.map +1 -1
- package/dist/cli/types.d.ts +3 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/domain/plugin.d.ts +2 -12
- package/dist/domain/plugin.d.ts.map +1 -1
- package/dist/domain/project.d.ts +0 -9
- package/dist/domain/project.d.ts.map +1 -1
- package/dist/domain/session.d.ts +7 -24
- package/dist/domain/session.d.ts.map +1 -1
- package/dist/domain/skills.d.ts +22 -0
- package/dist/domain/skills.d.ts.map +1 -0
- package/dist/domain/skills.js +37 -0
- package/dist/domain/skills.js.map +1 -0
- package/dist/domain/types.d.ts +6 -2
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/config-service.js +1 -1
- package/dist/runtime/config-service.js.map +1 -1
- package/dist/runtime/types.d.ts +0 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/package.json +12 -3
- package/skills/w/README.md +65 -0
- package/skills/w/SKILL.md +153 -0
- package/skills/w/artifacts/README.md +60 -0
- package/skills/w/artifacts/artifacts-core/BACKLOG.md +12 -0
- package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +22 -0
- package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +39 -0
- package/skills/w/artifacts/artifacts-core/SESSION.md +27 -0
- package/skills/w/artifacts/artifacts-core/TASKS.md +18 -0
- package/skills/w/artifacts/artifacts-dev/DECISION.md +11 -0
- package/skills/w/artifacts/artifacts-dev/TECHNICAL-NOTE.md +81 -0
- package/skills/w/artifacts/artifacts-research/ANALYSIS-FILE.md +48 -0
- package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +20 -0
- package/skills/w/commands/README.md +116 -0
- package/skills/w/commands/export-diagrams.md +35 -0
- package/skills/w/commands/export-manuals.md +35 -0
- package/skills/w/commands/export-reports.md +35 -0
- package/skills/w/commands/export-scripts.md +35 -0
- package/skills/w/commands/plan-exec.md +46 -0
- package/skills/w/commands/plan-new.md +44 -0
- package/skills/w/commands/quick.md +39 -0
- package/skills/w/commands/spec-new.md +63 -0
- package/skills/w/commands/spec-refine.md +41 -0
- package/skills/w/commands/workspace-init.md +39 -0
- package/skills/w/exports/README.md +88 -0
- package/skills/w/exports/export-diagrams/SKILL.md +125 -0
- package/skills/w/exports/export-manuals/SKILL.md +127 -0
- package/skills/w/exports/export-reports/SKILL.md +115 -0
- package/skills/w/exports/export-scripts/SKILL.md +135 -0
- package/skills/w/hooks/README.md +15 -0
- package/skills/{agent-workflow → w}/hooks/hooks.template.json +2 -2
- package/skills/w/loops/README.md +118 -0
- package/skills/w/loops/plan-exec-loop/SKILL.md +161 -0
- package/skills/w/loops/plan-new-loop/SKILL.md +97 -0
- package/skills/w/loops/quick-loop/SKILL.md +102 -0
- package/skills/w/loops/spec-refine-loop/SKILL.md +222 -0
- package/skills/w/roles/README.md +154 -0
- package/skills/w/roles/coding-standards/SKILL.md +82 -0
- package/skills/w/roles/diagrams/SKILL.md +248 -0
- package/skills/w/roles/git/SKILL.md +98 -0
- package/skills/w/roles/research/SKILL.md +181 -0
- package/skills/w/roles/sql/SKILL.md +137 -0
- package/skills/w/roles/testing/SKILL.md +180 -0
- package/skills/w/roles/tools/SKILL.md +148 -0
- package/skills/w/roles/ui-spec/SKILL.md +136 -0
- package/skills/w/roles/writing/SKILL.md +90 -0
- package/skills/agent-workflow/LICENSE +0 -661
- package/skills/agent-workflow/MANUAL-FUNCIONAL.md +0 -298
- package/skills/agent-workflow/MANUAL-TECNICO.md +0 -271
- package/skills/agent-workflow/README.md +0 -74
- package/skills/agent-workflow/SKILL.md +0 -112
- package/skills/agent-workflow/commands/README.md +0 -26
- package/skills/agent-workflow/commands/compact.md +0 -24
- package/skills/agent-workflow/commands/doctor.md +0 -100
- package/skills/agent-workflow/commands/export-arq.md +0 -77
- package/skills/agent-workflow/commands/export-conclusions.md +0 -78
- package/skills/agent-workflow/commands/export-plan.md +0 -74
- package/skills/agent-workflow/commands/export-qa-note.md +0 -30
- package/skills/agent-workflow/commands/export-report.md +0 -78
- package/skills/agent-workflow/commands/export-requirement.md +0 -30
- package/skills/agent-workflow/commands/export-scripts.md +0 -82
- package/skills/agent-workflow/commands/export-tech-manuals.md +0 -75
- package/skills/agent-workflow/commands/export-tech-note.md +0 -30
- package/skills/agent-workflow/commands/hub-init.md +0 -58
- package/skills/agent-workflow/commands/migrate.md +0 -56
- package/skills/agent-workflow/commands/patch.md +0 -49
- package/skills/agent-workflow/commands/project-init.md +0 -60
- package/skills/agent-workflow/commands/resume.md +0 -22
- package/skills/agent-workflow/commands/rules.md +0 -41
- package/skills/agent-workflow/commands/session.md +0 -35
- package/skills/agent-workflow/docs/TEST-PLAN.md +0 -163
- package/skills/agent-workflow/doctrine/README.md +0 -15
- package/skills/agent-workflow/doctrine/compact/SKILL.md +0 -145
- package/skills/agent-workflow/doctrine/doctor/SKILL.md +0 -86
- package/skills/agent-workflow/doctrine/hub-init/SKILL.md +0 -77
- package/skills/agent-workflow/doctrine/hub-init/references/multiroot-manual.md +0 -51
- package/skills/agent-workflow/doctrine/implement/SKILL.md +0 -290
- package/skills/agent-workflow/doctrine/implement/references/branch-verification.md +0 -16
- package/skills/agent-workflow/doctrine/implement/references/design-md-template.md +0 -108
- package/skills/agent-workflow/doctrine/implement/references/rollback-guide.md +0 -83
- package/skills/agent-workflow/doctrine/migrate/SKILL.md +0 -281
- package/skills/agent-workflow/doctrine/project-init/SKILL.md +0 -100
- package/skills/agent-workflow/doctrine/refactor/SKILL.md +0 -208
- package/skills/agent-workflow/doctrine/refactor/references/refactor-md-template.md +0 -108
- package/skills/agent-workflow/doctrine/refactor/references/strangler-checklist.md +0 -116
- package/skills/agent-workflow/doctrine/resume/SKILL.md +0 -199
- package/skills/agent-workflow/doctrine/rules/SKILL.md +0 -250
- package/skills/agent-workflow/doctrine/session/SKILL.md +0 -470
- package/skills/agent-workflow/doctrine/session/references/auto-plan-rules.md +0 -63
- package/skills/agent-workflow/doctrine/session/references/backlog-template.md +0 -95
- package/skills/agent-workflow/doctrine/session/references/branch-verification.md +0 -198
- package/skills/agent-workflow/doctrine/session/references/commits-policy.md +0 -111
- package/skills/agent-workflow/doctrine/session/references/communication-style.md +0 -50
- package/skills/agent-workflow/doctrine/session/references/graduacion-routing.md +0 -88
- package/skills/agent-workflow/doctrine/session/references/lifecycle-deep.md +0 -160
- package/skills/agent-workflow/doctrine/session/references/prompts/C1-specialty-selection.md +0 -11
- package/skills/agent-workflow/doctrine/session/references/prompts/C2-cost-guard.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/M1-closure-commit-prompt.md +0 -104
- package/skills/agent-workflow/doctrine/session/references/prompts/M10-next-step.md +0 -17
- package/skills/agent-workflow/doctrine/session/references/prompts/M11-context.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/M13-closure-cleanup.md +0 -61
- package/skills/agent-workflow/doctrine/session/references/prompts/M2-branch-caso-A.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/M3-branch-caso-C.md +0 -33
- package/skills/agent-workflow/doctrine/session/references/prompts/M4-cross-source-hard-gate.md +0 -33
- package/skills/agent-workflow/doctrine/session/references/prompts/M5-modality-analyze.md +0 -15
- package/skills/agent-workflow/doctrine/session/references/prompts/M6-phase-gate.md +0 -31
- package/skills/agent-workflow/doctrine/session/references/prompts/M7-refactor-legacy-detected.md +0 -28
- package/skills/agent-workflow/doctrine/session/references/prompts/M8-refactor-cleanup.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/M9-contract-review.md +0 -39
- package/skills/agent-workflow/doctrine/session/references/prompts/S1-type-design.md +0 -15
- package/skills/agent-workflow/doctrine/session/references/prompts/S2-topic-change-detection.md +0 -14
- package/skills/agent-workflow/doctrine/session/references/prompts/S3-flow-detection.md +0 -28
- package/skills/agent-workflow/doctrine/session/references/prompts/S4-resume.md +0 -27
- package/skills/agent-workflow/doctrine/session/references/prompts/S5-post-compact.md +0 -17
- package/skills/agent-workflow/doctrine/session/references/prompts/S6-scope.md +0 -16
- package/skills/agent-workflow/doctrine/session/references/prompts/S7-design-review.md +0 -37
- package/skills/agent-workflow/doctrine/session/references/prompts-catalog.md +0 -213
- package/skills/agent-workflow/doctrine/session/references/sandbox-readonly-rules.md +0 -82
- package/skills/agent-workflow/doctrine/session/references/specialty-decision-tree.md +0 -56
- package/skills/agent-workflow/doctrine/session/references/topic-change-rules.md +0 -67
- package/skills/agent-workflow/exports/README.md +0 -15
- package/skills/agent-workflow/exports/export-arq/SKILL.md +0 -229
- package/skills/agent-workflow/exports/export-arq/references/lexico-tecnico.md +0 -94
- package/skills/agent-workflow/exports/export-arq/references/template-c4.md +0 -293
- package/skills/agent-workflow/exports/export-arq/references/template-plantuml.puml +0 -77
- package/skills/agent-workflow/exports/export-arq/references/template-structurizr.dsl +0 -72
- package/skills/agent-workflow/exports/export-arq/references/validations.md +0 -231
- package/skills/agent-workflow/exports/export-conclusions/SKILL.md +0 -169
- package/skills/agent-workflow/exports/export-conclusions/references/dedup-rules.md +0 -154
- package/skills/agent-workflow/exports/export-conclusions/references/template-conclusions.md +0 -158
- package/skills/agent-workflow/exports/export-plan/SKILL.md +0 -225
- package/skills/agent-workflow/exports/export-plan/references/state-transitions.md +0 -141
- package/skills/agent-workflow/exports/export-plan/references/template-plan.md +0 -132
- package/skills/agent-workflow/exports/export-qa-note/SKILL.md +0 -31
- package/skills/agent-workflow/exports/export-report/SKILL.md +0 -262
- package/skills/agent-workflow/exports/export-report/references/lexico.md +0 -174
- package/skills/agent-workflow/exports/export-report/references/template-a.md +0 -95
- package/skills/agent-workflow/exports/export-report/references/template-b.md +0 -221
- package/skills/agent-workflow/exports/export-report/references/template-c.md +0 -180
- package/skills/agent-workflow/exports/export-report/references/validations.md +0 -255
- package/skills/agent-workflow/exports/export-requirement/SKILL.md +0 -31
- package/skills/agent-workflow/exports/export-scripts/SKILL.md +0 -211
- package/skills/agent-workflow/exports/export-scripts/references/code-scan-recommendations.md +0 -83
- package/skills/agent-workflow/exports/export-scripts/references/deprecation-plan.md +0 -80
- package/skills/agent-workflow/exports/export-scripts/references/lexico-tecnico.md +0 -47
- package/skills/agent-workflow/exports/export-scripts/references/manifest-template.md +0 -265
- package/skills/agent-workflow/exports/export-scripts/references/readme-template.md +0 -49
- package/skills/agent-workflow/exports/export-scripts/references/theme-handling.md +0 -141
- package/skills/agent-workflow/exports/export-scripts/references/validations.md +0 -69
- package/skills/agent-workflow/exports/export-tech-manuals/SKILL.md +0 -214
- package/skills/agent-workflow/exports/export-tech-manuals/references/lexico-tecnico.md +0 -97
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-index.md +0 -123
- package/skills/agent-workflow/exports/export-tech-manuals/references/template-manual.md +0 -143
- package/skills/agent-workflow/exports/export-tech-manuals/references/validations.md +0 -211
- package/skills/agent-workflow/exports/export-tech-note/SKILL.md +0 -31
- package/skills/agent-workflow/hooks/README.md +0 -15
- package/skills/agent-workflow/references/README.md +0 -12
- package/skills/agent-workflow/references/checkpoint.md +0 -59
- package/skills/agent-workflow/references/dev-only.md +0 -50
- package/skills/agent-workflow/references/doctor.md +0 -61
- package/skills/agent-workflow/references/history.md +0 -40
- package/skills/agent-workflow/references/hooks.md +0 -35
- package/skills/agent-workflow/references/legacy-anchors.md +0 -50
- package/skills/agent-workflow/references/mcp.md +0 -34
- package/skills/agent-workflow/references/objetivo-tasks.md +0 -64
- package/skills/agent-workflow/references/orchestration.md +0 -86
- package/skills/agent-workflow/references/profile-parametrization.md +0 -88
- package/skills/agent-workflow/references/self.md +0 -68
- package/skills/agent-workflow/references/session-mgmt.md +0 -109
- package/skills/agent-workflow/references/sources.md +0 -102
- package/skills/agent-workflow/specialties/README.md +0 -14
- package/skills/agent-workflow/specialties/analyze-conclude/SKILL.md +0 -175
- package/skills/agent-workflow/specialties/analyze-conclude/references/incident-classification.md +0 -61
- package/skills/agent-workflow/specialties/analyze-investigate/SKILL.md +0 -148
- package/skills/agent-workflow/specialties/analyze-investigate/references/cost-guard.md +0 -85
- package/skills/agent-workflow/specialties/analyze-synthesize/SKILL.md +0 -127
- package/skills/agent-workflow/specialties/design-brief/SKILL.md +0 -90
- package/skills/agent-workflow/specialties/design-deliver/SKILL.md +0 -121
- package/skills/agent-workflow/specialties/design-develop/SKILL.md +0 -115
- package/skills/agent-workflow/specialties/design-discover/SKILL.md +0 -103
- package/skills/agent-workflow/standards/README.md +0 -12
- package/skills/agent-workflow/standards/coding-standards/SKILL.md +0 -102
- package/skills/agent-workflow/standards/coding-standards/references/angular-typescript.md +0 -266
- package/skills/agent-workflow/standards/coding-standards/references/database-conventions.md +0 -170
- package/skills/agent-workflow/standards/coding-standards/references/fe-be-integration.md +0 -300
- package/skills/agent-workflow/standards/coding-standards/references/frontend-structure.md +0 -182
- package/skills/agent-workflow/standards/coding-standards/references/java-spring.md +0 -244
- package/skills/agent-workflow/standards/coding-standards/references/project-structure.md +0 -197
- package/skills/agent-workflow/standards/frontend-design/SKILL.md +0 -62
- package/skills/agent-workflow/standards/frontend-design/references/feedback-toasts-patterns.md +0 -249
- package/skills/agent-workflow/standards/frontend-design/references/form-patterns.md +0 -278
- package/skills/agent-workflow/standards/frontend-design/references/list-patterns.md +0 -256
- package/skills/agent-workflow/standards/frontend-design/references/modal-patterns.md +0 -220
- package/skills/agent-workflow/standards/frontend-design/references/navigation-patterns.md +0 -224
- package/skills/agent-workflow/standards/redaccion-simple/SKILL.md +0 -128
- package/skills/agent-workflow/standards/sql-rollback-generator/SKILL.md +0 -158
- package/skills/agent-workflow/standards/sql-rollback-generator/references/irreversible-checklist.md +0 -161
- package/skills/agent-workflow/standards/sql-rollback-generator/references/release-rollback.md +0 -133
- package/skills/agent-workflow/standards/sql-rollback-generator/references/rollback-patterns.md +0 -257
- package/skills/agent-workflow/standards/sql-script-organizer/SKILL.md +0 -243
- package/skills/agent-workflow/standards/sql-script-organizer/references/bundle-readme-template.md +0 -82
- package/skills/agent-workflow/standards/sql-script-organizer/references/categorization-rules.md +0 -122
- package/skills/agent-workflow/standards/sql-script-organizer/references/consolidation-cross-session.md +0 -125
- package/skills/agent-workflow/standards/sql-script-organizer/references/scripts-sql-format.md +0 -140
- package/skills/agent-workflow/standards/testing-strategy/SKILL.md +0 -113
- package/skills/agent-workflow/standards/testing-strategy/references/test-levels.md +0 -255
- package/skills/agent-workflow/workflows/README.md +0 -12
- package/skills/agent-workflow/workflows/analyze-workflow/SKILL.md +0 -84
- package/skills/agent-workflow/workflows/design-workflow/SKILL.md +0 -79
- package/skills/agent-workflow/workflows/dev-workflow/SKILL.md +0 -172
package/skills/agent-workflow/standards/sql-rollback-generator/references/release-rollback.md
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
# Rollback global de release y por tema (LEGACY — deprecation Fase 1)
|
|
2
|
-
|
|
3
|
-
> **Estado**: legacy. Aplica solo a `release` / `release-scripts` legacy (deprecation Fase 1). El reemplazo canónico es `/agent-workflow:export-scripts` v4.0.0+, que produce un único `00-ROLLBACK.sql` cross-session al root del bundle (algoritmo en `SKILL.md` v2.0.0).
|
|
4
|
-
|
|
5
|
-
Algoritmos detallados para rollbacks consolidados en modo release legacy. El SKILL.md tiene el resumen; este archivo tiene el procedimiento completo paso a paso.
|
|
6
|
-
|
|
7
|
-
## Rollback global de release (cross-session)
|
|
8
|
-
|
|
9
|
-
`docs/release/NNN-release-YYYY-MM-DD/scripts/rollback/00-rollback-release.sql` revierte el release completo.
|
|
10
|
-
|
|
11
|
-
### Principio
|
|
12
|
-
|
|
13
|
-
Revertir en **orden inverso absoluto**:
|
|
14
|
-
- Sesiones: última → primera (session_N → … → session_1).
|
|
15
|
-
- Dentro de cada sesión: 04 → 03 → 02 → 01 (contrario al de ejecución).
|
|
16
|
-
|
|
17
|
-
### Proceso
|
|
18
|
-
|
|
19
|
-
1. Recolectar todos los `.rollback.sql` del bundle consolidado.
|
|
20
|
-
2. Ordenar inversamente: primero todos los rollbacks de la sesión más reciente (04→01), luego la anterior, etc.
|
|
21
|
-
3. Encadenar en un único archivo:
|
|
22
|
-
|
|
23
|
-
```sql
|
|
24
|
-
-- Rollback global del Release NNN (YYYY-MM-DD)
|
|
25
|
-
-- Cubre N sesiones desde sessionXXX hasta sessionYYY
|
|
26
|
-
BEGIN;
|
|
27
|
-
|
|
28
|
-
-- sessionYYY-nombre (última)
|
|
29
|
-
-- 04-inserts
|
|
30
|
-
[contenido en orden inverso]
|
|
31
|
-
-- 03-migracion
|
|
32
|
-
[contenido en orden inverso]
|
|
33
|
-
-- 02-ddl-funciones
|
|
34
|
-
[contenido en orden inverso]
|
|
35
|
-
-- 01-ddl-tablas
|
|
36
|
-
[contenido en orden inverso]
|
|
37
|
-
|
|
38
|
-
-- sessionXXX-nombre-previo
|
|
39
|
-
[misma estructura]
|
|
40
|
-
|
|
41
|
-
COMMIT;
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
4. Preservar marcas `-- WARNING: IRREVERSIBLE` con contexto (sesión origen).
|
|
45
|
-
5. Listar irreversibles al inicio antes del `BEGIN;`:
|
|
46
|
-
|
|
47
|
-
```sql
|
|
48
|
-
-- ADVERTENCIA: Este release contiene [N] operaciones irreversibles:
|
|
49
|
-
-- - sessionXXX / 03-migracion/001-*.sql — DROP COLUMN (mitigación: esq_audit.tb_bkp_*_sessionXXX)
|
|
50
|
-
-- - sessionYYY / 01-ddl-tablas/002-*.sql — DROP TABLE CASCADE (mitigación: sin respaldo)
|
|
51
|
-
-- Revisar docs/release/NNN-informe-release.md sección 4.2 antes de ejecutar.
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Qué NO hacer
|
|
55
|
-
|
|
56
|
-
- Fusionar rollbacks de distintas sesiones sobre la misma tabla — dejar cada bloque independiente.
|
|
57
|
-
- Cambiar el orden inverso — puede dejar referencias colgando.
|
|
58
|
-
- Ejecutar el rollback desde el plugin. Siempre manual por el usuario.
|
|
59
|
-
|
|
60
|
-
### Verificación mínima
|
|
61
|
-
|
|
62
|
-
- Orden inverso absoluto respetado (sesiones descendente, categorías 04→01).
|
|
63
|
-
- Operaciones irreversibles listadas al inicio.
|
|
64
|
-
- Archivo abre con `BEGIN;` y cierra con `COMMIT;`.
|
|
65
|
-
- Cada bloque de sesión delimitado con `-- === sessionXXX ===`.
|
|
66
|
-
- Headers de respaldo preservados donde aplica.
|
|
67
|
-
|
|
68
|
-
## Rollback por tema (delegado por release-scripts)
|
|
69
|
-
|
|
70
|
-
Tres niveles:
|
|
71
|
-
|
|
72
|
-
1. **Consolidado por categoría**: `tema-<slug>/<categoria>.rollback.sql` concatena rollbacks de scripts fuente en orden inverso, envuelto en `BEGIN; … COMMIT;`.
|
|
73
|
-
2. **Por-tema**: `tema-<slug>/rollback-tema-<slug>.sql` encadena los 4 consolidados (04→03→02→01).
|
|
74
|
-
3. **Global del release**: `rollback/00-rollback-release.sql` encadena rollbacks por-tema en orden inverso a `ORDER.md`.
|
|
75
|
-
|
|
76
|
-
### Generación del consolidado por categoría
|
|
77
|
-
|
|
78
|
-
1. Recolectar `.rollback.sql` correspondientes al consolidado forward.
|
|
79
|
-
2. Ordenar inversamente: último script primero.
|
|
80
|
-
3. Eliminar `BEGIN;`/`COMMIT;` de cada rollback individual.
|
|
81
|
-
4. Concatenar con separadores `[i/N]`.
|
|
82
|
-
5. Envolver en un único `BEGIN; … COMMIT;`.
|
|
83
|
-
|
|
84
|
-
### Generación del rollback por-tema
|
|
85
|
-
|
|
86
|
-
```sql
|
|
87
|
-
-- Rollback del tema <slug> — Release NNN (revierte 04→01)
|
|
88
|
-
BEGIN;
|
|
89
|
-
|
|
90
|
-
-- 04-inserts
|
|
91
|
-
[contenido sin BEGIN/COMMIT]
|
|
92
|
-
|
|
93
|
-
-- 03-migracion
|
|
94
|
-
[contenido sin BEGIN/COMMIT]
|
|
95
|
-
|
|
96
|
-
-- 02-ddl-funciones
|
|
97
|
-
[contenido sin BEGIN/COMMIT]
|
|
98
|
-
|
|
99
|
-
-- 01-ddl-tablas
|
|
100
|
-
[contenido sin BEGIN/COMMIT]
|
|
101
|
-
|
|
102
|
-
COMMIT;
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Preservar marcas `-- WARNING: IRREVERSIBLE` y listarlas al inicio.
|
|
106
|
-
|
|
107
|
-
### Generación del global
|
|
108
|
-
|
|
109
|
-
1. Tomar `rollback-tema-<slug>.sql` de todos los temas.
|
|
110
|
-
2. Ordenar inversamente al de `ORDER.md`.
|
|
111
|
-
3. Encadenar inline (no `\i` includes) en un único `BEGIN; … COMMIT;`.
|
|
112
|
-
4. Listar irreversibles al inicio agrupadas por tema origen.
|
|
113
|
-
|
|
114
|
-
### Multi-tema en rollback
|
|
115
|
-
|
|
116
|
-
Scripts multi-tema se incluyen sólo en el consolidado del tema canónico. Su rollback aparece sólo allí; los demás temas no lo duplican. El global lo incluye una vez.
|
|
117
|
-
|
|
118
|
-
### Qué NO hacer
|
|
119
|
-
|
|
120
|
-
- Duplicar contenido entre consolidados.
|
|
121
|
-
- Cambiar el orden de categorías dentro del rollback por-tema (siempre 04→03→02→01).
|
|
122
|
-
- Generar consolidados de rollback para categorías sin forwards.
|
|
123
|
-
- Dejar `BEGIN;`/`COMMIT;` de scripts individuales dentro de los consolidados.
|
|
124
|
-
|
|
125
|
-
### Verificación mínima
|
|
126
|
-
|
|
127
|
-
- Cada consolidado forward tiene su rollback consolidado.
|
|
128
|
-
- Bloques en orden inverso al forward.
|
|
129
|
-
- Cada tema con scripts tiene su `rollback-tema-<slug>.sql`.
|
|
130
|
-
- El global encadena en orden inverso a `ORDER.md`.
|
|
131
|
-
- Irreversibles listados al inicio del global, agrupados por tema origen.
|
|
132
|
-
- Ningún rollback multi-tema duplicado.
|
|
133
|
-
- Cada archivo abre con `BEGIN;` y cierra con `COMMIT;` (uno solo por archivo).
|
package/skills/agent-workflow/standards/sql-rollback-generator/references/rollback-patterns.md
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
# Patrones de Rollback SQL
|
|
2
|
-
|
|
3
|
-
Recetas por tipo de operación. Motor primario: **PostgreSQL**. Se incluyen equivalencias para otros motores donde difieren.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## DDL de Tablas
|
|
8
|
-
|
|
9
|
-
### CREATE TABLE → DROP TABLE
|
|
10
|
-
|
|
11
|
-
```sql
|
|
12
|
-
-- Forward
|
|
13
|
-
BEGIN;
|
|
14
|
-
CREATE TABLE IF NOT EXISTS esq_credito.tb_nueva (
|
|
15
|
-
id_nueva integer NOT NULL DEFAULT nextval('esq_credito.seq_tb_nueva'),
|
|
16
|
-
nombre varchar(100) NOT NULL,
|
|
17
|
-
estado integer NOT NULL DEFAULT 1,
|
|
18
|
-
CONSTRAINT pk_tb_nueva PRIMARY KEY (id_nueva)
|
|
19
|
-
);
|
|
20
|
-
COMMIT;
|
|
21
|
-
|
|
22
|
-
-- Rollback
|
|
23
|
-
BEGIN;
|
|
24
|
-
DROP TABLE IF EXISTS esq_credito.tb_nueva;
|
|
25
|
-
DROP SEQUENCE IF EXISTS esq_credito.seq_tb_nueva; -- si la secuencia fue creada junto a la tabla
|
|
26
|
-
COMMIT;
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### ALTER TABLE ADD COLUMN → DROP COLUMN
|
|
30
|
-
|
|
31
|
-
```sql
|
|
32
|
-
-- Forward
|
|
33
|
-
BEGIN;
|
|
34
|
-
ALTER TABLE esq_credito.tb_credito
|
|
35
|
-
ADD COLUMN IF NOT EXISTS flag_reestructurado integer NOT NULL DEFAULT 0;
|
|
36
|
-
COMMIT;
|
|
37
|
-
|
|
38
|
-
-- Rollback
|
|
39
|
-
BEGIN;
|
|
40
|
-
ALTER TABLE esq_credito.tb_credito
|
|
41
|
-
DROP COLUMN IF EXISTS flag_reestructurado;
|
|
42
|
-
COMMIT;
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### DROP TABLE (con respaldo previo)
|
|
46
|
-
|
|
47
|
-
```sql
|
|
48
|
-
-- 000-backup-tb-x.sql (siempre antes del DROP)
|
|
49
|
-
BEGIN;
|
|
50
|
-
CREATE TABLE IF NOT EXISTS esq_audit.tb_bkp_credito_sessionXXX
|
|
51
|
-
AS SELECT * FROM esq_credito.tb_credito_legacy;
|
|
52
|
-
COMMIT;
|
|
53
|
-
|
|
54
|
-
-- Forward
|
|
55
|
-
BEGIN;
|
|
56
|
-
DROP TABLE IF EXISTS esq_credito.tb_credito_legacy;
|
|
57
|
-
COMMIT;
|
|
58
|
-
|
|
59
|
-
-- Rollback
|
|
60
|
-
BEGIN;
|
|
61
|
-
CREATE TABLE IF NOT EXISTS esq_credito.tb_credito_legacy
|
|
62
|
-
AS SELECT * FROM esq_audit.tb_bkp_credito_sessionXXX;
|
|
63
|
-
-- Restaurar constraints si aplica:
|
|
64
|
-
ALTER TABLE esq_credito.tb_credito_legacy
|
|
65
|
-
ADD CONSTRAINT pk_tb_credito_legacy PRIMARY KEY (id_credito_legacy);
|
|
66
|
-
COMMIT;
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### CREATE INDEX → DROP INDEX
|
|
70
|
-
|
|
71
|
-
```sql
|
|
72
|
-
-- Forward
|
|
73
|
-
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_tb_credito_cliente
|
|
74
|
-
ON esq_credito.tb_credito(id_cliente);
|
|
75
|
-
|
|
76
|
-
-- Rollback
|
|
77
|
-
DROP INDEX CONCURRENTLY IF EXISTS esq_credito.idx_tb_credito_cliente;
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
> `CONCURRENTLY` no puede ir dentro de `BEGIN/COMMIT` en PostgreSQL — ejecutar fuera de transacción o sin `CONCURRENTLY` dentro de transacción.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## DDL de Funciones y SP
|
|
85
|
-
|
|
86
|
-
### CREATE OR REPLACE FUNCTION → DROP FUNCTION
|
|
87
|
-
|
|
88
|
-
```sql
|
|
89
|
-
-- Forward
|
|
90
|
-
BEGIN;
|
|
91
|
-
CREATE OR REPLACE FUNCTION esq_credito.fn_calcular_cuota_v2(
|
|
92
|
-
p_monto numeric,
|
|
93
|
-
p_tasa numeric,
|
|
94
|
-
p_plazo integer
|
|
95
|
-
) RETURNS numeric
|
|
96
|
-
LANGUAGE plpgsql AS $$
|
|
97
|
-
BEGIN
|
|
98
|
-
RETURN p_monto * (p_tasa / 12) / (1 - POWER(1 + p_tasa / 12, -p_plazo));
|
|
99
|
-
END;
|
|
100
|
-
$$;
|
|
101
|
-
COMMIT;
|
|
102
|
-
|
|
103
|
-
-- Rollback: eliminar nueva versión y restaurar la anterior (si existe)
|
|
104
|
-
BEGIN;
|
|
105
|
-
DROP FUNCTION IF EXISTS esq_credito.fn_calcular_cuota_v2(numeric, numeric, integer);
|
|
106
|
-
-- Si existía v1, recrear aquí:
|
|
107
|
-
-- CREATE OR REPLACE FUNCTION esq_credito.fn_calcular_cuota(...) ...
|
|
108
|
-
COMMIT;
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
> **Siempre incluir la firma completa en `DROP FUNCTION`** (tipos de parámetros). PostgreSQL puede tener múltiples sobrecargas del mismo nombre.
|
|
112
|
-
|
|
113
|
-
### DROP FUNCTION irreversible
|
|
114
|
-
|
|
115
|
-
```sql
|
|
116
|
-
-- WARNING: IRREVERSIBLE — no hay versión anterior registrada
|
|
117
|
-
-- Rollback best-effort: cuerpo de la función para restauración manual
|
|
118
|
-
BEGIN;
|
|
119
|
-
DROP FUNCTION IF EXISTS esq_credito.fn_legacy(integer);
|
|
120
|
-
COMMIT;
|
|
121
|
-
|
|
122
|
-
/*
|
|
123
|
-
RESTAURACIÓN MANUAL si se necesita revertir:
|
|
124
|
-
CREATE OR REPLACE FUNCTION esq_credito.fn_legacy(p_id integer)
|
|
125
|
-
RETURNS void LANGUAGE plpgsql AS $$
|
|
126
|
-
BEGIN
|
|
127
|
-
-- [cuerpo de la función aquí]
|
|
128
|
-
END;
|
|
129
|
-
$$;
|
|
130
|
-
*/
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Migración de Datos
|
|
136
|
-
|
|
137
|
-
### UPDATE masivo → restaurar desde backup
|
|
138
|
-
|
|
139
|
-
```sql
|
|
140
|
-
-- 000-backup-tb-credito.sql
|
|
141
|
-
BEGIN;
|
|
142
|
-
CREATE TABLE IF NOT EXISTS esq_audit.tb_bkp_credito_sessionXXX AS
|
|
143
|
-
SELECT id_credito, estado, estado_proceso
|
|
144
|
-
FROM esq_credito.tb_credito
|
|
145
|
-
WHERE estado = 0 AND fecha_registro < '2024-01-01';
|
|
146
|
-
COMMIT;
|
|
147
|
-
|
|
148
|
-
-- Forward: migración
|
|
149
|
-
BEGIN;
|
|
150
|
-
UPDATE esq_credito.tb_credito
|
|
151
|
-
SET estado = 2
|
|
152
|
-
WHERE estado = 0 AND fecha_registro < '2024-01-01';
|
|
153
|
-
COMMIT;
|
|
154
|
-
|
|
155
|
-
-- Rollback: restaurar desde backup
|
|
156
|
-
BEGIN;
|
|
157
|
-
UPDATE esq_credito.tb_credito t
|
|
158
|
-
SET estado = bkp.estado
|
|
159
|
-
FROM esq_audit.tb_bkp_credito_sessionXXX bkp
|
|
160
|
-
WHERE t.id_credito = bkp.id_credito;
|
|
161
|
-
COMMIT;
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### INSERT ... SELECT → DELETE por rango
|
|
165
|
-
|
|
166
|
-
```sql
|
|
167
|
-
-- Forward: poblar tabla destino desde origen
|
|
168
|
-
BEGIN;
|
|
169
|
-
INSERT INTO esq_credito.tb_credito_nuevo (id_credito, monto, estado)
|
|
170
|
-
SELECT id_credito, monto_prestamo, 1
|
|
171
|
-
FROM esq_credito.tb_credito_legacy
|
|
172
|
-
WHERE flag_migrado = 0;
|
|
173
|
-
COMMIT;
|
|
174
|
-
|
|
175
|
-
-- Rollback: eliminar solo los registros insertados en esta sesión
|
|
176
|
-
BEGIN;
|
|
177
|
-
DELETE FROM esq_credito.tb_credito_nuevo
|
|
178
|
-
WHERE id_credito IN (
|
|
179
|
-
SELECT id_credito FROM esq_credito.tb_credito_legacy WHERE flag_migrado = 0
|
|
180
|
-
);
|
|
181
|
-
COMMIT;
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## Inserts de datos nuevos
|
|
187
|
-
|
|
188
|
-
### INSERT simple → DELETE por clave natural
|
|
189
|
-
|
|
190
|
-
```sql
|
|
191
|
-
-- Forward
|
|
192
|
-
BEGIN;
|
|
193
|
-
INSERT INTO esq_sistema.tb_maestra_detalle
|
|
194
|
-
(id_maestra, codprog, descripcion, valor, estado, usuario_registro, fecha_registro)
|
|
195
|
-
VALUES
|
|
196
|
-
(1, 'EST_SOLICITUD', 'Pendiente', 1, 1, 'session_deploy', NOW()),
|
|
197
|
-
(1, 'EST_SOLICITUD', 'Aprobada', 2, 1, 'session_deploy', NOW()),
|
|
198
|
-
(1, 'EST_SOLICITUD', 'Rechazada', 3, 1, 'session_deploy', NOW())
|
|
199
|
-
ON CONFLICT DO NOTHING;
|
|
200
|
-
COMMIT;
|
|
201
|
-
|
|
202
|
-
-- Rollback
|
|
203
|
-
BEGIN;
|
|
204
|
-
DELETE FROM esq_sistema.tb_maestra_detalle
|
|
205
|
-
WHERE codprog = 'EST_SOLICITUD'
|
|
206
|
-
AND valor IN (1, 2, 3)
|
|
207
|
-
AND usuario_registro = 'session_deploy';
|
|
208
|
-
COMMIT;
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
## Bloque rollback de una sesión dentro de `00-ROLLBACK.sql`
|
|
214
|
-
|
|
215
|
-
```sql
|
|
216
|
-
-- ----------------------------------------------------------------------------
|
|
217
|
-
-- ROLLBACK de sessionXXX-[nombre] — revierte los cambios en orden inverso.
|
|
218
|
-
-- Forma parte del 00-ROLLBACK.sql cross-session del bundle.
|
|
219
|
-
-- ----------------------------------------------------------------------------
|
|
220
|
-
BEGIN;
|
|
221
|
-
|
|
222
|
-
-- Paso 4 invertido: deshacer inserts
|
|
223
|
-
DELETE FROM esq_sistema.tb_maestra_detalle
|
|
224
|
-
WHERE codprog = 'EST_SOLICITUD' AND usuario_registro = 'session_deploy';
|
|
225
|
-
|
|
226
|
-
-- Paso 3 invertido: deshacer migraciones
|
|
227
|
-
UPDATE esq_credito.tb_credito t
|
|
228
|
-
SET estado = bkp.estado
|
|
229
|
-
FROM esq_audit.tb_bkp_credito_sessionXXX bkp
|
|
230
|
-
WHERE t.id_credito = bkp.id_credito;
|
|
231
|
-
|
|
232
|
-
-- Paso 2 invertido: eliminar funciones nuevas
|
|
233
|
-
DROP FUNCTION IF EXISTS esq_credito.fn_calcular_cuota_v2(numeric, numeric, integer);
|
|
234
|
-
|
|
235
|
-
-- Paso 1 invertido: eliminar tablas nuevas
|
|
236
|
-
DROP TABLE IF EXISTS esq_credito.tb_nueva;
|
|
237
|
-
DROP SEQUENCE IF EXISTS esq_credito.seq_tb_nueva;
|
|
238
|
-
|
|
239
|
-
COMMIT;
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## Equivalencias entre motores
|
|
245
|
-
|
|
246
|
-
| Concepto | PostgreSQL | Oracle | SQL Server |
|
|
247
|
-
|---|---|---|---|
|
|
248
|
-
| Idempotencia CREATE TABLE | `CREATE TABLE IF NOT EXISTS` | `BEGIN EXECUTE IMMEDIATE ... EXCEPTION WHEN OTHERS THEN NULL; END;` | `IF NOT EXISTS (SELECT...) CREATE TABLE` |
|
|
249
|
-
| Idempotencia DROP | `DROP TABLE IF EXISTS` | No nativo — usar bloque PL/SQL | `DROP TABLE IF EXISTS` (2016+) |
|
|
250
|
-
| Create o reemplazar función | `CREATE OR REPLACE FUNCTION` | `CREATE OR REPLACE FUNCTION` | `CREATE OR ALTER PROCEDURE` |
|
|
251
|
-
| Insertar sin duplicar | `ON CONFLICT DO NOTHING` | `INSERT INTO ... WHERE NOT EXISTS (SELECT 1 ...)` | `IF NOT EXISTS (SELECT 1 ...) INSERT` |
|
|
252
|
-
| Esquema explícito | `esq_credito.tb_x` | `schema.tb_x` | `[schema].[tb_x]` |
|
|
253
|
-
| Secuencias | `CREATE SEQUENCE` / `nextval(...)` | `CREATE SEQUENCE` / `.NEXTVAL` | `IDENTITY` o `SEQUENCE` (2012+) |
|
|
254
|
-
| Transacción | `BEGIN; ... COMMIT;` | `-- implícita; usar COMMIT;` | `BEGIN TRANSACTION; ... COMMIT;` |
|
|
255
|
-
| Creación condicional índice | `CREATE INDEX IF NOT EXISTS` | No nativo | `IF NOT EXISTS (SELECT...) CREATE INDEX` |
|
|
256
|
-
|
|
257
|
-
> Si el motor de destino no es PostgreSQL, indicarlo en el header del script y ajustar la sintaxis según la tabla anterior.
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sql-script-organizer
|
|
3
|
-
description: "Mantiene el archivo único SCRIPTS.sql por sesión (uppercase EN canon, F-D session062), aplica estilo del proyecto (BEGIN/COMMIT, idempotencia, schema explícito), markers @category (01-ddl-tablas, 02-ddl-funciones, 03-migracion, 04-inserts) y @stmt por sentencia. La separación 01-04 + generación de rollbacks ocurre post-hoc en /agent-workflow:export-scripts (no durante exec). BREAKING desde v1.0.0: reemplaza el layout scripts/01-04/* + .rollback.sql per archivo (2N+1) por SCRIPTS.sql único. Layouts legacy se migran con /agent-workflow:migrate --upgrade-topology."
|
|
4
|
-
version: 1.0.0
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# SQL Script Organizer
|
|
8
|
-
|
|
9
|
-
Organización, estilo y graduación de scripts SQL dentro del flujo de sesiones.
|
|
10
|
-
|
|
11
|
-
## Regla cero — read/write filesystem only
|
|
12
|
-
|
|
13
|
-
Este skill **organiza, renumera, escribe diffs y prepara el bundle** en disco. **Nunca ejecuta SQL** contra `<mcp-cert>`/`<mcp-prod>` ni ningún otro destino. La aplicación del bundle (DDL, migraciones, inserts) la realiza el **usuario** manualmente, fuera del scope de este skill. Si durante el flujo aparece tentación de "verificar aplicando" — refusar y pedir al usuario que ejecute.
|
|
14
|
-
|
|
15
|
-
## When to use
|
|
16
|
-
|
|
17
|
-
- Cuando existan ≥2 archivos `.sql` en la sesión y necesiten ordenarse para entrega.
|
|
18
|
-
- **Antes de escribir un nuevo `.sql`** — para elegir categoría correcta y aplicar estilo desde el inicio.
|
|
19
|
-
- Al llegar a Fase 5 (Cierre) con scripts SQL pendientes de graduar.
|
|
20
|
-
- NL: "unificar", "reorganizar", "preparar bundle de scripts", "listos para prod".
|
|
21
|
-
- Al renumerar o reclasificar scripts durante la sesión.
|
|
22
|
-
|
|
23
|
-
## Sandbox read-only
|
|
24
|
-
|
|
25
|
-
`../session/references/sandbox-readonly-rules.md`. Plan describe clasificación, renumeración y orden propuestos (sin crear ni mover `.sql`).
|
|
26
|
-
|
|
27
|
-
## Staging durante la sesión (v1.0.0 — BREAKING)
|
|
28
|
-
|
|
29
|
-
**Archivo único** en la raíz de la sesión:
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
.workflow/sessions/sessionXXX-nombre/
|
|
33
|
-
└── SCRIPTS.sql (consolidado de todas las sentencias de la sesión)
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Spec completa: ver [`references/scripts-sql-format.md`](references/scripts-sql-format.md).
|
|
37
|
-
|
|
38
|
-
**Cada sentencia** se appendea al SCRIPTS.sql con un par de markers en comentarios:
|
|
39
|
-
|
|
40
|
-
```sql
|
|
41
|
-
-- @category: 01-ddl-tablas
|
|
42
|
-
-- @stmt: 01-crear-tabla-usuarios
|
|
43
|
-
CREATE TABLE IF NOT EXISTS esq_credito.tb_usuarios (
|
|
44
|
-
...
|
|
45
|
-
);
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
- `@category` clasifica la sentencia (4 valores canónicos, ver tabla abajo).
|
|
49
|
-
- `@stmt` da el slug determinístico (`NN-verbo-objetivo`). Sirve para que `export-scripts` derive el filename al separar.
|
|
50
|
-
- Orden cronológico dentro del archivo = orden en que se appendea. `export-scripts` resuelve el orden de ejecución final por categoría (01 → 02 → 03 → 04).
|
|
51
|
-
- `BEGIN;` global al inicio del archivo, `COMMIT;` al final. Cada sentencia individual NO trae su propio BEGIN/COMMIT (la separación post-hoc los agrega por archivo).
|
|
52
|
-
|
|
53
|
-
> **Sin .rollback.sql per archivo durante exec**. Los rollbacks se generan post-hoc al correr `/agent-workflow:export-scripts` (ver `sql-rollback-generator` v1.0.0).
|
|
54
|
-
|
|
55
|
-
## Migración desde layout legacy
|
|
56
|
-
|
|
57
|
-
Sesiones creadas con `sql-script-organizer` v0.x usan layout antiguo:
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
.workflow/sessions/sessionXXX-nombre/scripts/
|
|
61
|
-
├── 01-ddl-tablas/
|
|
62
|
-
│ └── 001-crear-tabla.sql
|
|
63
|
-
├── 02-ddl-funciones/
|
|
64
|
-
│ └── 001-crear-fn.sql
|
|
65
|
-
└── ...
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Para migrar: `/agent-workflow:migrate --upgrade-topology`. El skill `migrate` detecta el layout legacy y consolida en `SCRIPTS.sql` preservando order + agregando markers. Ver `agent-workflow/skills/migrate/SKILL.md` capability 11.
|
|
69
|
-
|
|
70
|
-
`/agent-workflow:export-scripts` aborta si detecta layout legacy sin migrar. NO consume sesiones mixtas.
|
|
71
|
-
|
|
72
|
-
## Las 4 categorías (markers `@category`)
|
|
73
|
-
|
|
74
|
-
| Marker | Patrones de detección |
|
|
75
|
-
|---|---|
|
|
76
|
-
| `01-ddl-tablas` | `CREATE TABLE`, `DROP TABLE`, `ALTER TABLE`, `CREATE INDEX`, `CREATE SEQUENCE` |
|
|
77
|
-
| `02-ddl-funciones` | `CREATE [OR REPLACE] FUNCTION`, `CREATE [OR REPLACE] PROCEDURE`, `DROP FUNCTION`, `DROP PROCEDURE` |
|
|
78
|
-
| `03-migracion` | `UPDATE`, `INSERT ... SELECT ...`, `DELETE` sobre datos existentes, transformaciones de columnas |
|
|
79
|
-
| `04-inserts` | `INSERT INTO ... VALUES`, seeds de catálogos, `tb_maestra_detalle`, datos de configuración inicial |
|
|
80
|
-
|
|
81
|
-
**Orden de ejecución obligatorio**: 01 → 02 → 03 → 04. El archivo SCRIPTS.sql puede mezclar categorías cronológicamente; `export-scripts` ordena al bundle final.
|
|
82
|
-
|
|
83
|
-
Patrones detallados y edge cases en `references/categorization-rules.md`.
|
|
84
|
-
|
|
85
|
-
## Reglas de estilo SQL
|
|
86
|
-
|
|
87
|
-
Cumplir `coding-standards/references/database-conventions.md#estilo-de-scripts-sql`:
|
|
88
|
-
|
|
89
|
-
- `BEGIN;` al inicio, `COMMIT;` al final.
|
|
90
|
-
- Idempotencia: `CREATE TABLE IF NOT EXISTS`, `DROP ... IF EXISTS`, `CREATE OR REPLACE`, `ON CONFLICT`.
|
|
91
|
-
- Cuerpo: preferir `WITH ... AS` (CTEs encadenadas) sobre subqueries anidados y sobre `DO $$ ... LOOP ... END $$`. Ver "Cuerpo: CTEs sobre DO/LOOP" abajo.
|
|
92
|
-
- Header canónico de 4 líneas (Script / Sesion / Objeto / Alcance). Ver "Header canónico" abajo.
|
|
93
|
-
- Separador entre secciones: una línea de comentario envuelta por guiones. Ver "Separadores entre secciones" abajo.
|
|
94
|
-
- Nunca crear `fn_*`/`sp_*` para reusar lógica exclusiva de un script; usar CTE o inline.
|
|
95
|
-
- Schema siempre explícito (`esq_credito.tb_x`, nunca `public.`).
|
|
96
|
-
|
|
97
|
-
### Header canónico
|
|
98
|
-
|
|
99
|
-
Bloque único al inicio del script, entre dos líneas de iguales:
|
|
100
|
-
|
|
101
|
-
```sql
|
|
102
|
-
-- ============================================================================
|
|
103
|
-
-- Script: NNN-tipo-objetivo.sql
|
|
104
|
-
-- Sesion: sNNN
|
|
105
|
-
-- Objeto: <qué hace, 1-2 líneas>
|
|
106
|
-
-- Alcance: <filtros y boundaries del cambio, 1 línea>
|
|
107
|
-
-- ============================================================================
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
- Solo 4 campos: `Script`, `Sesion`, `Objeto`, `Alcance`.
|
|
111
|
-
- `Sesion` puede listar varias sesiones cuando el script trazó historia (ej. `s078 → s080 (fix UNIQUE) → s082 (simplificado)`).
|
|
112
|
-
- Autor / Fecha / "Defensa futura" / notas largas **NO** van dentro del header. Si el contexto lo amerita, van como bloque libre debajo del header (separado por una línea en blanco). Default: no se generan.
|
|
113
|
-
- Si el motor no es Postgres, indicarlo en `Objeto:` o como nota libre debajo, no como campo del header.
|
|
114
|
-
|
|
115
|
-
### Separadores entre secciones
|
|
116
|
-
|
|
117
|
-
Cada sección del cuerpo se introduce con una línea de comentario corta envuelta por guiones seguidos:
|
|
118
|
-
|
|
119
|
-
```sql
|
|
120
|
-
-- ----------------------------------------------------------------------------
|
|
121
|
-
-- N. Descripción corta de qué hace este bloque.
|
|
122
|
-
-- ----------------------------------------------------------------------------
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
- Sin cajas dobles (`====` queda solo para el header).
|
|
126
|
-
- Si el script tiene una sola sección, omitir separadores.
|
|
127
|
-
- No partir un bloque corto solo por estética — los separadores marcan flujos lógicos, no líneas.
|
|
128
|
-
|
|
129
|
-
### Cuerpo: CTEs sobre DO/LOOP
|
|
130
|
-
|
|
131
|
-
- Default: una transformación = `WITH ... AS` con CTEs encadenadas + un `INSERT/UPDATE/DELETE` final que las consume.
|
|
132
|
-
- Evitar `DO $$ DECLARE ... FOR ... LOOP ... END $$` cuando el mismo resultado se logra declarativamente. Es código que el lector tiene que mentalizar fila a fila; el SQL declarativo es más fácil de auditar y revertir.
|
|
133
|
-
- Excepción permitida: descubrimiento dinámico de objetos (FKs, columnas, constraints, secuencias) que no se puede expresar en SQL declarativo. En ese caso documentar el motivo en `Objeto:` del header (ej. `Objeto: ... cascadea a hijas via FKs detectadas dinámicamente.`).
|
|
134
|
-
|
|
135
|
-
## Proceso de mantenimiento del SCRIPTS.sql (v1.0.0)
|
|
136
|
-
|
|
137
|
-
1. **Detectar la categoría** del cambio a aplicar siguiendo la tabla de markers.
|
|
138
|
-
2. **Verificar idempotencia** del statement (CREATE OR REPLACE, IF EXISTS, ON CONFLICT, etc.).
|
|
139
|
-
3. **Append** al `SCRIPTS.sql` con par de markers (`@category` + `@stmt`).
|
|
140
|
-
4. **Style check** — el statement debe cumplir el header canónico, CTEs sobre DO/LOOP, schema explícito.
|
|
141
|
-
5. **NO mover ni renumerar** archivos individuales (solo hay un SCRIPTS.sql).
|
|
142
|
-
6. **NO generar `.rollback.sql`** durante exec (rollback se genera al exportar).
|
|
143
|
-
|
|
144
|
-
El usuario revisa el SCRIPTS.sql periódicamente; la separación 01-04 final y la verificación de dependencias cruzadas la hace `/agent-workflow:export-scripts` post-hoc.
|
|
145
|
-
|
|
146
|
-
## Layout del bundle (post-export-scripts v5.0.0)
|
|
147
|
-
|
|
148
|
-
`/agent-workflow:export-scripts` v5.0.0+ produce el bundle al ejecutarse, no este skill. Layout plano con **numeración continua** tras `00-ROLLBACK.sql`:
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
<docs>/scripts/NNN-export-scripts-YYYY-MM-DD/
|
|
152
|
-
├── 00-ROLLBACK.sql (único rollback cross-session — sql-rollback-generator v3.0.0)
|
|
153
|
-
├── 01-<CATEGORIA>.sql (primera categoría con contenido)
|
|
154
|
-
├── 02-<CATEGORIA>.sql (segunda categoría con contenido, si aplica)
|
|
155
|
-
├── ... (numeración continua, sin gaps por categoría vacía)
|
|
156
|
-
└── README.md (índice + cómo aplicar + cómo revertir)
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
Orden canónico de las categorías (para asignar número): `DDL-TABLES` → `DDL-FUNCTIONS` → `DML` → `INSERTS`. Las vacías no ocupan número. Si sólo hay DML, el archivo se llama `01-DML.sql`.
|
|
160
|
-
|
|
161
|
-
Sentencias individuales del `SCRIPTS.sql` per-sesión se consolidan **cross-session** al archivo de su categoría — no se crea sub-carpeta por sesión.
|
|
162
|
-
|
|
163
|
-
Layout **v3.x** (`por-sesion/<sessionXXX>/01-04/*.sql + .rollback.sql` companions + per-sesión `rollback/`) ya **no se genera** desde v4.0.0. Layout **v4.0.0** (números fijos 01-04 con gaps) reemplazado por numeración continua en v5.0.0. Bundles ya escritos con layouts previos quedan como histórico.
|
|
164
|
-
|
|
165
|
-
Layout **legacy** pre-SCRIPTS.sql (`scripts/01-04/*.sql + .rollback.sql` directo en sesión) tampoco se genera; sesiones nuevas usan SCRIPTS.sql. Layouts legacy en sesiones cerradas se migran con `/agent-workflow:migrate --upgrade-topology`.
|
|
166
|
-
|
|
167
|
-
## Graduación al cierre (vía `/agent-workflow:release`)
|
|
168
|
-
|
|
169
|
-
Los scripts viven en la sesión durante execution: `.workflow/sessions/<folder>/scripts/`. La graduación a `docs/scripts/NNN-sessionXXX-<slug>/` la hace **`/agent-workflow:release` exclusivamente** (DEC-003) — único disparador de `kind=script`. Sesiones individuales NO invocan `agent-workflow graduate --kind script` directamente.
|
|
170
|
-
|
|
171
|
-
Destino al graduar (DEC-002, vía release):
|
|
172
|
-
- **hub mode** → `<hub>/docs/scripts/NNN-sessionXXX-<slug>/`.
|
|
173
|
-
- **project mode** → `<cwd>/docs/scripts/NNN-sessionXXX-<slug>/`.
|
|
174
|
-
|
|
175
|
-
`NNN` = siguiente correlativo en `docs/scripts/` (`agent-workflow next-number docs/scripts`). Release registra la ruta en `.workflow/HISTORY.md`.
|
|
176
|
-
|
|
177
|
-
## Modo release (cross-session + por tema)
|
|
178
|
-
|
|
179
|
-
Cuando `release` o `release-scripts` invocan este skill, aplica modo consolidación cross-session o modo por tema. Ambos comparten la clasificación 01→04 pero cambian el layout y la transaccionalidad.
|
|
180
|
-
|
|
181
|
-
Procedimiento completo (entrada, proceso paso a paso, layout destino, formato del consolidado, qué NO hacer) en **`references/consolidation-cross-session.md`**.
|
|
182
|
-
|
|
183
|
-
## Integración con otros skills
|
|
184
|
-
|
|
185
|
-
- **`sql-rollback-generator`** v3.0.0+ — **on-export**: lee los forwards ya consolidados por `export-scripts` (no `SCRIPTS.sql` original) y genera `00-ROLLBACK.sql` único.
|
|
186
|
-
- **`export-scripts`** v5.0.0+ — consume `SCRIPTS.sql` per sesión + `docs/scripts/*.sql` standalone, clasifica por categoría y asigna numeración continua tras `00-ROLLBACK.sql`. Aborta si detecta layout legacy.
|
|
187
|
-
- **`migrate`** v1.3.0+ — capability 11: convierte layouts legacy `scripts/01-04/*.sql` → `SCRIPTS.sql` consolidado.
|
|
188
|
-
- **`coding-standards`** — fuente de las reglas de estilo (`database-conventions.md`).
|
|
189
|
-
- **`session`** — Fase execution invoca este skill al primer change SQL; Fase closure no necesita acción adicional.
|
|
190
|
-
|
|
191
|
-
## Ejemplo de header simplificado
|
|
192
|
-
|
|
193
|
-
Antes (estilo viejo, evitar):
|
|
194
|
-
|
|
195
|
-
```sql
|
|
196
|
-
-- ============================================================================
|
|
197
|
-
-- Script: 020-dml-normalizar-codusuario-uppercase.sql
|
|
198
|
-
-- Sesion: s078 (creado) → s079 (formato iniciales) → s080 (fix UNIQUE)
|
|
199
|
-
-- Fecha: 2026-04-29
|
|
200
|
-
-- Autor: Jesus Loayza (con asistencia AI)
|
|
201
|
-
-- Objeto: Renombra esq_x.tb_x.cod a MAYUSCULAS con sufijo numerico para
|
|
202
|
-
-- colisiones internas. Cascadea a hijas via FKs detectadas dinamicamente.
|
|
203
|
-
-- Alcance: SOLO usuarios id_tipo = 'CORE' con tb_persona valida.
|
|
204
|
-
-- Defensa futura: AuthSvc.generarCod en mscore-mantenimiento.
|
|
205
|
-
-- ============================================================================
|
|
206
|
-
-- Si el INSERT al mapping rebota con UNIQUE, significa que ...
|
|
207
|
-
-- ============================================================================
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
Después (estilo canónico):
|
|
211
|
-
|
|
212
|
-
```sql
|
|
213
|
-
-- ============================================================================
|
|
214
|
-
-- Script: 020-dml-normalizar-codusuario-uppercase.sql
|
|
215
|
-
-- Sesion: s078 → s080 (fix UNIQUE) → s082 (simplificado one-shot, sin trigger)
|
|
216
|
-
-- Objeto: Renombra esq_x.tb_x.cod a MAYUSCULAS con sufijo numérico para
|
|
217
|
-
-- colisiones. Cascadea a hijas vía FKs detectadas dinámicamente.
|
|
218
|
-
-- Alcance: SOLO usuarios id_tipo = 'CORE' con tb_persona válida.
|
|
219
|
-
-- ============================================================================
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
Y en el cuerpo, las secciones se separan así:
|
|
223
|
-
|
|
224
|
-
```sql
|
|
225
|
-
-- ----------------------------------------------------------------------------
|
|
226
|
-
-- 1. Mapping old → new para CORE con persona válida.
|
|
227
|
-
-- ----------------------------------------------------------------------------
|
|
228
|
-
WITH bases AS (
|
|
229
|
-
SELECT u.id, u.cod AS old_code,
|
|
230
|
-
UPPER(LEFT(TRIM(p.nombres), 1) || REPLACE(TRIM(p.apellido_paterno), ' ', '')) AS base_code
|
|
231
|
-
FROM esq_x.tb_x u
|
|
232
|
-
JOIN esq_x.tb_persona p ON p.id_persona = u.id_persona
|
|
233
|
-
WHERE u.id_tipo = 'CORE'
|
|
234
|
-
),
|
|
235
|
-
mapped AS ( ... )
|
|
236
|
-
INSERT INTO _cod_map (id, old_code, new_code) SELECT id, old_code, new_code FROM mapped;
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
## Recursos adicionales
|
|
240
|
-
|
|
241
|
-
- **`references/categorization-rules.md`** — patrones detallados, edge cases, scripts mixtos.
|
|
242
|
-
- **`references/bundle-readme-template.md`** — plantilla para `scripts/bundle/README.md`.
|
|
243
|
-
- **`references/consolidation-cross-session.md`** — modo release (cross-session + por tema).
|