Unknown column 错误处理流程)错误日志 → 查 entity 类 → 查 schema.sql → DatabaseInitializer 加迁移 → 同步 schema.sql → mvn compile
DatabaseInitializer.runMigrations() — 所有 DDL 迁移写在这里ensureColumn(table, column, definition) — 自动忽略"列已存在"异常CREATE TABLE 也必须同步更新// 迁移 找最新编号,递增git checkout -- file 会丢弃工作区和已 staged 的改动(不可恢复)git stash pop 会将 stash 内容合并到工作区,可能带入不相关的改动git add -p 或分次 git add 精确控制 staged 范围git diff --cached --stat 检查 staged 内容是否仅包含目标文件mvn clean compile — 验证无编译冲突grep -rn '@Mapping' cfc-backend/src/.../controller/ | grep -oP '@\w+Mapping\("\K[^"]*' | sort -u| 模块 | 技术栈 | 端口 |
|---|---|---|
cfc-backend/ |
Spring Boot 2.7.18 + MyBatis-Plus + Java 8 | 9082 |
cfc-frontend/ |
uni-app 微信小程序 (Vue 2, Options API) | — |
cfc-web/ |
Vue 2 + Element UI 管理端 | 8082 |
dan/danshop/ |
独立商城 Spring Boot | 8888 |
cfc-langgraph/ |
Python FastAPI + LangGraph + ChromaDB RAG(AI 服务) | 9000 |
@PostMapping,禁止 @GetMapping/@PutMapping/@DeleteMapping@TableName + @TableId(type = IdType.AUTO)Result<T> (code/message/data)Authorization Header;JwtInterceptor 拦截 /api/**(8个公开路径除外)@Resource 替代 @Autowired,字段名匹配默认 Bean Name@RequestAttribute("role")cfc-langgraph Python 服务(FastAPI + LangGraph + ChromaDB RAG,端口 9000,生产 ai.etotem.com.cn);Java 侧通过 AiGateway 调用(熔断 + 超时 + Fallback),禁止绕过 AiGateway 直接对接第三方 LLM;新增 AI 功能优先以 LangGraph graph 形式实现?.(用 && 替代)、禁止 CSS Grid(用 flexbox)、禁止 :key 表达式(用方法调用代替)、禁止直接 new Date(string)(用 parseDate())grep -rn '@Mapping' cfc-backend/src/.../controller/ | grep -oP '@\w+Mapping\("\K[^"]*' | sort -u 检查重复role=teacher,可登录规划师端,也可切换回家长视角SfmsDataSourceConfig)config.js 通过 uni.getAccountInfoSync() 自动切换 develop/trial/release 的 API 地址wechat.test-mode: true 跳过微信 API,使用模拟数据稳定发布脚本: C:\code\cfc\publish_v11_stable.py
发布流程:
GET /cgi-bin/token 获取 access_tokenPOST /cgi-bin/material/add_material type=thumb 上传封面 → thumb_media_idPOST /cgi-bin/media/uploadimg 上传内容图片 → URLPOST /cgi-bin/draft/add 创建草稿(content字段填完整HTML)API关键参数: | 字段 | 限制 | |------|------| | title | ≤32字符,建议≤30字节(约10个中文)| | content | <1MB,<2万字符,HTML标签 | | thumb_media_id | 必须来自 material/add_material type=thumb | | content内图片URL | 必须来自 media/uploadimg,外部URL被过滤 |
HTML注意事项:
<img src='url' style='width:100%' />封面图片生成:
agnes-image-2.0-flash(通过 Agnes AI API: https://apihub.agnes-ai.com/v1/images/generations)opencode.json 配置)1024x1024C:\Users\Administrator\Documents\双培强基工程\images\cover_33_v11_case_study.png"A warm summer scene with a mother and child silhouette sitting together on a bench under a tree, soft golden sunlight filtering through leaves, warm orange and gold tones, peaceful and emotional atmosphere. Minimalist composition with lots of negative space on the right and bottom for text overlay. Chinese parenting theme. No text in image. 1024x1024 pixels."agnes-image-2.0-flash,返回 JSON 中含 data[0].url稳定脚本用法:
python C:\code\cfc\publish_v11_stable.py
脚本会输出media_id,登录 mp.weixin.qq.com → 草稿箱查看和发布。
纯干货内容难以转化客户,因为缺乏说服力。案例研究通过"证明能力"大幅提升转化率:
| 误区 | 问题 | 后果 |
|---|---|---|
| 用别人的案例(名人/网红) | 不是你的真实客户 | 无法证明你的能力 |
| 只写结果不写过程 | 缺乏"从零到一"的路径 | 读者无法复制 |
| 成功不是在你帮助下达成 | 无代入感 | 转化失败 |
第一步:聚焦真实成果
第二步:鲜明的前后对比
第三步:拆解问题解决过程 按以下框架叙述:
开头:描述一个典型场景/痛点(让读者代入)
↓
案例引入:用真实数据/截图展示结果
↓
问题分析:解释为什么这个问题值得解决
↓
解决方案:描述你的具体方法
↓
经验总结:提炼可复制的规律
↓
结尾:呼吁行动(咨询/购买/关注)
↑ CRP ↓ 标注"↑ C反应蛋白 ↓")C:\Users\Administrator\Documents\双培强基工程\temp_images\{学生姓名}\desensitized\articles\v11_case_study.md# 后端
cd cfc-backend && mvn clean compile # 唯一验证方式
mvn spring-boot:run # 启动 (localhost:9082)
# Web管理端
cd cfc-web && npm run serve # 开发 (localhost:8082)
npm run build # 生产构建 → rsync 到 192.168.16.251:/var/www/cfc-admin/
# 小程序:npm install 后用微信开发者工具导入根目录
# 管理端部署服务器脚本: bash /home/iwt/cfc-auto-deploy.sh
# 数据迁移 (sfms → zxyj)
curl -X POST http://localhost:9082/api/migration/run
192.168.16.251:3306/zxyj(账号 zxyj / zxyj@123)bianwoyou.mysql.rds.aliyuncs.com:3305/sfms(SfmsDataSourceConfig 配置)cfc-backend/src/main/resources/schema.sql(完整快照)cfc-backend/src/main/java/com/etotem/cfc/config/DatabaseInitializer.java@PostMapping,禁止 @GetMapping/@PutMapping/@DeleteMapping@TableName + @TableId(type = IdType.AUTO)Result<T> (code/message/data)JwtInterceptor 拦截 /api/**(8个公开路径除外)@Resource,字段名必须与类型默认 Bean Name 一致@RequestAttribute("role")?.(用 && 替代):key 表达式(如 :key="item.id || item.circleId",微信小程序模板编译器不支持带运算符的 :key 绑定 → 改用方法调用 :key="getItemKey(item)")new Date(string) 解析日期字符串(部分 iOS 的 JavaScriptCore 不支持空格分隔格式如 "2026-08-22 14:00" → 统一用 utils/format.js 的 parseDate())| 文件 | 内容 |
|---|---|
cfc-backend/AGENTS.md |
后端详细规范 + 数据库迁移工作流 |
cfc-frontend/AGENTS.md |
小程序前端规范 |
cfc-web/AGENTS.md |
Web管理端规范 |
tests/AGENTS.md |
分层测试策略 |