refactor(data): add I*Repository interfaces and depend on them in stores
为 /src/data/repositories/ 下每个仓库类增加对应的接口契约,
接口文件存放在独立的 interfaces/ 子目录中。
改动:
- 新建 4 个接口文件 (iauth_repository / ichat_repository /
imetrics_repository / iuser_repository),纯 type-only,方法签名
与实现类完全一致
- 4 个实现类加 implements I{Name}Repository 子句,编译器自动校验契约
- 3 个 stores 文件 (auth / chat / user state machines) 改为依赖接口
类型:通过 `const xxxRepo: I{Name}Repository = xxxRepository` 局部别名,
actor 内部调用全部走别名
- barrelsby.json 加入 interfaces/ 目录,让自动 barrel 能覆盖
- Auto-regenerated repositories/index.ts 与 interfaces/index.ts
参照 storage 层已有的 IAuthStorage / IChatStorage / IUserStorage 模式。
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
"use client";
|
||||
|
||||
/**
|
||||
* IMetricsRepository 接口
|
||||
*
|
||||
* 对齐 Dart 端 `MetricsRepository` 抽象(lib/data/repositories/metrics_repository.dart):
|
||||
* - 纯远程 fire-and-forget 上报,无本地状态
|
||||
*
|
||||
* 原始 Dart: lib/data/repositories/metrics_repository_impl.dart
|
||||
*/
|
||||
|
||||
import type { Result } from "@/utils/result";
|
||||
|
||||
export interface IMetricsRepository {
|
||||
/** 上报 PWA 事件。自动注入当前秒级时间戳。 */
|
||||
reportPwaEvent(input: {
|
||||
deviceId: string;
|
||||
deviceType: string;
|
||||
pwaInstalled: boolean;
|
||||
pwaSupported: boolean;
|
||||
}): Promise<Result<void>>;
|
||||
|
||||
/** 上报用户环境信息(浏览器、UA 等)。 */
|
||||
reportUserInfo(input: {
|
||||
userId: string;
|
||||
browser: string;
|
||||
userAgent: string;
|
||||
}): Promise<Result<void>>;
|
||||
}
|
||||
Reference in New Issue
Block a user