内部运营后台 / v0.1 MVP

用户运营控制台

用来查看一个用户从消息进入、队列处理、回复发件箱、用量扣费、记忆沉淀到错误状态的完整链路。 页面会优先读取实时 API;如果 API 不可用,会回退到本地样例数据。

用户2

从 Prisma 后台读取器读取;数据库提供方:Prisma。

会话1 打开

会话数据来自数据库会话和最近消息。

队列3 入站

通过 /admin/queue 从当前 QueueRuntime 读取。

发件箱0 待发送

从数据库 outbound_message 记录读取。

用量0 未结算

从数据库 usage_record 记录读取。

账本0 告警

从数据库 wallet_ledger 记录和最新余额状态读取。

错误3

由失败的队列任务和发件箱记录推导。

单用户运营视图

wmdD_uGQAAbf9Qzegr9osfgjCjg_-yNA

21310e29-6fab-44d2-a023-fe9f378c3b2e;风险 正常;最近活跃 2026-06-28T17:46:30.356Z

余额
297
记忆
开启
媒体记忆
关闭
主动消息
关闭
消息6入站 3 / 出站 3;已脱敏 0
发件箱3待发送 0 / 失败 1
用量3未结算 0
账本297告警 0
记忆0敏感 0
队列4失败 1
错误3严重 1
审计0失败 0

消息预览

Prisma Message table previews
ID方向状态预览
a8bb64b5-f0fd-423a-b63e-e5e3d0d47814入站/用户已接收文本预览你好
9055cdb9-e6a1-4e4d-9831-fa00f7f670d6出站/AI已发送文本预览Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。
3b1e80d9-5477-4bcd-a1ef-5b495087df73入站/用户已接收文本预览你好
e5780dfb-6c8e-4f67-96fb-c12f23710b2c出站/AI已发送文本预览Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。
81b1a6cd-2fb7-4a69-8b5b-f4f9b65a88f0入站/用户已接收文本预览你叫小语
528cecf6-003f-4ebf-bf2a-3a91bdfe9223出站/AI已发送文本预览收到。你刚才说「你叫小语」,我会用短句陪你慢慢聊。

发件箱

仅展示发送内容预览
ID状态尝试次数预览
872a287d-15dd-4375-a1e3-1258363e6819已发送1收到。你刚才说「你叫小语」,我会用短句陪你慢慢聊。
54a578f7-31e8-4e02-9889-055b3d08407f已发送1Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。
dbd1332e-2d55-4554-beb2-c8c992304904失败可重试5Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。

用量 / 账本

账务只读模型
聊天用量 / 已结算成本 1;扣费 1message=528cecf6-003f-4ebf-bf2a-3a91bdfe9223; idempotencyKey=wechat_kf:AvaxtRE4jQkQL8bSTeHhtu25Qj:usage
聊天用量 / 已结算成本 1;扣费 1message=e5780dfb-6c8e-4f67-96fb-c12f23710b2c; idempotencyKey=wechat_kf:AZS1RXvde4qGm7hECB5MJ3PUhf:usage
聊天用量 / 已结算成本 1;扣费 1message=9055cdb9-e6a1-4e4d-9831-fa00f7f670d6; idempotencyKey=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv:usage
结算 / -1余额 297usage_settled
结算 / -1余额 298usage_settled
结算 / -1余额 299usage_settled
grant / 300余额 300local_mvp_initial_balance

记忆

仅展示内容预览
暂无记忆记录该用户暂无可见记忆记录。

队列 / 错误 / 审计

根据运行时状态推导
critical / queue_job_deadwechat_send_failed:wecom_95000;负责人 queue;建议处理 inspect dead-letter job and replay manually
告警 / send_failed_retryable发件箱消息 dbd1332e-2d55-4554-beb2-c8c992304904 is failed_retryable.;负责人 sender;建议处理 等到下次可重试时间后由发送 Worker 重试
告警 / send_failed_retryablewecom_95000;负责人 sender;建议处理 等到下次可重试时间后由发送 Worker 重试

wmdD_uGQAAbf9Qzegr9osfgjCjg_-yNA

用户 ID
21310e29-6fab-44d2-a023-fe9f378c3b2e
余额
297
记忆
开启
媒体记忆
关闭
主动消息
关闭
风险
正常
最近活跃
2026-06-28T17:46:30.356Z

63563012-6731-4e8f-9c7f-5bdf49da6032

人设
状态
打开
最近消息
2026-06-28T18:12:08.000Z
运行来源
API 进程

DB conversation row loaded; no summary has been written yet.

内部测试记录

内部

新建反馈记录

当前记录保存在 API 进程内,用于内部测试。原始消息可录入,但默认不会在列表或接口响应中展示。

模拟存储

当前记录

2 条记录;原始消息 已隐藏;外部系统
用户分类严重程度状态摘要创建时间
模拟用户user_mock_1缺陷已分诊后台观察到一次可重试的发送失败,需要发送侧跟进。2026-06-27T02:36:00.000+08:00
模拟用户user_mock_1客服支持待处理用户反馈 Beta 阶段主动回复频率偏高。2026-06-27T02:30:00.000+08:00

当前用户的低风险控制

用户

消息与记忆控制

只修改当前用户的状态。这些操作不会硬删除记忆、不会修改余额、不会真实发消息,也不会连接外部认证服务。

发件箱

失败发送处理

重试只会把符合条件的失败记录标记为待发送;忽略只会标记取消。两条路径都不会调用微信,也不会删除内容。

872a287d-15dd-4375-a1e3-1258363e6819已发送
54a578f7-31e8-4e02-9889-055b3d08407f已发送
dbd1332e-2d55-4554-beb2-c8c992304904失败可重试
已禁用

高风险操作

修改余额、删除用户、真实回放、外部系统接入等操作保持禁用,直到具备专门授权、审计和回滚流程。

调整余额关闭

余额事实源只能通过计费账本和对账流程变更。

删除用户数据计划中

需要删除申请流程、授权、审计复核和回滚方案。

运营状态变更

暂无暂无运营操作

当前链路暂无低风险运营操作记录。

来源:Prisma

实时读取与契约兜底

conversation

实时

Durable conversation/user data is read from DB tables.

Prisma 后台读取助手

messages

实时

链路响应中展示 6 条消息。

Prisma Message 表

queue

实时

In-memory runtime is queryable now; Redis/BullMQ adapter should preserve this read contract.

QueueRuntime.listJobs(队列读取)

outbox

实时

实时发件箱记录已可见。

Prisma OutboundMessage 表

usage

实时

当前链路对象返回 3 条用量记录。

Prisma UsageRecord 表

ledger

实时

当前链路对象返回 4 条钱包账本记录。

Prisma WalletLedger 表

记忆

实时

当前链路对象返回 0 条记忆记录。

Prisma MemoryItem 表

errors

实时

Structured logs or an error table can be added later without changing the admin response shape.

队列 / 发件箱推导状态

审计

实时

当前链路对象返回 0 条审计记录。

Prisma AuditLog 表

从模拟看板到实时链路视图

会话

已接入

会话对象已从 Prisma 数据库记录加载。

消息

已接入

当前链路对象可见 6 条最近消息。

队列

已接入

当前 QueueRuntime 可见 4 个任务。

发件箱

已接入

仓库中可见 3 条发件箱记录。

用量

已接入

数据库中可见 3 条用量记录。

账本

已接入

数据库中可见 4 条钱包账本记录。

记忆

已接入

数据库读取器已启用;当前链路对象还没有记忆记录。

错误

已接入

队列和发件箱失败会作为后台错误展示。

一条入站消息的最小可观测路径

  1. conversation

    已从数据库加载会话

    DB conversation row loaded; no summary has been written yet.

    • userId=21310e29-6fab-44d2-a023-fe9f378c3b2e
    • personaId=00000000-0000-0000-0000-000000000201
    • messages=6
    正常
  2. message

    用户消息 已接收

    你好

    • contentType=text
    • previewKind=text_preview
    • platformMessageId=BHjonr5XmJqbuZDdwWfScAfuhv
    正常
  3. message

    AI消息 已发送

    Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。

    • contentType=text
    • previewKind=text_preview
    • idempotencyKey=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv:ai_message
    • replyToMessageId=a8bb64b5-f0fd-423a-b63e-e5e3d0d47814
    正常
  4. message

    用户消息 已接收

    你好

    • contentType=text
    • previewKind=text_preview
    • platformMessageId=AZS1RXvde4qGm7hECB5MJ3PUhf
    正常
  5. message

    AI消息 已发送

    Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。

    • contentType=text
    • previewKind=text_preview
    • idempotencyKey=wechat_kf:AZS1RXvde4qGm7hECB5MJ3PUhf:ai_message
    • replyToMessageId=3b1e80d9-5477-4bcd-a1ef-5b495087df73
    正常
  6. message

    用户消息 已接收

    你叫小语

    • contentType=text
    • previewKind=text_preview
    • platformMessageId=AvaxtRE4jQkQL8bSTeHhtu25Qj
    正常
  7. message

    AI消息 已发送

    收到。你刚才说「你叫小语」,我会用短句陪你慢慢聊。

    • contentType=text
    • previewKind=text_preview
    • idempotencyKey=wechat_kf:AvaxtRE4jQkQL8bSTeHhtu25Qj:ai_message
    • replyToMessageId=81b1a6cd-2fb7-4a69-8b5b-f4f9b65a88f0
    正常
  8. queue

    wechat.inbound / message.received

    任务状态:已完成。

    • idempotencyKey=wechat_kf:AZS1RXvde4qGm7hECB5MJ3PUhf
    • traceId=wechat_kf:AZS1RXvde4qGm7hECB5MJ3PUhf
    • attempts=1
    正常
  9. queue

    wechat.inbound / message.received

    任务状态:已完成。

    • idempotencyKey=wechat_kf:AvaxtRE4jQkQL8bSTeHhtu25Qj
    • traceId=wechat_kf:AvaxtRE4jQkQL8bSTeHhtu25Qj
    • attempts=1
    正常
  10. queue

    wechat.inbound / message.received

    wechat_send_failed:wecom_95000

    • idempotencyKey=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv
    • traceId=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv
    • attempts=5
    失败
  11. queue

    queue.dead / job.dead

    任务状态:等待。

    • idempotencyKey=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv:dead
    • traceId=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv
    • attempts=0
    等待
  12. outbox

    发件箱 已发送

    收到。你刚才说「你叫小语」,我会用短句陪你慢慢聊。

    • channel=wechat_kf
    • idempotencyKey=wechat_kf:AvaxtRE4jQkQL8bSTeHhtu25Qj:outbox:0
    • attempts=1
    正常
  13. outbox

    发件箱 已发送

    Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。

    • channel=wechat_kf
    • idempotencyKey=wechat_kf:AZS1RXvde4qGm7hECB5MJ3PUhf:outbox:0
    • attempts=1
    正常
  14. outbox

    发件箱 失败可重试

    Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。

    • channel=wechat_kf
    • idempotencyKey=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv:outbox:0
    • attempts=5
    失败
  15. usage

    用量 已结算

    成本 1 / 扣费 1;来源:message=528cecf6-003f-4ebf-bf2a-3a91bdfe9223; idempotencyKey=wechat_kf:AvaxtRE4jQkQL8bSTeHhtu25Qj:usage

    • type=chat_token
    正常
  16. usage

    用量 已结算

    成本 1 / 扣费 1;来源:message=e5780dfb-6c8e-4f67-96fb-c12f23710b2c; idempotencyKey=wechat_kf:AZS1RXvde4qGm7hECB5MJ3PUhf:usage

    • type=chat_token
    正常
  17. usage

    用量 已结算

    成本 1 / 扣费 1;来源:message=9055cdb9-e6a1-4e4d-9831-fa00f7f670d6; idempotencyKey=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv:usage

    • type=chat_token
    正常
  18. ledger

    账本 结算

    usage_settled;变动 -1;变更后余额 297

    • entryType=settle
    正常
  19. ledger

    账本 结算

    usage_settled;变动 -1;变更后余额 298

    • entryType=settle
    正常
  20. ledger

    账本 结算

    usage_settled;变动 -1;变更后余额 299

    • entryType=settle
    正常
  21. ledger

    账本 grant

    local_mvp_initial_balance;变动 300;变更后余额 300

    • entryType=grant
    正常

最近会话记录

ID发送方状态预览
a8bb64b5-f0fd-423a-b63e-e5e3d0d47814inbound/user已接收你好
9055cdb9-e6a1-4e4d-9831-fa00f7f670d6outbound/ai已发送Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。
3b1e80d9-5477-4bcd-a1ef-5b495087df73inbound/user已接收你好
e5780dfb-6c8e-4f67-96fb-c12f23710b2coutbound/ai已发送Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。
81b1a6cd-2fb7-4a69-8b5b-f4f9b65a88f0inbound/user已接收你叫小语
528cecf6-003f-4ebf-bf2a-3a91bdfe9223outbound/ai已发送收到。你刚才说「你叫小语」,我会用短句陪你慢慢聊。

出站发送队列

ID状态渠道尝试次数预览
872a287d-15dd-4375-a1e3-1258363e6819已发送wechat_kf1收到。你刚才说「你叫小语」,我会用短句陪你慢慢聊。
54a578f7-31e8-4e02-9889-055b3d08407f已发送wechat_kf1Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。
dbd1332e-2d55-4554-beb2-c8c992304904失败可重试wechat_kf5Xiaoyu:收到。你刚才说「你好」,我会用短句陪你慢慢聊。

账务边界

聊天用量已结算

成本 1 / 扣费 1;来源:message=528cecf6-003f-4ebf-bf2a-3a91bdfe9223; idempotencyKey=wechat_kf:AvaxtRE4jQkQL8bSTeHhtu25Qj:usage

聊天用量已结算

成本 1 / 扣费 1;来源:message=e5780dfb-6c8e-4f67-96fb-c12f23710b2c; idempotencyKey=wechat_kf:AZS1RXvde4qGm7hECB5MJ3PUhf:usage

聊天用量已结算

成本 1 / 扣费 1;来源:message=9055cdb9-e6a1-4e4d-9831-fa00f7f670d6; idempotencyKey=wechat_kf:BHjonr5XmJqbuZDdwWfScAfuhv:usage

结算-1

变更后余额 297;原因:usage_settled

结算-1

变更后余额 298;原因:usage_settled

结算-1

变更后余额 299;原因:usage_settled

grant300

变更后余额 300;原因:local_mvp_initial_balance

长期记忆只读模型

暂无记忆记录暂无

当前链路暂无可见 DB 记忆记录。

读取器:Prisma
暂无删除申请暂无

当前链路暂无打开中的记忆删除请求。

删除路径:仅写入请求标记

运营错误状态

critical

queue_job_dead

wechat_send_failed:wecom_95000

负责人:queue建议处理:inspect dead-letter job and replay manually
告警

send_failed_retryable

发件箱消息 dbd1332e-2d55-4554-beb2-c8c992304904 is failed_retryable.

负责人:sender建议处理:等到下次可重试时间后由发送 Worker 重试
告警

send_failed_retryable

wecom_95000

负责人:sender建议处理:等到下次可重试时间后由发送 Worker 重试

后台读取与安全操作接口

GET /admin/trace/live

读取会话、队列、发件箱、用量、账本和推导错误的实时后台链路。

负责人:api
  • mode
  • source
  • overview
  • user
  • conversation
  • timeline
  • outbox
  • usage
  • ledger
  • memory
  • deletionRequests
  • errors
  • audit
  • capabilities
GET /admin/users/:userId/trace

当 API 进程观察到某个用户后,按同一链路契约筛选该用户。

负责人:api
  • user
  • conversation
  • timeline
  • outbox
  • usage
  • ledger
  • memory
  • deletionRequests
  • errors
GET /admin/users?limit=&search=&status=

Read-only internal user list for operations search, filtering, and trace-subject selection.

负责人:api
  • items[].id
  • items[].status
  • items[].balanceUnits
  • items[].memoryEnabled
  • items[].proactiveEnabled
  • items[].lastSeen
GET /admin/overview

Small read model for admin landing page counts and provider status.

负责人:api
  • overview
  • source
  • capabilities
GET /admin/outbox

Outbound queue rows exposed through the current ConversationRepository.

负责人:api
  • items[].id
  • items[].status
  • items[].channel
  • items[].payload
  • items[].attemptCount
GET /admin/queue

当前进程队列任务的运行时可观测数据。

负责人:api
  • items[].job
  • items[].status
  • items[].attemptsMade
  • items[].lastError
GET /admin/errors

从队列和发件箱状态推导出的运营错误。

负责人:api
  • items[].code
  • items[].severity
  • items[].relatedObject
  • items[].suggestedAction
GET /admin/feedback

Internal Beta feedback/support records from the process-memory mock store.

负责人:api
  • items[].userId
  • items[].category
  • items[].severity
  • items[].status
  • items[].summary
  • items[].createdAt
POST /admin/feedback

Create an internal feedback record with audit-style result; no external ticketing system is called.

负责人:api
  • action
  • status
  • source
  • targetId
  • item
  • audit.externalSystem
  • audit.rawMessageReturned
GET /users/:userId/settings/memory

内部用户级记忆 / 主动消息设置读取模型,不调用外部服务。

负责人:api
  • found
  • source
  • settings.memoryEnabled
  • settings.proactiveEnabled
  • settings.mediaMemoryEnabled
  • safety
POST /users/:userId/settings/memory

内部用户级设置更新,用于记忆、媒体记忆和主动消息控制。

负责人:api
  • action
  • status
  • targetId
  • reasonCode
  • message
  • before
  • after
POST /users/:userId/settings/memory/delete-request

用户级记忆删除申请;关闭记忆并记录申请,不做硬删除。

负责人:api
  • action
  • status
  • targetType
  • targetId
  • reasonCode
  • message
  • after.hardDelete
POST /admin/users/:userId/actions/pause-proactive

低风险运营操作:关闭主动消息,不发送真实消息。

负责人:api
  • action
  • status
  • targetId
  • reasonCode
  • message
  • before
  • after
POST /admin/users/:userId/actions/disable-memory

低风险运营操作:关闭记忆,不删除记忆记录。

负责人:api
  • action
  • status
  • targetId
  • reasonCode
  • message
  • before
  • after
POST /admin/users/:userId/actions/request-memory-deletion

后台控制台的记忆删除申请标记;停止后续记忆使用,不硬删除。

负责人:api
  • action
  • status
  • targetType
  • targetId
  • reasonCode
  • message
  • after.scope
  • after.hardDelete
POST /admin/outbox/:outboxId/actions/retry

把符合条件的失败发件箱记录标记为待重试,不执行真实发送。

负责人:api
  • action
  • status
  • targetId
  • reasonCode
  • message
  • before
  • after
POST /admin/outbox/:outboxId/actions/ignore

把符合条件的发件箱记录标记为已取消,不删除消息载荷。

负责人:api
  • action
  • status
  • targetId
  • reasonCode
  • message
  • before
  • after
GET /admin/trace/mock

当 API / 数据库数据不可用时,用于后台界面开发的静态契约样例。

负责人:api
  • same shape as /admin/trace/live