feat: make core pages local-first offline

This commit is contained in:
2026-08-21 12:40:01 +08:00
parent 8828851631
commit fefa2d74e6
20 changed files with 921 additions and 188 deletions
+13 -8
View File
@@ -1,6 +1,8 @@
# 喵记账 · 项目骨架
> Flutter 客户端 + .NET 9 后端 · 搭建于 2026-07-18
> Flutter 客户端 + .NET 9 后端 · 当前状态更新于 2026-08-21
当前实现状态与待办以 [`STATUS.md`](STATUS.md) 为准;本文保留项目入口、运行方式和接口索引。
## 目录结构
@@ -50,7 +52,7 @@ jizhang/
2.`backend/MiaoJiZhang.Api/appsettings.json` 里的连接串(`your_password`
3.`Jwt:Secret` 为 ≥32 字符的随机串
4. `cd backend && dotnet run --project MiaoJiZhang.Api`
- 开发期 `Program.cs``EnsureCreated` 建表 + 跑种子数据
- 数据库结构通过 `MiaoJiZhang.Infrastructure/Persistence/Migrations` 维护;本地首次启动前执行 `dotnet ef database update`
- OpenAPI 文档:`http://localhost:5000/openapi/v1.json`
5. 测试注册:
```bash
@@ -93,15 +95,18 @@ flutter run
9. ~~性格设置页~~ ✅(PUT /api/users/me/companion + CompanionPage,形象/性格/三滑杆)
10. ~~分类管理~~ ✅(POST/DELETE /api/categories + CategoryManagePage,自定义分类增删)
11. ~~语音/OCR 流程~~ ✅(POST /api/parse + ParseSheet 确认入账;ASR/OCR SDK 接入后自动填充文本)
12. ~~LLM 接入层~~ ✅(ILlmClient 抽象 + NullLlmClient 回退规则版;对接真实 LLM 时实现该接口即可
12. ~~LLM 接入层~~ ✅(已有客户端抽象、权限/额度和回退路径;仍需真实环境联调
13. ~~Admin Web 后台~~ ✅(配置、分类、AI 形象/性格、表情包、用户、推送、审计与管理员账号页面已存在)
14. ~~EF Core Migration~~ ✅(已有多次迁移;发布前仍需执行全新库和升级库验证)
## 遗留(需要外部资源/发布前处理)
- ASR(语音转文字)与拍照 OCR 的 SDK 选型接入(ParseSheet 已留好入口,接入后把识别文本传入即可)
- 真实 LLM 对接(实现 ILlmClient;性格 Prompt 已在 AiPersona 表可后台调)
- SVG 图标(category_icon.dart / stickerStyle 集中管理,直接替换映射即可)
- Admin Web 后台(`docs/DESIGN.md` 第 8 节;实体 AppConfig/AiPersona/AiAvatar/Sticker 已建好)
- EF Migration 替代 EnsureCreatedJwt Secret 换生产值;baseUrl 环境化
- 真实 LLM、OCR/ASR、截图识别和推送供应商的生产配置与联调
- JWT Secret、管理员引导变量、数据库连接串、API Base URL 和更新下载地址环境化
## 已完成的接口清单
@@ -129,6 +134,6 @@ flutter run
## 技术债 / 注意
- 后端用 `EnsureCreated` 跳过 Migration,便于快速起盘;正式环境前要切到 `dotnet ef migrations add Init`
- `appsettings.json` 的 `Jwt:Secret` 是占位值,**生产必须换**
- 前端 `main_shell.dart` 的 5 个 branch 暂用 `Placeholder()`,下一步逐个填真实页面
- `Build:Version` 未注入时后端显示 `dev`;发布构建必须显式注入版本。
- `appsettings.json` 的 JWT、数据库和外部服务配置不能直接用于生产。
- Admin Web 的 `wwwroot/assets` 是构建生成物;本地构建后不要把临时 hashed 文件混入提交。