单刀授权硬边界 · 禁自动 ECR-048 · origin 齐平后冻结 Co-authored-by: Cursor <cursoragent@cursor.com>
79 lines
4.2 KiB
Markdown
79 lines
4.2 KiB
Markdown
# Project Profile — 愈心谷 (YuXinGu)
|
||
|
||
> Agent **第一次**读这个文件。不要重新猜技术栈;偏离见 Forbidden + ADR。
|
||
> 产品/领域/完成标准权威仍在 `.ai/`;本文件只锁定栈与 ESS 流程入口。
|
||
|
||
## Profile Version
|
||
`2026.08`
|
||
|
||
## Type
|
||
|
||
`saas-web` + AI Agent(心理洞察 / 画像 / 关系 / 问答陪伴)
|
||
|
||
## Dual-track governance
|
||
|
||
| Layer | Authority | Path |
|
||
|-------|-----------|------|
|
||
| Product · Domain · Lexicon · Feature Spec · DoD | **`.ai/`** | `.ai/product/` · `.ai/domain.md` · `.ai/definition-of-done.md` |
|
||
| Architecture · Forbidden · ADR | **`.ai/`** | `.ai/architecture.md` · `.ai/forbidden.md` · `.ai/adr/` |
|
||
| Change process · ECR · Task · Handoff · Roles | **ESS** | `docs/ECR/` · `docs/TASKS/` · `docs/HANDOFF/` · `docs/STATE/` |
|
||
| Backend change design(涉后台) | **ESS** | `docs/BACKEND_DESIGN/` + `$ESS_ROOT/.../BACKEND_STANDARD.md` |
|
||
| Stack lock (mirror) | ESS + `.ai/` | 本文 + `.ai/tech-stack.md` |
|
||
|
||
冲突时:领域与完成标准以 `.ai/` 为准;变更分级与角色门禁以 ESS 为准。
|
||
|
||
## Stack Lock
|
||
|
||
| Layer | Choice |
|
||
|-------|--------|
|
||
| Language (API) | Go 1.22+ |
|
||
| Backend | gin · Handler → Service → Repository |
|
||
| Database | PostgreSQL · migrations under `apps/api/migrations/` |
|
||
| Frontend | Vue 3 + TypeScript (`strict`) + Vite · Pinia |
|
||
| Shared | npm workspaces · `@yuxingu/sdk` · `@yuxingu/types` |
|
||
| Mini-program | Scaffold only until tasked |
|
||
| Local run | Host Go + Vite;Docker **仅** Postgres(`docker-compose.dev.yml`) |
|
||
| Deployment | Docker Compose / images — never `latest` in prod |
|
||
| Architecture Pattern | Monorepo · layered API · REST `{code,message,data}` |
|
||
|
||
## Forbidden(无 ADR 禁止)
|
||
|
||
- 换后端语言 / 以 GraphQL·gRPC 替代主 REST
|
||
- 无 ADR 拆微服务
|
||
- Handler 直连 DB;UI 直连 DB;页面内裸 `fetch`
|
||
- Docker-only 日常开发(每次改代码重建应用镜像)
|
||
- 无 Active Feature Spec(`.ai/product/feature-spec/`)实现新行为
|
||
- L2+ 行为变更无 Approved ECR(`docs/ECR/`)
|
||
- 复制整棵 ESS 进本仓
|
||
- 扩展已清理的 Legacy 根 HTML(见 `LEGACY.md`)
|
||
|
||
## Active anchors
|
||
|
||
- **ESS Intake G0:** **FROZEN** · Validation **Active**(`$ESS_ROOT/ESS_INTAKE_0.2_FREEZE.md`)
|
||
- **本仓:** `ess_intake: strict` · Retro FAIL · 单 ECR Context
|
||
- **Ops foundation:** `docs/WAVE0/` · `.ai/domain/boundary-rules.md` · `glossary.yaml` · Loop: `docs/WAVE0/LOOP_AUTHORIZATION.md`
|
||
- ECR: main 线 ECR-006–016 Closed;Ops 扩展 ECR-013A/B · 017–040;分叉已固定为 `ECR-012-star` / `014-plan` / `015-code` / `016-insight`(见 TRACEABILITY)
|
||
- **Next ECR / Max Migration:** **Next=`ECR-048`(禁自动开)** · **Max=`000056`**
|
||
- **Write-Wave CMS:** 041–042 Closed · STOP
|
||
- **ExploreConfig:** ECR-043…046 Closed · 同构写面 **耗尽 · STOP** · Prompt/Knowledge/Chunk STOP
|
||
- **GrowthInsights:** ECR-047 FunnelDefinition **Closed · Authorized · Pushed**(`580f5ea`)· **FROZEN WAIT** · 禁自动 ECR-048 · ReportTemplate/Prompt STOP
|
||
- **Release:** ECR-008 Live Promote **BLOCKED**(独立门禁 · 勿与 Write-Wave 混谈)
|
||
- EXP: (无)
|
||
- STATE: `docs/STATE/`(含 ECR-041…047)
|
||
- TRACEABILITY: `docs/TRACEABILITY.md` · 门禁 `scripts/repo-governance-check.py`
|
||
- ADR: `.ai/adr/0007-ess-ai-dual-track.md`
|
||
- Product status: `.ai/product/p1-status.md`(**P1 Complete**)· `.ai/product/p2-status.md`(**P2 Complete**)
|
||
- Active Spec: `account-auth` · `explore-test` · `home` · `star-profile` · `life-rhythm` · `input-compliance` · `ops-system` · `profile` · `ops-banner-write` · `ops-star-config-write` · `ops-rhythm-config-write` · `ops-image-card-deck-write` · `ops-scale-definition-write` · `ops-funnel-definition-write`
|
||
|
||
## WIP(尚未单独 ECR)
|
||
|
||
- **FROZEN WAIT**(ECR-047 Freeze/Review 收口)· 下一刀须 `ECR-048 Candidate Review` + Human 单独授权 · **禁止** Spec→Code 直开
|
||
- BD-2026-044 状态补丁:工作区可暂留 · **不**自动提交
|
||
|
||
## Pointers
|
||
|
||
- Rules: `docs/PROJECT_RULES.md`
|
||
- Stack detail: `docs/TECH_STACK.md` ↔ `.ai/tech-stack.md`
|
||
- ESS root: `.ess-root` 或环境变量 `ESS_ROOT`
|
||
- Agent entry: `AGENTS.md` · `CLAUDE.md`
|