Справка: технические страницы только в нашей сборке (build-tag internaldocs)
Из клиентской сборки убрана проектная документация, читавшаяся прямым `strings`:
архитектура обмена с НРД, протокол событий bj↔bj2depo (FTV_M2M, 41 КБ), схема
базы, криптография, QUIK МНП. Это самая крупная и самая дешёвая утечка знаний —
её не нужно было даже декомпилировать.
Файлы перенесены в web/templates/internal/ (выпадают из общего embed-глоба) и
встраиваются только при `go build -tags internaldocs` (internaldocs_on.go).
По умолчанию (клиентский релиз, build-release.sh) страницы заменяются заглушкой
«доступно на портале» (internaldocs_off.go); ссылки на них в индексе справки
показываются под {{if internalDocs}}. Операторские страницы (ручной ввод, робот,
внешние системы, API ЛК) остаются — они нужны на месте.
Клиентская сборка: -27 тыс. символов внутренней документации, «Согласовано
10.09», «Для программиста Fancy», «как устроен обмен» → 0 совпадений.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
This commit is contained in:
+16
-15
@@ -49,16 +49,17 @@ var templateFuncs = template.FuncMap{
|
||||
return template.URL(uri)
|
||||
},
|
||||
// m2mCode — человекочитаемое название кода M2M: «Текст (M2Mxx)».
|
||||
"m2mCode": m2mCodeLabel,
|
||||
"quikCodeMap": quikClientCodeMapText,
|
||||
"curUser": authTemplateFuncs["curUser"],
|
||||
"can": authTemplateFuncs["can"],
|
||||
"devOn": authTemplateFuncs["devOn"],
|
||||
"devLicensed": authTemplateFuncs["devLicensed"],
|
||||
"authOpen": authOpen,
|
||||
"roleTitle": roleTitle,
|
||||
"stageCls": func(r depoQueueRow) string { c, _ := r.StageRu(); return c },
|
||||
"stageText": func(r depoQueueRow) string { _, t := r.StageRu(); return t },
|
||||
"m2mCode": m2mCodeLabel,
|
||||
"quikCodeMap": quikClientCodeMapText,
|
||||
"curUser": authTemplateFuncs["curUser"],
|
||||
"can": authTemplateFuncs["can"],
|
||||
"devOn": authTemplateFuncs["devOn"],
|
||||
"devLicensed": authTemplateFuncs["devLicensed"],
|
||||
"authOpen": authOpen,
|
||||
"internalDocs": func() bool { return internalDocsBuilt },
|
||||
"roleTitle": roleTitle,
|
||||
"stageCls": func(r depoQueueRow) string { c, _ := r.StageRu(); return c },
|
||||
"stageText": func(r depoQueueRow) string { _, t := r.StageRu(); return t },
|
||||
"deref": func(v *float64) float64 {
|
||||
if v == nil {
|
||||
return 0
|
||||
@@ -240,7 +241,7 @@ func newAdmin() (*admin, error) {
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parse admin_help: %w", err)
|
||||
}
|
||||
helpDB, err := parse("admin_help_database.html")
|
||||
helpDB, err := parseInternalDoc("admin_help_database.html")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parse admin_help_database: %w", err)
|
||||
}
|
||||
@@ -248,7 +249,7 @@ func newAdmin() (*admin, error) {
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parse admin_help_lk: %w", err)
|
||||
}
|
||||
helpCrypto, err := parse("admin_help_crypto.html")
|
||||
helpCrypto, err := parseInternalDoc("admin_help_crypto.html")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parse admin_help_crypto: %w", err)
|
||||
}
|
||||
@@ -268,15 +269,15 @@ func newAdmin() (*admin, error) {
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parse admin_help_robot: %w", err)
|
||||
}
|
||||
helpArch, err := parse("admin_help_architecture.html")
|
||||
helpArch, err := parseInternalDoc("admin_help_architecture.html")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parse admin_help_architecture: %w", err)
|
||||
}
|
||||
helpQuik, err := parse("admin_help_quik.html")
|
||||
helpQuik, err := parseInternalDoc("admin_help_quik.html")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parse admin_help_quik: %w", err)
|
||||
}
|
||||
helpFancyEvents, err := parse("admin_help_fancy_events.html")
|
||||
helpFancyEvents, err := parseInternalDoc("admin_help_fancy_events.html")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parse admin_help_fancy_events: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user