浠艾福 (XAF) - Project Knowledge Base
Branch: cfclub (146 commits ahead of master)
OVERVIEW
三方平台型家庭教育服务系统,连接客户(家长)、服务商(成长规划师/活动方/供应商)和平台运营三方角色。三端架构:Spring Boot 2.7.18 后端 + uni-app 微信小程序 + Vue 2 Web管理端。另有 dan/danshop/ 独立商城子系统(Spring Boot 项目)。
STRUCTURE
cfc/
├── cfc-backend/ # Spring Boot 2.7.18, MyBatis-Plus, JWT, Java 8
│ └── src/main/java/com/etotem/cfc/
│ ├── controller/ # 按功能子包: admin, auth, assessment, family, guide, task, reward, energy, sncp, market, vendor, payment, stats, streak
│ ├── service/ # 业务逻辑
│ ├── entity/ # MyBatis-Plus 实体
│ ├── config/ # JWT / 多数据源 / DatabaseInitializer
│ └── common/ # Result<T>, JwtUtil
├── cfc-frontend/ # uni-app 微信小程序 (Vue 2, Options API)
│ ├── pages/ # 页面 (index/, family/, body/, mind/, action/, profile/, teacher/, games/, assessment/, shop/, ...)
│ ├── components/ # 可复用组件 (RelationshipPicker, ContactCard, FamilyRelationGraph, ...)
│ ├── pages.json # TabBar (行/身/智/心/富) + 分包注册
│ ├── config.js # 环境自适应 baseUrl (develop/trial/release)
│ └── store/ # Vuex 双角色状态
├── cfc-web/ # Vue 2 + Element UI 管理端
│ └── src/
│ ├── views/ # admin/ + teacher/ 视图
│ ├── router/ # 角色权限路由守卫
│ └── store/ # 认证状态
├── dan/danshop/ # 独立商城 Spring Boot 子系统 (localhost:8888)
├── tests/ # unit, integration, e2e (Playwright)
└── docs/ # 需求/设计/测试文档
KEY FACTS
| 项目 |
命令/端口 |
备注 |
| 后端 |
mvn clean compile / mvn spring-boot:run |
localhost:9082 |
| 小程序 |
npm install → 微信开发者工具导入 |
dev:mp-weixin 需通过 uni-app CLI 或 HBuilderX |
| Web管理端 |
npm run serve |
localhost:8082 |
| 数据库 |
192.168.16.251:3306/zxyj |
账号 zxyj / zxyj@123 |
| sfms源库 |
bianwoyou.mysql.rds.aliyuncs.com:3305/sfms |
只读,用于数据迁移 |
| Danshop |
localhost:8888 |
独立 Spring Boot 商城子系统 |
| 数据迁移 |
curl -X POST http://localhost:9082/api/migration/run |
sfms → zxyj |
RELATIONSHIP MANAGEMENT
| 实体 |
表 |
说明 |
RelationshipType |
relationship_types |
关系类型字典(typeKey/typeName/capabilityRole/sortOrder/enabled) |
FamilyMember |
family_members |
家庭成员(relationshipType FK → typeKey, capabilityRole, showToFamily) |
Contact |
contacts |
社会联系人(relationshipType → family/friend/partner/colleague/other, intimacyLevel) |
GuideFamilyRelation |
guide_family_relations |
规划师-家庭绑定(relationType, status) |
| 前端组件 |
用途 |
RelationshipPicker.vue |
关系类型选择器(自动加载 API,v-model 双向绑定) |
FamilyRelationGraph.vue |
家庭关系图(Canvas 绘制,信任度=颜色,沟通=线宽) |
ContactCard.vue |
联系人卡片 |
ContactImport.vue |
手机通讯录导入 |
| API 端点 |
控制器 |
用途 |
/api/family/member/* |
FamilyMembersController |
添加/列表/切换/踢出/更新成员 |
/api/family/member/relationship-types |
FamilyMembersController |
获取已启用的关系类型 |
/api/admin/relationship-type/* |
RelationshipTypeAdminController |
管理端关系类型 CRUD |
/api/bind/* |
BindController |
家长-规划师绑定 |
/api/guide/bind/* |
BindInviteController |
规划师绑定邀请 |
CONVENTIONS
- 接口: 统一
@PostMapping,禁止 @GetMapping/@PutMapping/@DeleteMapping
- ORM: MyBatis-Plus
@TableName + @TableId(type = IdType.AUTO)
- 响应: 统一
Result<T> (code/message/data)
- 认证: JWT Bearer Token,
Authorization Header;JwtInterceptor 拦截 /api/**(8个公开路径除外)
- DI:
@Resource 替代 @Autowired,字段名匹配默认 Bean Name
- 角色控制: 控制器内手动检查
@RequestAttribute("role")
- 小程序限制: 禁止可选链
?.(用 && 替代)、禁止 CSS Grid(用 flexbox)
- 新增Controller/Service: 检查类名是否与其他包重名(Spring Bean Name 冲突)
- 新增路由: 运行
grep -rn '@Mapping' cfc-backend/src/.../controller/ | grep -oP '@\w+Mapping\("\K[^"]*' | sort -u 检查重复
UNIQUE STYLES
- 双角色: 家长端可切换查看孩子视角;直接登录的孩子端不能切换到家长端
- 成长规划师:
role=teacher,可登录规划师端,也可切换回家长视角
- 五维能量: 身/心/智/行/富维度体系,能量按比例分配
- 测评订单: 家长申请 → 选择规划师 → 孩子快照 → 支付 → 规划师录入结果
- 四级地址: 省市区街道,区域回退匹配
- 多数据源: cfc 主库 + sfms 只读源(
SfmsDataSourceConfig)
- 环境自适应: 小程序
config.js 通过 uni.getAccountInfoSync() 自动切换 develop/trial/release 的 API 地址
- 测试模式:
wechat.test-mode: true 跳过微信 API,使用模拟数据
cfclub 新特性
- 家庭邀请二维码(小程序码+令牌+落地页)
- 健康报告 PDF 上传与解析
- 文章发布-审核系统
- 饮食推荐系统(前端+后端)
- 维度配置与知识库管理(Web管理端)
- 家庭关系图重设计
- 成长记录重构
- Dify AI 对话集成
- 家庭成员关系编辑(前端:RelationshipPicker + family-members 编辑弹窗)
- 关系类型 CRUD 管理(Web管理端 RelationshipTypes.vue)
- 联系人管理(ContactCard, ContactImport, contact-detail)
COMMANDS
# 后端
cd cfc-backend && mvn clean compile # 编译验证
mvn spring-boot:run # 启动 (localhost:9082)
mvn test # 运行测试
# Web管理端
cd cfc-web && npm run serve # 开发 (localhost:8082)
npm run build # 生产构建
npm test # Jest 测试
# 小程序 (uni-app, 需全局 CLI 或 HBuilderX)
cd cfc-frontend && npm install
# 通过微信开发者工具导入项目根目录
# 管理端部署 (cfc-web)
# 编译 → rsync 到 192.168.16.251
cd cfc-web && npm run build && rsync -av --delete dist/ 192.168.16.251:/var/www/cfc-admin/
# 服务器上有自动化部署脚本 /home/iwt/cfc-auto-deploy.sh
# 可在 251 上执行: bash /home/iwt/cfc-auto-deploy.sh
# 数据迁移 (从 sfms 导入历史数据)
curl -X POST http://localhost:9082/api/migration/run
HIERARCHICAL INSTRUCTION FILES
cfc-backend/AGENTS.md — 后端详细规范
cfc-frontend/AGENTS.md — 小程序前端规范
cfc-web/AGENTS.md — Web管理端规范
tests/AGENTS.md — 分层测试策略
@RTK.md