Skip to content

About

哈记账

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

哈记账

哈记账是现阶段以 H5 为主要开发、运行验收与交付目标,同时同步开发微信小程序并保持兼容的单体全栈记账项目。首版实现单用户、单账本、人民币场景,覆盖支出、收入、转账、退款、信贷还款、账户资产和按月/按日查看。

目录

  • server/:Java 25 + Spring Boot 3.5 + MyBatis-Plus 后端。
  • app/:Vue 3 + TypeScript + uni-app 用户端。
  • docs/:架构、数据库、API 和开发约束。
  • sql/:只放人工检查或运维 SQL,正式 Schema 以 Flyway 为准。

环境

  • Java 25、Maven 3.9+(本机 Maven 3.6.3 也可构建)
  • Node.js 22、pnpm 11
  • MySQL 8、Redis 7.4、MinIO
  • 微信开发者工具现阶段不作为必需环境,代理不启动或操作本机工具进行测试与发布。

当前仓库使用 server/src/main/resources/application-dev.yml 作为 dev Profile 的安全默认配置,并从运行目录可选加载被 Git 忽略的 server/application-dev.local.yml。首次使用时,在仓库根目录执行 cp server/application-dev.local.example.yml server/application-dev.local.yml,再只在本地文件填写数据库、Redis、MinIO 等连接和账号密码;也可通过环境变量覆盖。禁止将本地文件或真实凭证提交到 Git。H5 使用账号/密码/验证码认证;微信小程序使用后端 code2Session 自动登录。

通知配置的可逆加密需要固定的 NOTIFICATION_KEY_AES_KEY(32 字节 Base64 编码),可放在被忽略的本地配置文件对应字段中。部署环境也必须单独安全配置并持续保管该密钥;若丢失,已保存的 Bark/pushplus Key 无法解密。

后端启动

启动 MySQL、Redis 和 MinIO,确认数据库 haji_dev 可用,然后执行:

cd server
mvn spring-boot:run

开发启动会通过 Maven 插件设置 -Dio.netty.noUnsafe=true,避免 Java 25 输出 Netty 的 sun.misc.Unsafe 兼容性警告。直接运行打包后的 JAR 时也建议使用同一 JVM 参数:

java -Dio.netty.noUnsafe=true -jar target/hahaen-ledger-server-1.0.0.jar

应用主入口也会自动设置该属性,因此 IDEA 直接运行 LedgerApplication 时无需额外配置;修改后请完全停止旧进程并重新启动。

application.yml 默认激活 dev Profile;如需切换环境,设置 SPRING_PROFILES_ACTIVE,例如生产环境设置为 prod。

后端文件日志目录随 Profile 隔离:dev 写入 D:/github/log/haji,prod 写入 /home/hahaen/log/haji。应用进程须对对应目录具备创建和写入权限;控制台日志仍会保留。

应用启动时 Flyway 自动执行 server/src/main/resources/db/migration/;当前开发阶段完整数据库初始化基线为唯一的 V1__init_schema.sql,不需要手工导入另一份 Schema。DEV 的 MinIO 原始 9001 是 Console,SDK/API 使用已验证的 9000。本地 DEV 后端默认端口为 9898(可用 SERVER_PORT 覆盖);正式环境端口保持原配置。Swagger/OpenAPI 地址:http://127.0.0.1:9898/swagger-ui.html。

前端启动与构建

cd app
pnpm install
pnpm run typecheck
pnpm run dev:h5
pnpm run build:h5
pnpm run build:mp-weixin

微信小程序构建结果位于 app/dist/build/mp-weixin,H5 构建结果位于 app/dist/build/h5。可通过 VITE_API_BASE_URL 指向后端地址。

现阶段功能与修复必须兼顾 H5 和微信小程序,相关回归、类型检查和双端命令行构建按影响范围执行;代理不启动或操作用户本机微信开发者工具,不执行小程序导入、运行测试、调试、预览、上传、提审或发布,也不将这些操作作为 H5 交付门槛。未执行项如实记录为按阶段规则排除的 NOT_RUN,构建通过不等于微信运行验收通过。详见 当前平台操作边界。

前端环境变量统一放在 app/env/:复制 .env.example 为 .env 管理通用变量,复制 .env.development.example 为 .env.development 管理 dev 配置,复制 .env.production.example 为 .env.production 管理 prod 配置并填写实际 HTTPS API 地址。生产构建未配置 VITE_API_BASE_URL 会主动失败,避免产物误连接本机开发服务。详见 app/env/README.md。

首版边界

统计、分类、凭证/OCR、预算、周期记账、多人账本、多币种、支付平台同步、导出/删除数据均未做成可用业务入口;未开放功能不得呈现为可用操作;帮助页不再展示数据导入/导出及反馈占位区。

更多约束见 docs/README.md、AGENTS.md、docs/09-audit/verification-matrix.md 和 docs/10-iterations/README.md。

H5 开发页面检查

在 app 目录运行 pnpm run dev:h5,访问终端打印的 Local 地址(默认 http://localhost:5173)。依赖或 Vite 配置变更后完整重启服务并刷新页面。若端口被占用,Vite 会使用下一个可用端口。H5/微信平台包必须与 uni-app 编译器版本一致,不要用自定义 Vue shim 代替平台运行时。启动验收应直接进入首页,并能切换五项导航;首次使用页仍保留为可选页面。

独立物品管理

资产右侧新增“物品”,支持添加、在役/退役筛选、详情、退役出售与逻辑删除。物品按用户独立归属,不影响记账和账户余额。购入当天计第1天,在役日均成本=购入价/服役天数;退役后天数冻结,最终日均成本=(购入价-二手售价)/服役天数。正式迁移新增V6,已有V1–V5保持不变。详见 物品契约 和 本轮验收。

开发完成后的自动提交与部署

按 AGENTS.md 完成本轮 Review、验证、安全保存、upstream 同步、复审复验、逐文件暂存、提交与普通推送;只推送 GitHub,不再推送 Gitee。

2026-10-25 起,代理在修改完成并通过上述 Review、验证、提交推送及远端核对后,自动发布受影响的后端/H5;纯文档或仅微信专用修改不发布。此流程不依赖 Jenkins,单独手工 push 不会触发上线。

本机执行 python3 deploy/local/release.py all 验证、编译并上传 JAR/H5;也可选择 backend 或 h5。服务器由 Docker 打包与更新服务,不备份旧应用版本,不自动回滚,成功后只保留最新产物,不拉取源码。数据库、业务文件、日志及密钥保留。微信小程序仍独立发布。详细配置、清理边界和失败处理见运维文档。

About

哈记账

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages