refactor(generator): реестры исключений (данные) вместо хардкодов svc.ID==N / ServiceID==N
This commit is contained in:
@@ -476,18 +476,46 @@ func buildOutputsPage(spec types.ServiceSpec, nav string, version string) string
|
||||
b.WriteString("\n")
|
||||
}
|
||||
|
||||
if spec.ServiceID == 90 && containsString(snapshot.OutPaths, "internalConnect.master") && containsString(snapshot.VaultFields, "adminUser") && containsString(snapshot.VaultFields, "adminPass") {
|
||||
b.WriteString("### Пример для связки с Lucee/NodeJS\n\n")
|
||||
b.WriteString("```hcl\n")
|
||||
b.WriteString("testds_connectionString = \"jdbc:postgresql://${nubes_postgres.db2.state_out_flat[\"internalConnect.master\"]}:5432/postgres?sslmode=require\"\n")
|
||||
b.WriteString("testds_username = nubes_postgres.db2.vault_secrets[\"adminUser\"]\n")
|
||||
b.WriteString("testds_password = nubes_postgres.db2.vault_secrets[\"adminPass\"]\n")
|
||||
b.WriteString("```\n")
|
||||
for _, ex := range serviceSpecificDocExamples {
|
||||
if spec.Name == ex.serviceName && hasAllKeys(snapshot.OutPaths, ex.outKeys) && hasAllKeys(snapshot.VaultFields, ex.vaultKeys) {
|
||||
b.WriteString("### Пример для связки с Lucee/NodeJS\n\n")
|
||||
b.WriteString("```hcl\n")
|
||||
b.WriteString("testds_connectionString = \"jdbc:postgresql://${nubes_postgres.db2.state_out_flat[\"internalConnect.master\"]}:5432/postgres?sslmode=require\"\n")
|
||||
b.WriteString("testds_username = nubes_postgres.db2.vault_secrets[\"adminUser\"]\n")
|
||||
b.WriteString("testds_password = nubes_postgres.db2.vault_secrets[\"adminPass\"]\n")
|
||||
b.WriteString("```\n")
|
||||
}
|
||||
}
|
||||
|
||||
return b.String()
|
||||
}
|
||||
|
||||
// serviceSpecificDocExamples — реестр исключений документации (ДАННЫЕ, не логика).
|
||||
//
|
||||
// ЧТО: postgres → дополнительный HCL-пример связки с Lucee/NodeJS.
|
||||
// ЧТО ДЕЛАЕТ: если сервис и требуемые ключи state_out_flat/vault_secrets совпали — рендерит пример.
|
||||
// ПОЧЕМУ: специфичная интеграция postgres↔Lucee/NodeJS, универсальный рендер её не покрывает.
|
||||
// ГДЕ: TOOLS/ARCHITECTURE.md, раздел «Реестр исключений».
|
||||
//
|
||||
// Добавлять только здесь. Grep-гейт TOOLS/scripts/check_hardcoded_service_ids.sh
|
||||
// запрещает сравнения ServiceID == N вне этого файла.
|
||||
var serviceSpecificDocExamples = []struct {
|
||||
serviceName string
|
||||
outKeys []string
|
||||
vaultKeys []string
|
||||
}{
|
||||
{serviceName: "postgres", outKeys: []string{"internalConnect.master"}, vaultKeys: []string{"adminUser", "adminPass"}},
|
||||
}
|
||||
|
||||
func hasAllKeys(haystack []string, needles []string) bool {
|
||||
for _, n := range needles {
|
||||
if !containsString(haystack, n) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func containsString(values []string, target string) bool {
|
||||
for _, value := range values {
|
||||
if value == target {
|
||||
|
||||
Reference in New Issue
Block a user