docs: define secret store and auth profile plan

This commit is contained in:
a.tolmachev
2026-04-06 00:40:25 +03:00
parent 09604c6481
commit 420074f96a
10 changed files with 428 additions and 36 deletions
+54 -8
View File
@@ -40,6 +40,8 @@
Минимальный набор workspace-scoped сущностей:
- `Secret`
- `SecretVersion`
- `Operation`
- `OperationVersion`
- `AuthProfile`
@@ -143,7 +145,40 @@
- `tool_description_override`
- `enabled`
### 3.6. `AuthProfile`
### 3.6. `Secret`
Секрет для доступа к внешней системе.
Поля:
- `id`
- `workspace_id`
- `name`
- `kind`
- `status`
- `current_version`
- `created_at`
- `updated_at`
Значение:
- plaintext не возвращается в list/get endpoints;
- текущее значение хранится в зашифрованном виде через `SecretVersion`;
- rotate создает новую версию секрета без потери ссылочной целостности.
### 3.7. `SecretVersion`
Зашифрованное значение секрета.
Поля:
- `secret_id`
- `version`
- `ciphertext`
- `key_version`
- `created_at`
### 3.8. `AuthProfile`
Используется только для доступа к внешним системам.
@@ -155,7 +190,13 @@
- `kind`
- `config`
### 3.7. `PlatformApiKey`
Принцип:
- `AuthProfile` не хранит plaintext;
- config ссылается на `secret_id` или пару `secret_id`, если auth-схема составная;
- runtime применяет profile к запросу только в момент вызова upstream.
### 3.9. `PlatformApiKey`
Отдельная сущность для доступа к самой платформе.
@@ -175,7 +216,7 @@
- полный secret показывается только один раз при создании;
- в persistent storage сохраняется только `secret_hash`.
### 3.8. `User`
### 3.10. `User`
Поля:
@@ -192,7 +233,7 @@
- plaintext пароль не сохраняется;
- верификация использует `password_pepper` из env.
### 3.9. `UserSession`
### 3.11. `UserSession`
Поля:
@@ -210,7 +251,7 @@
- в persistent storage сохраняется только `secret_hash`;
- подпись и верификация используют `session_secret` из env.
### 3.10. `Membership`
### 3.12. `Membership`
Поля:
@@ -219,7 +260,7 @@
- `role`
- `created_at`
### 3.11. `InvitationToken`
### 3.13. `InvitationToken`
Поля:
@@ -236,7 +277,7 @@
- полный invite token показывается только один раз при создании;
- в persistent storage сохраняется только `token_hash`.
### 3.12. `InvocationLog`
### 3.14. `InvocationLog`
Продуктовая запись о вызове tool.
@@ -255,7 +296,7 @@
- `response_preview`
- `created_at`
### 3.13. `UsageRollup`
### 3.15. `UsageRollup`
Агрегированная статистика по периоду.
@@ -321,6 +362,11 @@
Если UI требует сущность, которой нет в текущем backend, эта сущность должна быть сначала явно добавлена в эту модель данных, а уже потом в код и БД.
Для upstream credentials это означает:
- placeholder-строки вида `${secrets.API_KEY}` не считаются реальной моделью данных;
- рабочая продуктовая модель строится только через `Secret` + `AuthProfile`.
Для `Operations` и `Wizard` дополнительный уровень контрактной детализации закреплен в:
- `docs/operations-workspace-contracts.md`