@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
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
# Java / Spring Boot — Convenciones detalladas
|
|
2
|
-
|
|
3
|
-
## Inyección de dependencias
|
|
4
|
-
|
|
5
|
-
Usar Constructor Injection. Nunca Field Injection en código de producción.
|
|
6
|
-
|
|
7
|
-
```java
|
|
8
|
-
// Correcto: Constructor Injection
|
|
9
|
-
@Service
|
|
10
|
-
@RequiredArgsConstructor
|
|
11
|
-
public class NotificacionService {
|
|
12
|
-
private final EmailProvider emailProvider;
|
|
13
|
-
private final NotificacionRepository repository;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// Incorrecto: Field Injection
|
|
17
|
-
@Service
|
|
18
|
-
public class NotificacionService {
|
|
19
|
-
@Autowired // NO en producción
|
|
20
|
-
private EmailProvider emailProvider;
|
|
21
|
-
}
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## DTOs con Java Records
|
|
25
|
-
|
|
26
|
-
Usar records para Request y Response. Clases tradicionales para entidades JPA.
|
|
27
|
-
|
|
28
|
-
```java
|
|
29
|
-
// Request DTO — record
|
|
30
|
-
public record NotificacionRequest(
|
|
31
|
-
@NotBlank String destinatario,
|
|
32
|
-
@NotBlank String asunto,
|
|
33
|
-
@NotNull String templateId,
|
|
34
|
-
Map<String, Object> variables
|
|
35
|
-
) {}
|
|
36
|
-
|
|
37
|
-
// Response DTO — record
|
|
38
|
-
public record NotificacionResponse(
|
|
39
|
-
Long id,
|
|
40
|
-
String destinatario,
|
|
41
|
-
String estado,
|
|
42
|
-
LocalDateTime fechaEnvio
|
|
43
|
-
) {}
|
|
44
|
-
|
|
45
|
-
// Entidad JPA — clase (NO record)
|
|
46
|
-
@Entity
|
|
47
|
-
@Table(name = "notificaciones")
|
|
48
|
-
public class Notificacion {
|
|
49
|
-
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
50
|
-
private Long id;
|
|
51
|
-
private String destinatario;
|
|
52
|
-
private String estado;
|
|
53
|
-
// getters, setters
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Transacciones
|
|
58
|
-
|
|
59
|
-
```java
|
|
60
|
-
// Lectura — readOnly para optimización
|
|
61
|
-
@Transactional(readOnly = true)
|
|
62
|
-
public NotificacionResponse buscarPorId(Long id) { ... }
|
|
63
|
-
|
|
64
|
-
// Escritura
|
|
65
|
-
@Transactional
|
|
66
|
-
public NotificacionResponse enviar(NotificacionRequest request) { ... }
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Validación con Jakarta
|
|
70
|
-
|
|
71
|
-
```java
|
|
72
|
-
@PostMapping("/notificaciones")
|
|
73
|
-
public ResponseEntity<NotificacionResponse> enviar(
|
|
74
|
-
@Valid @RequestBody NotificacionRequest request) {
|
|
75
|
-
return ResponseEntity.ok(service.enviar(request));
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## PATCH + Sparse DTO unificado (qtc-dev v2.6+)
|
|
80
|
-
|
|
81
|
-
Para mantenimientos CRUD seguir las reglas de `references/fe-be-integration.md`:
|
|
82
|
-
|
|
83
|
-
- **DTO único** `<Feature>SaveRequest` para POST y PATCH, todos los campos nullable.
|
|
84
|
-
- **POST** acepta el DTO con required cargados; **PATCH** acepta el DTO con solo los campos modificados (null = no tocar).
|
|
85
|
-
- Validation groups (`OnCreate.class`) cuando se necesita exigir `@NotNull` solo en POST.
|
|
86
|
-
|
|
87
|
-
```java
|
|
88
|
-
public record CategoriaSaveRequest(
|
|
89
|
-
@Size(min = 1, max = 100)
|
|
90
|
-
@NotNull(groups = OnCreate.class)
|
|
91
|
-
String nombre,
|
|
92
|
-
@Size(max = 500) String descripcion,
|
|
93
|
-
@NotNull(groups = OnCreate.class) Boolean activo,
|
|
94
|
-
@PositiveOrZero Integer ordenVisual
|
|
95
|
-
) {}
|
|
96
|
-
|
|
97
|
-
@RestController
|
|
98
|
-
@RequestMapping("/api/categorias")
|
|
99
|
-
@RequiredArgsConstructor
|
|
100
|
-
public class CategoriasController {
|
|
101
|
-
private final CategoriasService service;
|
|
102
|
-
|
|
103
|
-
@PostMapping
|
|
104
|
-
public ResponseEntity<CategoriaResponse> create(
|
|
105
|
-
@Validated(OnCreate.class) @RequestBody CategoriaSaveRequest req
|
|
106
|
-
) { return ResponseEntity.ok(service.create(req)); }
|
|
107
|
-
|
|
108
|
-
@PatchMapping("/{id}")
|
|
109
|
-
public ResponseEntity<CategoriaResponse> patch(
|
|
110
|
-
@PathVariable Long id,
|
|
111
|
-
@Valid @RequestBody CategoriaSaveRequest req
|
|
112
|
-
) { return ResponseEntity.ok(service.patch(id, req)); }
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
En el service, el método `patch` ignora campos `null`:
|
|
117
|
-
|
|
118
|
-
```java
|
|
119
|
-
@Transactional
|
|
120
|
-
public CategoriaResponse patch(Long id, CategoriaSaveRequest req) {
|
|
121
|
-
Categoria entity = repo.findById(id).orElseThrow(NotFoundException::new);
|
|
122
|
-
if (req.nombre() != null) entity.setNombre(req.nombre());
|
|
123
|
-
if (req.descripcion() != null) entity.setDescripcion(req.descripcion());
|
|
124
|
-
if (req.activo() != null) entity.setActivo(req.activo());
|
|
125
|
-
if (req.ordenVisual() != null) entity.setOrdenVisual(req.ordenVisual());
|
|
126
|
-
return mapper.toResponse(repo.save(entity));
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Tradeoff aceptado: no se puede setear un campo a `null` intencionalmente (semántica "no tocar"). Para "limpiar a null", usar endpoint dedicado o flag explícita en el DTO. Detalles + ejemplos completos: `references/fe-be-integration.md`.
|
|
131
|
-
|
|
132
|
-
## Fail fast / Early returns
|
|
133
|
-
|
|
134
|
-
```java
|
|
135
|
-
public NotificacionResponse enviar(NotificacionRequest request) {
|
|
136
|
-
if (request.destinatario().isBlank()) {
|
|
137
|
-
throw new BadRequestException("Destinatario requerido");
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
var template = templateRepository.findById(request.templateId())
|
|
141
|
-
.orElseThrow(() -> new NotFoundException("Template no encontrado"));
|
|
142
|
-
|
|
143
|
-
// Lógica principal después de validaciones
|
|
144
|
-
return procesarEnvio(request, template);
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Manejo de errores
|
|
149
|
-
|
|
150
|
-
```java
|
|
151
|
-
@RestControllerAdvice
|
|
152
|
-
public class ControllerExceptionHandler {
|
|
153
|
-
|
|
154
|
-
@ExceptionHandler(BadRequestException.class)
|
|
155
|
-
public ResponseEntity<ErrorResponse> handleBadRequest(BadRequestException ex) {
|
|
156
|
-
log.warn("Bad request: {}", ex.getMessage());
|
|
157
|
-
return ResponseEntity.badRequest()
|
|
158
|
-
.body(new ErrorResponse(ex.getMessage()));
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
@ExceptionHandler(Exception.class)
|
|
162
|
-
public ResponseEntity<ErrorResponse> handleGeneral(Exception ex) {
|
|
163
|
-
log.error("Error inesperado", ex);
|
|
164
|
-
return ResponseEntity.internalServerError()
|
|
165
|
-
.body(new ErrorResponse("Error interno del servidor"));
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
## Estructura de proyecto
|
|
171
|
-
|
|
172
|
-
Ver `references/project-structure.md` para la estructura completa de paquetes, entidades, repositories, services, wrappers request/response y convención de DTOs de tu ecosistema.
|
|
173
|
-
|
|
174
|
-
## Queries SQL
|
|
175
|
-
|
|
176
|
-
- Siempre parametrizar (nunca concatenar strings)
|
|
177
|
-
- Usar `@Query` con parámetros nombrados o JPA Criteria
|
|
178
|
-
- En native queries, siempre schema explícito: `esq_xxx.tb_xxx`
|
|
179
|
-
- Documentar queries complejas en CONSULTASSQL.md de la sesión
|
|
180
|
-
|
|
181
|
-
```java
|
|
182
|
-
// Correcto
|
|
183
|
-
@Query("SELECT n FROM Notificacion n WHERE n.destinatario = :email")
|
|
184
|
-
List<Notificacion> findByDestinatario(@Param("email") String email);
|
|
185
|
-
|
|
186
|
-
// Incorrecto — SQL injection
|
|
187
|
-
@Query("SELECT n FROM Notificacion n WHERE n.destinatario = '" + email + "'")
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
Ver `references/database-conventions.md` para nomenclatura de tablas, columnas, sequences, funciones y el patrón maestra-detalle.
|
|
191
|
-
|
|
192
|
-
## Build y verificación
|
|
193
|
-
|
|
194
|
-
- Compilar: `./mvnw compile` (Windows: `mvnw.cmd compile`)
|
|
195
|
-
- Tests: `./mvnw test`
|
|
196
|
-
- Verificación completa: `./mvnw verify`
|
|
197
|
-
- Nunca usar `mvn` directo — siempre el wrapper del proyecto
|
|
198
|
-
|
|
199
|
-
## Patrones de sincronización single-slot
|
|
200
|
-
|
|
201
|
-
Patrones al sincronizar relaciones donde la BD admite N filas pero la UX expone 1 seleccionada. Para la decisión de diseño UX (por qué single-slot), ver skill `frontend-design` (§1).
|
|
202
|
-
|
|
203
|
-
### Reemplazo preservando fila coincidente
|
|
204
|
-
|
|
205
|
-
Al guardar con single-slot, **no** "borrar todo e insertar uno" (genera churn en auditoría y consume secuencias innecesariamente). Recorrer las filas existentes, preservar la que coincide con el valor nuevo y eliminar las demás:
|
|
206
|
-
|
|
207
|
-
```java
|
|
208
|
-
List<EntidadRelacion> existentes = repository.findByIdMaestro(maestro.getIdMaestro());
|
|
209
|
-
boolean coincide = false;
|
|
210
|
-
for (EntidadRelacion e : existentes) {
|
|
211
|
-
if (!coincide && idValorNuevo.equals(e.getIdValor())) {
|
|
212
|
-
coincide = true; // preservar UNA fila que coincide
|
|
213
|
-
} else {
|
|
214
|
-
repository.delete(e); // eliminar sobrantes o cambios
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
if (!coincide) {
|
|
218
|
-
// crear fila nueva con estado=1, fecha_registro, usuario_registro
|
|
219
|
-
}
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
### Fallback cross-tabla en GET con autoritativa única
|
|
223
|
-
|
|
224
|
-
Cuando un campo vive en dos tablas por historia (p. ej. `usuario.celular` y `cliente.celular`), declarar **una tabla autoritativa** y aplicar fallback silencioso a la otra **sólo en el GET**. El UPDATE toca únicamente la autoritativa:
|
|
225
|
-
|
|
226
|
-
```java
|
|
227
|
-
if (dto.getCelular() == null || dto.getCelular().isBlank()) {
|
|
228
|
-
clienteRepository.findByIdPersona(entidad.getIdPersona())
|
|
229
|
-
.ifPresent(c -> dto.setCelular(c.getCelular()));
|
|
230
|
-
}
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
Regla: no replicar esta lógica en el frontend; la resolución vive en el GET del backend. Evitar asumir que un campo "personal" vive en la tabla de personas sin verificar — a veces la autoritativa es la tabla de negocio.
|
|
234
|
-
|
|
235
|
-
### Filtros `estado=1` en query, no en frontend
|
|
236
|
-
|
|
237
|
-
Queries de catálogo (roles asignables, negocios, sucursales, etc.) filtran activos en la query nativa / JPA. El frontend recibe sólo activos y **no debe re-filtrar**:
|
|
238
|
-
|
|
239
|
-
```java
|
|
240
|
-
@Query("SELECT r FROM Rol r WHERE r.estado = 1 ORDER BY r.nombre")
|
|
241
|
-
List<Rol> findAsignables();
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
Si el frontend termina filtrando de nuevo, es indicio de que la query está mal — corregir la query, no el frontend.
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
# Estructura de Proyecto Backend
|
|
2
|
-
|
|
3
|
-
Convenciones de estructura para microservicios Spring Boot. Sustituir `<empresa>` por el namespace de tu organización (e.g., `qtc`, `acme`).
|
|
4
|
-
|
|
5
|
-
## Paquete base
|
|
6
|
-
|
|
7
|
-
`com.<empresa>.[dominio]` → ejemplos: `com.acme.credito`, `com.acme.mantenimiento`, `com.acme.solicitud`.
|
|
8
|
-
|
|
9
|
-
## Estructura de paquetes
|
|
10
|
-
|
|
11
|
-
Dos variantes en uso (ambas válidas, seguir la del proyecto actual):
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
com.<empresa>.[dominio].core.controller
|
|
15
|
-
com.<empresa>.[dominio].core.service
|
|
16
|
-
com.<empresa>.[dominio].core.service.impl
|
|
17
|
-
com.<empresa>.[dominio].core.service.generico
|
|
18
|
-
com.<empresa>.[dominio].core.repository
|
|
19
|
-
com.<empresa>.[dominio].core.model
|
|
20
|
-
com.<empresa>.[dominio].core.request
|
|
21
|
-
com.<empresa>.[dominio].core.request.dto
|
|
22
|
-
com.<empresa>.[dominio].core.response
|
|
23
|
-
com.<empresa>.[dominio].core.response.dto
|
|
24
|
-
com.<empresa>.[dominio].core.config
|
|
25
|
-
com.<empresa>.[dominio].core.exception
|
|
26
|
-
com.<empresa>.[dominio].core.common
|
|
27
|
-
com.<empresa>.[dominio].core.util
|
|
28
|
-
com.<empresa>.[dominio].core.feign
|
|
29
|
-
com.<empresa>.[dominio].core.seguridad
|
|
30
|
-
com.<empresa>.[dominio].core.aspect
|
|
31
|
-
com.<empresa>.[dominio].core.advice
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Variante sin `core`:
|
|
35
|
-
```
|
|
36
|
-
com.<empresa>.[dominio].controller
|
|
37
|
-
com.<empresa>.[dominio].service / service.impl
|
|
38
|
-
com.<empresa>.[dominio].repository
|
|
39
|
-
com.<empresa>.[dominio].model
|
|
40
|
-
com.<empresa>.[dominio].dto.request / dto.response
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Flujo de capas
|
|
44
|
-
|
|
45
|
-
```
|
|
46
|
-
Controller → Service (interface) → ServiceImpl → Repository → Entity/BD
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Entidades JPA
|
|
50
|
-
|
|
51
|
-
Nombre = tabla sin `tb_` en PascalCase: `tb_credito` → `Credito`, `tb_cliente` → `Cliente`
|
|
52
|
-
|
|
53
|
-
```java
|
|
54
|
-
@Entity
|
|
55
|
-
@NoArgsConstructor
|
|
56
|
-
@AllArgsConstructor
|
|
57
|
-
@Table(name = "tb_credito", schema = "esq_credito")
|
|
58
|
-
@Getter
|
|
59
|
-
@Setter
|
|
60
|
-
public class Credito extends Auditoria implements Serializable {
|
|
61
|
-
|
|
62
|
-
@Id
|
|
63
|
-
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_tb_credito")
|
|
64
|
-
@SequenceGenerator(name = "seq_tb_credito", sequenceName = "seq_tb_credito",
|
|
65
|
-
schema = "esq_credito", allocationSize = 1)
|
|
66
|
-
@Column(name = "id_credito")
|
|
67
|
-
private Long idCredito;
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Reglas:
|
|
72
|
-
- Siempre `schema` explícito en `@Table` y `@SequenceGenerator`
|
|
73
|
-
- Extender `Auditoria` para campos de auditoría
|
|
74
|
-
- `@Getter @Setter` (no `@Data`) en entities
|
|
75
|
-
- `@Column(name = "...")` con el nombre exacto de la columna en BD
|
|
76
|
-
- Stored procedures: `@NamedStoredProcedureQuery` en la entidad que las invoca
|
|
77
|
-
|
|
78
|
-
## Clase base Auditoria
|
|
79
|
-
|
|
80
|
-
`@MappedSuperclass` que provee 5 campos estándar:
|
|
81
|
-
|
|
82
|
-
```java
|
|
83
|
-
@MappedSuperclass
|
|
84
|
-
@Data
|
|
85
|
-
public abstract class Auditoria {
|
|
86
|
-
@Column(nullable = false, name = "ESTADO")
|
|
87
|
-
protected Integer estado;
|
|
88
|
-
|
|
89
|
-
@Column(nullable = false, updatable = false, name = "USUARIO_REGISTRO")
|
|
90
|
-
protected String usuarioRegistro;
|
|
91
|
-
|
|
92
|
-
@Column(nullable = false, updatable = false, name = "FECHA_REGISTRO")
|
|
93
|
-
protected Date fechaRegistro;
|
|
94
|
-
|
|
95
|
-
@Column(insertable = false, name = "USUARIO_MODIFICACION")
|
|
96
|
-
protected String usuarioModificacion;
|
|
97
|
-
|
|
98
|
-
@Column(insertable = false, name = "FECHA_MODIFICACION")
|
|
99
|
-
protected Date fechaModificacion;
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Al insertar: llamar `setCampoSegIns(usuario, fecha)`.
|
|
104
|
-
Al actualizar: llamar `setCampoSegUpd(estado, usuario, fecha)`.
|
|
105
|
-
|
|
106
|
-
## Repositories
|
|
107
|
-
|
|
108
|
-
```java
|
|
109
|
-
@Repository
|
|
110
|
-
public interface CreditoRepository extends JpaRepository<Credito, Long> {
|
|
111
|
-
|
|
112
|
-
// JPQL
|
|
113
|
-
@Query("SELECT c FROM Credito c WHERE c.solicitud.idSolicitud = :id")
|
|
114
|
-
List<Credito> obtenerPorSolicitud(@Param("id") Long id);
|
|
115
|
-
|
|
116
|
-
// Native query con schema explícito
|
|
117
|
-
@Query(value = "SELECT ... FROM esq_credito.tb_credito c "
|
|
118
|
-
+ "INNER JOIN esq_seguridad.tb_persona p ON ...",
|
|
119
|
-
nativeQuery = true)
|
|
120
|
-
List<PCreditoDTO> obtenerPorDocumento(@Param("doc") String doc);
|
|
121
|
-
|
|
122
|
-
// Stored procedure
|
|
123
|
-
@Procedure(name = "credito.generaCredito")
|
|
124
|
-
Integer generaCredito(@Param("var_usuario") String usuario);
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Native queries siempre con `esq_xxx.tb_xxx` (schema explícito).
|
|
129
|
-
|
|
130
|
-
## Services
|
|
131
|
-
|
|
132
|
-
```java
|
|
133
|
-
// Interface
|
|
134
|
-
public interface CreditoService {
|
|
135
|
-
RespBase<ResponseDTO> generaCredito(ReqBase<ReqCredito> request, String usuario);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Implementación
|
|
139
|
-
@AllArgsConstructor
|
|
140
|
-
@Service
|
|
141
|
-
public class CreditoServiceImpl implements CreditoService {
|
|
142
|
-
private static final Logger LOGGER = LoggerFactory.getLogger(CreditoServiceImpl.class);
|
|
143
|
-
private final CreditoRepository creditoRepository;
|
|
144
|
-
private final ClienteRepository clienteRepository;
|
|
145
|
-
|
|
146
|
-
@Transactional
|
|
147
|
-
@Override
|
|
148
|
-
public RespBase<ResponseDTO> generaCredito(ReqBase<ReqCredito> request, String usuario) {
|
|
149
|
-
// ...
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
Reglas:
|
|
155
|
-
- Constructor injection vía `@AllArgsConstructor` (no `@Autowired`)
|
|
156
|
-
- `@Transactional` en métodos de escritura
|
|
157
|
-
- Logger SLF4J estático por clase
|
|
158
|
-
- Siempre interface + impl
|
|
159
|
-
|
|
160
|
-
## Wrappers Request/Response
|
|
161
|
-
|
|
162
|
-
### Request
|
|
163
|
-
```java
|
|
164
|
-
public class ReqBase<T> {
|
|
165
|
-
private Trace trace; // traceId para trazabilidad
|
|
166
|
-
@NotNull @Valid
|
|
167
|
-
private T payload;
|
|
168
|
-
}
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### Response
|
|
172
|
-
```java
|
|
173
|
-
public class RespBase<T> {
|
|
174
|
-
private Trace trace;
|
|
175
|
-
private Status status; // success + error (code, httpCode, messages)
|
|
176
|
-
private T payload;
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
Uso: `return new RespBase<ResponseDTO>().ok(payload);`
|
|
181
|
-
Error: `return new RespBase<>().error(response, false, "mensaje");`
|
|
182
|
-
|
|
183
|
-
## Convención de DTOs
|
|
184
|
-
|
|
185
|
-
- **`Req` prefix** → Request DTOs: `ReqCredito`, `ReqSituacion` (clases con `@Data`)
|
|
186
|
-
- **`P` prefix** → Projection interfaces para native queries: `PCreditoDTO`, `PClienteDTO`
|
|
187
|
-
- **`R` prefix** → Response DTOs mapeados: `RCreditoDTO`, `RCronogramaDTO` (clases con mapper)
|
|
188
|
-
- **`ResponseDTO`** → DTO genérico con id, data y mensaje
|
|
189
|
-
|
|
190
|
-
## Comunicación entre microservicios
|
|
191
|
-
|
|
192
|
-
- Feign clients en paquete `feign`
|
|
193
|
-
- Paquete `seguridad` para interceptors de autenticación
|
|
194
|
-
|
|
195
|
-
## Build
|
|
196
|
-
|
|
197
|
-
Maven wrapper: `./mvnw` (Linux) o `mvnw.cmd` (Windows). Nunca `mvn` global.
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: frontend-design
|
|
3
|
-
description: "Principios de diseño UX para interfaces CRUD agnósticos al framework (HTML/CSS/UX, sin código Angular/React/Vue). Cubre formularios, listados, modales, navegación y feedback. Reglas de reutilización shared/ y framework-first CSS. Activar al diseñar o implementar mantenimientos CRUD. Para código del stack consultar coding-standards. Referencia transversal sin dependencia de sesiones."
|
|
4
|
-
version: 0.2.0
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Frontend Design
|
|
8
|
-
|
|
9
|
-
Principios de diseño UX para interfaces CRUD de mantenimiento: formularios, listados, modales, navegación y feedback. Contenido **agnóstico a framework** — sólo principios HTML/CSS/UX, sin código Angular/React/Vue. Para el código específico del stack, ver `coding-standards/references/<stack>.md`.
|
|
10
|
-
|
|
11
|
-
## Qué cubre
|
|
12
|
-
|
|
13
|
-
Cinco `references/*.md`, cada uno prescriptivo (qué sí hacer) con un checklist de replicación al final:
|
|
14
|
-
|
|
15
|
-
- **`references/form-patterns.md`** — formularios editar/nuevo. Modelo mental single-slot, layout de 4 cards por dominio, readonly con candado, combos dependientes con hints, switch vs checkbox, campo opcional con switch que colapsa, estado vs bloqueado, placeholders con formato. Incluye los dos principios transversales de reutilización (`shared/`) y framework-first CSS (~90/10).
|
|
16
|
-
|
|
17
|
-
- **`references/list-patterns.md`** — vistas de listado. Estructura header + filter card + data-table + pagination, acciones por fila (iconos + tooltips), empty states, loading global, badges de estado. FormBuilder reactivo preferido sobre `ngModel` directo.
|
|
18
|
-
|
|
19
|
-
- **`references/modal-patterns.md`** — diálogos. Cuándo modal vs vista dedicada, layout (header/body/footer), tamaños categóricos (sm/md/lg), formularios dentro del modal, footer con cancelar + primario + loading state, convención de payload `{ saved: true, data }`, confirmación destructiva. NgbModal recomendado; MatDialog es legado.
|
|
20
|
-
|
|
21
|
-
- **`references/navigation-patterns.md`** — layout de app admin. Sidebar colapsable desde catálogo dinámico, toolbar con contexto (sucursal/usuario/logout), page header con título + descripción + acción primaria, tabs con routing, breadcrumbs, back navigation, lazy loading por módulo.
|
|
22
|
-
|
|
23
|
-
- **`references/feedback-toasts-patterns.md`** — toasts (4 tipos: success/info/warning/danger), loading global vs inline, validación inline de formularios, empty states, errores HTTP (regla: nunca silenciar con `catchError → []`), confirmación destructiva, skeletons.
|
|
24
|
-
|
|
25
|
-
## Qué NO cubre
|
|
26
|
-
|
|
27
|
-
Código de framework específico. Para:
|
|
28
|
-
|
|
29
|
-
- **Angular/TypeScript** (`valueChanges`, `patchValue({emitEvent:false})`, async pipe, normalización de tipos, `concat` vs paralelo, FormBuilder): `coding-standards/references/angular-typescript.md`.
|
|
30
|
-
- **Java/Spring** (sincronización single-slot preservando fila coincidente, fallback cross-tabla, filtros `estado=1` en query): `coding-standards/references/java-spring.md`.
|
|
31
|
-
- **Estructura de proyecto frontend** (`@data`/`@presentation`, `shared/`, `ApiService`): `coding-standards/references/frontend-structure.md`.
|
|
32
|
-
- **Seguridad, logging, git, errores HTTP**: `coding-standards/SKILL.md`.
|
|
33
|
-
|
|
34
|
-
## Cuándo se activa
|
|
35
|
-
|
|
36
|
-
Auto-trigger por contexto, como `coding-standards`. Señales típicas:
|
|
37
|
-
|
|
38
|
-
- El usuario menciona mantenimientos, editar/nuevo, cards, layout, combo dependiente, switch, readonly, listado, filtros, paginación, tabla, modal, confirmación, sidebar, toolbar, breadcrumbs, toast, loading, empty state, validación.
|
|
39
|
-
- El trabajo consiste en diseñar o implementar una vista CRUD nueva (lista, form, modal, navegación) o replicar el patrón a otra entidad.
|
|
40
|
-
- El usuario pregunta por el patrón de un elemento visual ("¿cómo alineo el switch?", "¿uso checkbox o switch aquí?", "¿hay componente reutilizable?").
|
|
41
|
-
- El usuario discute reutilización o framework-first CSS ("¿hay componente en shared?", "prefiero utilities Bootstrap").
|
|
42
|
-
|
|
43
|
-
No depende de sesiones activas.
|
|
44
|
-
|
|
45
|
-
## Convenciones comunes a los refs
|
|
46
|
-
|
|
47
|
-
- **Principios prescriptivos** (lo que sí hacer). Alternativas legadas se mencionan en 1 línea como "no replicar" sin secciones dedicadas.
|
|
48
|
-
- **`[shared-candidato]`** marca componentes compartidos pendientes de extracción — listado consolidado en `references/form-patterns.md` §10 y distribuido donde aparece cada candidato.
|
|
49
|
-
- **Checklist de replicación** al final de cada ref, enumerando los pasos para aplicar los patrones a una vista nueva.
|
|
50
|
-
- **Notas de stack** ("En el proyecto usa X; Y es legado, no replicar") donde las inconsistencias del codebase requieren postura.
|
|
51
|
-
|
|
52
|
-
## Sandbox read-only
|
|
53
|
-
|
|
54
|
-
Canon universal en `../session/references/sandbox-readonly-rules.md`. Esta skill es read-only por diseño — carga principios de UX/UI para mantenimientos CRUD (form patterns, listings, modales, navegación, feedback), no edita ni genera código.
|
|
55
|
-
|
|
56
|
-
En plan mode: describir en el plan file qué refs aplicarían al contexto (form-patterns, list-patterns, modal-patterns, etc.) y los componentes `[shared-candidato]` que el caso justificaría extraer. NO ejecuta `Write`, `Edit`, `MultiEdit`, ni `Bash` con efectos colaterales.
|
|
57
|
-
|
|
58
|
-
Compatible con plan mode sin restricciones adicionales.
|
|
59
|
-
|
|
60
|
-
## Roadmap
|
|
61
|
-
|
|
62
|
-
Los 5 refs cubren el alcance actual tras análisis dirigido del frontend `core-frontend-miscuotas/admin`. Si aparecen dominios nuevos (p. ej. wizards multi-step activos, upload flows complejos, dashboards) con suficiente repetición en el codebase, se añaden como refs adicionales siguiendo el mismo proceso: analizar → generalizar → documentar.
|