Таблица с редактированием и копирование настроек между доменами #25

Closed
opened 2026-10-26 00:03:35 +01:00 by yury · 6 comments
Owner

Поручение владельца26.10.2026: убрать даты сохранения заметок и версии конфигов; редактировать значения непосредственно в основной таблице доменов, сохранять; под таблицей копирование сохранённых настроек из выбранного домена в несколько доменов с checkbox. Отдельный configeditor заменить этим интерфейсом. Сначала обязательно показать и согласовать эскиз основной таблицы и копирования, до реализации.

План задачи: 1) уточнить значения полей/границы копирования по эскизу, сохранить спецификацию в KB; 2) после согласования — inline editor на существующем CAS/Jobs/validation, source saved config/target checkbox; 3) реальные UIinput/save/copy/conflict/error/regressions, review; 4) разрешённый scopedrelease, productionприёмка/KB/Giteaитог.
Текущий этап — только эскиз. Runtime/код приложения/production не изменяются до согласования. Связано#22/#23/#24, сохранять obsoletechbguard и скрытиеrequisites.

Поручение владельца26.10.2026: убрать даты сохранения заметок и версии конфигов; редактировать значения непосредственно в основной таблице доменов, сохранять; под таблицей копирование сохранённых настроек из выбранного домена в несколько доменов с checkbox. Отдельный configeditor заменить этим интерфейсом. Сначала обязательно показать и согласовать эскиз основной таблицы и копирования, до реализации. План задачи: 1) уточнить значения полей/границы копирования по эскизу, сохранить спецификацию в KB; 2) после согласования — inline editor на существующем CAS/Jobs/validation, source saved config/target checkbox; 3) реальные UIinput/save/copy/conflict/error/regressions, review; 4) разрешённый scopedrelease, productionприёмка/KB/Giteaитог. Текущий этап — только эскиз. Runtime/код приложения/production не изменяются до согласования. Связано#22/#23/#24, сохранять obsoletechbguard и скрытиеrequisites.
Author
Owner

Подготовлены запрошенные два эскиза: output/preland25/main-table-sketch.png и copy-sketch.png, общий interface-sketch.html. ОбеPNG отрендерены вDockerChromium и визуальнопроверены. Код/runtime/productionнеизменны. KBчерновик Спеки/2026-10-26 Таблица и копирование настроек — 25.md, статусожидаетсогласования.

ПредлагаемыйUI: inlineвариант/вес/расчётнаядоля/default-radio, заметкивстрокеимени, сохранениеподколонкойдомена; датыnotes/hashверсийубраны. Copysource любойдоменdropdown, destinationmultiplecheckbox/sourceexcluded, однакнопка. Предлагаемыйscopehost+canonicalUTMизсохранённогоconfig; notes/ZIP/requisites/unknownнепередавать. Редактированиевесоввместопроцентов — тоже предложениеэскиза, неутверждённоеправило. ВладелецполучитобеPNG; реализацияпослесогласования, задачаостаётсяOPEN.

Подготовлены запрошенные два эскиза: output/preland25/main-table-sketch.png и copy-sketch.png, общий interface-sketch.html. ОбеPNG отрендерены вDockerChromium и визуальнопроверены. Код/runtime/productionнеизменны. KBчерновик Спеки/2026-10-26 Таблица и копирование настроек — 25.md, статусожидаетсогласования. ПредлагаемыйUI: inlineвариант/вес/расчётнаядоля/default-radio, заметкивстрокеимени, сохранениеподколонкойдомена; датыnotes/hashверсийубраны. Copysource любойдоменdropdown, destinationmultiplecheckbox/sourceexcluded, однакнопка. Предлагаемыйscopehost+canonicalUTMизсохранённогоconfig; notes/ZIP/requisites/unknownнепередавать. Редактированиевесоввместопроцентов — тоже предложениеэскиза, неутверждённоеправило. ВладелецполучитобеPNG; реализацияпослесогласования, задачаостаётсяOPEN.
Author
Owner

Владелец26.10: «Да, это именно то, что нужно», просит аккуратный дизайн и независимые роли; затем явно «выкладывай в ... Проду». Эскизы/weightedit+computedpct и scopehost+UTM/безnotesassets утверждены. Старыйeditor/apply заменяетсяmatrix+copy, соседниеbuilder/ZIP/connections/history сохранены. Спецификация обновлена, план KB Планы/2026-10-26 Таблица и копирование — план25.md, T1copybackend/T2inlinefrontend/T3independentreview/integration/productionQA.

CopyAPI planned POST /api/copy strict {source:{id,version},targets:[{id,version}]}, серверныйсохранённыйsnapshot, pertargetCAS/Jobs/validation/backup; inlineSaveexistingapply. Versions остаютсявAPI/state, скрытывUI; notesdatesскрыты. Отсутствующуюгруппуисточника не трактуеммолча: владельцу заданshortquestion сохранитьилиудалитьуtarget; остальноепродолжается. ProductionQA сначалаdrycompareprojection наэквивалентныхцелях иonlynoopsave/copy безвмешательствавбизнесправила. Коммит/выкатещёневыполнены.

Владелец26.10: «Да, это именно то, что нужно», просит аккуратный дизайн и независимые роли; затем явно «выкладывай в ... Проду». Эскизы/weightedit+computedpct и scopehost+UTM/безnotesassets утверждены. Старыйeditor/apply заменяетсяmatrix+copy, соседниеbuilder/ZIP/connections/history сохранены. Спецификация обновлена, план KB Планы/2026-10-26 Таблица и копирование — план25.md, T1copybackend/T2inlinefrontend/T3independentreview/integration/productionQA. CopyAPI planned POST /api/copy strict {source:{id,version},targets:[{id,version}]}, серверныйсохранённыйsnapshot, pertargetCAS/Jobs/validation/backup; inlineSaveexistingapply. Versions остаютсявAPI/state, скрытывUI; notesdatesскрыты. Отсутствующуюгруппуисточника не трактуеммолча: владельцу заданshortquestion сохранитьилиудалитьуtarget; остальноепродолжается. ProductionQA сначалаdrycompareprojection наэквивалентныхцелях иonlynoopsave/copy безвмешательствавбизнесправила. Коммит/выкатещёневыполнены.
Author
Owner

Прямой ответ владельца на missinggroup: «если вдруг нет, то ни в коем случае не удалять группу в рецепиенте». Решение: отсутствующая группа/host источника не входят в copyprojection, соответствующие значения получателя остаются без изменения. После выпуска владелец сам выполнит боевую синхронизацию соZoomStage; агент не делает её за владельца.

Согласован backendinterface: POST /api/copy strict source{id,version64hex}, targetsarray1..100{id,version}, unknownkeys/duplicates/sourceintarget rejected. 202{job}; serverreads savedsource matchingversion409, snapshots onlyhost+canonical8default/weights (semantic→numeric), targetalias preserved черезexistingadaptChange, targetunknownprops/notes/assets/requisitesне копируются. Выделенный immutablejobtypecopy соsource metadata позволяет видетьоперациювжурнале; targetCAS/backup/validation/indpic/catalog иrecoveryобщие сapply. Sourceпослеenqueueможетизмениться — queuedjobиспользуетвыбранныйсохранённыйsnapshot, несвежиезначения. Этоimplementationdetail сохранённогоcopy, неlivebinding.

Роли backendPHP/frontendUI/independentdesigner-review начали независимые области; root ведётинтеграцию/prodQA. Actualdataне изменены.

Прямой ответ владельца на missinggroup: «если вдруг нет, то ни в коем случае не удалять группу в рецепиенте». Решение: отсутствующая группа/host источника не входят в copyprojection, соответствующие значения получателя остаются без изменения. После выпуска владелец сам выполнит боевую синхронизацию соZoomStage; агент не делает её за владельца. Согласован backendinterface: POST /api/copy strict source{id,version64hex}, targetsarray1..100{id,version}, unknownkeys/duplicates/sourceintarget rejected. 202{job}; serverreads savedsource matchingversion409, snapshots onlyhost+canonical8default/weights (semantic→numeric), targetalias preserved черезexistingadaptChange, targetunknownprops/notes/assets/requisitesне копируются. Выделенный immutablejobtypecopy соsource metadata позволяет видетьоперациювжурнале; targetCAS/backup/validation/indpic/catalog иrecoveryобщие сapply. Sourceпослеenqueueможетизмениться — queuedjobиспользуетвыбранныйсохранённыйsnapshot, несвежиезначения. Этоimplementationdetail сохранённогоcopy, неlivebinding. Роли backendPHP/frontendUI/independentdesigner-review начали независимые области; root ведётинтеграцию/prodQA. Actualdataне изменены.
Author
Owner

T1backendFROZEN: strictCopyAPI/serverimmutable snapshot, source409/targetCAS partialsuccess, alias+nestedmetadata/JSONtypes/missingpreserve, actualindpic/catalog/recovery/obsoletechbguards. RED→GREEN49copychecks, fullcomposer9suites319PASS exit0; ведущийнезависимоповторилfullgate. IndependentT1review APPROVE. Копируемыйdefaultможетвзятьint/stringизsource, targetschemaозначаетaliassemanticshape; unrelatedtypesсохраняются. Отчёты output/preland25/backend-report.md, backend-composer-green.log, root-composer-gate.log.

Свежий privatepreland25-before снятreadonlyсо4целей: canonicalcopy scope stage==ila==ika; pixelотличаетсяtp/cons, невыбиратьего дляQA. Productionпослерелизапровериттолькокопированиеstage→ila+ikaэквивалентныхнастроек, не массовуюсинхронизациюowner. Actualbusinessvaluesнеизменять; rawformatdifferenceтолькопослестрогогоsemanticcompare/CASможновернуть. Настройкиproductionпоканеизменены.

T2frontendещёполируется: независимыеoperationtargets дляZIP/history, стабильныеdraftDOM/epoch приreads, dynamicrename/add/deleteцелях, source/recipientdirtycopyblocks. Rootpreflightнашёл6рисков и передалfrontendbeforefreeze; ониневыдаютсязавыпущенныедефекты. НуженwholeUIrealinputsavecopy/errors/recovery/1440+390/noartifacts+reviewдоrelease. KBспека/планопубликованы06108bd, задачаостаётсяOPEN.

T1backendFROZEN: strictCopyAPI/serverimmutable snapshot, source409/targetCAS partialsuccess, alias+nestedmetadata/JSONtypes/missingpreserve, actualindpic/catalog/recovery/obsoletechbguards. RED→GREEN49copychecks, fullcomposer9suites319PASS exit0; ведущийнезависимоповторилfullgate. IndependentT1review APPROVE. Копируемыйdefaultможетвзятьint/stringизsource, targetschemaозначаетaliassemanticshape; unrelatedtypesсохраняются. Отчёты output/preland25/backend-report.md, backend-composer-green.log, root-composer-gate.log. Свежий privatepreland25-before снятreadonlyсо4целей: canonicalcopy scope stage==ila==ika; pixelотличаетсяtp/cons, невыбиратьего дляQA. Productionпослерелизапровериттолькокопированиеstage→ila+ikaэквивалентныхнастроек, не массовуюсинхронизациюowner. Actualbusinessvaluesнеизменять; rawformatdifferenceтолькопослестрогогоsemanticcompare/CASможновернуть. Настройкиproductionпоканеизменены. T2frontendещёполируется: независимыеoperationtargets дляZIP/history, стабильныеdraftDOM/epoch приreads, dynamicrename/add/deleteцелях, source/recipientdirtycopyblocks. Rootpreflightнашёл6рисков и передалfrontendbeforefreeze; ониневыдаютсязавыпущенныедефекты. НуженwholeUIrealinputsavecopy/errors/recovery/1440+390/noartifacts+reviewдоrelease. KBспека/планопубликованы06108bd, задачаостаётсяOPEN.
Author
Owner

T2FROZEN + independentWHOLEreviewAPPROVE: 8UI suites иrealZIP happy-path; matrixweights/default/add/remove/missing/save/CAS/offline/partialcopy/source409 + notes3races/builder/remember/verifiedrefresh, actualoperationtargetsZIPreset иcopyindependent. 1440/390cleanUI, dynamic6domains/rename/disable/delete-readd/lateGETlogoutlogin browserPASS, all4fixtureconfigshashes unchanged/e-fcleanup. ParentnativeUIinput/click/cancel/copysource-checkbox/reread/notesnode/1440+390 independentlyPASS twice.

Дорелиза найденивоспроизведён настоящий POSTcontinuationrace: heldactualcompletedjobresponse→logout/login→newdraft→oldcompletion стиралdraft. Исправленsessiongeneration/entryidentity/copyepoch/old401 guards; newui-session-jobs actualRED→GREEN дляSave/Copy/caret/node/outcomes/newbusy. Послеfix повтореныfullmatrix+notes+rememberGREEN, reviewerguardsAPPROVE. Преждевпродуэтоткодневыпускался. QAhelperвdynamicproofпотребовалисправитьroutehandling/loginwait; этоошибкиharness, финальныйactualcasePASS.

Исходникиdd6d221dd7d3b4d94ccbac1c572ed1ab1ad5bdfe опубликованыmain/staging. Adminimage8041afd5a3de129e8096625b4be9e226166ca3d675a5f7993af05867074efcd5, autoloadCopyPASS, отдельныйreleaseидёт; health/productionQAещёpending. Sessions/remember не включенывrollbackstatebackup; ихживыеprivateкаталогисохраняются. ProductionQA scriptfrozen сguard ровноoneequivalentstage→ila+ika POSTcopy, всеостальныемутаторыblocked; actualrunещёнепроводился. #25открытадополнойприёмки.

T2FROZEN + independentWHOLEreviewAPPROVE: 8UI suites иrealZIP happy-path; matrixweights/default/add/remove/missing/save/CAS/offline/partialcopy/source409 + notes3races/builder/remember/verifiedrefresh, actualoperationtargetsZIPreset иcopyindependent. 1440/390cleanUI, dynamic6domains/rename/disable/delete-readd/lateGETlogoutlogin browserPASS, all4fixtureconfigshashes unchanged/e-fcleanup. ParentnativeUIinput/click/cancel/copysource-checkbox/reread/notesnode/1440+390 independentlyPASS twice. Дорелиза найденивоспроизведён настоящий POSTcontinuationrace: heldactualcompletedjobresponse→logout/login→newdraft→oldcompletion стиралdraft. Исправленsessiongeneration/entryidentity/copyepoch/old401 guards; newui-session-jobs actualRED→GREEN дляSave/Copy/caret/node/outcomes/newbusy. Послеfix повтореныfullmatrix+notes+rememberGREEN, reviewerguardsAPPROVE. Преждевпродуэтоткодневыпускался. QAhelperвdynamicproofпотребовалисправитьroutehandling/loginwait; этоошибкиharness, финальныйactualcasePASS. Исходникиdd6d221dd7d3b4d94ccbac1c572ed1ab1ad5bdfe опубликованыmain/staging. Adminimage8041afd5a3de129e8096625b4be9e226166ca3d675a5f7993af05867074efcd5, autoloadCopyPASS, отдельныйreleaseидёт; health/productionQAещёpending. Sessions/remember не включенывrollbackstatebackup; ихживыеprivateкаталогисохраняются. ProductionQA scriptfrozen сguard ровноoneequivalentstage→ila+ika POSTcopy, всеостальныемутаторыblocked; actualrunещёнепроводился. #25открытадополнойприёмки.
Author
Owner

ИТОГ#25: productionPASS, обязательныхостатковнет. Админка dd6d221dd7d3b4d94ccbac1c572ed1ab1ad5bdfe/image8041afd5a3de129e8096625b4be9e226166ca3d675a5f7993af05867074efcd5, webhealthy/workerrunning. Actions500/job712SUCCESS runner37/zoomzilla-prod-org. KBmaster7dbd0ec опубликована: финальнаяспека/план/индекс/эксплуатационнаязаметка.

NativeproductionUI с первого запуска: host/weightinput+cancel, матрица8UTM икопирование1440/390; один разрешённый эквивалентныйPOSTcopy stage→ila+ika202, job e06237cf2775ea260f0f7dc3ad09bbff completed2success, обе видимы в #copy-results. Сохранённыеconfigsemantics4/4/notes точные, source/pixelRAWнеизменны. RegцелямкопированиепоменялотолькопредставлениеJSON. Послеstrictrecursivevalue/typecompare, проверкиpendingjobs иfreshcurrenthash обеREGRAWвернулиисходнымTransport/CAS+backup, receipt privatepreland25-qa-raw-restore.json. Повторногокопированиянет, notes/assetsнеписались.

Финально отдельныйreadonlyUI иrootTransportreads: stagecd113651..., pixel737f46a9..., ila/ika24f226a5... точныепредтестовыеbytes, notes originalbytesexact; matrix+copyготовы,390/nooverflow, QAlogout401, pageErrors0/blockedwrites[]. Privatebaseline/receipt/notes0600UID997:987. Скриншоты production-copy/table-1440/390-copy-success.png, final-readonly-evidence.json, production-report.md вoutput/preland25. Password/SID/notesplaintextневыводились.

СогласованныйUI/бережноеcopy реализованы; missingгруппаисточникаНЕудаляетrecipientgroup. Source snapshotserver-owned, host+8default/weights, no notes/assets/requisites/unknowncopy; source/targetdrafts иверсии защищены. Историческиенаборы/builder/remember90/indpicselection/historyсохранены ипрогнаны. МассовуюStage→allбоевуюсинхронизациюownerсделаетсам. Существующиеобщиеcatalogwarningsприотсутствииfreshmatchingcatalogсохранены, не выдаютсязапроверенныйкаталог; физическиеindpicпроверяютсявсегда.

Fullbackend319PASS/rootrepeat; UI8suites+realZIP, independentlydynamic6+GET/session+POSTjobactualRED→GREEN, visual/codeAPPROVE, nativeparentflowPASS. Задача закрывается.

ИТОГ#25: productionPASS, обязательныхостатковнет. Админка dd6d221dd7d3b4d94ccbac1c572ed1ab1ad5bdfe/image8041afd5a3de129e8096625b4be9e226166ca3d675a5f7993af05867074efcd5, webhealthy/workerrunning. Actions500/job712SUCCESS runner37/zoomzilla-prod-org. KBmaster7dbd0ec опубликована: финальнаяспека/план/индекс/эксплуатационнаязаметка. NativeproductionUI с первого запуска: host/weightinput+cancel, матрица8UTM икопирование1440/390; один разрешённый эквивалентныйPOSTcopy stage→ila+ika202, job e06237cf2775ea260f0f7dc3ad09bbff completed2success, обе видимы в #copy-results. Сохранённыеconfigsemantics4/4/notes точные, source/pixelRAWнеизменны. RegцелямкопированиепоменялотолькопредставлениеJSON. Послеstrictrecursivevalue/typecompare, проверкиpendingjobs иfreshcurrenthash обеREGRAWвернулиисходнымTransport/CAS+backup, receipt privatepreland25-qa-raw-restore.json. Повторногокопированиянет, notes/assetsнеписались. Финально отдельныйreadonlyUI иrootTransportreads: stagecd113651..., pixel737f46a9..., ila/ika24f226a5... точныепредтестовыеbytes, notes originalbytesexact; matrix+copyготовы,390/nooverflow, QAlogout401, pageErrors0/blockedwrites[]. Privatebaseline/receipt/notes0600UID997:987. Скриншоты production-copy/table-1440/390-copy-success.png, final-readonly-evidence.json, production-report.md вoutput/preland25. Password/SID/notesplaintextневыводились. СогласованныйUI/бережноеcopy реализованы; missingгруппаисточникаНЕудаляетrecipientgroup. Source snapshotserver-owned, host+8default/weights, no notes/assets/requisites/unknowncopy; source/targetdrafts иверсии защищены. Историческиенаборы/builder/remember90/indpicselection/historyсохранены ипрогнаны. МассовуюStage→allбоевуюсинхронизациюownerсделаетсам. Существующиеобщиеcatalogwarningsприотсутствииfreshmatchingcatalogсохранены, не выдаютсязапроверенныйкаталог; физическиеindpicпроверяютсявсегда. Fullbackend319PASS/rootrepeat; UI8suites+realZIP, independentlydynamic6+GET/session+POSTjobactualRED→GREEN, visual/codeAPPROVE, nativeparentflowPASS. Задача закрывается.
yury closed this issue 2026-10-26 01:12:29 +01:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anton/preland#25