Ver Fonte

SVI Рабочее сохранение

SVI há 4 meses atrás
pai
commit
dbdb8f1537

+ 2 - 2
v4/cmd/demo/main.go

@@ -3,10 +3,10 @@ package main
 
 import (
 	"gitp78su.ipnodns.ru/svi/kern/v4"
-	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
-var app mKs.IKernelMonolit // Вынесено для тестов
+var app mod_spec.IKernelMonolit // Вынесено для тестов
 
 func main() {
 	app = kern.GetMonolitLocal("Demo monolit")

+ 9 - 8
v4/kern.go

@@ -7,7 +7,6 @@ import (
 
 	mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/module_name"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
 	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
@@ -22,9 +21,11 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/kbus_http/client_bus_http"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/kbus_local"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/kbus_local/client_bus_local"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_keeper"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_wui"
 )
 
@@ -101,7 +102,7 @@ func SleepMs() {
 }
 
 // GetMonolitLocal -- возвращает монолит с локальной шиной.
-func GetMonolitLocal(name string) kspec.IKernelMonolit {
+func GetMonolitLocal(name string) mod_spec.IKernelMonolit {
 	kCtx := kctx.GetKernelCtx()
 	kCtx.Set("isLocal", true, "bus type")
 	for {
@@ -117,7 +118,7 @@ func GetMonolitLocal(name string) kspec.IKernelMonolit {
 }
 
 // GetMonolitHttp -- возвращает монолит с локальной шиной поверх HTTP.
-func GetMonolitHttp(name string) kspec.IKernelMonolit {
+func GetMonolitHttp(name string) mod_spec.IKernelMonolit {
 	kCtx := kctx.GetKernelCtx()
 	_ = kbus_http.GetKernelBusHttp()
 	kCtx.Set("isLocal", false, "bus type")
@@ -135,7 +136,7 @@ func GetMonolitHttp(name string) kspec.IKernelMonolit {
 // NewKernelModule -- возвращает новый модуль на ядре.
 //
 //go:fix inline
-func NewKernelModule(name *module_name.AModuleName) kspec.IKernelModule {
+func NewKernelModule(name module_name.IModuleNameFix) mod_spec.IKernelModule {
 	resMod := kmodule.NewKernelModule(name)
 	return resMod
 }
@@ -159,7 +160,7 @@ func NewClientBusHttp(url string) bus_spec.IBusClient {
 // GetModuleServHttp -- возвращает модуль для IKernelServHttp.
 //
 //go:fix inline
-func GetModuleServHttp() kspec.IKernelModule {
+func GetModuleServHttp() mod_spec.IKernelModule {
 	modServHttp := mod_serv_http.GetModuleServHttp()
 	return modServHttp
 }
@@ -167,7 +168,7 @@ func GetModuleServHttp() kspec.IKernelModule {
 // GetModuleKernelCtx -- возвращает модуль для IKernelCtx.
 //
 //go:fix inline
-func GetModuleKernelCtx() kspec.IKernelModule {
+func GetModuleKernelCtx() mod_spec.IKernelModule {
 	kModCtx := mod_kctx.GetModuleKernelCtx()
 	return kModCtx
 }
@@ -175,7 +176,7 @@ func GetModuleKernelCtx() kspec.IKernelModule {
 // GetModuleKernelKeeper -- возвращает модуль для IKernelKeeper.
 //
 //go:fix inline
-func GetModuleKernelKeeper() kspec.IKernelModule {
+func GetModuleKernelKeeper() mod_spec.IKernelModule {
 	modKernelKeeper := mod_keeper.GetModuleKeeper()
 	return modKernelKeeper
 }
@@ -183,7 +184,7 @@ func GetModuleKernelKeeper() kspec.IKernelModule {
 // GetModuleWui -- возвращает модуль для WUI.
 //
 //go:fix inline
-func GetModuleWui() kspec.IKernelModule {
+func GetModuleWui() mod_spec.IKernelModule {
 	modWui := mod_wui.GetModuleWui()
 	return modWui
 }

+ 2 - 2
v4/kern_test.go

@@ -6,12 +6,12 @@ import (
 	"testing"
 
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
 	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 )
 
 const (
@@ -142,7 +142,7 @@ func (sf *tester) new1() {
 	if monHttp == nil {
 		sf.t.Fatalf("new1(): (http) IKernelMonolit==nil")
 	}
-	modName := defs.NewModuleName("test_mod")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("test_mod"))
 	mod := NewKernelModule(modName)
 	if mod == nil {
 		sf.t.Fatalf("new1(): IKernelModule==nil")

+ 0 - 2
v4/lev0/defs/defs.go

@@ -34,5 +34,3 @@ type StoreKey = store_key.AStoreKey
 func NewStoreKey(val string) *store_key.AStoreKey {
 	return store_key.NewAStoreKey(val)
 }
-
-

+ 7 - 6
v4/lev2/kmodule/kmodule.go

@@ -6,7 +6,6 @@ import (
 
 	mL0 "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/module_name"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/etypes/ebool"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
 	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
@@ -18,21 +17,23 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_ent/topic"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/bus_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/lti/kbus_local"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 // kModule -- модуль на основе ядра.
 type kModule struct {
 	kCtx      kspec.IKernelCtx
 	ctx       comp_spec.ILocalCtx
-	name      *module_name.AModuleName
+	name      module_name.IModuleNameFix
 	bus       bus_spec.IKernelBus
 	timePhase core_spec.ISafeInt
 	strLive   core_spec.ISafeString
-	stat      kspec.IModuleStat
+	stat      mod_spec.IModuleStat
 }
 
 // NewKernelModule -- возвращает новый модуль на основе ядра.
-func NewKernelModule(name *module_name.AModuleName) kspec.IKernelModule {
+func NewKernelModule(name module_name.IModuleNameFix) mod_spec.IKernelModule {
 	helpers.Hassert(name != nil, "NewKernelModule(): name==nil", []any{})
 	kCtx := kctx.GetKernelCtx()
 	sf := &kModule{
@@ -49,7 +50,7 @@ func NewKernelModule(name *module_name.AModuleName) kspec.IKernelModule {
 }
 
 // Stat -- возвращает статистику модуля.
-func (sf *kModule) Stat() kspec.IModuleStat {
+func (sf *kModule) Stat() mod_spec.IModuleStat {
 	return sf.stat
 }
 
@@ -69,7 +70,7 @@ func (sf *kModule) Run() {
 }
 
 // Name -- возвращает уникальное имя модуля.
-func (sf *kModule) Name() *module_name.AModuleName {
+func (sf *kModule) Name() module_name.IModuleNameFix {
 	return sf.name
 }
 

+ 4 - 4
v4/lev2/kmodule/kmodule_test.go

@@ -5,15 +5,15 @@ import (
 	"testing"
 	"time"
 
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 type tester struct {
 	t   *testing.T
-	mod kspec.IKernelModule
+	mod mod_spec.IKernelModule
 	me  *mock_env.MockEnv
 }
 
@@ -81,7 +81,7 @@ func (sf *tester) new() {
 
 func (sf *tester) newGood1() {
 	sf.t.Log("newGood1")
-	modName := defs.NewModuleName("test_module")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("test_module"))
 	sf.mod = NewKernelModule(modName)
 	if name := sf.mod.Name(); name.Get() != "test_module" {
 		sf.t.Fatalf("newGood1(): name(%v)!='test_module'", name)

+ 3 - 3
v4/lev2/kmodule/mod_stat/mod_stat.go

@@ -12,11 +12,11 @@ import (
 	"time"
 
 	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/module_name"
 	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
 	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule/mod_stat/mod_stat_day"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule/mod_stat/mod_stat_sec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 )
 
 // ModStat -- статистика модуля.
@@ -25,11 +25,11 @@ type ModStat struct {
 	timeMinute mKs.ISafeInt             // Интервал ожидания минутного таймера, мсек
 	statMin    *mod_stat_day.ModStatDay // Объект статистики 60 минут
 	statDay    *mod_stat_day.ModStatDay // Объект статистики за последние 24 часа
-	name       *module_name.AModuleName
+	name       module_name.IModuleNameFix
 }
 
 // NewModStat -- возвращает новую статистику модуля.
-func NewModStat(name *module_name.AModuleName) *ModStat {
+func NewModStat(name module_name.IModuleNameFix) *ModStat {
 	mKh.Hassert(name != nil, "NewModuleStat(): name==nil")
 	sf := &ModStat{
 		statSec:    mod_stat_sec.NewModStatSec(),

+ 2 - 2
v4/lev2/kmodule/mod_stat/mod_stat_test.go

@@ -4,7 +4,7 @@ import (
 	"testing"
 	"time"
 
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 )
 
 type tester struct {
@@ -34,7 +34,7 @@ func (sf *tester) new() {
 
 func (sf *tester) newGood1() {
 	sf.t.Log("newGood1")
-	modName := defs.NewModuleName("test")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("test"))
 	sf.stat = NewModStat(modName)
 	// Обязательно установить время сразу, для покрытия тестами
 	sf.stat.timeMinute.Set(1)

+ 9 - 8
v4/lev2/kmonolit/kmonolit.go

@@ -6,13 +6,14 @@ import (
 	"sync"
 
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/module_name"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/etypes/ebool"
 	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
 	mL1 "gitp78su.ipnodns.ru/svi/kern/v4/lev1"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 // kMonolit -- объект модульного монолита.
@@ -24,7 +25,7 @@ type kMonolit struct {
 	isLocal core_spec.EBool
 	isWork  core_spec.ISafeBool
 	isEnd   core_spec.ISafeBool
-	dict    map[*module_name.AModuleName]kspec.IKernelModule // Словарь модулей монолита
+	dict    map[mod_ent.AModuleName]mod_spec.IKernelModule // Словарь модулей монолита
 }
 
 var (
@@ -50,7 +51,7 @@ func GetMonolit(name string) *kMonolit {
 		kCtx:    kCtx,
 		lCtx:    lCtx,
 		name:    name,
-		dict:    map[*module_name.AModuleName]kspec.IKernelModule{},
+		dict:    map[mod_ent.AModuleName]mod_spec.IKernelModule{},
 		isWork:  mL1.NewSafeBool(false),
 		isEnd:   mL1.NewSafeBool(false),
 		isLocal: ebool.NewEBool(isLocal),
@@ -59,7 +60,7 @@ func GetMonolit(name string) *kMonolit {
 	sf.kCtx.Set("monolitName", name, "name of monolit")
 	sf.kCtx.Set("monolit", sf, "monolit-app")
 	mon = sf
-	_ = kspec.IKernelMonolit(sf)
+	_ = mod_spec.IKernelMonolit(sf)
 	return sf
 }
 
@@ -79,13 +80,13 @@ func (sf *kMonolit) Name() string {
 }
 
 // Add -- добавляет модуль в монолит.
-func (sf *kMonolit) Add(module kspec.IKernelModule) {
+func (sf *kMonolit) Add(module mod_spec.IKernelModule) {
 	sf.kCtx.RLock()
 	defer sf.kCtx.RUnlock()
 	mKh.Hassert(module != nil, "kMonolit.Add(): module==nil", []any{})
-	_, isOk := sf.dict[module.Name()]
+	_, isOk := sf.dict[module.Name().Get()]
 	mKh.Hassert(!isOk, "kMonolit.Add(): module(%v) already exists", []any{module.Name()})
-	sf.dict[module.Name()] = module
+	sf.dict[module.Name().Get()] = module
 	sf.log.Debug("kMonolit.Add(): module='%v'", module.Name())
 	if sf.isWork.Get() {
 		go module.Run()
@@ -93,7 +94,7 @@ func (sf *kMonolit) Add(module kspec.IKernelModule) {
 	}
 	key := fmt.Sprintf("module_%v", len(sf.dict))
 	moduleName := module.Name()
-	sf.lCtx.Set(key, module, "kMonolit.Add(): module="+moduleName.Get())
+	sf.lCtx.Set(key, module, "kMonolit.Add(): module="+moduleName.String())
 }
 
 // Run -- запускает монолит в работу.

+ 7 - 9
v4/lev2/kmonolit/kmonolit_test.go

@@ -5,13 +5,11 @@ import (
 	"testing"
 	"time"
 
-	mKd "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/module_name"
-
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 const (
@@ -22,7 +20,7 @@ const (
 type tester struct {
 	t   *testing.T
 	me  *mock_env.MockEnv
-	mon kspec.IKernelMonolit
+	mon mod_spec.IKernelMonolit
 }
 
 func TestKernMono(t *testing.T) {
@@ -62,10 +60,10 @@ func (sf *tester) add() {
 }
 
 type mod struct {
-	kspec.IKernelModule
+	mod_spec.IKernelModule
 }
 
-func newMod(name *module_name.AModuleName) kspec.IKernelModule {
+func newMod(name module_name.IModuleNameFix) mod_spec.IKernelModule {
 	sf := &mod{
 		IKernelModule: kmodule.NewKernelModule(name),
 	}
@@ -76,14 +74,14 @@ func (sf *mod) Run() {}
 
 func (sf *tester) addGood1() {
 	sf.t.Log("addGood1")
-	modName := mKd.NewModuleName("test_module")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("test_module"))
 	mod := newMod(modName)
 	sf.mon.Add(mod)
 }
 
 func (sf *tester) run() {
 	sf.t.Log("run")
-	modName := mKd.NewModuleName("test_mod1")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("test_mod1"))
 	mod := newMod(modName)
 	sf.mon.Add(mod)
 	sf.mon.Run()

+ 13 - 4
v4/lev3/mod_ent/mod_ent.go

@@ -31,10 +31,19 @@ func ModuleNumFromStr(str string) core_spec.IResult[mod_num.IModNumFix] {
 	return mod_num.FromStr(str)
 }
 
-// ModuleName -- уникальное имя модуля.
-type ModuleName = module_name.AModuleName
+// AModuleName -- уникальное имя модуля.
+//
+//go:fixinline
+type AModuleName = module_name.AModuleName
 
-// NewModuleName -- создать новое уникальное имя модуля.
+// IModuleNameFix -- фиксированное имя модуля.
 //
 //go:fix inline
-var NewModuleName = module_name.NewAModuleName
+type IModuleNameFix = module_name.IModuleNameFix
+
+// NewModuleNameFix -- создать новое уникальное имя модуля.
+//
+//go:fix inline
+func NewModuleNameFix(name AModuleName) module_name.IModuleNameFix {
+	return module_name.NewModuleName(name)
+}

+ 22 - 11
v4/lev3/mod_ent/module_name/module_name.go

@@ -3,32 +3,43 @@ package module_name
 
 import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark"
 )
 
 // AModuleName -- уникальное имя модуля.
-type AModuleName struct {
-	val *quark.QStr[quark.Fix]
+type AModuleName string
+
+// IModuleNameFix -- фиксированное имя модуля.
+type IModuleNameFix interface {
+	// Get -- получить имя модуля
+	Get() AModuleName
+	// String -- строковое представление имени модуля
+	String() string
+}
+
+type ModuleName struct {
+	name AModuleName
 }
 
-// NewAModuleName -- создать новое имя модуля.
+// NewModuleName -- создать новое имя модуля.
 //
 //go:fix inline
-func NewAModuleName(val string) *AModuleName {
+func NewModuleName(val AModuleName) *ModuleName {
 	helpers.Hassert(val != "", "NewAModuleName(): val is empty")
-	return &AModuleName{
-		val: quark.NewQStr(val),
+	sf := &ModuleName{
+		name: val,
 	}
+	_ = IModuleNameFix(sf)
+	return sf
 }
 
 // String -- строковое представление.
 //
 //go:fix inline
-func (a *AModuleName) String() string {
-	return a.val.Get()
+func (sf *ModuleName) String() string {
+	return string(sf.name)
 }
 
 // Get -- получить строковое представление.
-func (a *AModuleName) Get() string {
-	return a.val.Get()
+func (sf *ModuleName) Get() AModuleName {
+	return sf.name
 }

+ 8 - 8
v4/lev3/mod_ent/module_name/module_name_test.go

@@ -5,25 +5,25 @@ import "testing"
 func TestNewAModuleName_ok(t *testing.T) {
 	t.Parallel()
 
-	cases := []string{
+	cases := []AModuleName{
 		"mod",
 		"module_1",
 		"модуль",
 	}
 
 	for _, tc := range cases {
-		t.Run(tc, func(t *testing.T) {
+		t.Run(string(tc), func(t *testing.T) {
 			t.Parallel()
 
-			mn := NewAModuleName(tc)
+			mn := NewModuleName(tc)
 			if mn == nil {
 				t.Fatalf("NewAModuleName(): nil")
 			}
-			if got := mn.val.Get(); got != tc {
-				t.Fatalf("Get(): got=%q want=%q", got, tc)
+			if mn.name != tc {
+				t.Fatalf("Get(): got=%q want=%q", mn.name, tc)
 			}
-			if got := mn.val.Get(); got != tc {
-				t.Fatalf("String(): got=%q want=%q", got, tc)
+			if mn.name != tc {
+				t.Fatalf("String(): got=%q want=%q", mn.name, tc)
 			}
 		})
 	}
@@ -38,5 +38,5 @@ func TestNewAModuleName_empty_panics(t *testing.T) {
 		}
 	}()
 
-	_ = NewAModuleName("")
+	_ = NewModuleName("")
 }

+ 4 - 3
v4/lev3/mod_kctx/mod_kctx.go

@@ -5,20 +5,21 @@ import (
 	"sync"
 
 	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/http_api"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/page_module"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/page_monolit"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 // ModuleKernelCtx -- модуль контекста ядра.
 type ModuleKernelCtx struct {
-	kspec.IKernelModule
+	mod_spec.IKernelModule
 	kCtx      kspec.IKernelCtx
 	kServHttp kspec.IKernelServerHttp
 	log       comp_spec.ILogBuf
@@ -36,7 +37,7 @@ func GetModuleKernelCtx() *ModuleKernelCtx {
 	if mod != nil {
 		return mod
 	}
-	modName := defs.NewModuleName("kCtx")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("kCtx"))
 	sf := &ModuleKernelCtx{
 		kCtx:          kctx.GetKernelCtx(),
 		IKernelModule: kmodule.NewKernelModule(modName),

+ 2 - 1
v4/lev3/mod_kctx/mod_kctx_test.go

@@ -8,6 +8,7 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 const (
@@ -19,7 +20,7 @@ type tester struct {
 	t    *testing.T
 	me   *mock_env.MockEnv
 	kCtx kspec.IKernelCtx
-	mod  kspec.IKernelModule
+	mod  mod_spec.IKernelModule
 }
 
 func TestModKernelCtx(t *testing.T) {

+ 6 - 5
v4/lev3/mod_keeper/mod_keeper.go

@@ -4,21 +4,22 @@ package mod_keeper
 import (
 	"sync"
 
-	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/http_api"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/page_module"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/page_monolit"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 // ModuleKeeper -- модуль сторожа.
 type ModuleKeeper struct {
-	kspec.IKernelModule
+	mod_spec.IKernelModule
 	kCtx      kspec.IKernelCtx
 	kServHttp kspec.IKernelServerHttp
 	log       comp_spec.ILogBuf
@@ -37,7 +38,7 @@ func GetModuleKeeper() *ModuleKeeper {
 		return mod
 	}
 	kServHttp := kserv_http.GetKernelServHttp()
-	modName := defs.NewModuleName("kKeeper")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("kKeeper"))
 	kModKeep := kmodule.NewKernelModule(modName)
 	sf := &ModuleKeeper{
 		kCtx:          kctx.GetKernelCtx(),
@@ -60,6 +61,6 @@ func (sf *ModuleKeeper) Run() {
 }
 
 // IsWork -- признак работы модуля.
-func (sf *ModuleKeeper) IsWork() mKs.EBool {
+func (sf *ModuleKeeper) IsWork() core_spec.EBool {
 	return sf.kCtx.Wg().IsWork()
 }

+ 2 - 1
v4/lev3/mod_keeper/mod_keeper_test.go

@@ -8,6 +8,7 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 const (
@@ -19,7 +20,7 @@ type tester struct {
 	t    *testing.T
 	me   *mock_env.MockEnv
 	kCtx kspec.IKernelCtx
-	mod  kspec.IKernelModule
+	mod  mod_spec.IKernelModule
 }
 
 func TestModKeeper(t *testing.T) {

+ 4 - 3
v4/lev3/mod_serv_http/btn_modules/btn_modules.go

@@ -11,6 +11,7 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui"
 	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 type BtnModules struct {
@@ -46,7 +47,7 @@ func (sf *BtnModules) clickMonolit(dict map[string]string) mL0.IResult[string] {
 		err := fmt.Errorf("clickMonolit(): monolit module not found")
 		return mL0.NewErr[string](err)
 	}
-	mon := optMonolit.Some().Val().(kspec.IKernelMonolit)
+	mon := optMonolit.Some().Val().(mod_spec.IKernelMonolit)
 	chLst := mon.Ctx().SortedList()
 	strOut := ``
 	for _, val := range chLst {
@@ -58,8 +59,8 @@ func (sf *BtnModules) clickMonolit(dict map[string]string) mL0.IResult[string] {
 		strRow := strBlockRow
 		strRow = strings.ReplaceAll(strRow, "{.id}", id)
 		strRow = strings.ReplaceAll(strRow, "{.key}", val.Key())
-		moduleName := val.Val().(kspec.IKernelModule).Name().Get()
-		strRow = strings.ReplaceAll(strRow, "{.name}", moduleName)
+		moduleName := val.Val().(mod_spec.IKernelModule).Name().Get()
+		strRow = strings.ReplaceAll(strRow, "{.name}", string(moduleName))
 		type_ := fmt.Sprintf("%#T", val.Val())
 		type_ = strings.ReplaceAll(type_, ".", ".<br>")
 		strRow = strings.ReplaceAll(strRow, "{.type}", type_)

+ 2 - 2
v4/lev3/mod_serv_http/btn_modules/btn_modules_test.go

@@ -3,10 +3,10 @@ package btn_modules
 import (
 	"testing"
 
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmonolit"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 )
 
 func TestBtnModules(t *testing.T) {
@@ -17,7 +17,7 @@ func TestBtnModules(t *testing.T) {
 	kCtx := kctx.GetKernelCtx()
 	kCtx.Set("isLocal", true, "test")
 	kMon := kmonolit.GetMonolit("test")
-	modName := defs.NewModuleName("test")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("test"))
 	mod := kmodule.NewKernelModule(modName)
 	kMon.Add(mod)
 	if str := btn.clickMonolit(map[string]string{}).

+ 2 - 2
v4/lev3/mod_serv_http/btn_monolit/btn_monolit_test.go

@@ -3,10 +3,10 @@ package btn_monolit
 import (
 	"testing"
 
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmonolit"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 )
 
 func TestBtnModules(t *testing.T) {
@@ -17,7 +17,7 @@ func TestBtnModules(t *testing.T) {
 	kCtx := kctx.GetKernelCtx()
 	kCtx.Set("isLocal", true, "test")
 	kMon := kmonolit.GetMonolit("test")
-	modName := defs.NewModuleName("test")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("test"))
 	mod := kmodule.NewKernelModule(modName)
 	kMon.Add(mod)
 	if str := btn.clickMonolit(map[string]string{}).

+ 6 - 5
v4/lev3/mod_serv_http/mod_serv_http.go

@@ -4,20 +4,21 @@ package mod_serv_http
 import (
 	"sync"
 
-	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/http_api"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/page_module"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/page_monolit"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 // ModuleServHttp -- модуль HTTP-сервера.
 type ModuleServHttp struct {
-	kspec.IKernelModule
+	mod_spec.IKernelModule
 	kServHttp kspec.IKernelServerHttp
 	log       comp_spec.ILogBuf
 }
@@ -34,7 +35,7 @@ func GetModuleServHttp() *ModuleServHttp {
 	if mod != nil {
 		return mod
 	}
-	modName := defs.NewModuleName("kServHttp")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("kServHttp"))
 	sf := &ModuleServHttp{
 		IKernelModule: kmodule.NewKernelModule(modName),
 		kServHttp:     kserv_http.GetKernelServHttp(),
@@ -55,6 +56,6 @@ func (sf *ModuleServHttp) Run() {
 }
 
 // IsWork -- признак работы модуля.
-func (sf *ModuleServHttp) IsWork() mKs.EBool {
+func (sf *ModuleServHttp) IsWork() core_spec.EBool {
 	return sf.kServHttp.IsWork()
 }

+ 2 - 1
v4/lev3/mod_serv_http/mod_serv_http_test.go

@@ -9,6 +9,7 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 const (
@@ -20,7 +21,7 @@ type tester struct {
 	t   *testing.T
 	me  *mock_env.MockEnv
 	ctx kspec.IKernelCtx
-	mod kspec.IKernelModule
+	mod mod_spec.IKernelModule
 }
 
 func TestModServHttp(t *testing.T) {

+ 7 - 6
v4/lev3/mod_serv_http/page_module/page_module.go

@@ -13,6 +13,7 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/mod_num"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 // PageModule -- страница показа модуля.
@@ -82,7 +83,7 @@ func (sf *PageModule) postModuleLog(ctx fiber.Ctx) error {
 		strOut += msg + "\n"
 	}
 	strOut = strings.ReplaceAll(strLogBlock, "{.log}", strOut)
-	strOut = strings.ReplaceAll(strOut, "{.name}", module.Name().Get())
+	strOut = strings.ReplaceAll(strOut, "{.name}", module.Name().String())
 	strOut = strings.ReplaceAll(strOut, "{.id}", _modNum)
 	return ctx.SendString(strOut)
 }
@@ -138,7 +139,7 @@ func (sf *PageModule) postModuleCtx(ctx fiber.Ctx) error {
 	}
 	strOut = strings.ReplaceAll(strCtxRowBlock, "{.ctx_block}", strOut)
 	strOut = strings.ReplaceAll(strOut, "{.id}", modNum.String())
-	strOut = strings.ReplaceAll(strOut, "{.name}", module.Name().Get())
+	strOut = strings.ReplaceAll(strOut, "{.name}", module.Name().String())
 	return ctx.SendString(strOut)
 }
 
@@ -210,7 +211,7 @@ func (sf *PageModule) postModule(ctx fiber.Ctx) error {
 	}
 	{
 		strOut = strings.ReplaceAll(strStateModule, "{.mod_state}", strOut)
-		strOut = strings.ReplaceAll(strOut, "{.name}", module.Name().Get())
+		strOut = strings.ReplaceAll(strOut, "{.name}", module.Name().String())
 		strOut = strings.ReplaceAll(strOut, "{.id}", modNum.String())
 	}
 
@@ -275,12 +276,12 @@ func (sf *PageModule) postSvgSec(ctx fiber.Ctx) error {
 }
 
 // Возвращает модуль.
-func (sf *PageModule) getModule(modNum mod_num.IModNumFix) (kspec.IKernelModule, comp_spec.ICtxValue) {
+func (sf *PageModule) getModule(modNum mod_num.IModNumFix) (mod_spec.IKernelModule, comp_spec.ICtxValue) {
 	optMonolit := sf.ctx.Get("monolit")
 	if optMonolit.IsNone() {
 		return nil, nil
 	}
-	mon := optMonolit.Some().Val().(kspec.IKernelMonolit)
+	mon := optMonolit.Some().Val().(mod_spec.IKernelMonolit)
 	chLst := mon.Ctx().SortedList()
 	var (
 		val    comp_spec.ICtxValue
@@ -296,6 +297,6 @@ func (sf *PageModule) getModule(modNum mod_num.IModNumFix) (kspec.IKernelModule,
 	if !isFind {
 		return nil, nil
 	}
-	mod := val.Val().(kspec.IKernelModule)
+	mod := val.Val().(mod_spec.IKernelModule)
 	return mod, val
 }

+ 6 - 5
v4/lev3/mod_serv_http/page_module/page_module_test.go

@@ -8,13 +8,14 @@ import (
 
 	"github.com/gofiber/fiber/v3"
 
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmodule"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmonolit"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 type tester struct {
@@ -110,7 +111,7 @@ func (sf *tester) comSvgPost() *fiber.App {
 	sf.t.Log("comSvgPost")
 	mon := kmonolit.GetMonolit("test_monolit")
 	ctxMon := mon.Ctx()
-	modName := defs.NewModuleName("kCtx")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("kCtx"))
 	kMod := kmodule.NewKernelModule(modName)
 	kMod.Log().Debug("test msg")
 	ctxMod := kMod.Ctx()
@@ -127,7 +128,7 @@ func (sf *tester) postSvgMinBad1() {
 	sf.comSvgPost()
 	mon := kmonolit.GetMonolit("test_monolit")
 	ctxMon := mon.Ctx()
-	modName := defs.NewModuleName("kCtx")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("kCtx"))
 	kMod := kmodule.NewKernelModule(modName)
 	kMod.Log().Debug("test msg")
 	ctxMod := kMod.Ctx()
@@ -256,7 +257,7 @@ func (sf *tester) postModule1() {
 	sf.t.Log("postModule1")
 	mon := kmonolit.GetMonolit("test_monolit")
 	ctxMon := mon.Ctx()
-	modName := defs.NewModuleName("kCtx")
+	modName := module_name.IModuleNameFix(module_name.NewModuleName("kCtx"))
 	module := kmodule.NewKernelModule(modName)
 	module.Log().Debug("test msg")
 	module.Log().Debug("test msg")
@@ -285,7 +286,7 @@ func (sf *tester) postModule1() {
 func (sf *tester) postModuleLog() {
 	sf.t.Log("postModuleLog")
 	monCtx := sf.ctx.Get("monolit").Hassert("postModuleLog()")
-	mon := monCtx.Val().(kspec.IKernelMonolit)
+	mon := monCtx.Val().(mod_spec.IKernelMonolit)
 	log := mon.Log()
 	log.Debug("test msg")
 	fiberApp := sf.serv.Fiber()

+ 4 - 3
v4/lev3/mod_serv_http/page_monolit/page_monolit.go

@@ -13,6 +13,7 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/btn_modules"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/btn_monolit"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 // PageMonolit -- страница показа монолита.
@@ -66,7 +67,7 @@ func (sf *PageMonolit) postMonolitLog(ctx fiber.Ctx) error {
 		err := fmt.Errorf("PageMonolit.postMonolitLog(): mod='monolit', not found monolit in kernel ctx")
 		return err
 	}
-	mon := optMonolit.Some().Val().(kspec.IKernelMonolit)
+	mon := optMonolit.Some().Val().(mod_spec.IKernelMonolit)
 	_log := mon.Log()
 	strOut := ""
 	for i := range 100 {
@@ -93,7 +94,7 @@ func (sf *PageMonolit) postMonolitCtx(ctx fiber.Ctx) error {
 		err := fmt.Errorf("PageMonolit.postMonolitCtx(): mod='monolit', not found monolit in kernel ctx")
 		return err
 	}
-	mon := optMon.Some().Val().(kspec.IKernelMonolit)
+	mon := optMon.Some().Val().(mod_spec.IKernelMonolit)
 	chLst := mon.Ctx().SortedList()
 	strOut := ``
 	for _, val := range chLst {
@@ -124,7 +125,7 @@ func (sf *PageMonolit) postMonolitState(ctx fiber.Ctx) error {
 		return err
 	}
 	ctxMon := optMonolit.Some()
-	mon := ctxMon.Val().(kspec.IKernelMonolit)
+	mon := ctxMon.Val().(mod_spec.IKernelMonolit)
 	dictState["{.name}"] = mon.Name()
 	dictState["{.createAt}"] = ctxMon.CreateAt()
 	dictState["{.updateAt}"] = ctxMon.UpdateAt()

+ 2 - 1
v4/lev3/mod_serv_http/page_monolit/page_monolit_test.go

@@ -11,6 +11,7 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kmonolit"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kserv_http"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 type tester struct {
@@ -38,7 +39,7 @@ func (sf *tester) postMonolitLog() {
 	sf.t.Log("postMonolitCtx")
 	mon := sf.ctx.Get("monolit").
 		Hassert("postMonolitLog()").
-		Val().(kspec.IKernelMonolit)
+		Val().(mod_spec.IKernelMonolit)
 	log := mon.Log()
 	log.Debug("test msg")
 	fiberApp := sf.serv.Fiber()

+ 3 - 3
v4/lev2/kspec/ikernel_module.go → v4/lev3/mod_spec/imod_base.go

@@ -1,9 +1,9 @@
-package kspec
+package mod_spec
 
 import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/module_name"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent/module_name"
 )
 
 // IKernelModule -- интерфейс к модулю на основе ядра.
@@ -13,7 +13,7 @@ type IKernelModule interface {
 	// IsWork -- возвращает состояние модуля
 	IsWork() core_spec.EBool
 	// Name -- возвращает уникальное имя модуля
-	Name() *module_name.AModuleName
+	Name() module_name.IModuleNameFix
 	// Ctx -- возвращает контекст модуля
 	Ctx() comp_spec.ILocalCtx
 	// Log -- возвращает буферный лог модуля

+ 1 - 1
v4/lev2/kspec/ikernel_monolit.go → v4/lev3/mod_spec/imod_monolit.go

@@ -1,4 +1,4 @@
-package kspec
+package mod_spec
 
 import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"

+ 1 - 1
v4/lev2/kspec/imodule_stat.go → v4/lev3/mod_spec/imod_stat.go

@@ -1,4 +1,4 @@
-package kspec
+package mod_spec
 
 // IModuleStat -- статистика модуля.
 type IModuleStat interface {

+ 4 - 3
v4/lev3/mod_wui/mod_wui.go

@@ -11,7 +11,6 @@ import (
 	"github.com/gofiber/fiber/v3/middleware/adaptor"
 
 	mKs "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
-	"gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
 	mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev1/comp_spec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kctx"
@@ -20,14 +19,16 @@ import (
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/kspec"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui"
 	mWt "gitp78su.ipnodns.ru/svi/kern/v4/lev2/wui/wui_types"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_ent"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/http_api"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/page_module"
 	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_serv_http/page_monolit"
+	"gitp78su.ipnodns.ru/svi/kern/v4/lev3/mod_spec"
 )
 
 // ModuleWui -- модуль WUI.
 type ModuleWui struct {
-	kspec.IKernelModule
+	mod_spec.IKernelModule
 	kCtx      kspec.IKernelCtx
 	wCtx      mWt.IWuiCtx
 	kServHttp kspec.IKernelServerHttp
@@ -46,7 +47,7 @@ func GetModuleWui() *ModuleWui {
 	if mod != nil {
 		return mod
 	}
-	modName := defs.NewModuleName("wui")
+	modName := mod_ent.NewModuleNameFix("wui")
 	sf := &ModuleWui{
 		kCtx:          kctx.GetKernelCtx(),
 		wCtx:          wui.GetWuiCtx(),