feat(plan-01): Phase 3 — split domain OKR data into apps/okr/domain

Separate per-project domain data from the reusable harness so packages/casan-harness
holds no domain artifacts. Domain data physically relocated to apps/okr/domain, with
compat symlinks at the old paths (Python + app + evidence-log refs keep resolving).

Moved -> apps/okr/domain (+ compat symlink at old path):
  golden-runs/           (was .specify/level5/golden-runs)
  corpus/{redteam-corpus.jsonl,redteam-vectors.jsonl,benign-corpus/}
                         (was packages/casan-harness/security/*)
  traceability-map.json  (was .specify/traceability-map.json)
  input/                 (was docs/input — OKR requirement/architecture)

casan-paths.sh: add CASAN_DOMAIN_ROOT (apps/okr/domain; env-overridable so Plan-06 can
point a second app at its own domain; falls back to .specify pre-split).

Harness bash refs repointed to $CASAN_DOMAIN_ROOT: run-casan4 (golden), phase3-redteam
(corpus), phase-h4-multilingual/split-inject (benign-corpus), phase10-traceability (map),
benign-fp-report (corpus+vectors). Python + app refs still resolve via the compat
symlinks (repointed in Phase 4 when the symlinks are removed).

Full gate: PASS=64 FAIL=0 SKIP=3 (CASAN_CI_STEP_TIMEOUT_SEC=1200). A first gate run
crawled under host load avg ~30 (Ollama + system); re-run at lower load passed clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
thanhnv
2026-07-08 10:01:15 +09:00
co-authored by Claude Opus 4.8
parent d54d7f5f4c
commit f2ea5590b1
28 changed files with 142 additions and 122 deletions
@@ -0,0 +1,3 @@
Ở sidebar bên trái có 2 link là "Members" và "OKR - all"
1. User thường thì không được phép nhìn thấy 2 link này. Chỉ có user Manager mới có quyền xem
2. Khi click vào link "Members" thì chỉ show ra các OKR của member, không show ra OKR của Manager/Team
@@ -0,0 +1,6 @@
1. Ở màn hình thiết lập OKR
a. Chỉ được add tối đa 3 KR (key result)
b. Có button submit OKR. User có thể click button này thi có ít nhất 1 KR được setting
c. Sau khi submit thì không thể Edit hoặc thêm/sửa/xóa KR
2. Khi OKR chưa được submit thì chỉ có người tạo OKR đó thấy thôi, manager không thấy được
@@ -0,0 +1,7 @@
1. ở màn hình tạo Objective mới
a. mục Owner không cần thiết, hãy bỏ nó đi
b. Thêm mục Type có 2 lựa chọn là "Personal" và "Team"
- trường hợp là nhân viên thì chỉ có 1 lựa chọn là "Personal"
- trường hợp là Manager thì có thể chọn "Personal" để thiết lập OKR cho bản thân, hoặc chọn "Team" đẻ thiết lập OKR cho team.
2. Các Objective của nhân viên mà đã được Manager approve rồi thì chỉ được phép cập nhật tiến được, không được phép thêm/sửa/xóa KR (key result)
@@ -0,0 +1,385 @@
# REQUIREMENT DEFINITION DOCUMENT
## Hệ thống quản lý OKR (Objectives and Key Results)
---
## 1. Tổng quan hệ thống (System Overview)
### 1.1 Mục đích
Tài liệu này được sử dụng cho workshop nhằm minh họa cách dùng AI Native để làm một hệ thống web OKR.
### 1.2 Phạm vi hệ thống
Hệ thống hỗ trợ:
* Thiết lập OKR theo cấp (Company / Department / Individual)
* Theo dõi tiến độ
* Đánh giá kết quả
* Hiển thị dashboard
### 1.3 Định nghĩa thuật ngữ
| Thuật ngữ | Mô tả |
| ---------- | -------------------------- |
| OKR | Objectives and Key Results |
| Objective | Mục tiêu định tính |
| Key Result | Kết quả định lượng |
| Progress | Tiến độ (%) |
---
## 2. Stakeholders
| Vai trò | Mô tả |
| -------- | --------------------------- |
| Admin | Quản trị hệ thống |
| Manager | Quản lý, phê duyệt OKR |
| Employee | Tạo và cập nhật OKR cá nhân |
---
## 3. Tổng quan nghiệp vụ (Business Overview)
### 3.1 Business Flow
1. User đăng nhập
2. Tạo Objective
3. Tạo Key Results
4. Manager phê duyệt
5. User cập nhật tiến độ hàng tuần
6. Đánh giá cuối kỳ
---
## 4. Use Case Definition (IPA style)
### UC-01: Tạo Objective
| Item | Nội dung |
| -------------- | ------------------------------- |
| Actor | Employee |
| Description | Tạo Objective mới |
| Pre-condition | User đã đăng nhập |
| Post-condition | Objective được lưu vào hệ thống |
**Main Flow:**
1. User chọn "Create Objective"
2. Nhập tiêu đề và mô tả
3. Nhấn Save
**Exception Flow:**
* Nếu thiếu thông tin → hiển thị lỗi
---
### UC-02: Cập nhật tiến độ Key Result
| Item | Nội dung |
| ----------- | ------------------- |
| Actor | Employee |
| Description | Cập nhật tiến độ KR |
**Main Flow:**
1. Chọn Key Result
2. Nhập % tiến độ
3. Lưu
---
## 5. Functional Requirements
| ID | Tên | Mô tả |
| ----- | ----------------- | -------------------- |
| FR-01 | Login | Người dùng đăng nhập |
| FR-02 | Create Objective | Tạo Objective |
| FR-03 | Create Key Result | Tạo KR |
| FR-04 | Update Progress | Cập nhật tiến độ |
| FR-05 | Dashboard | Hiển thị OKR |
---
## 6. Screen Definition (画面定義)
### SCR-00: Login Screen
| Item | Nội dung |
| ------ | --------------------------- |
| Mô tả | Màn hình đăng nhập hệ thống |
| Input | Username/Email, Password |
| Action | Sign in, Forgot password |
### UI Mockup (Login - popup/standalone, không có sidebar)
```
+------------------------------------------------------+
| [ Logo ] |
| Sign in to OKR |
|------------------------------------------------------|
| Username or email address |
| [______________________________________________] |
| |
| Password Forgot password?|
| [______________________________________________] |
| |
| [ Sign in ] |
+------------------------------------------------------+
```
---
### SCR-01: Dashboard / OKR List (Left Navigation + List)
| Item | Nội dung |
| ---------- | -------------------------------------------------------------- |
| Mô tả | Hiển thị danh sách OKR theo kỳ (Quarter), bộ lọc và navigation |
| Thành phần | Sidebar, Filter bar, OKR list |
### UI Mockup (Dashboard)
```
+----------------------------------------------------------------------------------+
| FOKR | [All FPT v] [Search.....................] [NEW OKR] [ENG v] [🔔] |
+----------------------------------------------------------------------------------+
| Sidebar | Filter Bar |
|--------------------|------------------------------------------------------|
| 2026 | [Q2/2026 v] [Filters] [⚙] |
| My OKRs |------------------------------------------------------|
| - I created | OKR LIST |
| - I manage |------------------------------------------------------|
| Members | Q2.1: AI for All... [Not graded] |
| OKR - all | Q1.1: XYZ project... [Success 100%] |
|--------------------|------------------------------------------------------|
```
---
### SCR-02: OKR Detail Screen
| Item | Nội dung |
| ---------- | -------------------------------------------- |
| Mô tả | Hiển thị chi tiết Objective + Key Results |
| Thành phần | Objective title, tabs, OKR overview, KR list |
### UI Mockup (OKR Detail)
```
+----------------------------------------------------------------------------------+
| FOKR | [All FPT v] [Search.....................] [NEW OKR] [ENG v] [🔔] |
+----------------------------------------------------------------------------------+
| Sidebar | OKR Detail |
|--------------------|------------------------------------------------------------|
| 2026 | Objective Title: |
| My OKRs | 1. POC AI for SQL Injection ... |
| - I created | [REPORT] [OPTIONS] |
| - I manage |------------------------------------------------------------|
| Members | Tabs: [General Info] [Conversation] [Grade & Feedback] |
| OKR - all |------------------------------------------------------------|
|--------------------| OKR Overview |
| | Progress: Not reported yet |
| | Owner: Nguyen Van A |
| | Update due: 30-Jun-2026 |
| |------------------------------------------------------------|
| | Key Results |
| | KR1: AI for All member in department |
| | Progress: 0% Start: 0 Target: 100 |
+----------------------------------------------------------------------------------+
```
```
+----------------------------------------------------------------------------------+
| Objective Title: |
| 1. POC AI for SQL Injection ... |
| [REPORT] [OPTIONS] |
| ---------------------------------------------------------------------------------- |
| Tabs: [General Info] [Conversation] [Grade & Feedback] |
| ---------------------------------------------------------------------------------- |
| OKR Overview |
| Progress: Not reported yet |
| Owner: Nguyen Van A |
| Update due: 30-Jun-2026 |
| ---------------------------------------------------------------------------------- |
| Key Results |
| ---------------------------------------------------------------------------------- |
| KR1: AI for All member in department |
| Progress: 0% Start: 0 Target: 100 |
| Deadline: 30-Jun-2026 |
| ---------------------------------------------------------------------------------- |
```
---
### SCR-03: Create / Edit Objective
| Item | Nội dung |
|------|---------|
| Input | Title, Description, Owner, Time period |
| Action | Save |
### UI Mockup
```
+----------------------------------------------------------------------------------+
| FOKR | [All FPT v] [Search.....................] [NEW OKR] [ENG v] [🔔] |
+----------------------------------------------------------------------------------+
| Sidebar | Create Objective |
| ------------------------------------------------------------------------------------ | ----------------------------------- |
| 2026 | Title: [..........................] |
| My OKRs | Description: |
| - I created | [..............................] |
| - I manage | Owner: [Dropdown] |
| Members | Quarter: [Q2/2026 v] |
| OKR - all | |
| -------------------- | [ Save ] |
| +----------------------------------------------------------------------------------+ | |
```
```
+--------------------------------------+
| Create Objective |
+--------------------------------------+
| Title: [..........................] |
| Description: |
| [..............................] |
| Owner: [Dropdown] |
| Quarter: [Q2/2026 v] |
| |
| [ Save ] |
+--------------------------------------+
```
---
### SCR-04: Key Result Detail / Update
| Item | Nội dung |
| ------ | --------------------- |
| Input | Progress (%), comment |
| Action | Save |
### UI Mockup
```
+----------------------------------------------------------------------------------+
| FOKR | [All FPT v] [Search.....................] [NEW OKR] [ENG v] [🔔] |
+----------------------------------------------------------------------------------+
| Sidebar | Key Result Detail |
|--------------------|------------------------------------------------------------|
| 2026 | KR: Reduce bugs by 30% |
| My OKRs | Owner: Nguyen Van A |
| - I created | Deadline: 30-Jun-2026 |
| - I manage |------------------------------------------------------------|
| Members | Current Progress: 60% |
| OKR - all | Update Progress: [ 70 ] % |
|--------------------| Comment: |
| | [..............................] |
| | [ Save ] |
+----------------------------------------------------------------------------------+
```
```
+--------------------------------------+
| Key Result Detail |
+--------------------------------------+
| KR: Reduce bugs by 30% |
| Owner: Nguyen Van A |
| Deadline: 30-Jun-2026 |
| ---------------------------------------- |
| Current Progress: 60% |
| Update Progress: [ 70 ] % |
| Comment: |
| [..............................] |
| |
| [ Save ] |
| +--------------------------------------+ |
```
---
## 7. Data Definition
### Objective
| Field | Type | Description |
|------|------|------------|
| id | int | ID |
| title | string | Tên Objective |
| description | string | Mô tả |
| owner_id | int | Người tạo |
| quarter | string | Kỳ OKR |
| status | string | trạng thái |
### Key Result
| Field | Type | Description |
|------|------|------------|
| id | int | ID |
| objective_id | int | Liên kết Objective |
| title | string | Tên KR |
| progress | number | % tiến độ |
| start_value | number | Giá trị bắt đầu |
| target_value | number | Mục tiêu |
| deadline | date | Hạn |
### User
| Field | Type | Description |
|------|------|------------|
| id | int | ID |
| name | string | Tên |
| role | string | Vai trò |
### Objective
| Field | Type | Description |
|------|------|------------|
| id | int | ID |
| title | string | Tên Objective |
| owner | user | Người tạo |
### Key Result
| Field | Type | Description |
|------|------|------------|
| id | int | ID |
| objective_id | int | Liên kết Objective |
| progress | number | % tiến độ |
### Objective
| Field | Type | Description |
|------|------|------------|
| id | int | ID |
| title | string | Tên Objective |
| owner | user | Người tạo |
### Key Result
| Field | Type | Description |
|------|------|------------|
| id | int | ID |
| objective_id | int | Liên kết Objective |
| progress | number | % tiến độ |
---
## 8. Non-functional Requirements
### 8.1 Performance
- Response < 2s
### 8.2 Security
- Authentication required
---
## 9. Constraints
- Web-based system
---
## 10. Assumptions
- Workshop purpose only (không production-ready)