admin 7e71455c6b chore(release): freeze v0.2.0
版本冻结 v0.2.0,固化 2026-09-24 本轮全部变更。

admin-web:
- 修复旧物善用管理页缺失样式类 .workspace-view / .view-header / .table-wrap,
  此前页面无内边距导致内容被侧边栏遮挡、窄屏表格无横向滚动
- 修复服务统计页缺失样式类 .dashboard-grid / .dashboard-card / .stat-row,
  此前 8 个指标卡退化为裸文本堆叠
- 补齐未定义的 --shadow-card 变量(财务编辑面板阴影此前失效)
- 侧边栏 13 项导航由手写重复改为 NAV_ITEMS 数据驱动,并按业务顺序重排
- AdminIcon 补齐 coins / phone / volunteer / flag / calendar / recycle 语义图标
- 侧边栏行高与间距压缩使 13 项一屏放下,滚动条隐藏
- 小于等于 760px 断点导航由 display:none 改为横向滚动,移动端恢复可切换

api:
- prisma.config.ts 显式加载仓库根 .env,修复 prisma generate / migrate 取不到 DATABASE_URL
- dev / bootstrap:admin / test:integration 增加 tsx --env-file-if-exists=../../.env

miniprogram:
- custom-tab-bar 选中态与申请表单分步流程抽为可测纯函数并补充单测
- 页面完整性门禁脚本增强

工程:
- 版本统一升位 0.1.0 到 0.2.0(根与 4 个 workspace 包)
- .gitignore 增加 .pnpm-store/、.workbuddy/、微信开发者工具私人配置
  与仓库根目录误生成的工程配置,避免本地产物与机器相关信息入库

验证:pnpm lint 通过、pnpm test:unit 19 个用例通过、miniprogram typecheck 通过、
admin-web typecheck 与 build 通过、pnpm install --frozen-lockfile 未改写 lockfile、
无头浏览器端到端登录复验通过、待提交内容密钥扫描无命中。

说明:本轮定位并排除了一起 Prisma 生成目录残缺事故——API 开发进程与并发的
prisma generate 争抢同一输出目录,Windows 文件锁导致只生成 34/56 个模型文件,
使 TS 全量类型解析失败并产生数千条 lint 报错;停止竞争进程后干净重新生成即恢复。
该生成目录已被 .gitignore 忽略,不进入版本库。
2026-09-24 19:50:07 +08:00
2026-09-24 19:50:07 +08:00
2026-09-24 19:50:07 +08:00
2026-08-12 14:35:12 +08:00
2026-09-24 19:50:07 +08:00
2026-08-12 14:35:12 +08:00
2026-08-12 14:35:12 +08:00
2026-08-12 14:35:12 +08:00
2026-08-12 14:35:12 +08:00
2026-09-24 19:50:07 +08:00

乐活公益·暖心服务平台

V1.0 使用 TypeScript 全栈 monorepo,包含微信小程序、Web 管理后台、模块化单体 API 与共享契约。

环境要求

  • Node.js 24 LTS
  • pnpm 11
  • Docker 29+ 与 Docker Compose

初始化

  1. 复制 .env.example 为 .env,仅填写本地开发值,禁止提交真实密钥。
  2. 运行 pnpm install。
  3. 为 SESSION_TOKEN_PEPPER、AUDIT_IP_HASH_KEY 生成独立随机值,为 FIELD_ENCRYPTION_KEY 生成 32 字节随机值并以 Base64 保存;填写微信开发配置和精确的 ADMIN_WEB_ORIGIN。
  4. 运行 docker compose up -d 启动 MySQL、Redis、MinIO。
  5. 运行 pnpm --filter @lehuo/api db:deploy 执行 migration。
  6. 首次部署时通过环境变量提供 BOOTSTRAP_ADMIN_USERNAME、BOOTSTRAP_ADMIN_PASSWORD、BOOTSTRAP_ADMIN_DISPLAY_NAME,运行 pnpm --filter @lehuo/api bootstrap:admin;已有后台凭据时命令会拒绝重复初始化。
  7. 运行 pnpm --filter @lehuo/api dev 启动 API,健康检查地址为 http://localhost:3000/health,Swagger 地址为 http://localhost:3000/api/docs。
  8. 运行 pnpm --filter @lehuo/admin-web dev 启动管理后台。
  9. 配置小程序 API 地址后,使用微信开发者工具导入 apps/miniprogram。

后台会话使用 HttpOnly Cookie,不存入 localStorage;生产环境必须启用 HTTPS 并设置 ADMIN_COOKIE_SECURE=true。密钥和首次管理员密码不得提交到仓库。

质量命令

pnpm lint
pnpm typecheck
pnpm test:unit
pnpm test:integration
pnpm build

集成测试只允许连接数据库名为 lehuo_test 的 MySQL。可先运行 docker compose --profile test up -d mysql-test,再设置 TEST_DATABASE_URL 后执行测试。

项目约束、当前阶段和决策分别见 docs/01_PROJECT_CONSTITUTION.md、docs/10_TASK_STATE.md、docs/11_DECISIONS.md。

Ubuntu 26.04 云服务器部署

Ubuntu 26.04 LTS 单机部署包位于 infra/ubuntu/,提供 Docker 官方源安装、生产环境密钥生成、双域名 TLS、私有 MySQL/Redis/MinIO、API/管理后台镜像、migration、备份恢复、冒烟和回滚脚本。完整步骤见 infra/ubuntu/README.md。

该部署包不替代 staging、UAT、微信合法域名/真实 AppID、隐私法务、告警接收与异地备份验收;外部项未完成前不得宣称已生产上线。

S
Description
乐活公益服务软件
Readme
2.5 MiB
Languages
TypeScript 76.3%
Vue 17.9%
CSS 3%
Shell 1.7%
PowerShell 0.5%
Other 0.6%