You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iTi-Flask/copier-template/.codex/skills/{{ project_slug | lower | r.../SKILL.md.jinja

92 lines
4.0 KiB
Django/Jinja

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
name: {{ project_slug | lower | replace('_', '-') }}-project
description: "{{ project_name }} 业务项目 skill。用于当前由 iTi-Flask Copier 模板生成的业务后端项目,包括 main.py、config.py、app.sh/app.cmd、pyproject.toml、migrations、tests、modules、models、服务客户端、iTi-Flask 集成{% if include_system %}、iTi-System 注册{% endif %}和项目本地文档。不要写入具体业务域知识。"
---
# {{ project_name }} 业务项目
用于当前业务项目。
本项目由 iTi-Flask Copier 模板生成。
这个 skill 只描述当前项目的通用工程结构。
具体业务知识写在项目 README/docs 或对应业务模块文档里。
## 边界
- 保持为当前业务后端项目的工程规则。
- 不加入具体业务域或客户专属业务知识。
- 框架行为看 iTi-Flask 依赖和项目当前代码。
{% if include_system -%}
- 系统域能力来自 iTi-System当前项目已注册系统包。
{% else -%}
- 当前项目未默认注册 iTi-System。需要系统域能力时再显式引入。
{% endif -%}
- 修改代码、架构、目录结构、脚本命令或测试方式后,同步更新这个 skill。
- 同步框架依赖用 `./app.sh framework-sync`。
- 检查和同步框架模板用 `./app.sh template-check`、`./app.sh template-update`。
## 项目结构
- `main.py`ASGI 入口,导出 `app`。
- `app/app_factory.py`:导入 `config`,注册模块,创建 FastAPI app。
- `config.py`:项目本地配置映射。
- `app/modules/`:业务模块。
- `app/models/`:项目 SQLAlchemy 模型。
- `migrations/`:项目自己的 Alembic migration 流。
- `tests/`pytest 路由和行为测试。
- `app.sh`Linux/macOS/Git Bash 命令入口。
- `app.cmd`Windows CMD 命令入口。
- `Dockerfile`:容器镜像构建入口。
- `docker-compose.yml`:本地 Compose 部署入口。
- `docker-compose.with-db.yml`:本地 MySQL 叠加部署入口。
- `.env.example`:本地和 Compose 环境变量样例。
- `.vscode/launch.json`VSCode FastAPI 调试配置。
- `.dockerignore`Docker 构建排除规则。
- `pyproject.toml`:包信息和依赖。
- `.copier-answers.yml`Copier 模板更新锚点。
## 模块模式
业务模块通过 iTi 模块协议注册:
- `register_routes(app)`:挂载 FastAPI router。
- `register_permissions(app)`:用 `ModulePermission` 声明权限元数据。
- `register_menu_seed(app)`:用 `ModuleMenuSeed` 声明后台菜单 seed 元数据。
- `register_tasks(app)`:按需注册本地任务。
- `init_app(app)`:按需接入配置或服务客户端。
业务模块优先放在 `app/modules/<module_name>/`。
## 运行规则
- 业务路由放在项目模块内。
- 项目表和 migration 留在当前项目。
- 默认使用框架 envelope除非路由明确 raw。
- 服务间内部 API 使用 service token。
- 项目级测试使用 `fastapi.testclient.TestClient`。
- 请求体使用 Pydantic schema。
{{ "- seed 前先同步 iTi-System migration。\n" if include_system else "" }}
## 命令
- 安装开发依赖:`./app.sh install`
- 同步框架依赖:`./app.sh framework-sync`
- 检查模板更新:`./app.sh template-check`
- 同步模板骨架:`./app.sh template-update`
- 运行测试:`./app.sh test`
- 本地启动:`./app.sh serve 8000`
- 构建 Docker 镜像:`./app.sh docker-build`
- 启动 Docker Compose`./app.sh docker-up`
- 启动 Docker Compose 和 MySQL`./app.sh docker-up-db`
- 停止 Docker Compose`./app.sh docker-down`
- 停止 Docker Compose 和 MySQL`./app.sh docker-down-db`
- 查看应用容器日志:`./app.sh docker-logs`
- 创建 migration`./app.sh migration "alice add order table"`
- 执行 migration`./app.sh migrate`
- 查看 Alembic heads`./app.sh heads`
- 查看当前 Alembic 版本:`./app.sh current`
- 初始化项目:`./app.sh init`
{{ "系统包相关命令:\n\n- 同步系统 migration`./app.sh system-sync`\n- 初始化或更新系统 seed`./app.sh system-seed`\n- 初始化系统项目:`./app.sh init-system`\n\n" if include_system else "" -}}
Windows 使用 `app.cmd`。